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,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,8 +46,12 @@ | ||||
|     [ 1, 2, 3 ] | ||||
|   some_key: some_string | ||||
| """ | ||||
|     return syaml.load(test_file) | ||||
|  | ||||
| test_data = { | ||||
|  | ||||
| def test_parse(data): | ||||
|  | ||||
|     expected = { | ||||
|         'config_file': syaml.syaml_dict([ | ||||
|             ('x86_64', syaml.syaml_dict([ | ||||
|                 ('foo', '/path/to/foo'), | ||||
| @@ -55,43 +62,38 @@ | ||||
|             ('some_key', 'some_string') | ||||
|         ])} | ||||
|  | ||||
|     assert data == expected | ||||
|  | ||||
| class SpackYamlTest(unittest.TestCase): | ||||
|  | ||||
|     def setUp(self): | ||||
|         self.data = syaml.load(test_file) | ||||
| def test_dict_order(data): | ||||
|  | ||||
|     def test_parse(self): | ||||
|         self.assertEqual(test_data, self.data) | ||||
|     expected_order = ['x86_64', 'some_list', 'another_list', 'some_key'] | ||||
|     assert data['config_file'].keys() == expected_order | ||||
|  | ||||
|     def test_dict_order(self): | ||||
|         self.assertEqual( | ||||
|             ['x86_64', 'some_list', 'another_list', 'some_key'], | ||||
|             self.data['config_file'].keys()) | ||||
|     expected_order = ['foo', 'bar', 'baz'] | ||||
|     assert data['config_file']['x86_64'].keys() == expected_order | ||||
|  | ||||
|         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): | ||||
|             self.assertEqual(obj._start_mark.line, start_line) | ||||
|             self.assertEqual(obj._end_mark.line, end_line) | ||||
|         assert obj._start_mark.line == start_line | ||||
|         assert 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) | ||||
|     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(self): | ||||
|  | ||||
| def test_yaml_aliases(): | ||||
|     aliased_list_1 = ['foo'] | ||||
|     aliased_list_2 = [] | ||||
|     dict_with_aliases = { | ||||
| @@ -105,4 +107,4 @@ def test_yaml_aliases(self): | ||||
|     string = syaml.dump(dict_with_aliases) | ||||
|  | ||||
|     # 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