From 6eab8048404c387982e543473045b3fde0dc20da Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Tue, 28 Oct 2008 13:44:27 +0600 Subject: [PATCH] added greentest/record_results.py: script to run a program and save the result into sqlite database --- greentest/record_results.py | 47 +++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100755 greentest/record_results.py diff --git a/greentest/record_results.py b/greentest/record_results.py new file mode 100755 index 0000000..51bc5de --- /dev/null +++ b/greentest/record_results.py @@ -0,0 +1,47 @@ +#!/usr/bin/python +"""Run the program and record stdout/stderr/exitcode into the database results.rev_changeset.db + +Usage: %prog program [args] +""" +import sys +import os +import sqlite3 +import warnings + +warnings.simplefilter('ignore') + +COMMAND_CHANGESET = r"hg log -r tip | grep changeset" + +def record(changeset, argv, stdout, returncode): + c = sqlite3.connect('results.%s.db' % changeset) + c.execute('''create table if not exists command_record + (id integer primary key autoincrement, + command text, + stdout text, + exitcode integer)''') + c.execute('insert into command_record (command, stdout, exitcode)' + 'values (?, ?, ?)', (`argv`, stdout, returncode)) + c.commit() + +def main(): + argv = sys.argv[1:] + if argv[0]=='-d': + debug = True + del argv[0] + else: + debug = False + changeset = os.popen(COMMAND_CHANGESET).read().replace('changeset:', '').strip().replace(':', '_') + output_name = os.tmpnam() + arg = ' '.join(argv) + ' &> %s' % output_name + print arg + returncode = os.system(arg)>>8 + print arg, 'finished with code', returncode + stdout = file(output_name).read() + if not debug: + record(changeset, argv, stdout, returncode) + os.unlink(output_name) + sys.exit(returncode) + +if __name__=='__main__': + main() +