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