python/mozbuild/mozpack/test/test_chrome_flags.py

Fri, 16 Jan 2015 18:13:44 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Fri, 16 Jan 2015 18:13:44 +0100
branch
TOR_BUG_9701
changeset 14
925c144e1f1f
permissions
-rw-r--r--

Integrate suggestion from review to improve consistency with existing code.

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

mercurial