зеркало из https://github.com/mozilla/gecko-dev.git
124 строки
5.4 KiB
Python
124 строки
5.4 KiB
Python
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
from mozpack.path import (
|
|
relpath,
|
|
join,
|
|
normpath,
|
|
dirname,
|
|
commonprefix,
|
|
basename,
|
|
split,
|
|
splitext,
|
|
basedir,
|
|
match,
|
|
rebase,
|
|
)
|
|
import unittest
|
|
import mozunit
|
|
import os
|
|
|
|
|
|
class TestPath(unittest.TestCase):
|
|
def test_relpath(self):
|
|
self.assertEqual(relpath('foo', 'foo'), '')
|
|
self.assertEqual(relpath(os.path.join('foo', 'bar'), 'foo/bar'), '')
|
|
self.assertEqual(relpath(os.path.join('foo', 'bar'), 'foo'), 'bar')
|
|
self.assertEqual(relpath(os.path.join('foo', 'bar', 'baz'), 'foo'),
|
|
'bar/baz')
|
|
self.assertEqual(relpath(os.path.join('foo', 'bar'), 'foo/bar/baz'),
|
|
'..')
|
|
self.assertEqual(relpath(os.path.join('foo', 'bar'), 'foo/baz'),
|
|
'../bar')
|
|
self.assertEqual(relpath('foo/', 'foo'), '')
|
|
self.assertEqual(relpath('foo/bar/', 'foo'), 'bar')
|
|
|
|
def test_join(self):
|
|
self.assertEqual(join('foo', 'bar', 'baz'), 'foo/bar/baz')
|
|
self.assertEqual(join('foo', '', 'bar'), 'foo/bar')
|
|
self.assertEqual(join('', 'foo', 'bar'), 'foo/bar')
|
|
self.assertEqual(join('', 'foo', '/bar'), '/bar')
|
|
|
|
def test_normpath(self):
|
|
self.assertEqual(normpath(os.path.join('foo', 'bar', 'baz',
|
|
'..', 'qux')), 'foo/bar/qux')
|
|
|
|
def test_dirname(self):
|
|
self.assertEqual(dirname('foo/bar/baz'), 'foo/bar')
|
|
self.assertEqual(dirname('foo/bar'), 'foo')
|
|
self.assertEqual(dirname('foo'), '')
|
|
self.assertEqual(dirname('foo/bar/'), 'foo/bar')
|
|
|
|
def test_commonprefix(self):
|
|
self.assertEqual(commonprefix([os.path.join('foo', 'bar', 'baz'),
|
|
'foo/qux', 'foo/baz/qux']), 'foo/')
|
|
self.assertEqual(commonprefix([os.path.join('foo', 'bar', 'baz'),
|
|
'foo/qux', 'baz/qux']), '')
|
|
|
|
def test_basename(self):
|
|
self.assertEqual(basename('foo/bar/baz'), 'baz')
|
|
self.assertEqual(basename('foo/bar'), 'bar')
|
|
self.assertEqual(basename('foo'), 'foo')
|
|
self.assertEqual(basename('foo/bar/'), '')
|
|
|
|
def test_split(self):
|
|
self.assertEqual(split(os.path.join('foo', 'bar', 'baz')),
|
|
['foo', 'bar', 'baz'])
|
|
|
|
def test_splitext(self):
|
|
self.assertEqual(splitext(os.path.join('foo', 'bar', 'baz.qux')),
|
|
('foo/bar/baz', '.qux'))
|
|
|
|
def test_basedir(self):
|
|
foobarbaz = os.path.join('foo', 'bar', 'baz')
|
|
self.assertEqual(basedir(foobarbaz, ['foo', 'bar', 'baz']), 'foo')
|
|
self.assertEqual(basedir(foobarbaz, ['foo', 'foo/bar', 'baz']),
|
|
'foo/bar')
|
|
self.assertEqual(basedir(foobarbaz, ['foo/bar', 'foo', 'baz']),
|
|
'foo/bar')
|
|
self.assertEqual(basedir(foobarbaz, ['foo', 'bar', '']), 'foo')
|
|
self.assertEqual(basedir(foobarbaz, ['bar', 'baz', '']), '')
|
|
|
|
def test_match(self):
|
|
self.assertTrue(match('foo', ''))
|
|
self.assertTrue(match('foo/bar/baz.qux', 'foo/bar'))
|
|
self.assertTrue(match('foo/bar/baz.qux', 'foo'))
|
|
self.assertTrue(match('foo', '*'))
|
|
self.assertTrue(match('foo/bar/baz.qux', 'foo/bar/*'))
|
|
self.assertTrue(match('foo/bar/baz.qux', 'foo/bar/*'))
|
|
self.assertTrue(match('foo/bar/baz.qux', 'foo/bar/*'))
|
|
self.assertTrue(match('foo/bar/baz.qux', 'foo/bar/*'))
|
|
self.assertTrue(match('foo/bar/baz.qux', 'foo/*/baz.qux'))
|
|
self.assertTrue(match('foo/bar/baz.qux', '*/bar/baz.qux'))
|
|
self.assertTrue(match('foo/bar/baz.qux', '*/*/baz.qux'))
|
|
self.assertTrue(match('foo/bar/baz.qux', '*/*/*'))
|
|
self.assertTrue(match('foo/bar/baz.qux', 'foo/*/*'))
|
|
self.assertTrue(match('foo/bar/baz.qux', 'foo/*/*.qux'))
|
|
self.assertTrue(match('foo/bar/baz.qux', 'foo/b*/*z.qux'))
|
|
self.assertTrue(match('foo/bar/baz.qux', 'foo/b*r/ba*z.qux'))
|
|
self.assertFalse(match('foo/bar/baz.qux', 'foo/b*z/ba*r.qux'))
|
|
self.assertTrue(match('foo/bar/baz.qux', '**'))
|
|
self.assertTrue(match('foo/bar/baz.qux', '**/baz.qux'))
|
|
self.assertTrue(match('foo/bar/baz.qux', '**/bar/baz.qux'))
|
|
self.assertTrue(match('foo/bar/baz.qux', 'foo/**/baz.qux'))
|
|
self.assertTrue(match('foo/bar/baz.qux', 'foo/**/*.qux'))
|
|
self.assertTrue(match('foo/bar/baz.qux', '**/foo/bar/baz.qux'))
|
|
self.assertTrue(match('foo/bar/baz.qux', 'foo/**/bar/baz.qux'))
|
|
self.assertTrue(match('foo/bar/baz.qux', 'foo/**/bar/*.qux'))
|
|
self.assertTrue(match('foo/bar/baz.qux', 'foo/**/*.qux'))
|
|
self.assertTrue(match('foo/bar/baz.qux', '**/*.qux'))
|
|
self.assertFalse(match('foo/bar/baz.qux', '**.qux'))
|
|
self.assertFalse(match('foo/bar', 'foo/*/bar'))
|
|
self.assertTrue(match('foo/bar/baz.qux', 'foo/**/bar/**'))
|
|
self.assertFalse(match('foo/nobar/baz.qux', 'foo/**/bar/**'))
|
|
self.assertTrue(match('foo/bar', 'foo/**/bar/**'))
|
|
|
|
def test_rebase(self):
|
|
self.assertEqual(rebase('foo', 'foo/bar', 'bar/baz'), 'baz')
|
|
self.assertEqual(rebase('foo', 'foo', 'bar/baz'), 'bar/baz')
|
|
self.assertEqual(rebase('foo/bar', 'foo', 'baz'), 'bar/baz')
|
|
|
|
if __name__ == '__main__':
|
|
mozunit.main()
|