comparison tests/test_configuration.py @ 107:10fc9c8bf682

Better support for times in YAML interop. * Use our own sexagesimal parser/dumper for YAML to properly parse times. * Better name for the custom parser/dumper classes. * Add unit tests.
author Ludovic Chabant <ludovic@chabant.com>
date Wed, 15 Oct 2014 23:01:05 -0700
parents 563ce5dd02af
children f98451237371
comparison
equal deleted inserted replaced
106:5effaf1978d0 107:10fc9c8bf682
1 import copy 1 import copy
2 import datetime
2 import yaml 3 import yaml
3 import pytest 4 import pytest
4 from collections import OrderedDict 5 from collections import OrderedDict
5 from piecrust.configuration import (Configuration, OrderedDictYAMLLoader, 6 from piecrust.configuration import (Configuration, ConfigurationLoader,
6 merge_dicts) 7 merge_dicts)
7 8
8 9
9 @pytest.mark.parametrize('values, expected', [ 10 @pytest.mark.parametrize('values, expected', [
10 (None, {}), 11 (None, {}),
116 two: 117 two:
117 a: yes 118 a: yes
118 b: no 119 b: no
119 c: null 120 c: null
120 """ 121 """
121 data = yaml.load(sample, Loader=OrderedDictYAMLLoader) 122 data = yaml.load(sample, Loader=ConfigurationLoader)
122 assert type(data) is OrderedDict 123 assert type(data) is OrderedDict
123 assert list(data['one'].keys()) == ['two', 'red', 'blue'] 124 assert list(data['one'].keys()) == ['two', 'red', 'blue']
124 125
126
127 def test_load_time1():
128 sample = """
129 time: 21:35
130 """
131 data = yaml.load(sample, Loader=ConfigurationLoader)
132 assert type(data['time']) is int
133 assert data['time'] == (21 * 60 * 60 + 35 * 60)
134
135
136 def test_load_time2():
137 sample = """
138 time: 21:35:50
139 """
140 data = yaml.load(sample, Loader=ConfigurationLoader)
141 assert type(data['time']) is int
142 assert data['time'] == (21 * 60 * 60 + 35 * 60 + 50)
143