Mercurial > ~astiob > upreckon > hgweb
diff test.py @ 10:c87ec78f1fae
Auto-update and revision number reporting added
author | Oleg Oshmyan <chortos@inbox.lv> |
---|---|
date | Fri, 12 Mar 2010 23:53:27 +0000 |
parents | ed90b375d197 |
children |
line wrap: on
line diff
--- a/test.py Sun Feb 14 00:51:27 2010 +0000 +++ b/test.py Fri Mar 12 23:53:27 2010 +0000 @@ -3,7 +3,10 @@ import os, sys, shutil, time, subprocess, filecmp, optparse, signal, tempfile, tarfile, zipfile -parser = optparse.OptionParser(version='test.py 1.21.0 (SVN)', usage='usage: %prog [options] [problem names] [[path' + os.path.sep + 'to' + os.path.sep + ']solution-app] [test case numbers]\n\nTest case numbers can be specified in plain text or as a Python expression\nif there is only one positional argument.\n\nOnly problem names listed in testconf.py are recognized.') +# $Rev: 11$ +version = '1.21.0 (SVN r$$REV$$)' +parser = optparse.OptionParser(version='test.py '+version, usage='usage: %prog [options] [problem names] [[path' + os.path.sep + 'to' + os.path.sep + ']solution-app] [test case numbers]\n\nTest case numbers can be specified in plain text or as a Python expression\nif there is only one positional argument.\n\nOnly problem names listed in testconf.py are recognized.') +parser.add_option('-u', '--update', dest='update', action='store_true', default=False, help='check for an updated version of test.py') parser.add_option('-e', '--exclude', dest='exclude', action='append', help='test case number(s) to exclude, as a Python expression; multiple -e options can be supplied') parser.add_option('-c', '--cleanup', dest='clean', action='store_true', default=False, help='delete the copies of input/output files and exit') parser.add_option('-s', '--save-io', dest='erase', action='store_false', default=True, help='do not delete the copies of input/output files after the last test case; create copies of input files and store output in files even if the solution uses standard I/O; delete the stored input/output files if the solution uses standard I/O and the -c/--cleanup option is specified') @@ -16,6 +19,37 @@ parser.destroy() del parser +def update(): + import urllib + homepage = urllib.urlopen('http://chortos.selfip.net/~astiob/test.py/').read() + i = homepage.find("The latest version of test.py is <span style='font-weight: bold; font-size: larger'>") + i += len("The latest version of test.py is <span style='font-weight: bold; font-size: larger'>") + j = homepage.find(".</span>", i) + latest = homepage[i:j].split('.') + installed = version.split('.') + update = '' + if latest[0] > installed[0]: + update = 'major' + elif latest[0] == installed[0]: + if latest[1] > installed[1]: + update = 'feature' + elif latest[1] == installed[1]: + if latest[2] > installed[2]: + update = 'bug-fixing' + elif latest[2] == installed[2]: + print 'You are using the latest publicly available version of test.py.' + return + if update == '': + print 'Your copy of test.py is newer than the publicly available version.' + return + print 'A ' + update + ' update to test.py is available. Downloading...' + urllib.urlretrieve('http://chortos.selfip.net/~astiob/test.py/test.py', 'test.py') + print 'Downloaded and installed. Now you are using test.py ' + homepage[i:j] + '.' + +if options.update: + update() + sys.exit() + globals1 = set(globals()) # Initialize some configuration variables with default values