def test_get_preset_raw(self): parser = PresetParser() parser.read_string(INTERPOLATED_PRESET) preset = parser.get_preset('test', raw=True) self.assertEqual(preset.options, [('install-symroot', '%(install_symroot)s')])
def test_duplicate_preset_error(self): parser = PresetParser() with self.assertRaises(presets.DuplicatePresetError) as cm: parser.read_string(DUPLICATE_PRESET_NAMES) e = cm.exception self.assertEqual(e.preset_name, 'test')
def test_get_missing_preset(self): parser = PresetParser() with self.assertRaises(presets.PresetNotFoundError) as cm: parser.get_preset('test') e = cm.exception self.assertEqual(e.preset_name, 'test')
def test_preset_names(self): parser = PresetParser() parser.read_string('[preset: foo]') parser.read_string('[preset: bar]') parser.read_string('[preset: baz]') self.assertEqual(set(parser.preset_names), set(['foo', 'bar', 'baz']))
def test_read_invalid_files(self): parser = PresetParser() with self.assertRaises(presets.UnparsedFilesError) as cm: parser.read(['nonsense-presets.ini']) e = cm.exception self.assertListEqual(e.filenames, ['nonsense-presets.ini'])
def test_expand_option_name(self): parser = PresetParser() parser.read_string(EXPAND_OPTION_NAME) preset = parser.get_preset('test', vars={'my_option': 'macos'}) self.assertEqual(preset.options, [ ('macos', None), ])
def test_duplicate_option_error(self): parser = PresetParser() with self.assertRaises(presets.DuplicateOptionError) as cm: parser.read_string(DUPLICATE_PRESET_OPTIONS) e = cm.exception self.assertEqual(e.preset_name, 'test') self.assertEqual(e.option, 'ios')
def test_read_invalid_files(self): parser = PresetParser() with self.assertRaises(presets.UnparsedFilesError) as cm: parser.read_files(['nonsense-presets.ini']) e = cm.exception unparsed = e.unparsed_files self.assertEqual(len(unparsed), 1) self.assertEqual(unparsed[0].filename, 'nonsense-presets.ini') self.assertIsInstance(unparsed[0].reason, IOError)
def test_interpolation_error(self): parser = PresetParser() parser.read_string(INTERPOLATED_PRESET) with self.assertRaises(presets.InterpolationError) as cm: parser.get_preset('test') e = cm.exception self.assertEqual(e.preset_name, 'test') self.assertEqual(e.option, 'install-symroot') self.assertEqual(e.rawval, '%(install_symroot)s') self.assertEqual(e.reference, 'install_symroot')
def __new__(cls, name, bases, attrs): preset_parser = PresetParser() preset_parser.read_files(PRESET_FILES) # Generate tests for each preset for preset_name in preset_parser.preset_names: test_name = 'test_get_preset_' + preset_name attrs[test_name] = cls.generate_get_preset_test( preset_parser, preset_name) return super(TestPresetParserMeta, cls).__new__(cls, name, bases, attrs)
def test_duplicate_preset_error(self): # Skip test if using the Python 2 ConfigParser module if not hasattr(configparser, 'DuplicateOptionError'): return parser = PresetParser() with self.assertRaises(presets.DuplicatePresetError) as cm: parser.read_string(DUPLICATE_PRESET_NAMES) e = cm.exception self.assertEqual(e.preset_name, 'test')
def test_read_string(self): parser = PresetParser() parser.read_string(SAMPLE_PRESET) preset = parser.get_preset('sample', vars={'install_symroot': '/tmp'}) self.assertIsNotNone(preset) self.assertEqual(preset.name, 'sample') self.assertListEqual(preset.options, [('ios', None), ('tvos', None), ('watchos', None), ('test', None), ('validation-test', None), ('lit-args', '-v'), ('compiler-vendor', 'apple'), ('verbose-build', None), ('build-ninja', None), ('install-symroot', '/tmp')])
def _load_all_presets(preset_files): parser = PresetParser() parser.read_files(preset_files) # Hack to filter out mixins which are not expected to be valid presets preset_names = [ name for name in parser.preset_names if not name.startswith('mixin') ] presets = dict() for name in preset_names: preset = parser.get_preset(name, vars=PRESET_DEFAULTS) args = migration.migrate_swift_sdks(preset.args) presets[name] = args return presets
def test_mixin_expansion_preserves_argument_order(self): """Mixins should be expanded in-place. """ parser = PresetParser() parser.read_string(MIXIN_ORDER_PRESETS) preset = parser.get_preset('test') self.assertListEqual(preset.args, [ '--first-opt=1', # Mixin arguments '--first-opt=0', '--second-opt=1', '--second-opt=2', ])
def test_read(self): parser = PresetParser() parser.read(PRESET_FILES)
def test_read_file(self): parser = PresetParser() parser.read_file(PRESET_FILES[0])
def test_parser_ignores_non_preset_sections(self): parser = PresetParser() parser.read_string(IGNORED_SECTION) self.assertEqual(len(parser._presets), 0)