tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_path.py (5852B)


      1 # This Source Code Form is subject to the terms of the Mozilla Public
      2 # License, v. 2.0. If a copy of the MPL was not distributed with this
      3 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
      4 
      5 import os
      6 import unittest
      7 
      8 import mozunit
      9 
     10 from mozpack.path import (
     11    basedir,
     12    basename,
     13    commonprefix,
     14    dirname,
     15    join,
     16    match,
     17    normpath,
     18    rebase,
     19    relpath,
     20    split,
     21    splitext,
     22 )
     23 
     24 
     25 class TestPath(unittest.TestCase):
     26    SEP = os.sep
     27 
     28    def test_relpath(self):
     29        self.assertEqual(relpath("foo", "foo"), "")
     30        self.assertEqual(relpath(self.SEP.join(("foo", "bar")), "foo/bar"), "")
     31        self.assertEqual(relpath(self.SEP.join(("foo", "bar")), "foo"), "bar")
     32        self.assertEqual(
     33            relpath(self.SEP.join(("foo", "bar", "baz")), "foo"), "bar/baz"
     34        )
     35        self.assertEqual(relpath(self.SEP.join(("foo", "bar")), "foo/bar/baz"), "..")
     36        self.assertEqual(relpath(self.SEP.join(("foo", "bar")), "foo/baz"), "../bar")
     37        self.assertEqual(relpath("foo/", "foo"), "")
     38        self.assertEqual(relpath("foo/bar/", "foo"), "bar")
     39 
     40    def test_join(self):
     41        self.assertEqual(join("foo", "bar", "baz"), "foo/bar/baz")
     42        self.assertEqual(join("foo", "", "bar"), "foo/bar")
     43        self.assertEqual(join("", "foo", "bar"), "foo/bar")
     44        self.assertEqual(join("", "foo", "/bar"), "/bar")
     45 
     46    def test_normpath(self):
     47        self.assertEqual(
     48            normpath(self.SEP.join(("foo", "bar", "baz", "..", "qux"))), "foo/bar/qux"
     49        )
     50 
     51    def test_dirname(self):
     52        self.assertEqual(dirname("foo/bar/baz"), "foo/bar")
     53        self.assertEqual(dirname("foo/bar"), "foo")
     54        self.assertEqual(dirname("foo"), "")
     55        self.assertEqual(dirname("foo/bar/"), "foo/bar")
     56 
     57    def test_commonprefix(self):
     58        self.assertEqual(
     59            commonprefix([
     60                self.SEP.join(("foo", "bar", "baz")),
     61                "foo/qux",
     62                "foo/baz/qux",
     63            ]),
     64            "foo/",
     65        )
     66        self.assertEqual(
     67            commonprefix([self.SEP.join(("foo", "bar", "baz")), "foo/qux", "baz/qux"]),
     68            "",
     69        )
     70 
     71    def test_basename(self):
     72        self.assertEqual(basename("foo/bar/baz"), "baz")
     73        self.assertEqual(basename("foo/bar"), "bar")
     74        self.assertEqual(basename("foo"), "foo")
     75        self.assertEqual(basename("foo/bar/"), "")
     76 
     77    def test_split(self):
     78        self.assertEqual(
     79            split(self.SEP.join(("foo", "bar", "baz"))), ["foo", "bar", "baz"]
     80        )
     81 
     82    def test_splitext(self):
     83        self.assertEqual(
     84            splitext(self.SEP.join(("foo", "bar", "baz.qux"))), ("foo/bar/baz", ".qux")
     85        )
     86 
     87    def test_basedir(self):
     88        foobarbaz = self.SEP.join(("foo", "bar", "baz"))
     89        self.assertEqual(basedir(foobarbaz, ["foo", "bar", "baz"]), "foo")
     90        self.assertEqual(basedir(foobarbaz, ["foo", "foo/bar", "baz"]), "foo/bar")
     91        self.assertEqual(basedir(foobarbaz, ["foo/bar", "foo", "baz"]), "foo/bar")
     92        self.assertEqual(basedir(foobarbaz, ["foo", "bar", ""]), "foo")
     93        self.assertEqual(basedir(foobarbaz, ["bar", "baz", ""]), "")
     94 
     95    def test_match(self):
     96        self.assertTrue(match("foo", ""))
     97        self.assertTrue(match("foo/bar/baz.qux", "foo/bar"))
     98        self.assertTrue(match("foo/bar/baz.qux", "foo"))
     99        self.assertTrue(match("foo", "*"))
    100        self.assertTrue(match("foo/bar/baz.qux", "foo/bar/*"))
    101        self.assertTrue(match("foo/bar/baz.qux", "foo/bar/*"))
    102        self.assertTrue(match("foo/bar/baz.qux", "foo/bar/*"))
    103        self.assertTrue(match("foo/bar/baz.qux", "foo/bar/*"))
    104        self.assertTrue(match("foo/bar/baz.qux", "foo/*/baz.qux"))
    105        self.assertTrue(match("foo/bar/baz.qux", "*/bar/baz.qux"))
    106        self.assertTrue(match("foo/bar/baz.qux", "*/*/baz.qux"))
    107        self.assertTrue(match("foo/bar/baz.qux", "*/*/*"))
    108        self.assertTrue(match("foo/bar/baz.qux", "foo/*/*"))
    109        self.assertTrue(match("foo/bar/baz.qux", "foo/*/*.qux"))
    110        self.assertTrue(match("foo/bar/baz.qux", "foo/b*/*z.qux"))
    111        self.assertTrue(match("foo/bar/baz.qux", "foo/b*r/ba*z.qux"))
    112        self.assertFalse(match("foo/bar/baz.qux", "foo/b*z/ba*r.qux"))
    113        self.assertTrue(match("foo/bar/baz.qux", "**"))
    114        self.assertTrue(match("foo/bar/baz.qux", "**/baz.qux"))
    115        self.assertTrue(match("foo/bar/baz.qux", "**/bar/baz.qux"))
    116        self.assertTrue(match("foo/bar/baz.qux", "foo/**/baz.qux"))
    117        self.assertTrue(match("foo/bar/baz.qux", "foo/**/*.qux"))
    118        self.assertTrue(match("foo/bar/baz.qux", "**/foo/bar/baz.qux"))
    119        self.assertTrue(match("foo/bar/baz.qux", "foo/**/bar/baz.qux"))
    120        self.assertTrue(match("foo/bar/baz.qux", "foo/**/bar/*.qux"))
    121        self.assertTrue(match("foo/bar/baz.qux", "foo/**/*.qux"))
    122        self.assertTrue(match("foo/bar/baz.qux", "**/*.qux"))
    123        self.assertFalse(match("foo/bar/baz.qux", "**.qux"))
    124        self.assertFalse(match("foo/bar", "foo/*/bar"))
    125        self.assertTrue(match("foo/bar/baz.qux", "foo/**/bar/**"))
    126        self.assertFalse(match("foo/nobar/baz.qux", "foo/**/bar/**"))
    127        self.assertTrue(match("foo/bar", "foo/**/bar/**"))
    128 
    129    def test_rebase(self):
    130        self.assertEqual(rebase("foo", "foo/bar", "bar/baz"), "baz")
    131        self.assertEqual(rebase("foo", "foo", "bar/baz"), "bar/baz")
    132        self.assertEqual(rebase("foo/bar", "foo", "baz"), "bar/baz")
    133 
    134 
    135 if os.altsep:
    136 
    137    class TestAltPath(TestPath):
    138        SEP = os.altsep
    139 
    140    class TestReverseAltPath(TestPath):
    141        def setUp(self):
    142            sep = os.sep
    143            os.sep = os.altsep
    144            os.altsep = sep
    145 
    146        def tearDown(self):
    147            self.setUp()
    148 
    149    class TestAltReverseAltPath(TestReverseAltPath):
    150        SEP = os.altsep
    151 
    152 
    153 if __name__ == "__main__":
    154    mozunit.main()