| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library pathos_posix_test; | 5 library pathos_posix_test; |
| 6 | 6 |
| 7 import 'dart:io' as io; | |
| 8 | |
| 9 import 'package:unittest/unittest.dart'; | 7 import 'package:unittest/unittest.dart'; |
| 10 import 'package:pathos/path.dart' as path; | 8 import 'package:pathos/path.dart' as path; |
| 11 | 9 |
| 12 main() { | 10 main() { |
| 13 var builder = new path.Builder(style: path.Style.posix, root: '/root/path'); | 11 var builder = new path.Builder(style: path.Style.posix, root: '/root/path'); |
| 14 | 12 |
| 15 if (new path.Builder().style == path.Style.posix) { | 13 if (new path.Builder().style == path.Style.posix) { |
| 16 group('absolute', () { | 14 group('absolute', () { |
| 17 expect(path.absolute('a/b.txt'), path.join(path.current, 'a/b.txt')); | 15 expect(path.absolute('a/b.txt'), path.join(path.current, 'a/b.txt')); |
| 18 expect(path.absolute('/a/b.txt'), '/a/b.txt'); | 16 expect(path.absolute('/a/b.txt'), '/a/b.txt'); |
| (...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 293 test('given relative path', () { | 291 test('given relative path', () { |
| 294 // The path is considered relative to the root, so it basically just | 292 // The path is considered relative to the root, so it basically just |
| 295 // normalizes. | 293 // normalizes. |
| 296 expect(builder.relative(''), '.'); | 294 expect(builder.relative(''), '.'); |
| 297 expect(builder.relative('.'), '.'); | 295 expect(builder.relative('.'), '.'); |
| 298 expect(builder.relative('a'), 'a'); | 296 expect(builder.relative('a'), 'a'); |
| 299 expect(builder.relative('a/b.txt'), 'a/b.txt'); | 297 expect(builder.relative('a/b.txt'), 'a/b.txt'); |
| 300 expect(builder.relative('../a/b.txt'), '../a/b.txt'); | 298 expect(builder.relative('../a/b.txt'), '../a/b.txt'); |
| 301 expect(builder.relative('a/./b/../c.txt'), 'a/c.txt'); | 299 expect(builder.relative('a/./b/../c.txt'), 'a/c.txt'); |
| 302 }); | 300 }); |
| 301 |
| 302 // Regression |
| 303 test('from root-only path', () { |
| 304 expect(builder.relative('/', from: '/'), '.'); |
| 305 expect(builder.relative('/root/path', from: '/'), 'root/path'); |
| 306 }); |
| 303 }); | 307 }); |
| 304 | 308 |
| 305 group('from relative root', () { | 309 group('from relative root', () { |
| 306 var r = new path.Builder(style: path.Style.posix, root: 'foo/bar'); | 310 var r = new path.Builder(style: path.Style.posix, root: 'foo/bar'); |
| 307 | 311 |
| 308 test('given absolute path', () { | 312 test('given absolute path', () { |
| 309 expect(r.relative('/'), equals('/')); | 313 expect(r.relative('/'), equals('/')); |
| 310 expect(r.relative('/a/b'), equals('/a/b')); | 314 expect(r.relative('/a/b'), equals('/a/b')); |
| 311 }); | 315 }); |
| 312 | 316 |
| (...skipping 24 matching lines...) Expand all Loading... |
| 337 }); | 341 }); |
| 338 | 342 |
| 339 test('with a root parameter and a relative root', () { | 343 test('with a root parameter and a relative root', () { |
| 340 var r = new path.Builder(style: path.Style.posix, root: 'relative/root'); | 344 var r = new path.Builder(style: path.Style.posix, root: 'relative/root'); |
| 341 expect(r.relative('/foo/bar/baz', from: '/foo/bar'), equals('baz')); | 345 expect(r.relative('/foo/bar/baz', from: '/foo/bar'), equals('baz')); |
| 342 expect(() => r.relative('..', from: '/foo/bar'), throwsArgumentError); | 346 expect(() => r.relative('..', from: '/foo/bar'), throwsArgumentError); |
| 343 expect(r.relative('/foo/bar/baz', from: 'foo/bar'), | 347 expect(r.relative('/foo/bar/baz', from: 'foo/bar'), |
| 344 equals('/foo/bar/baz')); | 348 equals('/foo/bar/baz')); |
| 345 expect(r.relative('..', from: 'foo/bar'), equals('../../..')); | 349 expect(r.relative('..', from: 'foo/bar'), equals('../../..')); |
| 346 }); | 350 }); |
| 351 |
| 352 test('from a . root', () { |
| 353 var r = new path.Builder(style: path.Style.posix, root: '.'); |
| 354 expect(r.relative('/foo/bar/baz'), equals('/foo/bar/baz')); |
| 355 expect(r.relative('foo/bar/baz'), equals('foo/bar/baz')); |
| 356 }); |
| 347 }); | 357 }); |
| 348 | 358 |
| 349 group('resolve', () { | 359 group('resolve', () { |
| 350 test('allows up to seven parts', () { | 360 test('allows up to seven parts', () { |
| 351 expect(builder.resolve('a'), '/root/path/a'); | 361 expect(builder.resolve('a'), '/root/path/a'); |
| 352 expect(builder.resolve('a', 'b'), '/root/path/a/b'); | 362 expect(builder.resolve('a', 'b'), '/root/path/a/b'); |
| 353 expect(builder.resolve('a', 'b', 'c'), '/root/path/a/b/c'); | 363 expect(builder.resolve('a', 'b', 'c'), '/root/path/a/b/c'); |
| 354 expect(builder.resolve('a', 'b', 'c', 'd'), '/root/path/a/b/c/d'); | 364 expect(builder.resolve('a', 'b', 'c', 'd'), '/root/path/a/b/c/d'); |
| 355 expect(builder.resolve('a', 'b', 'c', 'd', 'e'), '/root/path/a/b/c/d/e'); | 365 expect(builder.resolve('a', 'b', 'c', 'd', 'e'), '/root/path/a/b/c/d/e'); |
| 356 expect(builder.resolve('a', 'b', 'c', 'd', 'e', 'f'), | 366 expect(builder.resolve('a', 'b', 'c', 'd', 'e', 'f'), |
| (...skipping 26 matching lines...) Expand all Loading... |
| 383 expect(builder.withoutExtension('a/.'), 'a/.'); | 393 expect(builder.withoutExtension('a/.'), 'a/.'); |
| 384 expect(builder.withoutExtension('a/.b'), 'a/.b'); | 394 expect(builder.withoutExtension('a/.b'), 'a/.b'); |
| 385 expect(builder.withoutExtension('a.b/c'), 'a.b/c'); | 395 expect(builder.withoutExtension('a.b/c'), 'a.b/c'); |
| 386 expect(builder.withoutExtension(r'a.b\c'), r'a'); | 396 expect(builder.withoutExtension(r'a.b\c'), r'a'); |
| 387 expect(builder.withoutExtension(r'a/b\c'), r'a/b\c'); | 397 expect(builder.withoutExtension(r'a/b\c'), r'a/b\c'); |
| 388 expect(builder.withoutExtension(r'a/b\c.d'), r'a/b\c'); | 398 expect(builder.withoutExtension(r'a/b\c.d'), r'a/b\c'); |
| 389 expect(builder.withoutExtension('a/b.c/'), 'a/b/'); | 399 expect(builder.withoutExtension('a/b.c/'), 'a/b/'); |
| 390 expect(builder.withoutExtension('a/b.c//'), 'a/b//'); | 400 expect(builder.withoutExtension('a/b.c//'), 'a/b//'); |
| 391 }); | 401 }); |
| 392 } | 402 } |
| OLD | NEW |