1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
#!/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
from manifestparser import combine_fields
here = os.path.dirname(os.path.abspath(__file__))
class TestDefaultSkipif(unittest.TestCase):
"""Tests 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 )")
class TestDefaultSupportFiles(unittest.TestCase):
"""Tests combining support-files field in [DEFAULT] with the value for a test"""
def test_defaults(self):
default = os.path.join(here, 'default-suppfiles.ini')
parser = ManifestParser(manifests=(default,))
expected_supp_files = {
'test7': 'foo.js # a comment',
'test8': 'foo.js bar.js ',
'test9': 'foo.js # a comment',
}
for test in parser.tests:
expected = expected_supp_files[test['name']]
self.assertEqual(test['support-files'], expected)
class TestOmitDefaults(unittest.TestCase):
"""Tests passing omit-defaults prevents defaults from propagating to definitions.
"""
def test_defaults(self):
manifests = (os.path.join(here, 'default-suppfiles.ini'),
os.path.join(here, 'default-skipif.ini'))
parser = ManifestParser(manifests=manifests, handle_defaults=False)
expected_supp_files = {
'test8': 'bar.js # another comment',
}
expected_skip_ifs = {
'test1': "debug",
'test2': "os == 'linux'",
'test3': "os == 'win'",
'test4': "os == 'win' && debug",
'test6': "debug # a second pesky comment",
}
for test in parser.tests:
for field, expectations in (('support-files', expected_supp_files),
('skip-if', expected_skip_ifs)):
expected = expectations.get(test['name'])
if not expected:
self.assertNotIn(field, test)
else:
self.assertEqual(test[field], expected)
expected_defaults = {
os.path.join(here, 'default-suppfiles.ini'): {
"support-files": "foo.js # a comment",
},
os.path.join(here, 'default-skipif.ini'): {
"skip-if": "os == 'win' && debug # a pesky comment",
},
}
for path, defaults in expected_defaults.items():
self.assertIn(path, parser.manifest_defaults)
actual_defaults = parser.manifest_defaults[path]
for key, value in defaults.items():
self.assertIn(key, actual_defaults)
self.assertEqual(value, actual_defaults[key])
class TestSubsuiteDefaults(unittest.TestCase):
"""Test that subsuites are handled correctly when managing defaults
outside of the manifest parser."""
def test_subsuite_defaults(self):
manifest = os.path.join(here, 'default-subsuite.ini')
parser = ManifestParser(manifests=(manifest,), handle_defaults=False)
expected_subsuites = {
'test1': 'baz',
'test2': 'foo',
}
defaults = parser.manifest_defaults[manifest]
for test in parser.tests:
value = combine_fields(defaults, test)
self.assertEqual(expected_subsuites[value['name']],
value['subsuite'])
if __name__ == '__main__':
unittest.main()
|