|
1 # This Source Code Form is subject to the terms of the Mozilla Public |
|
2 # License, v. 2.0. If a copy of the MPL was not distributed with this |
|
3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. |
|
4 |
|
5 from mozpack.path import ( |
|
6 relpath, |
|
7 join, |
|
8 normpath, |
|
9 dirname, |
|
10 commonprefix, |
|
11 basename, |
|
12 split, |
|
13 splitext, |
|
14 basedir, |
|
15 match, |
|
16 rebase, |
|
17 ) |
|
18 import unittest |
|
19 import mozunit |
|
20 import os |
|
21 |
|
22 |
|
23 class TestPath(unittest.TestCase): |
|
24 def test_relpath(self): |
|
25 self.assertEqual(relpath('foo', 'foo'), '') |
|
26 self.assertEqual(relpath(os.path.join('foo', 'bar'), 'foo/bar'), '') |
|
27 self.assertEqual(relpath(os.path.join('foo', 'bar'), 'foo'), 'bar') |
|
28 self.assertEqual(relpath(os.path.join('foo', 'bar', 'baz'), 'foo'), |
|
29 'bar/baz') |
|
30 self.assertEqual(relpath(os.path.join('foo', 'bar'), 'foo/bar/baz'), |
|
31 '..') |
|
32 self.assertEqual(relpath(os.path.join('foo', 'bar'), 'foo/baz'), |
|
33 '../bar') |
|
34 self.assertEqual(relpath('foo/', 'foo'), '') |
|
35 self.assertEqual(relpath('foo/bar/', 'foo'), 'bar') |
|
36 |
|
37 def test_join(self): |
|
38 self.assertEqual(join('foo', 'bar', 'baz'), 'foo/bar/baz') |
|
39 self.assertEqual(join('foo', '', 'bar'), 'foo/bar') |
|
40 self.assertEqual(join('', 'foo', 'bar'), 'foo/bar') |
|
41 self.assertEqual(join('', 'foo', '/bar'), '/bar') |
|
42 |
|
43 def test_normpath(self): |
|
44 self.assertEqual(normpath(os.path.join('foo', 'bar', 'baz', |
|
45 '..', 'qux')), 'foo/bar/qux') |
|
46 |
|
47 def test_dirname(self): |
|
48 self.assertEqual(dirname('foo/bar/baz'), 'foo/bar') |
|
49 self.assertEqual(dirname('foo/bar'), 'foo') |
|
50 self.assertEqual(dirname('foo'), '') |
|
51 self.assertEqual(dirname('foo/bar/'), 'foo/bar') |
|
52 |
|
53 def test_commonprefix(self): |
|
54 self.assertEqual(commonprefix([os.path.join('foo', 'bar', 'baz'), |
|
55 'foo/qux', 'foo/baz/qux']), 'foo/') |
|
56 self.assertEqual(commonprefix([os.path.join('foo', 'bar', 'baz'), |
|
57 'foo/qux', 'baz/qux']), '') |
|
58 |
|
59 def test_basename(self): |
|
60 self.assertEqual(basename('foo/bar/baz'), 'baz') |
|
61 self.assertEqual(basename('foo/bar'), 'bar') |
|
62 self.assertEqual(basename('foo'), 'foo') |
|
63 self.assertEqual(basename('foo/bar/'), '') |
|
64 |
|
65 def test_split(self): |
|
66 self.assertEqual(split(os.path.join('foo', 'bar', 'baz')), |
|
67 ['foo', 'bar', 'baz']) |
|
68 |
|
69 def test_splitext(self): |
|
70 self.assertEqual(splitext(os.path.join('foo', 'bar', 'baz.qux')), |
|
71 ('foo/bar/baz', '.qux')) |
|
72 |
|
73 def test_basedir(self): |
|
74 foobarbaz = os.path.join('foo', 'bar', 'baz') |
|
75 self.assertEqual(basedir(foobarbaz, ['foo', 'bar', 'baz']), 'foo') |
|
76 self.assertEqual(basedir(foobarbaz, ['foo', 'foo/bar', 'baz']), |
|
77 'foo/bar') |
|
78 self.assertEqual(basedir(foobarbaz, ['foo/bar', 'foo', 'baz']), |
|
79 'foo/bar') |
|
80 self.assertEqual(basedir(foobarbaz, ['foo', 'bar', '']), 'foo') |
|
81 self.assertEqual(basedir(foobarbaz, ['bar', 'baz', '']), '') |
|
82 |
|
83 def test_match(self): |
|
84 self.assertTrue(match('foo', '')) |
|
85 self.assertTrue(match('foo/bar/baz.qux', 'foo/bar')) |
|
86 self.assertTrue(match('foo/bar/baz.qux', 'foo')) |
|
87 self.assertTrue(match('foo', '*')) |
|
88 self.assertTrue(match('foo/bar/baz.qux', 'foo/bar/*')) |
|
89 self.assertTrue(match('foo/bar/baz.qux', 'foo/bar/*')) |
|
90 self.assertTrue(match('foo/bar/baz.qux', 'foo/bar/*')) |
|
91 self.assertTrue(match('foo/bar/baz.qux', 'foo/bar/*')) |
|
92 self.assertTrue(match('foo/bar/baz.qux', 'foo/*/baz.qux')) |
|
93 self.assertTrue(match('foo/bar/baz.qux', '*/bar/baz.qux')) |
|
94 self.assertTrue(match('foo/bar/baz.qux', '*/*/baz.qux')) |
|
95 self.assertTrue(match('foo/bar/baz.qux', '*/*/*')) |
|
96 self.assertTrue(match('foo/bar/baz.qux', 'foo/*/*')) |
|
97 self.assertTrue(match('foo/bar/baz.qux', 'foo/*/*.qux')) |
|
98 self.assertTrue(match('foo/bar/baz.qux', 'foo/b*/*z.qux')) |
|
99 self.assertTrue(match('foo/bar/baz.qux', 'foo/b*r/ba*z.qux')) |
|
100 self.assertFalse(match('foo/bar/baz.qux', 'foo/b*z/ba*r.qux')) |
|
101 self.assertTrue(match('foo/bar/baz.qux', '**')) |
|
102 self.assertTrue(match('foo/bar/baz.qux', '**/baz.qux')) |
|
103 self.assertTrue(match('foo/bar/baz.qux', '**/bar/baz.qux')) |
|
104 self.assertTrue(match('foo/bar/baz.qux', 'foo/**/baz.qux')) |
|
105 self.assertTrue(match('foo/bar/baz.qux', 'foo/**/*.qux')) |
|
106 self.assertTrue(match('foo/bar/baz.qux', '**/foo/bar/baz.qux')) |
|
107 self.assertTrue(match('foo/bar/baz.qux', 'foo/**/bar/baz.qux')) |
|
108 self.assertTrue(match('foo/bar/baz.qux', 'foo/**/bar/*.qux')) |
|
109 self.assertTrue(match('foo/bar/baz.qux', 'foo/**/*.qux')) |
|
110 self.assertTrue(match('foo/bar/baz.qux', '**/*.qux')) |
|
111 self.assertFalse(match('foo/bar/baz.qux', '**.qux')) |
|
112 self.assertFalse(match('foo/bar', 'foo/*/bar')) |
|
113 self.assertTrue(match('foo/bar/baz.qux', 'foo/**/bar/**')) |
|
114 self.assertFalse(match('foo/nobar/baz.qux', 'foo/**/bar/**')) |
|
115 self.assertTrue(match('foo/bar', 'foo/**/bar/**')) |
|
116 |
|
117 def test_rebase(self): |
|
118 self.assertEqual(rebase('foo', 'foo/bar', 'bar/baz'), 'baz') |
|
119 self.assertEqual(rebase('foo', 'foo', 'bar/baz'), 'bar/baz') |
|
120 self.assertEqual(rebase('foo/bar', 'foo', 'baz'), 'bar/baz') |
|
121 |
|
122 if __name__ == '__main__': |
|
123 mozunit.main() |