こんな感じでサンプルを集積してあるdirからテストケースを生成。どんなにアドホックなことをしても、このテストを通れば、正しいサンプルを必ずpassするvalidatorであることが確信できる。あとはこれにfuzzingしてあげればかなりのqualityを持つことになる。
#!/usr/bin/python
if __name__ == '__main__':
header = '''\
#!/usr/bin/env python
# -*- coding: us-ascii -*-
# vim: syntax=python
#
# Copyright 2006-2009 Noriyuki Hosaka bgnori@gmail.com
#
#WARNING!
#DO NOT EDIT THIS FILE.
#THIS FILE IS AUTO GENERATED.
import unittest
from bglib.record.snowietxt import Validator
class SnowietxtTest(unittest.TestCase):
'''
t = '''\
def test_%s(self):
f = open('%s')
v = Validator(f)
h = v.validate()
self.assertEqual(h.hexdigest(),
'%s')
'''
import sys
import tempfile
from subprocess import call
f = tempfile.TemporaryFile()
try:
call('sha1sum bglib/record/snowietxt/*.txt', shell=True, stdout=f)
f.seek(0)
xs = [line.split() for line in f.readlines()]
finally:
f.close()
print header
for i, x in enumerate(xs):
print t%(i, x[1], x[0])
0 件のコメント:
コメントを投稿