Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | |
| 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. | |
| 4 // | |
| 5 // Test "relative" on all styles of path.Builder, on all platforms. | |
| 6 | |
| 7 import "package:unittest/unittest.dart"; | |
| 8 import "package:path/path.dart" as path; | |
| 9 | |
| 10 void main() { | |
| 11 test("test relative", () { | |
| 12 relativeTest(new path.Builder(style: path.Style.posix, root: '.'), ''); | |
| 13 relativeTest(new path.Builder(style: path.Style.posix, root: '/'), ''); | |
| 14 relativeTest(new path.Builder(style: path.Style.windows, root: 'd:/'), | |
| 15 'c:'); | |
|
nweiz
2013/07/22 21:00:33
It seems weird to me that the prefix here is "c:"
Bill Hesse
2013/07/23 16:07:00
The prefix for the URL tests is 'http://myserver',
| |
| 16 relativeTest(new path.Builder(style: path.Style.windows, root: '.'), 'c:'); | |
| 17 relativeTest(new path.Builder(style: path.Style.url, root: 'file:///'), | |
| 18 'http://myserver'); | |
| 19 relativeTest(new path.Builder(style: path.Style.url, root: '.'), | |
| 20 'http://myserver'); | |
| 21 relativeTest(new path.Builder(style: path.Style.url, root: 'file:///'), ''); | |
| 22 relativeTest(new path.Builder(style: path.Style.url, root: '.'), ''); | |
| 23 }); | |
| 24 } | |
| 25 | |
| 26 void relativeTest(path.Builder builder, String prefix) { | |
| 27 var isRelative = (builder.root == '.'); | |
| 28 // Cases where the arguments are absolute paths. | |
| 29 test(result, p, from) { | |
|
nweiz
2013/07/22 21:00:33
Calling this [test] is confusing given that [test]
Bill Hesse
2013/07/23 16:07:00
Done.
| |
| 30 expect(builder.normalize(result), builder.relative(p, from: from)); | |
| 31 } | |
| 32 | |
| 33 test('c/d', '$prefix/a/b/c/d', '$prefix/a/b'); | |
| 34 test('c/d', '$prefix/a/b/c/d', '$prefix/a/b/'); | |
| 35 test('.', '$prefix/a', '$prefix/a'); | |
| 36 // Trailing slashes in the inputs have no effect. | |
| 37 test('../../z/x/y', '$prefix/a/b/z/x/y', '$prefix/a/b/c/d/'); | |
| 38 test('../../z/x/y', '$prefix/a/b/z/x/y', '$prefix/a/b/c/d'); | |
| 39 test('../../z/x/y', '$prefix/a/b/z/x/y/', '$prefix/a/b/c/d'); | |
| 40 test('../../../z/x/y', '$prefix/z/x/y', '$prefix/a/b/c'); | |
| 41 test('../../../z/x/y', '$prefix/z/x/y', '$prefix/a/b/c/'); | |
| 42 | |
| 43 // Cases where the arguments are relative paths. | |
| 44 test('c/d', 'a/b/c/d', 'a/b'); | |
| 45 test('.', 'a/b/c', 'a/b/c'); | |
| 46 test('.', 'a/d/../b/c', 'a/b/c/'); | |
| 47 test('.', '', ''); | |
| 48 test('.', '.', ''); | |
| 49 test('.', '', '.'); | |
| 50 test('.', '.', '.'); | |
| 51 test('.', '..', '..'); | |
| 52 if (isRelative) test('..', '..', '.'); | |
| 53 test('a', 'a', ''); | |
| 54 test('a', 'a', '.'); | |
| 55 test('..', '.', 'a'); | |
| 56 test('.', 'a/b/f/../c', 'a/e/../b/c'); | |
| 57 test('d', 'a/b/f/../c/d', 'a/e/../b/c'); | |
| 58 test('..', 'a/b/f/../c', 'a/e/../b/c/e/'); | |
| 59 test('../..', '', 'a/b/'); | |
| 60 if (isRelative) test('../../..', '..', 'a/b/'); | |
| 61 test('../b/c/d', 'b/c/d/', 'a/'); | |
| 62 test('../a/b/c', 'x/y/a//b/./f/../c', 'x//y/z'); | |
| 63 | |
| 64 // Case where from is an exact substring of path. | |
| 65 test('a/b', '$prefix/x/y//a/b', '$prefix/x/y/'); | |
| 66 test('a/b', 'x/y//a/b', 'x/y/'); | |
| 67 test('../ya/b', '$prefix/x/ya/b', '$prefix/x/y'); | |
| 68 test('../ya/b', 'x/ya/b', 'x/y'); | |
| 69 test('../b', 'x/y/../b', 'x/y/.'); | |
| 70 test('a/b/c', 'x/y/a//b/./f/../c', 'x/y'); | |
| 71 test('.', '$prefix/x/y//', '$prefix/x/y/'); | |
| 72 test('.', '$prefix/x/y/', '$prefix/x/y'); | |
| 73 | |
| 74 // Should always throw - no relative path can be constructed. | |
| 75 if (isRelative) { | |
| 76 expect(() => builder.relative('.', from: '..'), throws); | |
| 77 expect(() => builder.relative('a/b', from: '../../d'), throws); | |
| 78 expect(() => builder.relative('a/b', from: '$prefix/a/b'), throws); | |
| 79 // An absolute path relative from a relative path returns the absolute path. | |
| 80 test('$prefix/a/b', '$prefix/a/b', 'c/d'); | |
| 81 } | |
| 82 } | |
| OLD | NEW |