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/10 14:34:42 UTC
svn commit: r210002 - in /gump/branches/Gump3: ./ metadata/ pygump/
pygump/python/gump/ pygump/python/gump/engine/ pygump/python/gump/model/
pygump/python/gump/plugins/ pygump/python/gump/plugins/java/
pygump/python/gump/test/
Author: leosimons
Date: Sun Jul 10 05:34:40 2005
New Revision: 210002
URL: http://svn.apache.org/viewcvs?rev=210002&view=rev
Log:
A lot of updates in an effort to get more of vmgump.xml working as it should and
providing the right output.
* implement support for <env/> on Script commands, eg
<script><env name=bla value=myvalue/></script>
* rework enviroment support for command execution to be an essential part of
the gump.model and update the builder plugins to use the new Command.env.
Get rid of the no-longer-needed EnvironmentPlugin.
* implement support for shell= on Script commands, eg
<script shell=tcsh/>
* implement support for basedir= on Script commands and make the basedir
attributer part of every Command
* rework working directory support to make a working directory an intrinsic
part of the gump.model.Workspace and eliminate the mess of passing around
the workdir all over the codebase.
* create a more robust BuilderPlugin._do_run_command and use that within the
other builder plugins
* add support for 'basedir' for Script and Ant commands
* fix bugs in the AntPlugin so that it builds the correct commandline
* improve a lot of logging statements to emit color when --color is enabled,
disable a bunch of debug output, and add some useful pointers to the logs
* change the way the logreporter reports PREREQ or UPDATE failures to mark
projects as SKIPPED
Removed:
gump/branches/Gump3/pygump/python/gump/plugins/environment.py
Modified:
gump/branches/Gump3/gump
gump/branches/Gump3/metadata/vmgump.xml
gump/branches/Gump3/pygump/gump.log.config
gump/branches/Gump3/pygump/python/gump/config.py
gump/branches/Gump3/pygump/python/gump/engine/normalizer.py
gump/branches/Gump3/pygump/python/gump/engine/objectifier.py
gump/branches/Gump3/pygump/python/gump/model/__init__.py
gump/branches/Gump3/pygump/python/gump/model/util.py
gump/branches/Gump3/pygump/python/gump/plugins/builder.py
gump/branches/Gump3/pygump/python/gump/plugins/dirbuilder.py
gump/branches/Gump3/pygump/python/gump/plugins/java/builder.py
gump/branches/Gump3/pygump/python/gump/plugins/logreporter.py
gump/branches/Gump3/pygump/python/gump/plugins/updater.py
gump/branches/Gump3/pygump/python/gump/test/testEngineObjectifier.py
gump/branches/Gump3/pygump/python/gump/test/testEngineWalker.py
gump/branches/Gump3/pygump/python/gump/test/testModel.py
gump/branches/Gump3/pygump/python/gump/test/testPluginBuilder.py
gump/branches/Gump3/pygump/python/gump/test/testPluginDirBuilder.py
Modified: gump/branches/Gump3/gump
URL: http://svn.apache.org/viewcvs/gump/branches/Gump3/gump?rev=210002&r1=210001&r2=210002&view=diff
==============================================================================
--- gump/branches/Gump3/gump (original)
+++ gump/branches/Gump3/gump Sun Jul 10 05:34:40 2005
@@ -1037,8 +1037,6 @@
# Load environment variables
setup_env
-echo Executing command: $1
-
# short circuit the help function because we don't really
# want to load complain about missing environment settings
# when the user is asking for help...
@@ -1054,9 +1052,3 @@
# Figure out the action to take then run the appropriate function
delegate $@
-
-# Attempt to clean up leftover commands
-trap 'exit 0' HUP
-trap 'kill -s HUP 0' EXIT
-trap 'kill -s TERM 0' TERM
-trap 'kill -s TERM 0' KILL
Modified: gump/branches/Gump3/metadata/vmgump.xml
URL: http://svn.apache.org/viewcvs/gump/branches/Gump3/metadata/vmgump.xml?rev=210002&r1=210001&r2=210002&view=diff
==============================================================================
--- gump/branches/Gump3/metadata/vmgump.xml (original)
+++ gump/branches/Gump3/metadata/vmgump.xml Sun Jul 10 05:34:40 2005
@@ -101,8 +101,14 @@
<projects>
<project name="gump-unit-tests">
<module name="gump"/>
- <script name="gump">
+
+ <!-- commands -->
+ <script name="gump" shell="bash">
<arg name="" value="test"/>
+ <env name="GUMP_HOME" value="."/>
+ <env name="PYTHONPATH"/>
+ <env name="GUMP_WORKDIR"/>
+ <env name="GUMP_HOSTNAME"/>
</script>
</project>
Modified: gump/branches/Gump3/pygump/gump.log.config
URL: http://svn.apache.org/viewcvs/gump/branches/Gump3/pygump/gump.log.config?rev=210002&r1=210001&r2=210002&view=diff
==============================================================================
--- gump/branches/Gump3/pygump/gump.log.config (original)
+++ gump/branches/Gump3/pygump/gump.log.config Sun Jul 10 05:34:40 2005
@@ -32,7 +32,7 @@
qualname=walker
[logger_plugin]
-level=WARN
+level=INFO
handlers=stdout,filehandler
propagate=0
qualname=plugin
Modified: gump/branches/Gump3/pygump/python/gump/config.py
URL: http://svn.apache.org/viewcvs/gump/branches/Gump3/pygump/python/gump/config.py?rev=210002&r1=210001&r2=210002&view=diff
==============================================================================
--- gump/branches/Gump3/pygump/python/gump/config.py (original)
+++ gump/branches/Gump3/pygump/python/gump/config.py Sun Jul 10 05:34:40 2005
@@ -82,8 +82,6 @@
from gump.plugins.instrumentation import TimerPlugin
pre_process_plugins.append(TimerPlugin("run_start"))
- from gump.plugins.environment import EnvironmentPlugin
- pre_process_plugins.append(EnvironmentPlugin())
plugins = []
@@ -100,26 +98,30 @@
if config.do_update:
plugins.append(TimerPlugin("update_start"))
from gump.plugins.updater import CvsUpdater, SvnUpdater
- plugins.append(CvsUpdater(config.paths_work))
- plugins.append(SvnUpdater(config.paths_work))
+ plugins.append(CvsUpdater())
+ plugins.append(SvnUpdater())
plugins.append(TimerPlugin("update_end"))
+ else:
+ log.info("Not running updates! (pass --do-updates to enable them)")
if config.do_build:
# by contract, rmdir always needs to go before mkdir!
from gump.plugins.dirbuilder import RmdirBuilderPlugin
- plugins.append(RmdirBuilderPlugin(config.paths_work))
+ plugins.append(RmdirBuilderPlugin())
from gump.plugins.dirbuilder import MkdirBuilderPlugin
- plugins.append(MkdirBuilderPlugin(config.paths_work))
+ plugins.append(MkdirBuilderPlugin())
buildlog = get_logger(config, "plugin.builder")
from gump.plugins.builder import ScriptBuilderPlugin
- plugins.append(ScriptBuilderPlugin(config.paths_work,buildlog))
+ plugins.append(ScriptBuilderPlugin(buildlog))
from gump.plugins.java.builder import ClasspathPlugin
from gump.model import Ant
- plugins.append(ClasspathPlugin(config.paths_work,buildlog,Ant))
+ plugins.append(ClasspathPlugin(buildlog,Ant))
from gump.plugins.java.builder import AntPlugin
- plugins.append(AntPlugin(config.paths_work,buildlog))
+ plugins.append(AntPlugin(buildlog))
+ else:
+ log.info("Not running builds! (pass --do-builds to enable them)")
if config.irc:
@@ -133,6 +135,8 @@
# Add the plugin, based upon this configuration information.
plugins.append(IrcBotPlugin(log,config.debug,channel,nickname,server,port))
+ else:
+ log.info("Not talking on irc! (pass --irc to enable)")
plugins.append(TimerPlugin("work_end"))
@@ -146,6 +150,8 @@
db = get_db(dblog,config)
dynagumplog = get_logger(config, "plugin.dynagumper")
post_process_plugins.append(Dynagumper(db, dynagumplog))
+ else:
+ log.info("Not filling database! (pass --fill-database to enable)")
reportlog = get_logger(config, "plugin.logger")
from gump.plugins.logreporter import OutputLogReporterPlugin
Modified: gump/branches/Gump3/pygump/python/gump/engine/normalizer.py
URL: http://svn.apache.org/viewcvs/gump/branches/Gump3/pygump/python/gump/engine/normalizer.py?rev=210002&r1=210001&r2=210002&view=diff
==============================================================================
--- gump/branches/Gump3/pygump/python/gump/engine/normalizer.py (original)
+++ gump/branches/Gump3/pygump/python/gump/engine/normalizer.py Sun Jul 10 05:34:40 2005
@@ -244,7 +244,8 @@
repository = self._find_repository_for_module(module)
if not repository:
name = module.getAttribute("name")
- self.log.warn("Module '%s' does not have a corresponding repository!" % name)
+ # we inform about this later
+ #self.log.warn("Module '%s' does not have a corresponding repository!" % name)
# its okay to have a module without associated repository, its
# then an "installed package"
#continue
@@ -276,7 +277,8 @@
module = self._find_module_for_project(project)
if not module:
name = project.getAttribute("name")
- self.log.warn("Project '%s' does not have a corresponding module!" % name)
+ # we inform about this later
+ #self.log.warn("Project '%s' does not have a corresponding module!" % name)
else:
moduleref = self.newdoc.createElement("module")
moduleref.setAttribute("name", module.getAttribute("name") )
Modified: gump/branches/Gump3/pygump/python/gump/engine/objectifier.py
URL: http://svn.apache.org/viewcvs/gump/branches/Gump3/pygump/python/gump/engine/objectifier.py?rev=210002&r1=210001&r2=210002&view=diff
==============================================================================
--- gump/branches/Gump3/pygump/python/gump/engine/objectifier.py (original)
+++ gump/branches/Gump3/pygump/python/gump/engine/objectifier.py Sun Jul 10 05:34:40 2005
@@ -32,21 +32,23 @@
from gump.engine import EngineError
from gump.engine.modeller import _find_element_text
+from gump.util import ansicolor
+
DEFAULT_GUMP_LOCAL_REPOSITORY_NAME = "DEFAULT_GUMP_LOCAL_REPOSITORY"
DEFAULT_GUMP_LOCAL_MODULE_NAME = "DEFAULT_GUMP_LOCAL_MODULE"
###
### Utility
###
-def _extract_path(workdir, project, element):
+def _extract_path(project, element):
""" Extract directory relative to module or project, based
upon which attribute (parent or nested) is present."""
parent = element.getAttribute("parent")
nested = element.getAttribute("nested")
if parent:
- return os.path.join(get_module_directory(workdir, project.module), parent)
+ return os.path.join(get_module_directory(project.module), parent)
elif nested:
- return os.path.join(get_project_directory(workdir, project), nested)
+ return os.path.join(get_project_directory(project), nested)
else:
raise Error, "Unknown relative path entry (no parent or nested): %s" % (element)
@@ -54,8 +56,8 @@
###
### Creation
###
-def _create_workspace(workspace_definition):
- return Workspace(workspace_definition.getAttribute('name'))
+def _create_workspace(workspace_definition, workdir):
+ return Workspace(workspace_definition.getAttribute('name'), workdir)
def _create_repository(workspace, repository_definition):
@@ -157,7 +159,7 @@
return LocalModule(repository, name, url, description)
-def _create_project(module, project_definition, workdir):
+def _create_project(module, project_definition):
name = project_definition.getAttribute("name")
path = project_definition.getAttribute("path")
@@ -165,7 +167,7 @@
homes = project_definition.getElementsByTagName("home")
if homes.length > 0:
- project.homedir = _extract_path(workdir, project, homes.item(0))
+ project.homedir = _extract_path(project, homes.item(0))
return project
@@ -177,6 +179,45 @@
_create_ant_commands(project, project_definition)
#TODO more commands
+ENV_DELETION_MARKER="gumpobjectifierdeletethisvariableplease"
+def _create_env_vars(command, cmd):
+ env = {}
+ for env in cmd.getElementsByTagName("env"):
+ envname = env.getAttribute("name")
+ envvalue = env.getAttribute("value")
+ if not envname:
+ continue
+ if envvalue:
+ command.env[envname] = envvalue
+ else:
+ if command.env.has_key(envname):
+ command.env.pop(envname)
+
+
+def _get_args(cmd):
+ args = []
+ for arg in cmd.getElementsByTagName("arg"):
+ argname = arg.getAttribute("name")
+ argvalue = arg.getAttribute("value")
+ if argname:
+ if argname.startswith("--"):
+ if argvalue:
+ args.append("%s=%s" % (argname, argvalue))
+ else:
+ args.append(argname)
+ elif argname.startswith("-"):
+ args.append(argname)
+ if argvalue:
+ args.append(argvalue)
+ else:
+ args.append(argname)
+ if argvalue:
+ args.append(argvalue)
+ else:
+ if argvalue:
+ args.append(argvalue)
+ return args
+
def _create_rmdir_commands(project, project_definition):
rmdirs = project_definition.getElementsByTagName("delete")
@@ -196,17 +237,13 @@
scripts = project_definition.getElementsByTagName("script")
for cmd in scripts:
name = cmd.getAttribute("name")
- args = []
- for arg in cmd.getElementsByTagName("arg"):
- # TODO parse "-", "--", etc
- argname = arg.getAttribute("name")
- argvalue = arg.getAttribute("value")
- if argname:
- args.append(argname)
- if argvalue:
- args.append(argvalue)
-
- project.add_command(Script(project, name, args))
+ shell = cmd.getAttribute("shell")
+ basedir = cmd.getAttribute("basedir")
+ args = _get_args(cmd)
+ command = Script(project, name, args, shell=shell, basedir=basedir)
+ _create_env_vars(command, cmd)
+
+ project.add_command(command)
def _create_ant_commands(project, project_definition):
@@ -218,11 +255,12 @@
project.add_command(Ant(project, target, buildfile, basedir=basedir))
-def _create_outputs(project, project_definition, workdir):
+
+def _create_outputs(project, project_definition):
# Working directories for this project (containing java classes)
works = project_definition.getElementsByTagName("work")
for work in works:
- path = _extract_path(workdir, project, work)
+ path = _extract_path(project, work)
project.add_output(Classdir(project, path))
# Jars
@@ -307,7 +345,8 @@
self.dependency_name = dependency_name
def __str__(self):
- return "Dependency '%s' specified by '%s' cannot be found!" % (self.dependency_name, self.project)
+ return "%sDependency '%s' specified by '%s' cannot be found!%s" % \
+ (ansicolor.Red, self.dependency_name, self.project, ansicolor.Black)
class Objectifier:
@@ -333,7 +372,7 @@
def get_workspace(self, domtree):
"""Transforms a workspace xml document into object form."""
root = domtree.documentElement
- workspace = _create_workspace(root)
+ workspace = _create_workspace(root, self.workdir)
self._create_repositories(workspace, _find_repository_definitions(root))
self._create_modules(workspace, _find_module_definitions(root))
@@ -352,13 +391,14 @@
for repository_definition in [r for r in repository_definitions \
if r.nodeType == dom.Node.ELEMENT_NODE]:
name = repository_definition.getAttribute("name")
- self.log.debug("Converting repository definition '%s' into object form." % name)
+ #self.log.debug("Converting repository definition '%s' into object form." % name)
try:
repository = _create_repository(workspace, repository_definition)
workspace.repositories[repository.name] = repository
except:
self.log.exception(
- "Failed to convert repository definition '%s' into object form." % name)
+ "%sFailed to convert repository definition '%s' into object form.%s" % \
+ (ansicolor.Bright_Red, name, ansicolor.Black))
def _find_repository_for_module(self, workspace, module_definition):
try:
@@ -369,7 +409,8 @@
except:
# If we can't find a repository, then we're dealing with an installed
# package
- self.log.debug("It seems that the module '%s' is an installed package" % name)
+ self.log.warn("Could not find a corresponding repository, so %smodule '%s' will be treated as an installed package%s" % \
+ (ansicolor.Yellow, name, ansicolor.Black))
return workspace.repositories[DEFAULT_GUMP_LOCAL_REPOSITORY_NAME]
def _create_modules(self, workspace, module_definitions):
@@ -383,14 +424,15 @@
for module_definition in [m for m in module_definitions \
if m.nodeType == dom.Node.ELEMENT_NODE]:
name = module_definition.getAttribute("name")
- self.log.debug("Converting module definition '%s' into object form." % name)
+ #self.log.debug("Converting module definition '%s' into object form." % name)
try:
repository = self._find_repository_for_module(workspace, module_definition)
module = _create_module(repository, module_definition)
module.repository.modules[module.name] = module
workspace.modules[module.name] = module
except:
- self.log.exception("Failed to convert module definition '%s' into object form." % name)
+ self.log.exception("%sFailed to convert module definition '%s' into object form.%s" % \
+ (ansicolor.Bright_Red, name, ansicolor.Black))
def _find_module_for_project(self, workspace, project_definition):
try:
@@ -401,7 +443,8 @@
except:
# If we can't find a module, then we're dealing with an installed
# package
- self.log.debug("It seems that the project '%s' is an installed package" % name)
+ self.log.warn("Could not find a corresponding module, so %sproject '%s' will be treated as an installed package%s" % \
+ (ansicolor.Yellow, name, ansicolor.Black))
return workspace.modules[DEFAULT_GUMP_LOCAL_MODULE_NAME]
def _create_projects(self, workspace, project_definitions):
@@ -412,21 +455,22 @@
for project_definition in project_definitions:
name = project_definition.getAttribute("name")
if not name:
- self.log.error("Can't convert project definition because it does not have a name!")
+ self.log.error("%sCan't convert project definition because it does not have a name!%s" % \
+ (ansicolor.Bright_Red, ansicolor.Black))
failures.append(project_definition)
continue
- self.log.debug("Converting project definition '%s' into object form." % name)
+ #self.log.debug("Converting project definition '%s' into object form." % name)
try:
module = self._find_module_for_project(workspace, project_definition)
- project = _create_project(module, project_definition, self.workdir)
+ project = _create_project(module, project_definition)
project.module.projects[project.name] = project
- self.log.debug("Adding %s to workspace project list" % project.name)
workspace.projects[project.name] = project
_create_commands(project, project_definition)
- _create_outputs(project, project_definition, self.workdir)
+ _create_outputs(project, project_definition)
except:
- self.log.exception("Failed to convert project definition '%s' into object form." % name)
+ self.log.exception("%sFailed to convert project definition '%s' into object form.%s" % \
+ (ansicolor.Bright_Red, name, ansicolor.Black))
failures.append(project_definition)
# wire up dependencies only after projects have been created
Modified: gump/branches/Gump3/pygump/python/gump/model/__init__.py
URL: http://svn.apache.org/viewcvs/gump/branches/Gump3/pygump/python/gump/model/__init__.py?rev=210002&r1=210001&r2=210002&view=diff
==============================================================================
--- gump/branches/Gump3/pygump/python/gump/model/__init__.py (original)
+++ gump/branches/Gump3/pygump/python/gump/model/__init__.py Sun Jul 10 05:34:40 2005
@@ -19,6 +19,7 @@
__copyright__ = "Copyright (c) 2004-2005 The Apache Software Foundation"
__license__ = "http://www.apache.org/licenses/LICENSE-2.0"
+import os
class Error(Exception):
"""Generic error thrown for all internal model module exceptions."""
@@ -57,15 +58,22 @@
Has the following properties:
- name -- per-host unique identifier
+ - workdir -- working directory for gump data and files
- repositories -- dictionary of contained repositories
- modules -- dictionary of contained modules
- projects -- dictionary of contained projects
- dependencies -- list of all dependencies between projects
"""
- def __init__(self, name):
+ def __init__(self, name, workdir):
assert isinstance(name, basestring)
+ assert isinstance(workdir, basestring)
+ if not os.path.isdir(workdir):
+ if os.path.exists(workdir):
+ raise Error, "Workspace %s working directory '%s' can't be created because a file is in the way!" % (name, workdir)
+ os.makedirs(workdir)
self.name = name
+ self.workdir = workdir
self.repositories = {}
self.modules = {}
self.projects = {}
@@ -475,9 +483,19 @@
- project -- the containing project
"""
- def __init__(self, project):
+ def __init__(self, project, basedir=None, shell=None):
assert isinstance(project, Project)
+
+ if basedir != None:
+ assert isinstance(basedir, basestring)
+
+ if shell != None:
+ assert isinstance(shell, basestring)
+
self.project = project
+ self.basedir = basedir
+ self.shell = shell
+ self.env = dict(os.environ)
def __str__(self):
return "<Command:%s>" % self.project
@@ -530,8 +548,10 @@
- args -- a list of arguments to the command,
where each element is a (name, value)
tuple
+ - basedir -- directory relative to project home in which to run
+ - shell -- the shell in which to execute the script
"""
- def __init__(self, project, name, args=None):
+ def __init__(self, project, name, args=None, basedir=None, shell=None):
assert isinstance(name, basestring)
if args != None:
assert isinstance(args, list)
@@ -540,12 +560,12 @@
self.args = args
else:
self.args = []
-
- Command.__init__(self, project)
+
+ Command.__init__(self, project, basedir=basedir, shell=shell)
self.name = name
def __str__(self):
- return "<Script:%s,args=%s>" % (self.name, " ".join(self.args))
+ return "<Script:%s,args=%s,shell=%s,basedir=%s>" % (self.name, " ".join(self.args), self.shell, self.basedir)
class Ant(Command):
"""Command to run an Ant build.
@@ -555,20 +575,18 @@
- all the properties a Command has
- target -- the Ant target
- buildfile -- the Ant build file
+ - basedir -- directory relative to project home in which to run
"""
def __init__(self, project, target, buildfile="build.xml",basedir=None):
assert isinstance(target, basestring)
assert isinstance(buildfile, basestring)
- if basedir != None:
- assert isinstance(basedir, basestring)
- Command.__init__(self, project)
+ Command.__init__(self, project, basedir)
self.target = target
self.buildfile = buildfile
- self.basedir = basedir
def __str__(self):
- return "<Ant:target=%s,buildfile=%s>" % (self.target, self.buildfile)
+ return "<Ant:target=%s,buildfile=%s,basedir=%s>" % (self.target, self.buildfile, self.basedir)
#TODO: more Commands
Modified: gump/branches/Gump3/pygump/python/gump/model/util.py
URL: http://svn.apache.org/viewcvs/gump/branches/Gump3/pygump/python/gump/model/util.py?rev=210002&r1=210001&r2=210002&view=diff
==============================================================================
--- gump/branches/Gump3/pygump/python/gump/model/util.py (original)
+++ gump/branches/Gump3/pygump/python/gump/model/util.py Sun Jul 10 05:34:40 2005
@@ -29,29 +29,29 @@
UPDATE_TYPE_CHECKOUT="checkout"
UPDATE_TYPE_UPDATE="update"
-def get_jar_path(workdir, jar):
+def get_jar_path(jar):
"""Determine the path to a Jar."""
- return join(get_project_home_directory(workdir, jar.project),jar.name)
+ return join(get_project_home_directory(jar.project),jar.name)
-def get_project_home_directory(workdir, project):
+def get_project_home_directory(project):
"""Determine the home directory for a project."""
- return join(get_project_directory(workdir, project),project.homedir)
+ return join(get_project_directory(project),project.homedir)
-def get_project_directory(workdir, project):
+def get_project_directory(project):
"""Determine the base directory for a project."""
- return join(get_module_directory(workdir, project.module),project.path)
+ return join(get_module_directory(project.module),project.path)
-def get_module_directory(workdir, module):
+def get_module_directory(module):
"""Determine the base directory for a module."""
- return join(get_repository_directory(workdir,module.repository),module.name)
+ return join(get_repository_directory(module.repository),module.name)
-def get_repository_directory(workdir, repository):
+def get_repository_directory(repository):
"""Determine the base directory for a repository."""
- return join(get_workspace_directory(workdir,repository.workspace),repository.name)
+ return join(get_workspace_directory(repository.workspace),repository.name)
-def get_workspace_directory(workdir, workspace):
+def get_workspace_directory(workspace):
"""Determine the base directory for a workspace."""
- return abspath(join(workdir,workspace.name))
+ return abspath(join(workspace.workdir,workspace.name))
def mark_failure(model_element, cause):
"""Mark a model element as "failed"."""
@@ -169,7 +169,7 @@
model_object.exceptions.append(ExceptionInfo(type, value, traceback))
-def calculate_classpath(workdir, project, recurse=True, runtimeonly=False):
+def calculate_classpath(project, recurse=True, runtimeonly=False):
"""This ugly beast of a method looks at a project and its dependencies and
builds a classpath and a bootclasspath based on its <work/> directives
and its <depend/> directives."""
@@ -210,7 +210,7 @@
if isinstance(output, Classdir):
path = output.path
if isinstance(output, Jar):
- path = get_jar_path(workdir,output)
+ path = get_jar_path(output)
# actually add the path
if output.add_to_bootclass_path:
@@ -227,17 +227,17 @@
# only the "runtime" dependencies.
if recurse:
if info.inherit == DEPENDENCY_INHERIT_ALL or info.inherit == DEPENDENCY_INHERIT_HARD:
- (inheritedclasspath, inheritedbootclasspath) = calculate_classpath(workdir, dependency, recurse=False)
+ (inheritedclasspath, inheritedbootclasspath) = calculate_classpath(dependency, recurse=False)
classpath.extend(inheritedclasspath)
bootclasspath.extend(inheritedbootclasspath)
if info.inherit == DEPENDENCY_INHERIT_JARS:
- (inheritedclasspath, inheritedbootclasspath) = calculate_classpath(workdir, dependency, recurse=True)
+ (inheritedclasspath, inheritedbootclasspath) = calculate_classpath(dependency, recurse=True)
classpath.extend(inheritedclasspath)
bootclasspath.extend(inheritedbootclasspath)
if info.inherit == DEPENDENCY_INHERIT_RUNTIME:
- (inheritedclasspath, inheritedbootclasspath) = calculate_classpath(workdir, dependency, recurse=False, runtimeonly=True)
+ (inheritedclasspath, inheritedbootclasspath) = calculate_classpath(dependency, recurse=False, runtimeonly=True)
classpath.extend(inheritedclasspath)
bootclasspath.extend(inheritedbootclasspath)
Modified: gump/branches/Gump3/pygump/python/gump/plugins/builder.py
URL: http://svn.apache.org/viewcvs/gump/branches/Gump3/pygump/python/gump/plugins/builder.py?rev=210002&r1=210001&r2=210002&view=diff
==============================================================================
--- gump/branches/Gump3/pygump/python/gump/plugins/builder.py (original)
+++ gump/branches/Gump3/pygump/python/gump/plugins/builder.py Sun Jul 10 05:34:40 2005
@@ -22,67 +22,124 @@
import os
import sys
from os.path import abspath, join, isfile
+from tempfile import mkdtemp
+import shutil
from gump.model import Script, Error, Project, Ant, Dependency
from gump.model.util import get_project_directory
from gump.plugins import AbstractPlugin
from gump.util.executor import Popen, PIPE, STDOUT
+#DEFAULT_SCRIPT_SHELL = "sh"
+if sys.platform == "win32":
+ DEFAULT_SCRIPT_SHELL = "cmd"
+else:
+ DEFAULT_SCRIPT_SHELL = "sh"
+
class BuilderPlugin(AbstractPlugin):
"""Abstract class for creating plugins that handle the execution of Commands.
To create a subclass, override __init__, then call it from the subclass with
the method to call."""
- def __init__(self, workdir, log, cmd_clazz, method):
+ def __init__(self, log, cmd_clazz, method):
"""Create a new builder. Arguments:
- -- workdir = the directory in which to perform the command
-- log = the Logger instance for debugging
-- cmd_clazz = the Command subclass the plugin handles
-- method = the python method (which must be a class method on
the subclass) to call. It will be provided with a Project
instance and with the relevant Command instance to process"""
- self.workdir = workdir
self.log = log
self.cmd_clazz = cmd_clazz
self.method = method
+ def initialize(self):
+ self.tempdir = mkdtemp()
+
def visit_project(self, project):
"""Dispatch for each matching command (matching by class type) """
assert isinstance(project, Project)
- self.log.debug("Visit %s looking for %s" % (project,self.cmd_clazz))
+ #self.log.debug("Visit %s looking for %s" % (project,self.cmd_clazz))
for command in [command for command in project.commands if isinstance(command,self.cmd_clazz)]:
self.log.debug("Perform %s on %s" % (command, project))
self.method(project, command)
+
+ def _do_run_command(self, command, args, workdir, shell=False):
+ """Utility method for actually executing commands and storing their
+ results within the model.
+
+ Arguments:
+ - command -- the model object instance (subclass of Command) this
+ action is associated with
+ - args -- the action to take (including, for example, a script
+ name)
+ """
+ # running subprocess.Popen with shell=True results in "sh -c", which is
+ # not what we want, since our shell=True indicates we're actually running
+ # a shell script, and potentially using a different shell!
+ if shell:
+ myargs = ["/usr/bin/env", command.shell or "sh"]
+ myargs.extend(args)
+ else:
+ myargs = args
+
+ # unfortunately we can't use the communicate() method on the command
+ # it seems that, when invoking python-in-bash-in-python-in-bash (eg
+ # using Gump to run gump, for example) and similar complex setups,
+ # deadlocking can occur, for example when calling select.select(). So
+ # we send output to a temporary file. We can't use the regular "tmpfile"
+ # because when we close that file it is removed. Hence, we resort to
+ # using a temporary directory. *sigh*
+ outputfilename = os.path.join(self.tempdir, "BuilderPlugin_%s.tmp-out" % command.project.name)
+ outputfile = None
+ try:
+ outputfile = open(outputfilename,'wb')
+ cmd = Popen(myargs,shell=False,cwd=workdir,stdout=outputfile,stderr=STDOUT,env=command.env)
+ #command.build_log = cmd.communicate()[0]
+ command.build_exit_status = cmd.wait()
+
+ outputfile.close()
+ outputfile = open(outputfilename,'rb')
+ command.build_log = outputfile.read()
+ finally:
+ if outputfile:
+ try: outputfile.close()
+ except: pass
+
+ try: os.remove(outputfilename)
+ except: pass
+ def finalize(self, workspace):
+ try: shutil.rmtree(self.tempdir)
+ except: pass
+
class ScriptBuilderPlugin(BuilderPlugin):
"""Execute all "script" commands for all projects."""
- def __init__(self, workdir, log):
- BuilderPlugin.__init__(self, workdir, log, Script, self._do_script)
+ def __init__(self, log):
+ BuilderPlugin.__init__(self, log, Script, self._do_script)
def _do_script(self, project, script):
- # NOTE: no support for basedir="", an undocumented feature in gump2
- assert isinstance(project, Project)
- projectpath = get_project_directory(self.workdir,project)
+ # working directory
+ projectpath = get_project_directory(project)
+ if script.basedir:
+ projectpath = os.path.join(projectpath, script.basedir)
+ # command line
+ myargs = []
scriptfile = abspath(join(projectpath, script.name))
# No extension is ok, otherwise guess at one, platform appropriately
if not isfile(scriptfile):
+ oldscriptfile = scriptfile
if sys.platform == "win32":
scriptfile += ".bat"
else:
scriptfile += ".sh"
if not isfile(scriptfile):
- raise Error, "No script '%s' found!" % scriptfile
-
- self.log.debug("Scriptfile seems to be %s" % scriptfile)
- args = []
- args.append(scriptfile)
- args.extend(script.args)
- cmd = Popen(args,shell=True,cwd=projectpath,stdout=PIPE,stderr=STDOUT,env=project.env)
+ raise Error, "No script '%s' found!" % oldscriptfile
- script.build_log = cmd.communicate()[0]
- script.build_exit_status = cmd.wait()
-
+ myargs.append(scriptfile)
+ myargs.extend(script.args)
+ # run it
+ self._do_run_command(script, myargs, projectpath, shell=True)
Modified: gump/branches/Gump3/pygump/python/gump/plugins/dirbuilder.py
URL: http://svn.apache.org/viewcvs/gump/branches/Gump3/pygump/python/gump/plugins/dirbuilder.py?rev=210002&r1=210001&r2=210002&view=diff
==============================================================================
--- gump/branches/Gump3/pygump/python/gump/plugins/dirbuilder.py (original)
+++ gump/branches/Gump3/pygump/python/gump/plugins/dirbuilder.py Sun Jul 10 05:34:40 2005
@@ -28,11 +28,11 @@
class MkdirBuilderPlugin(AbstractPlugin):
"""Execute all "mkdir" commands for all projects."""
- def __init__(self, workdir):
- self.workdir = workdir
+ def __init__(self):
+ pass
def _do_mkdir(self, project, directory):
- projectpath = get_project_directory(self.workdir,project)
+ projectpath = get_project_directory(project)
dirpath = os.path.abspath(os.path.join(projectpath,directory))
if not dirpath.startswith(projectpath):
raise Error, "Directory '%s' to be created not within project path '%s'!" % (directory, projectpath)
@@ -49,11 +49,11 @@
class RmdirBuilderPlugin(AbstractPlugin):
"""Execute all "rmdir" commands for all projects."""
- def __init__(self, workdir):
- self.workdir = workdir
+ def __init__(self):
+ pass
def _do_rmdir(self, project, directory):
- projectpath = get_project_directory(self.workdir,project)
+ projectpath = get_project_directory(project)
dirpath = os.path.abspath(os.path.join(projectpath,directory))
if not dirpath.startswith(projectpath):
raise Error, "Directory '%s' to be deleted not within project path '%s'!" % (directory, projectpath)
Modified: gump/branches/Gump3/pygump/python/gump/plugins/java/builder.py
URL: http://svn.apache.org/viewcvs/gump/branches/Gump3/pygump/python/gump/plugins/java/builder.py?rev=210002&r1=210001&r2=210002&view=diff
==============================================================================
--- gump/branches/Gump3/pygump/python/gump/plugins/java/builder.py (original)
+++ gump/branches/Gump3/pygump/python/gump/plugins/java/builder.py Sun Jul 10 05:34:40 2005
@@ -28,63 +28,47 @@
from gump.plugins import AbstractPlugin
from gump.plugins.builder import BuilderPlugin
from gump.util.executor import Popen, PIPE, STDOUT
-
+from gump.util import ansicolor
class ClasspathPlugin(BuilderPlugin):
"""Generate the java build attributes (e.g. CLASSPATH) for the specified command."""
- def __init__(self, workdir, log, CommandClazz):
- BuilderPlugin.__init__(self, workdir, log, CommandClazz, self.set_classpath)
+ def __init__(self, log, CommandClazz):
+ BuilderPlugin.__init__(self, log, CommandClazz, self.set_classpath)
def set_classpath(self, project, command):
- (classpath, bootclasspath) = calculate_classpath(self.workdir, project)
+ (classpath, bootclasspath) = calculate_classpath(project)
command.classpath = classpath
command.boot_classpath = bootclasspath
class AntPlugin(BuilderPlugin):
"""Execute all "ant" commands for all projects."""
- def __init__(self, workdir, log, debug=False):
- BuilderPlugin.__init__(self, workdir, log, Ant, self._do_ant)
+ def __init__(self, log, debug=False):
+ BuilderPlugin.__init__(self, log, Ant, self._do_ant)
self.debug = debug
def _do_ant(self, project, ant):
- projectpath = get_project_directory(self.workdir,project)
+ # environment
+ self.log.debug(" CLASSPATH is '%s%s%s'" % \
+ (ansicolor.Blue, ":".join(ant.classpath), ansicolor.Black))
+ ant.env['CLASSPATH'] = os.pathsep.join(ant.classpath)
+
+ # working directory
+ projectpath = get_project_directory(project)
if ant.basedir:
projectpath = os.path.join(projectpath, ant.basedir)
- self.log.debug('CLASSPATH %s' % ant.classpath)
- self.log.debug('BOOTCLASSPATH %s' % ant.boot_classpath)
+ # command line
+ args = [join(ant.env["JAVA_HOME"], "bin", "java")]
- # Create an Environment
- project.env['CLASSPATH'] = os.pathsep.join(ant.classpath)
-
- # TODO test this
- # TODO sysclasspath only
- # TODO more options
-
- # Build the command line.
- args = [join(os.environ["JAVA_HOME"], "bin", "java")]
-
- # Allow bootclasspath
- if ant.boot_classpath:
- args += ['-Xbootclasspath/p',':'.join(ant.boot_classpath)]
+ if ant.boot_classpath and len(ant.boot_classpath) > 0:
+ args.append('-Xbootclasspath/p:' + ':'.join(ant.boot_classpath))
- # Ant's entry point, and main options.
args += ["org.apache.tools.ant.Main"]
-
- # Specify a build file.
if ant.buildfile: args += ["-buildfile",ant.buildfile]
-
- # Override the default target
if ant.target: args += [ant.target]
-
- # Allow debugging
if self.debug: args += ["-debug"]
- self.log.debug("Command : %s " % (args))
- self.log.debug(" : %s " % ant.classpath)
- #self.log.debug(" : %s " % self.tmp_env)
- cmd = Popen(args,shell=False,cwd=projectpath,stdout=PIPE,stderr=STDOUT,env=project.env)
-
- ant.build_log = cmd.communicate()[0]
- ant.build_exit_status = cmd.wait()
+ # run it
+ self._do_run_command(ant, args, projectpath)
+
Modified: gump/branches/Gump3/pygump/python/gump/plugins/logreporter.py
URL: http://svn.apache.org/viewcvs/gump/branches/Gump3/pygump/python/gump/plugins/logreporter.py?rev=210002&r1=210001&r2=210002&view=diff
==============================================================================
--- gump/branches/Gump3/pygump/python/gump/plugins/logreporter.py (original)
+++ gump/branches/Gump3/pygump/python/gump/plugins/logreporter.py Sun Jul 10 05:34:40 2005
@@ -194,20 +194,29 @@
if not check_failure(project):
self.wr(' %s%s: OK%s' % (ansicolor.Green, project, ansicolor.Black))
else:
- self.wr(' %s%s: FAIL%s' % (ansicolor.Red, project, ansicolor.Black+ansicolor.Black))
+ firsterror = ' %s%s: FAIL%s' % (ansicolor.Red, project, ansicolor.Black+ansicolor.Black)
causes = get_failure_causes(project)
+
+ if len(causes) > 0:
+ cause = causes[0]
+ if isinstance(cause, Dependency) or isinstance(cause, Project) or isinstance(cause, Module):
+ firsterror = ' %s%s: SKIPPED%s' % (ansicolor.Yellow, project, ansicolor.Black+ansicolor.Black)
+ self.wr(firsterror)
+
for cause in causes:
+ seconderror = " %sUNKNOWN FAILURE (%s)%s" % (ansicolor.Bright_Red, cause, ansicolor.Black)
if isinstance(cause, ExceptionInfo):
- self.wr(" %sMETADATA FAILURE (%s)%s" % (ansicolor.Red, cause, ansicolor.Black))
+ seconderror = " %sMETADATA FAILURE (%s)%s" % (ansicolor.Red, cause, ansicolor.Black)
if isinstance(cause, Command):
- self.wr(" %sBUILD FAILURE (%s)%s" % (ansicolor.Red, cause, ansicolor.Black))
+ seconderror = " %sBUILD FAILURE (%s)%s" % (ansicolor.Red, cause, ansicolor.Black)
if isinstance(cause, Dependency):
- self.wr(" %sPREREQ FAILURE (%s)%s" % (ansicolor.Red, cause.dependency, ansicolor.Black))
+ seconderror = " %sPREREQ FAILURE (%s)%s" % (ansicolor.Yellow, cause.dependency, ansicolor.Black)
if isinstance(cause, Project):
- self.wr(" %sPREREQ FAILURE (%s)%s" % (ansicolor.Red, cause, ansicolor.Black))
+ seconderror = " %sPREREQ FAILURE (%s)%s" % (ansicolor.Yellow, cause, ansicolor.Black)
if isinstance(cause, Module):
- self.wr(" %sUPDATE FAILURE (%s)%s" % (ansicolor.Red, cause, ansicolor.Black))
+ seconderror = " %sUPDATE FAILURE (%s)%s" % (ansicolor.Red, cause, ansicolor.Black)
+ self.wr(seconderror)
indent = " "
for trace_elem in get_root_cause(cause):
Modified: gump/branches/Gump3/pygump/python/gump/plugins/updater.py
URL: http://svn.apache.org/viewcvs/gump/branches/Gump3/pygump/python/gump/plugins/updater.py?rev=210002&r1=210001&r2=210002&view=diff
==============================================================================
--- gump/branches/Gump3/pygump/python/gump/plugins/updater.py (original)
+++ gump/branches/Gump3/pygump/python/gump/plugins/updater.py Sun Jul 10 05:34:40 2005
@@ -34,22 +34,22 @@
from gump.model.util import UPDATE_TYPE_CHECKOUT, UPDATE_TYPE_UPDATE
class ModuleUpdater(AbstractPlugin):
- def __init__(self, workdir):
- self.workdir = workdir
+ def __init__(self):
+ pass
def visit_repository(self, repository):
- repopath = get_repository_directory(self.workdir, repository)
+ repopath = get_repository_directory(repository)
if not os.path.exists(repopath):
os.makedirs(repopath)
def visit_module(self, module):
- modulepath = get_module_directory(self.workdir, module)
+ modulepath = get_module_directory(module)
if not os.path.exists(modulepath):
os.makedirs(modulepath)
class CvsUpdater(ModuleUpdater):
- def __init__(self, workdir):
- ModuleUpdater.__init__(self, workdir)
+ def __init__(self):
+ ModuleUpdater.__init__(self)
def visit_repository(self, repository):
if isinstance(repository, CvsRepository):
@@ -60,7 +60,7 @@
ModuleUpdater.visit_module(self, module)
- repopath = get_repository_directory(self.workdir, module.repository)
+ repopath = get_repository_directory(module.repository)
current = os.path.curdir
modulepath = os.path.join(repopath, module.name)
cvsdir = os.path.join(modulepath, 'CVS')
@@ -89,8 +89,8 @@
module.update_type = UPDATE_TYPE_UPDATE
class SvnUpdater(ModuleUpdater):
- def __init__(self, workdir):
- ModuleUpdater.__init__(self, workdir)
+ def __init__(self):
+ ModuleUpdater.__init__(self)
def visit_repository(self, repository):
if isinstance(repository, SvnRepository):
@@ -101,7 +101,7 @@
ModuleUpdater.visit_module(self, module)
- modulepath = get_module_directory(self.workdir, module)
+ modulepath = get_module_directory(module)
current = os.path.curdir
os.chdir(modulepath)
svndir = os.path.join(modulepath, '.svn')
Modified: gump/branches/Gump3/pygump/python/gump/test/testEngineObjectifier.py
URL: http://svn.apache.org/viewcvs/gump/branches/Gump3/pygump/python/gump/test/testEngineObjectifier.py?rev=210002&r1=210001&r2=210002&view=diff
==============================================================================
--- gump/branches/Gump3/pygump/python/gump/test/testEngineObjectifier.py (original)
+++ gump/branches/Gump3/pygump/python/gump/test/testEngineObjectifier.py Sun Jul 10 05:34:40 2005
@@ -340,7 +340,7 @@
def getAttribute(self, name):
return getattr(self, name, None)
- w = Workspace("bla")
+ w = Workspace("bla", self.workdir)
r = Repository(w, "blabla")
m = Module(r, "blablabla")
bla_project = Project(m, "blablablabla")
Modified: gump/branches/Gump3/pygump/python/gump/test/testEngineWalker.py
URL: http://svn.apache.org/viewcvs/gump/branches/Gump3/pygump/python/gump/test/testEngineWalker.py?rev=210002&r1=210001&r2=210002&view=diff
==============================================================================
--- gump/branches/Gump3/pygump/python/gump/test/testEngineWalker.py (original)
+++ gump/branches/Gump3/pygump/python/gump/test/testEngineWalker.py Sun Jul 10 05:34:40 2005
@@ -20,6 +20,8 @@
import unittest
from pmock import MockTestCase
+import os
+
from gump.engine.walker import Walker
class MockWorkspace:
@@ -50,6 +52,11 @@
self.w = w
self.walker = Walker(self.log)
+
+ def tearDown(self):
+ if os.path.exists("bla"):
+ import shutil
+ shutil.rmtree("bla")
def test_constructor(self):
Walker(self.log)
@@ -102,7 +109,7 @@
from gump.model import Project
from gump.model import Dependency
- w = Workspace("ws")
+ w = Workspace("ws", "bla")
r = Repository(w,"repo")
m = Module(r,"mod")
Modified: gump/branches/Gump3/pygump/python/gump/test/testModel.py
URL: http://svn.apache.org/viewcvs/gump/branches/Gump3/pygump/python/gump/test/testModel.py?rev=210002&r1=210001&r2=210002&view=diff
==============================================================================
--- gump/branches/Gump3/pygump/python/gump/test/testModel.py (original)
+++ gump/branches/Gump3/pygump/python/gump/test/testModel.py Sun Jul 10 05:34:40 2005
@@ -20,6 +20,8 @@
import unittest
from unittest import TestCase
+import os
+
from gump.model import Error
from gump.model import ModelObject
from gump.model import ExceptionInfo
@@ -45,6 +47,11 @@
from gump.model import Classdir
class ModelTestCase(TestCase):
+ def tearDown(self):
+ if os.path.exists("bla"):
+ import shutil
+ shutil.rmtree("bla")
+
def test_error(self):
e = Error()
try:
@@ -78,15 +85,15 @@
def test_workspace(self):
name = "blah"
- w = Workspace(name)
+ w = Workspace(name, "bla")
self.assertEqual(name, w.name)
self.assertEqual({}, w.repositories)
self.assertEqual({}, w.modules)
self.assertEqual({}, w.projects)
self.assertEqual([], w.dependencies)
- self.assertRaises(AssertionError, Workspace, None)
- Workspace(unicode("blah")) # unicode is okay too...
+ self.assertRaises(AssertionError, Workspace, None, "blah")
+ Workspace(unicode("blah"), "bla") # unicode is okay too...
r = Repository(w, "booh")
w.add_repository(r)
@@ -98,13 +105,13 @@
self.assertRaises(AssertionError, w.add_repository, "blah")
self.assertEqual(1, len(w.repositories))
- w2 = Workspace("blah2")
+ w2 = Workspace("blah2", "bla")
r2 = Repository(w2, "booh2")
self.assertRaises(AssertionError,w.add_repository,r2)
def test_repository(self):
wname = "blah"
- w = Workspace(wname)
+ w = Workspace(wname, "bla")
name = "booh"
title = "t"
home_page = "h"
@@ -150,7 +157,7 @@
def test_cvs_repository(self):
wname = "blah"
- w = Workspace(wname)
+ w = Workspace(wname, "bla")
name = "booh"
hostname = "cvs.somewhere.org"
path = "/some/cvs/location"
@@ -193,7 +200,7 @@
def test_svn_repository(self):
wname = "blah"
- w = Workspace(wname)
+ w = Workspace(wname, "bla")
name = "booh"
url = "http://svn.somewhere.org/some/svn/repo"
title = "t"
@@ -228,7 +235,7 @@
def test_module(self):
wname = "blah"
- w = Workspace(wname)
+ w = Workspace(wname, "bla")
rname = "booh"
r = Repository(w,rname)
@@ -268,7 +275,7 @@
def test_module_is_added_to_workspace_by_repository(self):
wname = "blah"
- w = Workspace(wname)
+ w = Workspace(wname, "bla")
rname = "booh"
r = Repository(w,rname)
r2name = "booh2"
@@ -292,7 +299,7 @@
def test_cvs_module(self):
wname = "blah"
- w = Workspace(wname)
+ w = Workspace(wname, "bla")
rname = "booh"
r = Repository(w,rname)
@@ -314,7 +321,7 @@
def test_svn_module(self):
wname = "blah"
- w = Workspace(wname)
+ w = Workspace(wname, "bla")
rname = "booh"
r = Repository(w,rname)
@@ -333,7 +340,7 @@
def test_project(self):
wname = "blah"
- w = Workspace(wname)
+ w = Workspace(wname, "bla")
rname = "booh"
r = Repository(w,rname)
mname = "bweh"
@@ -380,7 +387,7 @@
def test_project_is_added_to_workspace_by_module(self):
wname = "blah"
- w = Workspace(wname)
+ w = Workspace(wname, "bla")
rname = "booh"
r = Repository(w,rname)
url = "http://www.somewhere.org/bweh/"
@@ -402,7 +409,7 @@
def test_dependencies(self):
wname = "blah"
- w = Workspace(wname)
+ w = Workspace(wname, "bla")
rname = "booh"
r = Repository(w,rname)
mname = "bweh"
@@ -493,7 +500,7 @@
def test_dependency_info(self):
wname = "blah"
- w = Workspace(wname)
+ w = Workspace(wname, "bla")
rname = "booh"
r = Repository(w,rname)
mname = "bweh"
@@ -566,7 +573,7 @@
def test_command(self):
wname = "blah"
- w = Workspace(wname)
+ w = Workspace(wname, "bla")
rname = "booh"
r = Repository(w,rname)
mname = "bweh"
@@ -584,7 +591,7 @@
def test_mkdir(self):
wname = "blah"
- w = Workspace(wname)
+ w = Workspace(wname, "bla")
rname = "booh"
r = Repository(w,rname)
mname = "bweh"
@@ -606,7 +613,7 @@
def test_rmdir(self):
wname = "blah"
- w = Workspace(wname)
+ w = Workspace(wname, "bla")
rname = "booh"
r = Repository(w,rname)
mname = "bweh"
@@ -628,7 +635,7 @@
def test_script(self):
wname = "blah"
- w = Workspace(wname)
+ w = Workspace(wname, "bla")
rname = "booh"
r = Repository(w,rname)
mname = "bweh"
@@ -662,7 +669,7 @@
def test_ant(self):
wname = "blah"
- w = Workspace(wname)
+ w = Workspace(wname, "bla")
rname = "booh"
r = Repository(w,rname)
mname = "bweh"
@@ -689,7 +696,7 @@
def test_output(self):
wname = "blah"
- w = Workspace(wname)
+ w = Workspace(wname, "bla")
rname = "booh"
r = Repository(w,rname)
mname = "bweh"
@@ -708,7 +715,7 @@
def test_jar(self):
wname = "blah"
- w = Workspace(wname)
+ w = Workspace(wname, "bla")
rname = "booh"
r = Repository(w,rname)
mname = "bweh"
@@ -745,7 +752,7 @@
def test_classdir(self):
wname = "blah"
- w = Workspace(wname)
+ w = Workspace(wname, "bla")
rname = "booh"
r = Repository(w,rname)
mname = "bweh"
Modified: gump/branches/Gump3/pygump/python/gump/test/testPluginBuilder.py
URL: http://svn.apache.org/viewcvs/gump/branches/Gump3/pygump/python/gump/test/testPluginBuilder.py?rev=210002&r1=210001&r2=210002&view=diff
==============================================================================
--- gump/branches/Gump3/pygump/python/gump/test/testPluginBuilder.py (original)
+++ gump/branches/Gump3/pygump/python/gump/test/testPluginBuilder.py Sun Jul 10 05:34:40 2005
@@ -40,7 +40,7 @@
def test_do_script(self):
basedir = abspath(mkdtemp())
try:
- w = Workspace("w")
+ w = Workspace("w", basedir)
mkdir(join(basedir,w.name))
r = Repository(w,"r")
mkdir(join(basedir,w.name,r.name))
@@ -68,7 +68,8 @@
log = self.mock()
log.stubs().method("debug")
- plugin = ScriptBuilderPlugin(basedir, log)
+ plugin = ScriptBuilderPlugin(log)
+ plugin.initialize()
cmd = Script(p, "dobuild")
plugin._do_script(cmd.project, cmd)
@@ -78,4 +79,7 @@
cmd = Script(p, "nosuchscript")
self.assertRaises(Error, plugin._do_script, cmd.project, cmd)
finally:
+ if plugin:
+ try: plugin.finalize(w)
+ except: pass
rmtree(basedir)
Modified: gump/branches/Gump3/pygump/python/gump/test/testPluginDirBuilder.py
URL: http://svn.apache.org/viewcvs/gump/branches/Gump3/pygump/python/gump/test/testPluginDirBuilder.py?rev=210002&r1=210001&r2=210002&view=diff
==============================================================================
--- gump/branches/Gump3/pygump/python/gump/test/testPluginDirBuilder.py (original)
+++ gump/branches/Gump3/pygump/python/gump/test/testPluginDirBuilder.py Sun Jul 10 05:34:40 2005
@@ -38,7 +38,7 @@
def test_do_rmdir(self):
basedir = abspath(mkdtemp())
try:
- w = Workspace("w")
+ w = Workspace("w", basedir)
mkdir(join(basedir,w.name))
r = Repository(w,"r")
mkdir(join(basedir,w.name,r.name))
@@ -51,7 +51,7 @@
cmd = Rmdir(p,"somedir")
- plugin = RmdirBuilderPlugin(basedir)
+ plugin = RmdirBuilderPlugin()
makedirs(join(ppath, cmd.directory, "nested", "stuff", "here"))
plugin._do_rmdir(cmd.project, cmd.directory)
@@ -85,7 +85,7 @@
def test_do_mkdir(self):
basedir = abspath(mkdtemp())
try:
- w = Workspace("w")
+ w = Workspace("w", basedir)
mkdir(join(basedir,w.name))
r = Repository(w,"r")
mkdir(join(basedir,w.name,r.name))
@@ -98,7 +98,7 @@
cmd = Mkdir(p,"somedir")
- plugin = MkdirBuilderPlugin(basedir)
+ plugin = MkdirBuilderPlugin()
plugin._do_mkdir(cmd.project, cmd.directory)
self.assert_(isdir(join(ppath,cmd.directory)))