spack_yaml: ported to pytest (#4033)
This commit is contained in:
		 Massimiliano Culpo
					Massimiliano Culpo
				
			
				
					committed by
					
						 Todd Gamblin
						Todd Gamblin
					
				
			
			
				
	
			
			
			 Todd Gamblin
						Todd Gamblin
					
				
			
						parent
						
							6a01612ad4
						
					
				
				
					commit
					8551ef3874
				
			| @@ -22,13 +22,16 @@ | |||||||
| # License along with this program; if not, write to the Free Software | # License along with this program; if not, write to the Free Software | ||||||
| # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||||||
| ############################################################################## | ############################################################################## | ||||||
| """ | """Test Spack's custom YAML format.""" | ||||||
| Test Spack's custom YAML format. |  | ||||||
| """ | import pytest | ||||||
| import unittest |  | ||||||
|  |  | ||||||
| import spack.util.spack_yaml as syaml | import spack.util.spack_yaml as syaml | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @pytest.fixture() | ||||||
|  | def data(): | ||||||
|  |     """Returns the data loaded from a test file""" | ||||||
|     test_file = """\ |     test_file = """\ | ||||||
| config_file: | config_file: | ||||||
|   x86_64: |   x86_64: | ||||||
| @@ -43,8 +46,12 @@ | |||||||
|     [ 1, 2, 3 ] |     [ 1, 2, 3 ] | ||||||
|   some_key: some_string |   some_key: some_string | ||||||
| """ | """ | ||||||
|  |     return syaml.load(test_file) | ||||||
|  |  | ||||||
| test_data = { |  | ||||||
|  | def test_parse(data): | ||||||
|  |  | ||||||
|  |     expected = { | ||||||
|         'config_file': syaml.syaml_dict([ |         'config_file': syaml.syaml_dict([ | ||||||
|             ('x86_64', syaml.syaml_dict([ |             ('x86_64', syaml.syaml_dict([ | ||||||
|                 ('foo', '/path/to/foo'), |                 ('foo', '/path/to/foo'), | ||||||
| @@ -55,43 +62,38 @@ | |||||||
|             ('some_key', 'some_string') |             ('some_key', 'some_string') | ||||||
|         ])} |         ])} | ||||||
|  |  | ||||||
|  |     assert data == expected | ||||||
|  |  | ||||||
| class SpackYamlTest(unittest.TestCase): |  | ||||||
|  |  | ||||||
|     def setUp(self): | def test_dict_order(data): | ||||||
|         self.data = syaml.load(test_file) |  | ||||||
|  |  | ||||||
|     def test_parse(self): |     expected_order = ['x86_64', 'some_list', 'another_list', 'some_key'] | ||||||
|         self.assertEqual(test_data, self.data) |     assert data['config_file'].keys() == expected_order | ||||||
|  |  | ||||||
|     def test_dict_order(self): |     expected_order = ['foo', 'bar', 'baz'] | ||||||
|         self.assertEqual( |     assert data['config_file']['x86_64'].keys() == expected_order | ||||||
|             ['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 test_line_numbers(data): | ||||||
|     def check(obj, start_line, end_line): |     def check(obj, start_line, end_line): | ||||||
|             self.assertEqual(obj._start_mark.line, start_line) |         assert obj._start_mark.line == start_line | ||||||
|             self.assertEqual(obj._end_mark.line, end_line) |         assert obj._end_mark.line == end_line | ||||||
|  |  | ||||||
|         check(self.data,                                  0, 12) |     check(data,                                  0, 12) | ||||||
|         check(self.data['config_file'],                   1, 12) |     check(data['config_file'],                   1, 12) | ||||||
|         check(self.data['config_file']['x86_64'],         2,  5) |     check(data['config_file']['x86_64'],         2,  5) | ||||||
|         check(self.data['config_file']['x86_64']['foo'],  2,  2) |     check(data['config_file']['x86_64']['foo'],  2,  2) | ||||||
|         check(self.data['config_file']['x86_64']['bar'],  3,  3) |     check(data['config_file']['x86_64']['bar'],  3,  3) | ||||||
|         check(self.data['config_file']['x86_64']['baz'],  4,  4) |     check(data['config_file']['x86_64']['baz'],  4,  4) | ||||||
|         check(self.data['config_file']['some_list'],      6,  9) |     check(data['config_file']['some_list'],      6,  9) | ||||||
|         check(self.data['config_file']['some_list'][0],   6,  6) |     check(data['config_file']['some_list'][0],   6,  6) | ||||||
|         check(self.data['config_file']['some_list'][1],   7,  7) |     check(data['config_file']['some_list'][1],   7,  7) | ||||||
|         check(self.data['config_file']['some_list'][2],   8,  8) |     check(data['config_file']['some_list'][2],   8,  8) | ||||||
|         check(self.data['config_file']['another_list'],  10, 10) |     check(data['config_file']['another_list'],  10, 10) | ||||||
|         check(self.data['config_file']['some_key'],      11, 11) |     check(data['config_file']['some_key'],      11, 11) | ||||||
|  |  | ||||||
|     def test_yaml_aliases(self): |  | ||||||
|  | def test_yaml_aliases(): | ||||||
|     aliased_list_1 = ['foo'] |     aliased_list_1 = ['foo'] | ||||||
|     aliased_list_2 = [] |     aliased_list_2 = [] | ||||||
|     dict_with_aliases = { |     dict_with_aliases = { | ||||||
| @@ -105,4 +107,4 @@ def test_yaml_aliases(self): | |||||||
|     string = syaml.dump(dict_with_aliases) |     string = syaml.dump(dict_with_aliases) | ||||||
|  |  | ||||||
|     # ensure no YAML aliases appear in syaml dumps. |     # ensure no YAML aliases appear in syaml dumps. | ||||||
|         self.assertFalse('*id' in string) |     assert '*id' not in string | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user