Saturday, May 09, 2026 AM03:21:24 HKT
This commit is contained in:
+74
@@ -0,0 +1,74 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import glob
|
||||
import sys
|
||||
|
||||
def readtestdata(filename):
|
||||
"""
|
||||
Read a test file and split into components
|
||||
"""
|
||||
|
||||
state = None
|
||||
info = {
|
||||
'--TEST--': '',
|
||||
'--INPUT--': '',
|
||||
'--EXPECTED--': ''
|
||||
}
|
||||
|
||||
for line in open(filename, 'r'):
|
||||
line = line.rstrip()
|
||||
if line in ('--TEST--', '--INPUT--', '--EXPECTED--'):
|
||||
state = line
|
||||
elif state:
|
||||
info[state] += line + '\n'
|
||||
|
||||
# remove last newline from input
|
||||
info['--INPUT--'] = info['--INPUT--'][0:-1]
|
||||
|
||||
return (info['--TEST--'], info['--INPUT--'].strip(), info['--EXPECTED--'].strip())
|
||||
|
||||
def luaescape(s):
|
||||
return s.strip().replace("\\", "\\\\").replace("\n", "\\n").replace("'", "\\'")
|
||||
|
||||
def genluatest(fname, data):
|
||||
# TBD: change to python os.path
|
||||
name = fname.split('/')[-1]
|
||||
if name.startswith('test-tokens-'):
|
||||
testname = 'test_tokens'
|
||||
extra = "\\n"
|
||||
elif name.startswith('test-tokens_mysql'):
|
||||
testname = 'test_tokens_mysql'
|
||||
extra = "\\n"
|
||||
elif name.startswith('test-folding-'):
|
||||
testname = 'test_folding'
|
||||
extra = "\\n"
|
||||
elif name.startswith('test-sqli-'):
|
||||
testname = 'test_fingerprints'
|
||||
extra = ''
|
||||
else:
|
||||
#print "IGNORING: " + name
|
||||
return
|
||||
|
||||
name = name.replace('.txt', '')
|
||||
|
||||
print "is({0}('{1}'),\n '{2}{3}',\n '{4}')\n".format(
|
||||
testname,
|
||||
luaescape(data[1]),
|
||||
extra,
|
||||
luaescape(data[2]),
|
||||
name
|
||||
)
|
||||
|
||||
def test2lua(fname):
|
||||
data = readtestdata(fname)
|
||||
genluatest(fname, data)
|
||||
|
||||
def main():
|
||||
print "require 'testdriver'\n"
|
||||
files = glob.glob('../tests/test-*.txt')
|
||||
print "plan({0})\n".format(len(files))
|
||||
for testfile in sorted(files):
|
||||
test2lua(testfile)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user