mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-04 10:18:41 +02:00 
			
		
		
		
	# ignore-this-changeset Differential Revision: https://phabricator.services.mozilla.com/D172359
		
			
				
	
	
		
			152 lines
		
	
	
	
		
			5.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			152 lines
		
	
	
	
		
			5.7 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/.
 | 
						|
 | 
						|
import os
 | 
						|
import unittest
 | 
						|
 | 
						|
import mozunit
 | 
						|
 | 
						|
from mozpack.path import (
 | 
						|
    basedir,
 | 
						|
    basename,
 | 
						|
    commonprefix,
 | 
						|
    dirname,
 | 
						|
    join,
 | 
						|
    match,
 | 
						|
    normpath,
 | 
						|
    rebase,
 | 
						|
    relpath,
 | 
						|
    split,
 | 
						|
    splitext,
 | 
						|
)
 | 
						|
 | 
						|
 | 
						|
class TestPath(unittest.TestCase):
 | 
						|
    SEP = os.sep
 | 
						|
 | 
						|
    def test_relpath(self):
 | 
						|
        self.assertEqual(relpath("foo", "foo"), "")
 | 
						|
        self.assertEqual(relpath(self.SEP.join(("foo", "bar")), "foo/bar"), "")
 | 
						|
        self.assertEqual(relpath(self.SEP.join(("foo", "bar")), "foo"), "bar")
 | 
						|
        self.assertEqual(
 | 
						|
            relpath(self.SEP.join(("foo", "bar", "baz")), "foo"), "bar/baz"
 | 
						|
        )
 | 
						|
        self.assertEqual(relpath(self.SEP.join(("foo", "bar")), "foo/bar/baz"), "..")
 | 
						|
        self.assertEqual(relpath(self.SEP.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(self.SEP.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(
 | 
						|
                [self.SEP.join(("foo", "bar", "baz")), "foo/qux", "foo/baz/qux"]
 | 
						|
            ),
 | 
						|
            "foo/",
 | 
						|
        )
 | 
						|
        self.assertEqual(
 | 
						|
            commonprefix([self.SEP.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(self.SEP.join(("foo", "bar", "baz"))), ["foo", "bar", "baz"]
 | 
						|
        )
 | 
						|
 | 
						|
    def test_splitext(self):
 | 
						|
        self.assertEqual(
 | 
						|
            splitext(self.SEP.join(("foo", "bar", "baz.qux"))), ("foo/bar/baz", ".qux")
 | 
						|
        )
 | 
						|
 | 
						|
    def test_basedir(self):
 | 
						|
        foobarbaz = self.SEP.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 os.altsep:
 | 
						|
 | 
						|
    class TestAltPath(TestPath):
 | 
						|
        SEP = os.altsep
 | 
						|
 | 
						|
    class TestReverseAltPath(TestPath):
 | 
						|
        def setUp(self):
 | 
						|
            sep = os.sep
 | 
						|
            os.sep = os.altsep
 | 
						|
            os.altsep = sep
 | 
						|
 | 
						|
        def tearDown(self):
 | 
						|
            self.setUp()
 | 
						|
 | 
						|
    class TestAltReverseAltPath(TestReverseAltPath):
 | 
						|
        SEP = os.altsep
 | 
						|
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
    mozunit.main()
 |