Bug 979454 - manifest parser needs to support skip-if in the [default] section and || that with the skip-if from the [test] section. r=ted

This commit is contained in:
Joel Maher 2014-03-05 10:32:03 -05:00
parent 9b5829fcde
commit 7cb356401d
3 changed files with 61 additions and 0 deletions

View File

@ -390,7 +390,10 @@ def read_ini(fp, variables=None, default='DEFAULT',
# interpret the variables
def interpret_variables(global_dict, local_dict):
variables = global_dict.copy()
if 'skip-if' in local_dict and 'skip-if' in variables:
local_dict['skip-if'] = "(%s) || (%s)" % (variables['skip-if'].split('#')[0], local_dict['skip-if'].split('#')[0])
variables.update(local_dict)
return variables
sections = [(i, interpret_variables(variables, j)) for i, j in sections]

View File

@ -0,0 +1,22 @@
[DEFAULT]
skip-if = os == 'win' && debug # a pesky comment
[test1]
skip-if = debug
[test2]
skip-if = os == 'linux'
[test3]
skip-if = os == 'win'
[test4]
skip-if = os == 'win' && debug
[test5]
foo = bar
[test6]
skip-if = debug # a second pesky comment

View File

@ -0,0 +1,36 @@
#!/usr/bin/env 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 os
import unittest
from manifestparser import ManifestParser
here = os.path.dirname(os.path.abspath(__file__))
class TestDefaultSkipif(unittest.TestCase):
"""test applying a skip-if condition in [DEFAULT] and || with the value for the test"""
def test_defaults(self):
default = os.path.join(here, 'default-skipif.ini')
parser = ManifestParser(manifests=(default,))
for test in parser.tests:
if test['name'] == 'test1':
self.assertEqual(test['skip-if'], "(os == 'win' && debug ) || (debug)")
elif test['name'] == 'test2':
self.assertEqual(test['skip-if'], "(os == 'win' && debug ) || (os == 'linux')")
elif test['name'] == 'test3':
self.assertEqual(test['skip-if'], "(os == 'win' && debug ) || (os == 'win')")
elif test['name'] == 'test4':
self.assertEqual(test['skip-if'], "(os == 'win' && debug ) || (os == 'win' && debug)")
elif test['name'] == 'test5':
self.assertEqual(test['skip-if'], "os == 'win' && debug # a pesky comment")
elif test['name'] == 'test6':
self.assertEqual(test['skip-if'], "(os == 'win' && debug ) || (debug )")
if __name__ == '__main__':
unittest.main()