tor-browser

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

test_chrome_flags.py (5591B)


      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 unittest
      6 
      7 import mozunit
      8 
      9 from mozpack.chrome.flags import Flag, Flags, StringFlag, VersionFlag
     10 from mozpack.errors import ErrorMessage
     11 
     12 
     13 class TestFlag(unittest.TestCase):
     14    def test_flag(self):
     15        flag = Flag("flag")
     16        self.assertEqual(str(flag), "")
     17        self.assertTrue(flag.matches(False))
     18        self.assertTrue(flag.matches("false"))
     19        self.assertFalse(flag.matches("true"))
     20        self.assertRaises(ErrorMessage, flag.add_definition, "flag=")
     21        self.assertRaises(ErrorMessage, flag.add_definition, "flag=42")
     22        self.assertRaises(ErrorMessage, flag.add_definition, "flag!=false")
     23 
     24        flag.add_definition("flag=1")
     25        self.assertEqual(str(flag), "flag=1")
     26        self.assertTrue(flag.matches(True))
     27        self.assertTrue(flag.matches("1"))
     28        self.assertFalse(flag.matches("no"))
     29 
     30        flag.add_definition("flag=true")
     31        self.assertEqual(str(flag), "flag=true")
     32        self.assertTrue(flag.matches(True))
     33        self.assertTrue(flag.matches("true"))
     34        self.assertFalse(flag.matches("0"))
     35 
     36        flag.add_definition("flag=no")
     37        self.assertEqual(str(flag), "flag=no")
     38        self.assertTrue(flag.matches("false"))
     39        self.assertFalse(flag.matches("1"))
     40 
     41        flag.add_definition("flag")
     42        self.assertEqual(str(flag), "flag")
     43        self.assertFalse(flag.matches("false"))
     44        self.assertTrue(flag.matches("true"))
     45        self.assertFalse(flag.matches(False))
     46 
     47    def test_string_flag(self):
     48        flag = StringFlag("flag")
     49        self.assertEqual(str(flag), "")
     50        self.assertTrue(flag.matches("foo"))
     51        self.assertRaises(ErrorMessage, flag.add_definition, "flag>=2")
     52 
     53        flag.add_definition("flag=foo")
     54        self.assertEqual(str(flag), "flag=foo")
     55        self.assertTrue(flag.matches("foo"))
     56        self.assertFalse(flag.matches("bar"))
     57 
     58        flag.add_definition("flag=bar")
     59        self.assertEqual(str(flag), "flag=foo flag=bar")
     60        self.assertTrue(flag.matches("foo"))
     61        self.assertTrue(flag.matches("bar"))
     62        self.assertFalse(flag.matches("baz"))
     63 
     64        flag = StringFlag("flag")
     65        flag.add_definition("flag!=bar")
     66        self.assertEqual(str(flag), "flag!=bar")
     67        self.assertTrue(flag.matches("foo"))
     68        self.assertFalse(flag.matches("bar"))
     69 
     70    def test_version_flag(self):
     71        flag = VersionFlag("flag")
     72        self.assertEqual(str(flag), "")
     73        self.assertTrue(flag.matches("1.0"))
     74        self.assertRaises(ErrorMessage, flag.add_definition, "flag!=2")
     75 
     76        flag.add_definition("flag=1.0")
     77        self.assertEqual(str(flag), "flag=1.0")
     78        self.assertTrue(flag.matches("1.0"))
     79        self.assertFalse(flag.matches("2.0"))
     80 
     81        flag.add_definition("flag=2.0")
     82        self.assertEqual(str(flag), "flag=1.0 flag=2.0")
     83        self.assertTrue(flag.matches("1.0"))
     84        self.assertTrue(flag.matches("2.0"))
     85        self.assertFalse(flag.matches("3.0"))
     86 
     87        flag = VersionFlag("flag")
     88        flag.add_definition("flag>=2.0")
     89        self.assertEqual(str(flag), "flag>=2.0")
     90        self.assertFalse(flag.matches("1.0"))
     91        self.assertTrue(flag.matches("2.0"))
     92        self.assertTrue(flag.matches("3.0"))
     93 
     94        flag.add_definition("flag<1.10")
     95        self.assertEqual(str(flag), "flag>=2.0 flag<1.10")
     96        self.assertTrue(flag.matches("1.0"))
     97        self.assertTrue(flag.matches("1.9"))
     98        self.assertFalse(flag.matches("1.10"))
     99        self.assertFalse(flag.matches("1.20"))
    100        self.assertTrue(flag.matches("2.0"))
    101        self.assertTrue(flag.matches("3.0"))
    102        self.assertRaises(Exception, flag.add_definition, "flag<")
    103        self.assertRaises(Exception, flag.add_definition, "flag>")
    104        self.assertRaises(Exception, flag.add_definition, "flag>=")
    105        self.assertRaises(Exception, flag.add_definition, "flag<=")
    106        self.assertRaises(Exception, flag.add_definition, "flag!=1.0")
    107 
    108 
    109 class TestFlags(unittest.TestCase):
    110    def setUp(self):
    111        self.flags = Flags(
    112            "contentaccessible=yes",
    113            "appversion>=3.5",
    114            "application=foo",
    115            "application=bar",
    116            "appversion<2.0",
    117            "platform",
    118            "abi!=Linux_x86-gcc3",
    119        )
    120 
    121    def test_flags_str(self):
    122        self.assertEqual(
    123            str(self.flags),
    124            "contentaccessible=yes "
    125            + "appversion>=3.5 appversion<2.0 application=foo "
    126            + "application=bar platform abi!=Linux_x86-gcc3",
    127        )
    128 
    129    def test_flags_match_unset(self):
    130        self.assertTrue(self.flags.match(os="WINNT"))
    131 
    132    def test_flags_match(self):
    133        self.assertTrue(self.flags.match(application="foo"))
    134        self.assertFalse(self.flags.match(application="qux"))
    135 
    136    def test_flags_match_different(self):
    137        self.assertTrue(self.flags.match(abi="WINNT_x86-MSVC"))
    138        self.assertFalse(self.flags.match(abi="Linux_x86-gcc3"))
    139 
    140    def test_flags_match_version(self):
    141        self.assertTrue(self.flags.match(appversion="1.0"))
    142        self.assertTrue(self.flags.match(appversion="1.5"))
    143        self.assertFalse(self.flags.match(appversion="2.0"))
    144        self.assertFalse(self.flags.match(appversion="3.0"))
    145        self.assertTrue(self.flags.match(appversion="3.5"))
    146        self.assertTrue(self.flags.match(appversion="3.10"))
    147 
    148 
    149 if __name__ == "__main__":
    150    mozunit.main()