mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-11-19 02:13:04 +00:00
149 lines
5.5 KiB
Python
149 lines
5.5 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 unittest
|
|
import mozunit
|
|
from mozpack.chrome.flags import (
|
|
Flag,
|
|
StringFlag,
|
|
VersionFlag,
|
|
Flags,
|
|
)
|
|
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()
|