def tester(dir): #change it to main? files, num_files = get_files(dir) #returns a tuple test_results = [] print('Running tests') for f in files: filename = get_basename(f) if filename.startswith('query'): e = 'example_' + filename[6] #not generic but works for our case r = 'result_' + filename[6:7] test_results.append(filename, e, r, run_test(filename, e, r))
def main(argv): # Setup root of test folder. if len(argv) > 1: root = argv[1] else: root = './test' # Create test corpora full_corpus = StudentCorpus( search_locations=[root + '/corpus'], extensions=['.tag.txt']) simple_corpus = Corpus( search_locations=[root + '/corpus/z.tag.txt']) corpora = { 'full' : full_corpus, 'simple' : simple_corpus, } # Get test files tests, test_count = get_files([root + '/query']) print('Running {} tests: '.format(test_count), end='') summary = [] for test in tests: # Get test file name for expected and actual. file_name = split_ext(test)[0] out_file_name = root + '/actual/' + file_name comp_file_name = root + '/expected/' + file_name with open(test) as in_file: # Select corpus corpus = corpora.get( _CORPUS_SELECTOR.match(in_file.readline()).group(1), full_corpus) # Read and Parse query doc = QueryDocument(in_file.read()) if doc.errors: pprint(doc.errors) else: # Clear previous data. open(out_file_name, 'w').close() run_time = 0 for query in doc.queries: # Execute query. start_time = clock() result = query.execute( corpus, definitions=doc.definitions) end_time = clock() run_time += end_time-start_time # result = list(result) # pprint(list(result)) # pprint(process_statistics(result, corpus, categories=['size', 'location'])) # Write results to file. with open(out_file_name, 'a+') as out_file: out_file.write('\n'.join(map(str, result))) out_file.write('\n') avg_time = run_time / len(doc.queries) # Compare results to expected and add to summary. same = filecmp.cmp(out_file_name, comp_file_name) summary.append((file_name, same, run_time, avg_time)) print('.', end='') sys.stdout.flush() # Print results. print() print('-'*22, 'Summary', '-'*22) passed = 0 summary.sort(key=(lambda x:x[0])) for i, (file_name, same, run_time, avg_time) in enumerate(summary): if same: passed += 1 print(' {:<3} [{}] {:<20} RUN {:0.3f}s AVG {:0.3f}s'.format( i, 'X' if same else ' ', file_name, run_time, avg_time)) print('-'*22, '{:>3}/{:<3}'.format(passed, len(summary)), '-'*22)