1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
from __future__ import print_function
import re
from functools import partial
from sybil import Sybil, Region
def check(letter, example):
print(example.namespace['x'])
example.namespace['x'] += 1
text, expected = example.parsed
actual = text.count(letter)
if actual != expected:
message = '{} count was {} instead of {}'.format(
letter, actual, expected
)
if letter=='X':
raise ValueError(message)
return message
def parse_for(letter, document):
for m in re.finditer(r'(%s+) (\d+) check' % letter, document.text):
yield Region(m.start(), m.end(),
(m.group(1), int(m.group(2))),
partial(check, letter))
def sybil_setup(namespace):
print('sybil setup')
namespace['x'] = 0
def sybil_teardown(namespace):
print('sybil teardown', namespace['x'])
load_tests = Sybil(
[partial(parse_for, 'X'), partial(parse_for, 'Y')],
path='../pytest', pattern='*.rst',
setup=sybil_setup, teardown=sybil_teardown
).unittest()
|