def test_get_sorted_with_parameters(self): config = get_sorted_config({ 'parameters': [{ 'name': 'param2', 'description': 'desc 1' }, { 'type': 'int', 'name': 'paramA' }, { 'default': 'false', 'name': 'param1', 'no_value': True }], 'name': 'Conf X' }) expected = OrderedDict([ ('name', 'Conf X'), ('parameters', [ OrderedDict([('name', 'param2'), ('description', 'desc 1')]), OrderedDict([('name', 'paramA'), ('type', 'int')]), OrderedDict([('name', 'param1'), ('no_value', True), ('default', 'false')]) ]), ]) self.assertEqual(expected, config)
def test_get_sorted_when_many_fields(self): config = get_sorted_config({ 'output_files': ['~/my/file'], 'name': 'Conf X', 'include': 'included', 'parameters': [], 'description': 'My wonderful script', 'requires_terminal': False, 'allowed_users': [], 'script_path': 'cd ~', 'working_directory': '~' }) expected = OrderedDict([ ('name', 'Conf X'), ('script_path', 'cd ~'), ('working_directory', '~'), ('description', 'My wonderful script'), ('allowed_users', []), ('include', 'included'), ('output_files', ['~/my/file']), ('requires_terminal', False), ('parameters', []), ]) self.assertEqual(expected, config)
def test_get_sorted_when_3_fields(self): config = get_sorted_config({'script_path': 'cd ~', 'name': 'Conf X', 'description': 'My wonderful script'}) expected = OrderedDict( [('name', 'Conf X'), ('script_path', 'cd ~'), ('description', 'My wonderful script')]) self.assertEqual(expected, config)
def test_get_sorted_when_unknown_fields(self): config = get_sorted_config({ 'parameters': [], 'key1': 'abc', 'requires_terminal': False, 'key2': 123}) expected = OrderedDict([ ('requires_terminal', False), ('key1', 'abc'), ('key2', 123), ('parameters', []), ]) self.assertEqual(expected.popitem(False), config.popitem(False)) self.assertEqual(expected.popitem(True), config.popitem(True)) self.assertCountEqual(expected.items(), config.items())
def test_json_comments(self): config = get_sorted_config(custom_json.loads( """{ // Comment 1 "parameters": [ // Comment 2 {"name": "param2", "description": "desc 1"}, {"type": "int", "name": "paramA"}, {"default": "false", "name": "param1", "no_value": true} ], // Comment 3 "name": "Conf X" }""") ) expected = OrderedDict([ ('name', 'Conf X'), ('parameters', [ OrderedDict([('name', 'param2'), ('description', 'desc 1')]), OrderedDict([('name', 'paramA'), ('type', 'int')]), OrderedDict([('name', 'param1'), ('no_value', True), ('default', 'false')]) ]), ]) self.assertEqual(expected, config)
def _save_config(self, config, path): sorted_config = get_sorted_config(config) config_json = json.dumps(sorted_config, indent=2) file_utils.write_file(path, config_json)