예제 #1
0
파일: parser.py 프로젝트: derdon/chef
def parse_cooking_time(line, lineno=None):
    m = re.match(COOKING_TIME_PATTERN, line)
    if not is_cooking_time(line):
        raise syntax_errors.InvalidCookingTimeError(lineno)
    time, unit = m.groups()
    validate_cooking_time(time, unit, lineno)
    cooking_time = int(time)
    return cooking_time, unit
예제 #2
0
 def test_nonmatching_unit(self, time, unit):
     with pytest.raises(syntax_errors.NonMatchingUnitError) as e:
         validate_cooking_time(time, unit)
     assert e.value.number == int(time)
     assert e.value.unit == unit
예제 #3
0
 def test_zero_cooking_time(self):
     with pytest.raises(syntax_errors.NotAllowedTimeError) as e:
         validate_cooking_time('0', 'minutes')
     assert e.value.time == 0
예제 #4
0
 def test_invalid_time_with_lineno(self):
     with pytest.raises(syntax_errors.InvalidCookingTimeError) as e:
         validate_cooking_time('meh', 'hours', 42)
     assert e.value.lineno == 42
예제 #5
0
 def test_invalid_time_without_lineno(self):
     with pytest.raises(syntax_errors.InvalidCookingTimeError) as e:
         validate_cooking_time('eek', 'minutes')
     assert e.value.lineno is None