Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
- Manifest: python/mozbuild/mozpack/test/python.toml
# 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
import unittest
import mozunit
from mozpack.chrome.flags import Flag, Flags, StringFlag, VersionFlag
from mozpack.errors import ErrorMessage
class TestFlag(unittest.TestCase):
def test_flag(self):
flag = Flag("flag")
self.assertEqual(str(flag), "")
self.assertTrue(flag.matches(False))
self.assertTrue(flag.matches("false"))
self.assertFalse(flag.matches("true"))
self.assertRaises(ErrorMessage, flag.add_definition, "flag=")
self.assertRaises(ErrorMessage, flag.add_definition, "flag=42")
self.assertRaises(ErrorMessage, flag.add_definition, "flag!=false")
flag.add_definition("flag=1")
self.assertEqual(str(flag), "flag=1")
self.assertTrue(flag.matches(True))
self.assertTrue(flag.matches("1"))
self.assertFalse(flag.matches("no"))
flag.add_definition("flag=true")
self.assertEqual(str(flag), "flag=true")
self.assertTrue(flag.matches(True))
self.assertTrue(flag.matches("true"))
self.assertFalse(flag.matches("0"))
flag.add_definition("flag=no")
self.assertEqual(str(flag), "flag=no")
self.assertTrue(flag.matches("false"))
self.assertFalse(flag.matches("1"))
flag.add_definition("flag")
self.assertEqual(str(flag), "flag")
self.assertFalse(flag.matches("false"))
self.assertTrue(flag.matches("true"))
self.assertFalse(flag.matches(False))
def test_string_flag(self):
flag = StringFlag("flag")
self.assertEqual(str(flag), "")
self.assertTrue(flag.matches("foo"))
self.assertRaises(ErrorMessage, flag.add_definition, "flag>=2")
flag.add_definition("flag=foo")
self.assertEqual(str(flag), "flag=foo")
self.assertTrue(flag.matches("foo"))
self.assertFalse(flag.matches("bar"))
flag.add_definition("flag=bar")
self.assertEqual(str(flag), "flag=foo flag=bar")
self.assertTrue(flag.matches("foo"))
self.assertTrue(flag.matches("bar"))
self.assertFalse(flag.matches("baz"))
flag = StringFlag("flag")
flag.add_definition("flag!=bar")
self.assertEqual(str(flag), "flag!=bar")
self.assertTrue(flag.matches("foo"))
self.assertFalse(flag.matches("bar"))
def test_version_flag(self):
flag = VersionFlag("flag")
self.assertEqual(str(flag), "")
self.assertTrue(flag.matches("1.0"))
self.assertRaises(ErrorMessage, flag.add_definition, "flag!=2")
flag.add_definition("flag=1.0")
self.assertEqual(str(flag), "flag=1.0")
self.assertTrue(flag.matches("1.0"))
self.assertFalse(flag.matches("2.0"))
flag.add_definition("flag=2.0")
self.assertEqual(str(flag), "flag=1.0 flag=2.0")
self.assertTrue(flag.matches("1.0"))
self.assertTrue(flag.matches("2.0"))
self.assertFalse(flag.matches("3.0"))
flag = VersionFlag("flag")
flag.add_definition("flag>=2.0")
self.assertEqual(str(flag), "flag>=2.0")
self.assertFalse(flag.matches("1.0"))
self.assertTrue(flag.matches("2.0"))
self.assertTrue(flag.matches("3.0"))
flag.add_definition("flag<1.10")
self.assertEqual(str(flag), "flag>=2.0 flag<1.10")
self.assertTrue(flag.matches("1.0"))
self.assertTrue(flag.matches("1.9"))
self.assertFalse(flag.matches("1.10"))
self.assertFalse(flag.matches("1.20"))
self.assertTrue(flag.matches("2.0"))
self.assertTrue(flag.matches("3.0"))
self.assertRaises(Exception, flag.add_definition, "flag<")
self.assertRaises(Exception, flag.add_definition, "flag>")
self.assertRaises(Exception, flag.add_definition, "flag>=")
self.assertRaises(Exception, flag.add_definition, "flag<=")
self.assertRaises(Exception, flag.add_definition, "flag!=1.0")
class TestFlags(unittest.TestCase):
def setUp(self):
self.flags = Flags(
"contentaccessible=yes",
"appversion>=3.5",
"application=foo",
"application=bar",
"appversion<2.0",
"platform",
"abi!=Linux_x86-gcc3",
)
def test_flags_str(self):
self.assertEqual(
str(self.flags),
"contentaccessible=yes "
+ "appversion>=3.5 appversion<2.0 application=foo "
+ "application=bar platform abi!=Linux_x86-gcc3",
)
def test_flags_match_unset(self):
self.assertTrue(self.flags.match(os="WINNT"))
def test_flags_match(self):
self.assertTrue(self.flags.match(application="foo"))
self.assertFalse(self.flags.match(application="qux"))
def test_flags_match_different(self):
self.assertTrue(self.flags.match(abi="WINNT_x86-MSVC"))
self.assertFalse(self.flags.match(abi="Linux_x86-gcc3"))
def test_flags_match_version(self):
self.assertTrue(self.flags.match(appversion="1.0"))
self.assertTrue(self.flags.match(appversion="1.5"))
self.assertFalse(self.flags.match(appversion="2.0"))
self.assertFalse(self.flags.match(appversion="3.0"))
self.assertTrue(self.flags.match(appversion="3.5"))
self.assertTrue(self.flags.match(appversion="3.10"))
if __name__ == "__main__":
mozunit.main()