You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@gump.apache.org by le...@apache.org on 2005/07/08 15:36:45 UTC
svn commit: r209771 - in /gump/branches/Gump3/pygump/python: gump/config.py
gump/engine/__init__.py gump/test/testConfig.py main.py
Author: leosimons
Date: Fri Jul 8 06:36:45 2005
New Revision: 209771
URL: http://svn.apache.org/viewcvs?rev=209771&view=rev
Log:
Clean up the config and bootstrap modules a little bit and add some unit tests. for them.
Modified:
gump/branches/Gump3/pygump/python/gump/config.py
gump/branches/Gump3/pygump/python/gump/engine/__init__.py
gump/branches/Gump3/pygump/python/gump/test/testConfig.py
gump/branches/Gump3/pygump/python/main.py
Modified: gump/branches/Gump3/pygump/python/gump/config.py
URL: http://svn.apache.org/viewcvs/gump/branches/Gump3/pygump/python/gump/config.py?rev=209771&r1=209770&r2=209771&view=diff
==============================================================================
--- gump/branches/Gump3/pygump/python/gump/config.py (original)
+++ gump/branches/Gump3/pygump/python/gump/config.py Fri Jul 8 06:36:45 2005
@@ -52,32 +52,8 @@
else:
config.log_level = logging.INFO
if settings.quiet:
- settings.debug = False
+ config.debug = False
config.log_level = logging.WARN
-
- # TODO: change main.py to do it like this
- config.paths_home = settings.homedir
- config.paths_work = settings.workdir
- config.paths_logs = settings.logdir
- config.paths_workspace = settings.workspace
- # resolve hrefs relative to workspace xml file
- config.paths_metadata = os.path.dirname(config.paths_workspace)
- config.start_time = settings.starttimeutc
-
- config.projects = settings.projects
-
- config.mail_server = settings.mailserver
- config.mail_server_port = settings.mailport
- config.mail_to = settings.mailto
- config.mail_from = settings.mailfrom
-
- config.database_server = "localhost"
- config.database_server = settings.databaseserver
- config.database_port = 3306
- config.database_port = settings.databaseport
- config.database_name = settings.databasename
- config.database_user = settings.databaseuser
- config.database_password = settings.databasepassword
# set up other stuff
run_config_hooks(config)
Modified: gump/branches/Gump3/pygump/python/gump/engine/__init__.py
URL: http://svn.apache.org/viewcvs/gump/branches/Gump3/pygump/python/gump/engine/__init__.py?rev=209771&r1=209770&r2=209771&view=diff
==============================================================================
--- gump/branches/Gump3/pygump/python/gump/engine/__init__.py (original)
+++ gump/branches/Gump3/pygump/python/gump/engine/__init__.py Fri Jul 8 06:36:45 2005
@@ -39,11 +39,22 @@
__license__ = "http://www.apache.org/licenses/LICENSE-2.0"
import logging
-
+import os
from xml import dom
from xml.dom import minidom
-from gump.config import *
+from gump.config import get_config
+from gump.config import get_logger
+from gump.config import get_vfs
+from gump.config import get_walker
+from gump.config import get_modeller_loader
+from gump.config import get_modeller_normalizer
+from gump.config import get_modeller_objectifier
+from gump.config import get_modeller_verifier
+from gump.config import get_dom_implementation
+from gump.config import get_plugin
+from gump.config import shutdown_logging
+
from gump.util.io import open_file_or_stream
from gump.util import ansicolor
Modified: gump/branches/Gump3/pygump/python/gump/test/testConfig.py
URL: http://svn.apache.org/viewcvs/gump/branches/Gump3/pygump/python/gump/test/testConfig.py?rev=209771&r1=209770&r2=209771&view=diff
==============================================================================
--- gump/branches/Gump3/pygump/python/gump/test/testConfig.py (original)
+++ gump/branches/Gump3/pygump/python/gump/test/testConfig.py Fri Jul 8 06:36:45 2005
@@ -23,11 +23,108 @@
from pmock import *
from gump.config import *
+import gump
+from gump.plugins import AbstractPlugin
+
+import logging
+import logging.config
class ConfigTestCase(MockTestCase):
def setUp(self):
- pass
+ # replace various methods with mockup versions
+ def newfileconfig(filename):
+ self.failUnless(isinstance(filename, basestring))
+ self.failUnless(filename.startswith('gump.log.config'))
+ self.old_fileConfig = logging.config.fileConfig
+ logging.config.fileConfig = newfileconfig
+
+ def new_get_logger(config, name):
+ return self.get_mock_logger(config, name)
+ self.old_get_logger = gump.config.get_logger
+ gump.config.get_logger = new_get_logger
+
+ def tearDown(self):
+ logging.config.fileConfig = self.old_fileConfig
+ gump.config.get_logger = self.old_get_logger
+
+ def get_mock_logger(self, config, name):
+ self.failUnless(unittest.TestCase, isinstance(config, Config))
+ self.failUnless(unittest.TestCase, isinstance(name, basestring))
- def test_something(self):
- # TODO replace with something useful
- pass
+ mock = self.mock()
+ mock.stubs().method("debug")
+ mock.stubs().method("info")
+ mock.stubs().method("warn")
+ mock.stubs().method("warning")
+ mock.stubs().method("error")
+ mock.stubs().method("critical")
+ mock.stubs().method("log")
+ mock.stubs().method("exception")
+ mock.stubs().method("close")
+ return mock
+
+ def test_run_config_hooks(self):
+ class MockConfig:
+ debug = False
+ quiet = False
+
+ mock = MockConfig()
+ run_config_hooks(mock)
+
+ mock.quiet = True
+ run_config_hooks(mock)
+
+ mock.debug = True
+ run_config_hooks(mock)
+
+ def test_get_config(self):
+ testcase = self
+ class Settings:
+ def __hasattr__(self, name):
+ return True
+
+ def __getattr__(self, name):
+ return name
+
+ def __setattr__(self, name, value):
+ testcase.fail("Config tried to set option on settings!")
+
+ s = Settings()
+ c = get_config(s)
+ for arg in ["paths_home", "paths_work", "color", "irc", "blah"]:
+ value = getattr(c, arg)
+ self.assertEqual(arg, value)
+ self.assertEqual(c.log_level, logging.WARN)
+ self.assertFalse(c.debug)
+
+ def test_get_plugins(self):
+ class Config:
+ irc = "user@freenode.net/gump"
+
+ def __hasattr__(self, name):
+ return True
+
+ def __getattr__(self, name):
+ return name
+
+ conf = Config()
+ (a,b,c) = get_plugins(conf)
+
+ def test_results(a,b,c):
+ self.failUnless(isinstance(a,list))
+ self.failUnless(isinstance(b,list))
+ self.failUnless(isinstance(c,list))
+ l = []
+ l.extend(a)
+ l.extend(b)
+ l.extend(c)
+ for p in l:
+ self.failUnless(isinstance(p,AbstractPlugin))
+ test_results(a,b,c)
+
+ conf.do_build = False
+ conf.do_update = False
+ conf.do_fill_database = False
+ conf.debug = False
+ (a,b,c) = get_plugins(conf)
+ test_results(a,b,c)
Modified: gump/branches/Gump3/pygump/python/main.py
URL: http://svn.apache.org/viewcvs/gump/branches/Gump3/pygump/python/main.py?rev=209771&r1=209770&r2=209771&view=diff
==============================================================================
--- gump/branches/Gump3/pygump/python/main.py (original)
+++ gump/branches/Gump3/pygump/python/main.py Fri Jul 8 06:36:45 2005
@@ -77,6 +77,7 @@
usage = "gump run [options ...]"
parser = OptionParser(usage=usage)
+
parser.add_option("-d",
"--debug",
action="store_true",
@@ -89,6 +90,7 @@
help="print as little information as possible (overrides --debug)")
parser.add_option("--homedir",
action="store",
+ dest="paths_home",
default=_homedir,
help="the base directory for gump")
parser.add_option("--hostname",
@@ -97,15 +99,18 @@
help="the hostname gump will use")
parser.add_option("--workdir",
action="store",
+ dest="paths_work",
default=_workdir,
help="the working directory gump will use")
parser.add_option("--logdir",
action="store",
+ dest="paths_logs",
default=_logdir,
help="the directory gump will write logs to")
parser.add_option("-w",
"--workspace",
action="store",
+ dest="paths_workspace",
default=_workspace,
help="path to the workspace gump will use")
parser.add_option("-u",
@@ -128,22 +133,27 @@
help="put build results into the mysql database")
parser.add_option("--databaseserver",
action="store",
+ dest="database_server",
default=_databaseserver,
help="hostname of the database server gump will connect to")
parser.add_option("--databaseport",
action="store",
+ dest="database_port",
default=_databaseport,
help="port of the database server gump will connect to")
parser.add_option("--databasename",
action="store",
+ dest="database_name",
default=_databasename,
help="name of the database gump will connect to")
parser.add_option("--databaseuser",
action="store",
+ dest="database_user",
default=_databaseuser,
help="username gump will use to connect to the database")
parser.add_option("--databasepassword",
action="store",
+ dest="database_password",
default=_databasepassword,
help="password gump will use to connect to the database")
parser.add_option("--color",
@@ -294,10 +304,10 @@
# Mail reporting
# unused options.private = w.getAttribute('private')
- options.mailserver = w.getAttribute('mailserver') or 'localhost'
- options.mailport = w.getAttribute('mailport') or 25
- options.mailto = w.getAttribute('administrator')
- options.mailfrom = w.getAttribute('email') or "%s@%s" % (user, options.hostname)
+ options.mail_server = w.getAttribute('mailserver') or 'localhost'
+ options.mail_server_port = w.getAttribute('mailport') or 25
+ options.mail_to = w.getAttribute('administrator')
+ options.mail_from = w.getAttribute('email') or "%s@%s" % (user, options.hostname)
# log (site) location(s)
options.logurl = w.getAttribute('logurl')
@@ -339,7 +349,7 @@
def send_error_email(Exception,details,options,log):
"""Send an error report by e-mail."""
- if options.mailserver and options.mailport and options.mailto and options.mailfrom:
+ if options.mail_server and options.mail_server_port and options.mail_to and options.mail_from:
subject="Fatal error during pygump run [%s: %s]" % (options.hostname, options.name)
body="""An unexpected error occurred during the pygump run on
%s (start time: %s, workspace: %s).
@@ -382,8 +392,8 @@
Exception, details, options.logurl, logbody)
# send it off
- _send_email(options.mailfrom, options.mailto, subject, body, options.mailserver,
- options.mailport)
+ _send_email(options.mail_from, options.mail_to, subject, body, options.mail_server,
+ options.mail_server_port)
else:
raise Error, "Insufficient information in the workspace for sending e-mail."
@@ -435,9 +445,9 @@
parser = get_parser(_homedir, _hostname, _projects, _workdir, _logdir, _workspace)
options, args = parser.parse_args()
- options.starttime = time.strftime('%d %b %Y %H:%M:%S', time.localtime())
- options.starttimeutc = time.strftime('%d %b %Y %H:%M:%S', time.gmtime())
-
+ options.starttime = time.strftime('%d %b %Y %H:%M:%S', time.localtime())
+ options.start_time = time.strftime('%d %b %Y %H:%M:%S', time.gmtime())
+
options.version = GUMP_VERSION
# check for debug info
@@ -463,7 +473,7 @@
print " %s" % wingdbstubpath
# create logger
- log = _Logger(options.logdir)
+ log = _Logger(options.paths_logs)
# fire it up!
exitcode = 0
@@ -476,9 +486,9 @@
log.debug("Pygump version %s starting..." % (options.version) )
log.debug(" (the detailed log is written to %s)" % (log.filename) )
log.debug(' - hostname : ' + options.hostname)
- log.debug(' - homedir : ' + options.homedir)
+ log.debug(' - homedir : ' + options.paths_home)
log.debug(' - current time : ' + options.starttime)
- log.debug(' - current time (UTC) : ' + options.starttimeutc)
+ log.debug(' - current time (UTC) : ' + options.start_time)
log.debug(' - python version : ' + sys.version)
log.debug(' - python command : ' + pythoncmd)
@@ -493,16 +503,16 @@
if not hasattr(options, "projects"):
log.debug("No projects to build set, defaulting to 'all'")
options.projects = ["all"]
- if not os.path.exists(options.workspace):
- abspath = os.path.join(options.homedir, options.workspace)
+ if not os.path.exists(options.paths_workspace):
+ abspath = os.path.join(options.paths_home, options.paths_workspace)
if os.path.exists(abspath):
- options.workspace = abspath
+ options.paths_workspace = abspath
else:
log.error("Workspace not found : %s.\n Maybe you need to specify --workspace=/absolute/path/to/some/workspace/file.xml?" % options.workspace)
sys.exit(1)
# get some more options from the workspace
- _parse_workspace(options.workspace, options)
+ _parse_workspace(options.paths_workspace, options)
try:
# self-update