1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/python/mozbuild/mozpack/test/test_path.py Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,123 @@ 1.4 +# This Source Code Form is subject to the terms of the Mozilla Public 1.5 +# License, v. 2.0. If a copy of the MPL was not distributed with this 1.6 +# file, You can obtain one at http://mozilla.org/MPL/2.0/. 1.7 + 1.8 +from mozpack.path import ( 1.9 + relpath, 1.10 + join, 1.11 + normpath, 1.12 + dirname, 1.13 + commonprefix, 1.14 + basename, 1.15 + split, 1.16 + splitext, 1.17 + basedir, 1.18 + match, 1.19 + rebase, 1.20 +) 1.21 +import unittest 1.22 +import mozunit 1.23 +import os 1.24 + 1.25 + 1.26 +class TestPath(unittest.TestCase): 1.27 + def test_relpath(self): 1.28 + self.assertEqual(relpath('foo', 'foo'), '') 1.29 + self.assertEqual(relpath(os.path.join('foo', 'bar'), 'foo/bar'), '') 1.30 + self.assertEqual(relpath(os.path.join('foo', 'bar'), 'foo'), 'bar') 1.31 + self.assertEqual(relpath(os.path.join('foo', 'bar', 'baz'), 'foo'), 1.32 + 'bar/baz') 1.33 + self.assertEqual(relpath(os.path.join('foo', 'bar'), 'foo/bar/baz'), 1.34 + '..') 1.35 + self.assertEqual(relpath(os.path.join('foo', 'bar'), 'foo/baz'), 1.36 + '../bar') 1.37 + self.assertEqual(relpath('foo/', 'foo'), '') 1.38 + self.assertEqual(relpath('foo/bar/', 'foo'), 'bar') 1.39 + 1.40 + def test_join(self): 1.41 + self.assertEqual(join('foo', 'bar', 'baz'), 'foo/bar/baz') 1.42 + self.assertEqual(join('foo', '', 'bar'), 'foo/bar') 1.43 + self.assertEqual(join('', 'foo', 'bar'), 'foo/bar') 1.44 + self.assertEqual(join('', 'foo', '/bar'), '/bar') 1.45 + 1.46 + def test_normpath(self): 1.47 + self.assertEqual(normpath(os.path.join('foo', 'bar', 'baz', 1.48 + '..', 'qux')), 'foo/bar/qux') 1.49 + 1.50 + def test_dirname(self): 1.51 + self.assertEqual(dirname('foo/bar/baz'), 'foo/bar') 1.52 + self.assertEqual(dirname('foo/bar'), 'foo') 1.53 + self.assertEqual(dirname('foo'), '') 1.54 + self.assertEqual(dirname('foo/bar/'), 'foo/bar') 1.55 + 1.56 + def test_commonprefix(self): 1.57 + self.assertEqual(commonprefix([os.path.join('foo', 'bar', 'baz'), 1.58 + 'foo/qux', 'foo/baz/qux']), 'foo/') 1.59 + self.assertEqual(commonprefix([os.path.join('foo', 'bar', 'baz'), 1.60 + 'foo/qux', 'baz/qux']), '') 1.61 + 1.62 + def test_basename(self): 1.63 + self.assertEqual(basename('foo/bar/baz'), 'baz') 1.64 + self.assertEqual(basename('foo/bar'), 'bar') 1.65 + self.assertEqual(basename('foo'), 'foo') 1.66 + self.assertEqual(basename('foo/bar/'), '') 1.67 + 1.68 + def test_split(self): 1.69 + self.assertEqual(split(os.path.join('foo', 'bar', 'baz')), 1.70 + ['foo', 'bar', 'baz']) 1.71 + 1.72 + def test_splitext(self): 1.73 + self.assertEqual(splitext(os.path.join('foo', 'bar', 'baz.qux')), 1.74 + ('foo/bar/baz', '.qux')) 1.75 + 1.76 + def test_basedir(self): 1.77 + foobarbaz = os.path.join('foo', 'bar', 'baz') 1.78 + self.assertEqual(basedir(foobarbaz, ['foo', 'bar', 'baz']), 'foo') 1.79 + self.assertEqual(basedir(foobarbaz, ['foo', 'foo/bar', 'baz']), 1.80 + 'foo/bar') 1.81 + self.assertEqual(basedir(foobarbaz, ['foo/bar', 'foo', 'baz']), 1.82 + 'foo/bar') 1.83 + self.assertEqual(basedir(foobarbaz, ['foo', 'bar', '']), 'foo') 1.84 + self.assertEqual(basedir(foobarbaz, ['bar', 'baz', '']), '') 1.85 + 1.86 + def test_match(self): 1.87 + self.assertTrue(match('foo', '')) 1.88 + self.assertTrue(match('foo/bar/baz.qux', 'foo/bar')) 1.89 + self.assertTrue(match('foo/bar/baz.qux', 'foo')) 1.90 + self.assertTrue(match('foo', '*')) 1.91 + self.assertTrue(match('foo/bar/baz.qux', 'foo/bar/*')) 1.92 + self.assertTrue(match('foo/bar/baz.qux', 'foo/bar/*')) 1.93 + self.assertTrue(match('foo/bar/baz.qux', 'foo/bar/*')) 1.94 + self.assertTrue(match('foo/bar/baz.qux', 'foo/bar/*')) 1.95 + self.assertTrue(match('foo/bar/baz.qux', 'foo/*/baz.qux')) 1.96 + self.assertTrue(match('foo/bar/baz.qux', '*/bar/baz.qux')) 1.97 + self.assertTrue(match('foo/bar/baz.qux', '*/*/baz.qux')) 1.98 + self.assertTrue(match('foo/bar/baz.qux', '*/*/*')) 1.99 + self.assertTrue(match('foo/bar/baz.qux', 'foo/*/*')) 1.100 + self.assertTrue(match('foo/bar/baz.qux', 'foo/*/*.qux')) 1.101 + self.assertTrue(match('foo/bar/baz.qux', 'foo/b*/*z.qux')) 1.102 + self.assertTrue(match('foo/bar/baz.qux', 'foo/b*r/ba*z.qux')) 1.103 + self.assertFalse(match('foo/bar/baz.qux', 'foo/b*z/ba*r.qux')) 1.104 + self.assertTrue(match('foo/bar/baz.qux', '**')) 1.105 + self.assertTrue(match('foo/bar/baz.qux', '**/baz.qux')) 1.106 + self.assertTrue(match('foo/bar/baz.qux', '**/bar/baz.qux')) 1.107 + self.assertTrue(match('foo/bar/baz.qux', 'foo/**/baz.qux')) 1.108 + self.assertTrue(match('foo/bar/baz.qux', 'foo/**/*.qux')) 1.109 + self.assertTrue(match('foo/bar/baz.qux', '**/foo/bar/baz.qux')) 1.110 + self.assertTrue(match('foo/bar/baz.qux', 'foo/**/bar/baz.qux')) 1.111 + self.assertTrue(match('foo/bar/baz.qux', 'foo/**/bar/*.qux')) 1.112 + self.assertTrue(match('foo/bar/baz.qux', 'foo/**/*.qux')) 1.113 + self.assertTrue(match('foo/bar/baz.qux', '**/*.qux')) 1.114 + self.assertFalse(match('foo/bar/baz.qux', '**.qux')) 1.115 + self.assertFalse(match('foo/bar', 'foo/*/bar')) 1.116 + self.assertTrue(match('foo/bar/baz.qux', 'foo/**/bar/**')) 1.117 + self.assertFalse(match('foo/nobar/baz.qux', 'foo/**/bar/**')) 1.118 + self.assertTrue(match('foo/bar', 'foo/**/bar/**')) 1.119 + 1.120 + def test_rebase(self): 1.121 + self.assertEqual(rebase('foo', 'foo/bar', 'bar/baz'), 'baz') 1.122 + self.assertEqual(rebase('foo', 'foo', 'bar/baz'), 'bar/baz') 1.123 + self.assertEqual(rebase('foo/bar', 'foo', 'baz'), 'bar/baz') 1.124 + 1.125 +if __name__ == '__main__': 1.126 + mozunit.main()