python/mozbuild/mozpack/test/test_path.py

Fri, 16 Jan 2015 18:13:44 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Fri, 16 Jan 2015 18:13:44 +0100
branch
TOR_BUG_9701
changeset 14
925c144e1f1f
permissions
-rw-r--r--

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()

mercurial