mirror of
https://github.com/ManchildProductions/UXP-Fixed.git
synced 2026-07-02 21:08:26 +00:00
116 lines
4.5 KiB
Python
Executable File
116 lines
4.5 KiB
Python
Executable File
#!/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()
|