# 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 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()
quality 95%
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland