diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/spack/spack/test/spack_yaml.py | 136 |
1 files changed, 69 insertions, 67 deletions
diff --git a/lib/spack/spack/test/spack_yaml.py b/lib/spack/spack/test/spack_yaml.py index fbbb7b8e60..53649eb1ec 100644 --- a/lib/spack/spack/test/spack_yaml.py +++ b/lib/spack/spack/test/spack_yaml.py @@ -22,14 +22,17 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -""" -Test Spack's custom YAML format. -""" -import unittest +"""Test Spack's custom YAML format.""" + +import pytest import spack.util.spack_yaml as syaml -test_file = """\ + +@pytest.fixture() +def data(): + """Returns the data loaded from a test file""" + test_file = """\ config_file: x86_64: foo: /path/to/foo @@ -43,66 +46,65 @@ config_file: [ 1, 2, 3 ] some_key: some_string """ + return syaml.load(test_file) + + +def test_parse(data): + + expected = { + 'config_file': syaml.syaml_dict([ + ('x86_64', syaml.syaml_dict([ + ('foo', '/path/to/foo'), + ('bar', '/path/to/bar'), + ('baz', '/path/to/baz')])), + ('some_list', ['item 1', 'item 2', 'item 3']), + ('another_list', [1, 2, 3]), + ('some_key', 'some_string') + ])} + + assert data == expected + + +def test_dict_order(data): + + expected_order = ['x86_64', 'some_list', 'another_list', 'some_key'] + assert data['config_file'].keys() == expected_order + + expected_order = ['foo', 'bar', 'baz'] + assert data['config_file']['x86_64'].keys() == expected_order + + +def test_line_numbers(data): + def check(obj, start_line, end_line): + assert obj._start_mark.line == start_line + assert obj._end_mark.line == end_line + + check(data, 0, 12) + check(data['config_file'], 1, 12) + check(data['config_file']['x86_64'], 2, 5) + check(data['config_file']['x86_64']['foo'], 2, 2) + check(data['config_file']['x86_64']['bar'], 3, 3) + check(data['config_file']['x86_64']['baz'], 4, 4) + check(data['config_file']['some_list'], 6, 9) + check(data['config_file']['some_list'][0], 6, 6) + check(data['config_file']['some_list'][1], 7, 7) + check(data['config_file']['some_list'][2], 8, 8) + check(data['config_file']['another_list'], 10, 10) + check(data['config_file']['some_key'], 11, 11) + + +def test_yaml_aliases(): + aliased_list_1 = ['foo'] + aliased_list_2 = [] + dict_with_aliases = { + 'a': aliased_list_1, + 'b': aliased_list_1, + 'c': aliased_list_1, + 'd': aliased_list_2, + 'e': aliased_list_2, + 'f': aliased_list_2, + } + string = syaml.dump(dict_with_aliases) -test_data = { - 'config_file': syaml.syaml_dict([ - ('x86_64', syaml.syaml_dict([ - ('foo', '/path/to/foo'), - ('bar', '/path/to/bar'), - ('baz', '/path/to/baz')])), - ('some_list', ['item 1', 'item 2', 'item 3']), - ('another_list', [1, 2, 3]), - ('some_key', 'some_string') - ])} - - -class SpackYamlTest(unittest.TestCase): - - def setUp(self): - self.data = syaml.load(test_file) - - def test_parse(self): - self.assertEqual(test_data, self.data) - - def test_dict_order(self): - self.assertEqual( - ['x86_64', 'some_list', 'another_list', 'some_key'], - self.data['config_file'].keys()) - - self.assertEqual( - ['foo', 'bar', 'baz'], - self.data['config_file']['x86_64'].keys()) - - def test_line_numbers(self): - def check(obj, start_line, end_line): - self.assertEqual(obj._start_mark.line, start_line) - self.assertEqual(obj._end_mark.line, end_line) - - check(self.data, 0, 12) - check(self.data['config_file'], 1, 12) - check(self.data['config_file']['x86_64'], 2, 5) - check(self.data['config_file']['x86_64']['foo'], 2, 2) - check(self.data['config_file']['x86_64']['bar'], 3, 3) - check(self.data['config_file']['x86_64']['baz'], 4, 4) - check(self.data['config_file']['some_list'], 6, 9) - check(self.data['config_file']['some_list'][0], 6, 6) - check(self.data['config_file']['some_list'][1], 7, 7) - check(self.data['config_file']['some_list'][2], 8, 8) - check(self.data['config_file']['another_list'], 10, 10) - check(self.data['config_file']['some_key'], 11, 11) - - def test_yaml_aliases(self): - aliased_list_1 = ['foo'] - aliased_list_2 = [] - dict_with_aliases = { - 'a': aliased_list_1, - 'b': aliased_list_1, - 'c': aliased_list_1, - 'd': aliased_list_2, - 'e': aliased_list_2, - 'f': aliased_list_2, - } - string = syaml.dump(dict_with_aliases) - - # ensure no YAML aliases appear in syaml dumps. - self.assertFalse('*id' in string) + # ensure no YAML aliases appear in syaml dumps. + assert '*id' not in string |