#!/usr/bin/env python """Script for running tests $Id$ """ # Copyright 2008-2010 eGovMon # This program is distributed under the terms of the GNU General # Public License. # # This file is part of the eGovernment Monitoring # (eGovMon) # # eGovMon is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # eGovMon is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with eGovMon; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, # MA 02110-1301 USA __author__ = "$Author$" __version__ = "$Revision$" __updated__ = "$LastChangedDate$" import sys import os from distutils.core import setup import sc fail = False RUNTESTSERVICE = '0 4 * * * /usr/bin/runalltests sleep' def run_tests(): global fail import unittest import test runner = unittest.TextTestRunner(verbosity=1) result = runner.run(unittest.TestLoader().loadTestsFromModule(test)) failures = result.failures errors = result.errors if failures or errors: fail = True for res in test.result: if res[0] > 0: fail = True if fail and '--force' not in sys.argv: print 'One of more tests failed. Installation will stop. (add --force to install anyway "'+' '.join(sys.argv) +' --force")' elif fail: print 'One of more tests failed. Installation will continue anyway.' else: print 'Tests ran successful.' if 'test' in sys.argv:# or 'install' in sys.argv: print 'Running tests' try: run_tests() except ImportError, e: print e print 'Required modules not found for test, assuming you are doing a fresh installation' if (not fail or '--force' in sys.argv) and 'install' in sys.argv: print 'Installing' setup(name = "Run All eGovMon tests", version="2.0", description="Running all eGovMon tests.", author="eGovernment Monitoring", author_email="maintainer@egovmon.no", url="http://www.egovmon.no", scripts=["runalltests"] ) crontab=os.popen("crontab -l").readlines() crontab=[i.strip() for i in crontab if not ("runalltests" in i or i=='\n') and i.strip()] crontab.append(RUNTESTSERVICE) f=file("/tmp/crontab","w") f.write("\n".join(crontab)+"\n") f.close() os.system("crontab /tmp/crontab") os.unlink("/tmp/crontab")