def test_case_parser(config, expected): """Test yaml CaseParser.""" yaml_case_content = """ case_param1: full: case_param2: full: {'a': 2, 'b': 1, 'c': 'content'} short: {'y': 0, 'c': ''} short: case_param2: full: {'a': 9, 'b': 5, 'c': ['default']} short: {'y': 3, 'c': ''} dict: {'a': 9, 'b': 5, 'c': {'default': 'ok'}} value1: 10 value2: '%(c)s' case_param2: 'f.*l': {'value3': 30, 'a': 42, '+c': ['2'], 'c+': ['1']} 'dict': {'+c': {'default2': 'nok'}} """ d = yaml.load(StringIO(yaml_case_content), e3.yaml.OrderedDictYAMLLoader) parse_it = e3.yaml.CaseParser(config).parse(d) assert parse_it == expected with open('tmp', 'w') as f: f.write(yaml_case_content) parse_it2 = e3.yaml.load_with_config('tmp', config) assert parse_it2 == expected
def test_include(): """Test yaml !include.""" with open('1.yaml', 'w') as f: f.write('b: !include 2.yaml\n') f.write('c: !include %s\n' % os.path.join(os.getcwd(), '2.yaml')) with open('2.yaml', 'w') as f: f.write('a: 4\n') d = e3.yaml.load_ordered('1.yaml') assert d == OrderedDict([('b', OrderedDict([('a', 4)])), ('c', OrderedDict([('a', 4)]))]) with pytest.raises(IOError) as err: yaml.load('b: !include foo.yaml\n', e3.yaml.OrderedDictYAMLLoader) assert 'No such file or directory' in str(err) assert 'foo.yaml' in str(err)
def test_case_parser_object(): """CaseParser supports any objects.""" yaml_case_content = """ case_v: .*: dt: !!python/object/apply:time.gmtime [] result: '%(dt)s' """ d = yaml.load(StringIO(yaml_case_content), e3.yaml.OrderedDictYAMLLoader) parse_it = e3.yaml.CaseParser({'v': 'true'}).parse(d) assert 'time.struct_time' in parse_it['result']
def test_case_parser_err(): """Test CaseParser error handling.""" yaml_case_content = "result: '%(dt)s'" d = yaml.load(StringIO(yaml_case_content), e3.yaml.OrderedDictYAMLLoader) parse_it = e3.yaml.CaseParser({}).parse(d) assert parse_it['result'] == '%(dt)s'