From warner at users.sourceforge.net Fri Oct 1 00:42:03 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 01 Oct 2004 00:42:03 +0000 Subject: [Buildbot-commits] buildbot/buildbot/scripts sample.cfg,1.2,1.3 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6047/buildbot/scripts Modified Files: sample.cfg Log Message: improve the build-the-buildbot example config file From warner at users.sourceforge.net Fri Oct 1 01:38:09 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 01 Oct 2004 01:38:09 +0000 Subject: [Buildbot-commits] buildbot/buildbot/status mail.py,1.9,1.10 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/status In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15881/buildbot/status Modified Files: mail.py Log Message: * buildbot/status/mail.py (Domain): shorten class name (MailNotifier): if lookup= is a string, pass it to Domain() * buildbot/test/test_status.py (Mail.testBuild1): new class name (Mail.testBuild2): test the string-to-Domain shortcut (Mail.testMail): fix test From warner at users.sourceforge.net Fri Oct 1 01:38:09 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 01 Oct 2004 01:38:09 +0000 Subject: [Buildbot-commits] buildbot/buildbot/test test_status.py,1.8,1.9 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15881/buildbot/test Modified Files: test_status.py Log Message: * buildbot/status/mail.py (Domain): shorten class name (MailNotifier): if lookup= is a string, pass it to Domain() * buildbot/test/test_status.py (Mail.testBuild1): new class name (Mail.testBuild2): test the string-to-Domain shortcut (Mail.testMail): fix test From warner at users.sourceforge.net Fri Oct 1 01:39:21 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 01 Oct 2004 01:39:21 +0000 Subject: [Buildbot-commits] buildbot/buildbot/scripts runner.py,1.3,1.4 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16077/buildbot/scripts Modified Files: runner.py Log Message: (createMaster): remove the -shutdown.tap stuff now that it isn't necessary (createSlave): same (start): launch buildbot.tap, not buildbot-shutdown.tap From warner at users.sourceforge.net Fri Oct 1 01:39:45 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 01 Oct 2004 01:39:45 +0000 Subject: [Buildbot-commits] buildbot NEWS,1.29,1.30 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16115 Modified Files: NEWS Log Message: update for release From warner at users.sourceforge.net Fri Oct 1 01:39:53 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 01 Oct 2004 01:39:53 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.284,1.285 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16142 Modified Files: ChangeLog Log Message: *** empty log message *** From warner at users.sourceforge.net Fri Oct 1 01:56:31 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 01 Oct 2004 01:56:31 +0000 Subject: [Buildbot-commits] buildbot/docs/examples twisted_master.cfg,1.22,1.23 hello.cfg,1.8,1.9 glib_master.cfg,1.3,1.4 Message-ID: Update of /cvsroot/buildbot/buildbot/docs/examples In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18906/docs/examples Modified Files: twisted_master.cfg hello.cfg glib_master.cfg Log Message: * docs/examples/*.cfg: update to modern standards From warner at users.sourceforge.net Fri Oct 1 02:04:53 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 01 Oct 2004 02:04:53 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.285,1.286 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20143 Modified Files: ChangeLog Log Message: * buildbot/status/words.py (IrcStatusBot.command_SOURCE): add 'source' command to tell users where to get the Buildbot source From warner at users.sourceforge.net Fri Oct 1 02:04:54 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 01 Oct 2004 02:04:54 +0000 Subject: [Buildbot-commits] buildbot/buildbot/status words.py,1.25,1.26 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/status In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20143/buildbot/status Modified Files: words.py Log Message: * buildbot/status/words.py (IrcStatusBot.command_SOURCE): add 'source' command to tell users where to get the Buildbot source From warner at users.sourceforge.net Fri Oct 1 02:12:29 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 01 Oct 2004 02:12:29 +0000 Subject: [Buildbot-commits] buildbot NEWS,1.30,1.31 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21293 Modified Files: NEWS Log Message: * NEWS: update for 0.6.0 release From warner at users.sourceforge.net Fri Oct 1 02:13:10 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 01 Oct 2004 02:13:10 +0000 Subject: [Buildbot-commits] buildbot/buildbot __init__.py,1.2,1.3 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21418 Modified Files: __init__.py Log Message: * buildbot/__init__.py (version): same From warner at users.sourceforge.net Fri Oct 1 02:14:18 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 01 Oct 2004 02:14:18 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.286,1.287 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21624 Modified Files: ChangeLog Log Message: releasing buildbot-0.6.0 From warner at users.sourceforge.net Fri Oct 1 02:34:46 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 01 Oct 2004 02:34:46 +0000 Subject: [Buildbot-commits] buildbot Makefile,1.2,1.3 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24890 Modified Files: Makefile Log Message: add a release: target to build the docs and run setup.py sdist From warner at users.sourceforge.net Fri Oct 1 02:35:52 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 01 Oct 2004 02:35:52 +0000 Subject: [Buildbot-commits] buildbot MANIFEST.in,1.10,1.11 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25030 Modified Files: MANIFEST.in Log Message: * MANIFEST.in: add debian/*, sample.cfg, more docs files From warner at users.sourceforge.net Fri Oct 1 02:36:03 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 01 Oct 2004 02:36:03 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.287,1.288 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25064 Modified Files: ChangeLog Log Message: *** empty log message *** From warner at users.sourceforge.net Fri Oct 1 02:36:37 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 01 Oct 2004 02:36:37 +0000 Subject: [Buildbot-commits] buildbot/docs/PyCon-2003 Makefile,1.1,1.2 Message-ID: Update of /cvsroot/buildbot/buildbot/docs/PyCon-2003 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25156/docs/PyCon-2003 Modified Files: Makefile Log Message: fix lore output filename From warner at users.sourceforge.net Fri Oct 1 02:39:22 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 01 Oct 2004 02:39:22 +0000 Subject: [Buildbot-commits] buildbot/debian changelog,1.1,1.2 Message-ID: Update of /cvsroot/buildbot/buildbot/debian In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25649 Modified Files: changelog Log Message: bump to 0.6.0 From warner at users.sourceforge.net Fri Oct 1 02:45:56 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 01 Oct 2004 02:45:56 +0000 Subject: [Buildbot-commits] buildbot MANIFEST.in,1.11,1.12 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26944 Modified Files: MANIFEST.in Log Message: remove test_trial.py from the tarball until support is complete From warner at users.sourceforge.net Fri Oct 1 02:46:08 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 01 Oct 2004 02:46:08 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.288,1.289 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27032 Modified Files: ChangeLog Log Message: *** empty log message *** From warner at users.sourceforge.net Fri Oct 1 03:18:16 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 01 Oct 2004 03:18:16 +0000 Subject: [Buildbot-commits] buildbot README,1.20,1.21 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv472 Modified Files: README Log Message: update for 0.6.0 From warner at users.sourceforge.net Fri Oct 1 03:18:34 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 01 Oct 2004 03:18:34 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.289,1.290 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv574 Modified Files: ChangeLog Log Message: *** empty log message *** From warner at users.sourceforge.net Fri Oct 1 03:27:07 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 01 Oct 2004 03:27:07 +0000 Subject: [Buildbot-commits] site ChangeLog,1.15,1.16 NEWS,1.1,1.2 README,1.10,1.11 index.html,1.28,1.29 Message-ID: Update of /cvsroot/buildbot/site In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2171 Modified Files: ChangeLog NEWS README index.html Log Message: update for 0.6.0 release From warner at users.sourceforge.net Tue Oct 12 17:46:36 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Tue, 12 Oct 2004 17:46:36 +0000 Subject: [Buildbot-commits] buildbot/buildbot __init__.py,1.3,1.4 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26539/buildbot Modified Files: __init__.py Log Message: (version): bump to 0.6.0+ while between releases From warner at users.sourceforge.net Tue Oct 12 17:51:07 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Tue, 12 Oct 2004 17:51:07 +0000 Subject: [Buildbot-commits] buildbot/buildbot/changes mail.py,1.13,1.14 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/changes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27726/buildbot/changes Modified Files: mail.py Log Message: (MaildirSource.describe): fix exception when describing a maildir source. Thanks to Stephen Davis. From warner at users.sourceforge.net Tue Oct 12 17:51:22 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Tue, 12 Oct 2004 17:51:22 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.290,1.291 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27803 Modified Files: ChangeLog Log Message: *** empty log message *** From warner at users.sourceforge.net Tue Oct 12 17:49:18 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Tue, 12 Oct 2004 17:49:18 +0000 Subject: [Buildbot-commits] buildbot/buildbot/scripts sample.mk,NONE,1.1 runner.py,1.4,1.5 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27218/buildbot/scripts Modified Files: runner.py Added Files: sample.mk Log Message: * buildbot/scripts/runner.py (createMaster): install Makefile too (start): add --no_save to 'start' command * buildbot/scripts/sample.mk: simple convenience Makefile with start/stop/reload targets --- NEW FILE: sample.mk --- # -*- makefile -*- # This is a simple makefile which lives in a buildmaster/buildslave # directory (next to the buildbot.tap file). It allows you to start/stop the # master ot slave by doing 'make start' or 'make stop'. # The 'reconfig' target will tell a buildmaster to reload its config file. start: twistd --no_save -f buildbot.tap stop: kill `cat twistd.pid` reconfig: kill -HUP `cat twistd.pid` From warner at users.sourceforge.net Tue Oct 12 17:49:32 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Tue, 12 Oct 2004 17:49:32 +0000 Subject: [Buildbot-commits] buildbot/buildbot/status words.py,1.26,1.27 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/status In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27266/buildbot/status Modified Files: words.py Log Message: (IrcStatusBot.command_WATCH): round off ETA seconds From fdrake at users.sourceforge.net Tue Oct 12 18:55:47 2004 From: fdrake at users.sourceforge.net (Fred L. Drake) Date: Tue, 12 Oct 2004 18:55:47 +0000 Subject: [Buildbot-commits] CVSROOT syncmail,1.6,1.7 Message-ID: Update of /cvsroot/buildbot/CVSROOT In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8949 Modified Files: syncmail Log Message: drop direct use of rcsdiff; this doesn't work so well From fdrake at users.sourceforge.net Tue Oct 12 19:04:56 2004 From: fdrake at users.sourceforge.net (Fred L. Drake) Date: Tue, 12 Oct 2004 19:04:56 +0000 Subject: [Buildbot-commits] buildbot/buildbot/status html.py,1.40,1.41 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/status In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11207/buildbot/status Modified Files: html.py Log Message: avoid a number of string copies (mostly just testing the syncmail changes) Index: html.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/status/html.py,v retrieving revision 1.40 retrieving revision 1.41 diff -u -d -r1.40 -r1.41 --- html.py 30 Sep 2004 10:05:42 -0000 1.40 +++ html.py 12 Oct 2004 19:04:53 -0000 1.41 @@ -126,29 +126,28 @@ def body(self, request): s = self.step b = s.getBuild() - data = "" - data += "

BuildStep %s:#%d:%s

\n" % \ - (b.getBuilder().getName(), b.getNumber(), s.getName()) + data = "

BuildStep %s:#%d:%s

\n" % \ + (b.getBuilder().getName(), b.getNumber(), s.getName()) if s.isFinished(): - data += "

Finished

\n" - data += "

%s

\n" % html.escape("%s" % s.getText()) + data += ("

Finished

\n" + "

%s

\n" % html.escape("%s" % s.getText())) else: - data += "

Not Finished

\n" - data += "

ETA %s seconds

\n" % s.getETA() + data += ("

Not Finished

\n" + "

ETA %s seconds

\n" % s.getETA()) exp = s.getExpectations() if exp: - data += "

Expectations

\n" - data += "
    \n" + data += ("

    Expectations

    \n" + "
      \n") for e in exp: data += "
    • %s: current=%s, target=%s
    • \n" % \ (html.escape(e[0]), e[1], e[2]) data += "
    \n" logs = s.getLogs() if logs: - data += "

    Logs

    \n" - data += "
      \n" + data += ("

      Logs

      \n" + "
        \n") for num in range(len(logs)): data += '
      • %s
      • \n' % \ (urllib.quote(request.childLink("%d" % num)), @@ -175,24 +174,23 @@ def body(self, request): b = self.build - data = "" # the color in the following line gives python-mode trouble - data += "

        Build %s:#%d

        \n" % (b.getBuilder().getName(), - b.getNumber()) - data += "

        Reason:

        \n%s\n" % html.escape(b.getReason()) - + data = ("

        Build %s:#%d

        \n" + "

        Reason:

        \n%s\n" + % (b.getBuilder().getName(), b.getNumber(), + html.escape(b.getReason())) if b.isFinished(): data += "

        Results:

        " data += " ".join(b.getText()) else: data += "

        Build In Progress

        " - data += "

        Blamelist:

        \n" - data += "
          \n" + data += ("

          Blamelist:

          \n" + "
            \n") for who in b.getResponsibleUsers(): data += "
          1. %s
          2. \n" % html.escape(who) - data += "
          \n" - data += "

          All Changes

          \n" + data += ("
        \n" + "

        All Changes

        \n") changes = b.getChanges() if changes: data += "
          \n" From corydodt at users.sourceforge.net Wed Oct 13 00:11:33 2004 From: corydodt at users.sourceforge.net (Cory Dodt) Date: Wed, 13 Oct 2004 00:11:33 +0000 Subject: [Buildbot-commits] buildbot/docs steps.xhtml,1.5,1.6 Message-ID: Update of /cvsroot/buildbot/buildbot/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12222 Modified Files: steps.xhtml Log Message: typo in step.xhtml Index: steps.xhtml =================================================================== RCS file: /cvsroot/buildbot/buildbot/docs/steps.xhtml,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- steps.xhtml 8 Sep 2004 19:36:17 -0000 1.5 +++ steps.xhtml 13 Oct 2004 00:11:30 -0000 1.6 @@ -5,7 +5,7 @@ BuildSteps - + @@ -36,7 +36,7 @@ cause the build to halt immediately with an overall result of FAILURE. -
        1. flunkOnWarnigs: when True, a WARNINGS or FAILURE of this +
        2. flunkOnWarnings: when True, a WARNINGS or FAILURE of this build step will mark the overall build as FAILURE. The remaining steps will still be executed.
        3. From warner at users.sourceforge.net Thu Oct 14 16:47:04 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Thu, 14 Oct 2004 16:47:04 +0000 Subject: [Buildbot-commits] buildbot/buildbot/status html.py,1.41,1.42 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/status In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3610/buildbot/status Modified Files: html.py Log Message: (StatusResourceBuild.body): fix syntax error introduced in the last commit. We really need that metabuildbot :). Index: html.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/status/html.py,v retrieving revision 1.41 retrieving revision 1.42 diff -u -d -r1.41 -r1.42 --- html.py 12 Oct 2004 19:04:53 -0000 1.41 +++ html.py 14 Oct 2004 16:47:01 -0000 1.42 @@ -178,7 +178,7 @@ data = ("

          Build %s:#%d

          \n" "

          Reason:

          \n%s\n" % (b.getBuilder().getName(), b.getNumber(), - html.escape(b.getReason())) + html.escape(b.getReason()))) if b.isFinished(): data += "

          Results:

          " data += " ".join(b.getText()) From warner at users.sourceforge.net Thu Oct 14 16:47:35 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Thu, 14 Oct 2004 16:47:35 +0000 Subject: [Buildbot-commits] buildbot/buildbot/scripts runner.py,1.5,1.6 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3733/buildbot/scripts Modified Files: runner.py Log Message: * buildbot/master.py (BuildMaster.startService): don't register a SIGHUP handler if the signal module has no SIGHUP attribute. Apparently win32 does this. * buildbot/scripts/runner.py (start): add --reactor=win32 on win32 * buildbot/test/test_web.py (WebTest.test_webPathname): skip the test if the reactor can't offer UNIX sockets Index: runner.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/scripts/runner.py,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- runner.py 12 Oct 2004 17:49:16 -0000 1.5 +++ runner.py 14 Oct 2004 16:47:33 -0000 1.6 @@ -81,7 +81,10 @@ basedir = config['basedir'] quiet = config['quiet'] os.chdir(basedir) - cmd = "twistd --no_save -f buildbot.tap" + reactor_arg = "" + if sys.platform == "win32": + reactor_arg = "--reactor=win32" + cmd = "twistd %s --no_save -f buildbot.tap" % reactor_arg if not quiet: print cmd os.system(cmd) sys.exit(0) From warner at users.sourceforge.net Thu Oct 14 16:47:35 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Thu, 14 Oct 2004 16:47:35 +0000 Subject: [Buildbot-commits] buildbot/buildbot/test test_web.py,1.4,1.5 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3733/buildbot/test Modified Files: test_web.py Log Message: * buildbot/master.py (BuildMaster.startService): don't register a SIGHUP handler if the signal module has no SIGHUP attribute. Apparently win32 does this. * buildbot/scripts/runner.py (start): add --reactor=win32 on win32 * buildbot/test/test_web.py (WebTest.test_webPathname): skip the test if the reactor can't offer UNIX sockets Index: test_web.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_web.py,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- test_web.py 30 Sep 2004 07:13:32 -0000 1.4 +++ test_web.py 14 Oct 2004 16:47:32 -0000 1.5 @@ -8,6 +8,7 @@ dr = unittest.deferredResult from twisted.internet import reactor +from twisted.internet.interfaces import IReactorUNIX from twisted.web import client from buildbot import master, interfaces @@ -84,6 +85,9 @@ def test_webPathname(self): # running a t.web.distrib server over a UNIX socket + if not components.implements(reactor, IReactorUNIX): + raise unittest.SkipTest("UNIX sockets not supported here") + cfg = config1 % {'k': 'webPathname', 'v': "'.web-pb'"} From warner at users.sourceforge.net Thu Oct 14 16:47:36 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Thu, 14 Oct 2004 16:47:36 +0000 Subject: [Buildbot-commits] buildbot/buildbot master.py,1.53,1.54 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3733/buildbot Modified Files: master.py Log Message: * buildbot/master.py (BuildMaster.startService): don't register a SIGHUP handler if the signal module has no SIGHUP attribute. Apparently win32 does this. * buildbot/scripts/runner.py (start): add --reactor=win32 on win32 * buildbot/test/test_web.py (WebTest.test_webPathname): skip the test if the reactor can't offer UNIX sockets Index: master.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/master.py,v retrieving revision 1.53 retrieving revision 1.54 diff -u -d -r1.53 -r1.54 --- master.py 30 Sep 2004 23:03:53 -0000 1.53 +++ master.py 14 Oct 2004 16:47:33 -0000 1.54 @@ -567,7 +567,7 @@ # this quickly. self.loadTheConfigFile() self.readConfig = True - if signal: + if signal and hasattr(signal, "SIGHUP"): signal.signal(signal.SIGHUP, self._handleSIGHUP) for b in self.botmaster.builders.values(): b.builder_status.addPointEvent(["master", "started"]) From warner at users.sourceforge.net Thu Oct 14 16:47:44 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Thu, 14 Oct 2004 16:47:44 +0000 Subject: [Buildbot-commits] buildbot/contrib/windows - New directory Message-ID: Update of /cvsroot/buildbot/buildbot/contrib/windows In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3762/contrib/windows Log Message: Directory /cvsroot/buildbot/buildbot/contrib/windows added to the repository From warner at users.sourceforge.net Thu Oct 14 16:48:49 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Thu, 14 Oct 2004 16:48:49 +0000 Subject: [Buildbot-commits] buildbot/contrib/windows buildbot.bat,NONE,1.1 Message-ID: Update of /cvsroot/buildbot/buildbot/contrib/windows In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3990/contrib/windows Added Files: buildbot.bat Log Message: helper script to deal with path issues. Thanks to Yoz Grahame. --- NEW FILE: buildbot.bat --- python C:\Python23\Scripts\buildbot %* From warner at users.sourceforge.net Thu Oct 14 16:49:08 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Thu, 14 Oct 2004 16:49:08 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.291,1.292 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4061 Modified Files: ChangeLog Log Message: *** empty log message *** Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.291 retrieving revision 1.292 diff -u -d -r1.291 -r1.292 --- ChangeLog 12 Oct 2004 17:51:18 -0000 1.291 +++ ChangeLog 14 Oct 2004 16:49:06 -0000 1.292 @@ -1,3 +1,21 @@ +2004-10-14 Brian Warner + + * contrib/windows/buildbot.bat: helper script to deal with path + issues. Thanks to Yoz Grahame. + + * buildbot/master.py (BuildMaster.startService): don't register a + SIGHUP handler if the signal module has no SIGHUP attribute. + Apparently win32 does this. + + * buildbot/scripts/runner.py (start): add --reactor=win32 on win32 + + * buildbot/test/test_web.py (WebTest.test_webPathname): skip the + test if the reactor can't offer UNIX sockets + + * buildbot/status/html.py (StatusResourceBuild.body): fix syntax + error introduced in the last commit. We really need that + metabuildbot :). + 2004-10-12 Brian Warner * buildbot/changes/mail.py (MaildirSource.describe): fix exception From warner at users.sourceforge.net Thu Oct 14 16:59:29 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Thu, 14 Oct 2004 16:59:29 +0000 Subject: [Buildbot-commits] buildbot/buildbot/slave commands.py,1.14,1.15 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/slave In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6321/buildbot/slave Modified Files: commands.py Log Message: (SourceBase.doCopy): remove leftover self.copyComplete() call. Yoz Grahame makes the catch. Index: commands.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/slave/commands.py,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- commands.py 30 Sep 2004 22:56:18 -0000 1.14 +++ commands.py 14 Oct 2004 16:59:26 -0000 1.15 @@ -511,7 +511,7 @@ todir = os.path.join(self.builder.basedir, self.workdir) if runtime.platformType != "posix": shutil.copytree(fromdir, todir) - return self.copyComplete(None) + return command = ['cp', '-r', fromdir, todir] c = ShellCommand(self.builder, command, self.builder.basedir, sendRC=False, timeout=self.timeout) From warner at users.sourceforge.net Thu Oct 14 16:59:40 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Thu, 14 Oct 2004 16:59:40 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.292,1.293 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6355 Modified Files: ChangeLog Log Message: *** empty log message *** Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.292 retrieving revision 1.293 diff -u -d -r1.292 -r1.293 --- ChangeLog 14 Oct 2004 16:49:06 -0000 1.292 +++ ChangeLog 14 Oct 2004 16:59:37 -0000 1.293 @@ -1,5 +1,8 @@ 2004-10-14 Brian Warner + * buildbot/slave/commands.py (SourceBase.doCopy): remove leftover + self.copyComplete() call. Yoz Grahame makes the catch. + * contrib/windows/buildbot.bat: helper script to deal with path issues. Thanks to Yoz Grahame. From warner at users.sourceforge.net Thu Oct 14 17:28:37 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Thu, 14 Oct 2004 17:28:37 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.293,1.294 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15955 Modified Files: ChangeLog Log Message: * buildbot/test/test_maildir.py (MaildirTest): use shutil.rmtree instead of os.system("rm -rf") for win32 portability * buildbot/test/test_slavecommand.py (SlaveCommandTestCase): use SignalMixin instead of starting/stopping the reactor, which is likely to cause problems with other tests Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.293 retrieving revision 1.294 diff -u -d -r1.293 -r1.294 --- ChangeLog 14 Oct 2004 16:59:37 -0000 1.293 +++ ChangeLog 14 Oct 2004 17:28:34 -0000 1.294 @@ -1,5 +1,12 @@ 2004-10-14 Brian Warner + * buildbot/test/test_maildir.py (MaildirTest): use shutil.rmtree + instead of os.system("rm -rf") for win32 portability + + * buildbot/test/test_slavecommand.py (SlaveCommandTestCase): use + SignalMixin instead of starting/stopping the reactor, which is + likely to cause problems with other tests + * buildbot/slave/commands.py (SourceBase.doCopy): remove leftover self.copyComplete() call. Yoz Grahame makes the catch. From warner at users.sourceforge.net Thu Oct 14 17:28:36 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Thu, 14 Oct 2004 17:28:36 +0000 Subject: [Buildbot-commits] buildbot/buildbot/test test_slavecommand.py,1.5,1.6 test_maildir.py,1.1,1.2 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15955/buildbot/test Modified Files: test_slavecommand.py test_maildir.py Log Message: * buildbot/test/test_maildir.py (MaildirTest): use shutil.rmtree instead of os.system("rm -rf") for win32 portability * buildbot/test/test_slavecommand.py (SlaveCommandTestCase): use SignalMixin instead of starting/stopping the reactor, which is likely to cause problems with other tests Index: test_maildir.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_maildir.py,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- test_maildir.py 8 Jan 2004 20:05:24 -0000 1.1 +++ test_maildir.py 14 Oct 2004 17:28:34 -0000 1.2 @@ -1,7 +1,7 @@ #! /usr/bin/python from twisted.trial import unittest -import os +import os, shutil from buildbot.changes.mail import FCMaildirSource from twisted.internet import reactor from twisted.python import util @@ -11,7 +11,7 @@ print "creating empty maildir" self.maildir = "test-maildir" if os.path.isdir(self.maildir): - os.system("rm -rf %s" % self.maildir) + shutil.rmtree(self.maildir) print "removing stale maildir" os.mkdir(self.maildir) os.mkdir(os.path.join(self.maildir, "cur")) @@ -22,7 +22,7 @@ def tearDown(self): print "removing old maildir" - os.system("rm -rf %s" % self.maildir) + shutil.rmtree(self.maildir) if self.source: self.source.stopService() Index: test_slavecommand.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_slavecommand.py,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- test_slavecommand.py 30 Aug 2004 20:27:11 -0000 1.5 +++ test_slavecommand.py 14 Oct 2004 17:28:34 -0000 1.6 @@ -11,7 +11,8 @@ import sys startLogging(sys.stdout) -import re +import re, time +import signal from buildbot.slave.commands import SlaveShellCommand @@ -48,7 +49,23 @@ self.updates.append(data) -class SlaveCommandTestCase(unittest.TestCase): +class SignalMixin: + sigchldHandler = None + + def setUpClass(self): + # make sure SIGCHLD handler is installed, as it should be on + # reactor.run(). problem is reactor may not have been run when this + # test runs. + if hasattr(reactor, "_handleSigchld") and hasattr(signal, "SIGCHLD"): + self.sigchldHandler = signal.signal(signal.SIGCHLD, + reactor._handleSigchld) + + def tearDownClass(self): + if self.sigchldHandler: + signal.signal(signal.SIGCHLD, self.sigchldHandler) + + +class SlaveCommandTestCase(SignalMixin, unittest.TestCase): def setUp(self): self.builder = FakeSlaveBuilder() @@ -60,7 +77,6 @@ def callback(self, failed): self.failed = failed self.results = self.builder.updates - reactor.stop() def doTest(self, commandfactory, args): builder = self.builder @@ -69,8 +85,12 @@ cmd = commandfactory(builder, stepId, args) d = cmd.start() d.addCallbacks(builder.commandComplete, builder.commandFailed) - # we must make sure SIGCHLD gets registered - reactor.run() + + timeout = time.time() + 2 + while not (self.results or self.failed) and time.time() < timeout: + reactor.iterate(0.01) + if not (self.results or self.failed): + self.fail("timeout") if self.failed: print self.builder.failure return self.failed From warner at users.sourceforge.net Fri Oct 15 16:59:46 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 15 Oct 2004 16:59:46 +0000 Subject: [Buildbot-commits] buildbot/buildbot/status builder.py,1.38,1.39 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/status In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8340/buildbot/status Modified Files: builder.py Log Message: * buildbot/interfaces.py (IBuildStatus.getTestResults): new method to retrieve a dict of accumulated test results (ITestResult): define what a single test result can do * buildbot/status/builder.py (TestResult): implement ITestResult (BuildStatus.getTestResults): retrieve dict of TestResults (BuildStatus.addTestResult): add TestResults * buildbot/test/test_status.py (Results.testAddResults): test it Index: builder.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/status/builder.py,v retrieving revision 1.38 retrieving revision 1.39 diff -u -d -r1.38 -r1.39 --- builder.py 30 Sep 2004 23:38:08 -0000 1.38 +++ builder.py 15 Oct 2004 16:59:44 -0000 1.39 @@ -236,6 +236,28 @@ def finish(self): self.finished = util.now() +class TestResult: + __implements__ = interfaces.ITestResult, + + def __init__(self, name, results, text, logs): + assert type(name) is tuple + self.name = name + self.results = results + self.text = text + self.logs = logs + + def getName(self): + return self.name + + def getResults(self): + return self.results + + def getText(self): + return self.text + + def getLogs(self): + return self.logs + class BuildStepStatus: # note that these are created when the Build is set up, before each @@ -469,9 +491,14 @@ text = [] color = None results = None + + # these lists/dicts are defined here so that unserialized instances have + # (empty) values. They are set in __init__ to new objects to make sure + # each instance gets its own copy. watchers = [] updates = {} finishedWatchers = [] + testResults = {} def __init__(self, parent, number): self.builder = parent @@ -480,6 +507,7 @@ self.updates = {} self.finishedWatchers = [] self.steps = [] + self.testResults = {} # IBuildStatus @@ -561,6 +589,9 @@ def getResults(self): return self.results + def getTestResults(self): + return self.testResults + def getLogs(self): # TODO: steps should contribute significant logs instead of this # hack, which returns every log from every step. The logs should get @@ -611,6 +642,9 @@ step.step_status = s self.steps.append(s) + def addTestResult(self, result): + self.testResults[result.getName()] = result + def setSourceStamp(self, revision, patch=None): self.sourceStamp = (revision, patch) def setReason(self, reason): From warner at users.sourceforge.net Fri Oct 15 16:59:46 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 15 Oct 2004 16:59:46 +0000 Subject: [Buildbot-commits] buildbot/buildbot/test test_status.py,1.9,1.10 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8340/buildbot/test Modified Files: test_status.py Log Message: * buildbot/interfaces.py (IBuildStatus.getTestResults): new method to retrieve a dict of accumulated test results (ITestResult): define what a single test result can do * buildbot/status/builder.py (TestResult): implement ITestResult (BuildStatus.getTestResults): retrieve dict of TestResults (BuildStatus.addTestResult): add TestResults * buildbot/test/test_status.py (Results.testAddResults): test it Index: test_status.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_status.py,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- test_status.py 1 Oct 2004 01:38:06 -0000 1.9 +++ test_status.py 15 Oct 2004 16:59:43 -0000 1.10 @@ -5,6 +5,7 @@ from twisted.internet import defer from twisted.trial import unittest dr = unittest.deferredResult +from twisted.python import components from buildbot import interfaces from buildbot.status import mail, builder @@ -211,3 +212,25 @@ e.decay = 0.1 self.failUnlessEqual(e.wavg(3, 4), 3.1) + +class Results(unittest.TestCase): + + def testAddResults(self): + b = builder.BuildStatus(None, 12) + testname = ("buildbot", "test", "test_status", "Results", + "testAddResults") + r1 = builder.TestResult(name=testname, + results=builder.SUCCESS, + text=["passed"], + logs={'output': ""}, + ) + b.addTestResult(r1) + + res = b.getTestResults() + self.failUnlessEqual(res.keys(), [testname]) + t = res[testname] + self.failUnless(components.implements(t, interfaces.ITestResult)) + self.failUnlessEqual(t.getName(), testname) + self.failUnlessEqual(t.getResults(), builder.SUCCESS) + self.failUnlessEqual(t.getText(), ["passed"]) + self.failUnlessEqual(t.getLogs(), {'output': ""}) From warner at users.sourceforge.net Fri Oct 15 16:59:46 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 15 Oct 2004 16:59:46 +0000 Subject: [Buildbot-commits] buildbot/buildbot interfaces.py,1.19,1.20 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8340/buildbot Modified Files: interfaces.py Log Message: * buildbot/interfaces.py (IBuildStatus.getTestResults): new method to retrieve a dict of accumulated test results (ITestResult): define what a single test result can do * buildbot/status/builder.py (TestResult): implement ITestResult (BuildStatus.getTestResults): retrieve dict of TestResults (BuildStatus.addTestResult): add TestResults * buildbot/test/test_status.py (Results.testAddResults): test it Index: interfaces.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/interfaces.py,v retrieving revision 1.19 retrieving revision 1.20 diff -u -d -r1.19 -r1.20 --- interfaces.py 30 Sep 2004 10:05:44 -0000 1.19 +++ interfaces.py 15 Oct 2004 16:59:44 -0000 1.20 @@ -258,6 +258,11 @@ and will only be accessible through the IBuildStepStatus objects. Each log is an object which implements the IStatusLog interface.""" + def getTestResults(): + """Return a dictionary that maps test-name tuples to ITestResult + objects. This may return an empty or partially-filled dictionary + until the build has completed.""" + # subscription interface def subscribe(receiver, updateInterval=None): @@ -270,6 +275,30 @@ """Unregister an IStatusReceiver. No further status messgaes will be delivered.""" +class ITestResult(Interface): + """I describe the results of a single unit test.""" + + def getName(): + """Returns a tuple of strings which make up the test name. Tests may + be arranged in a hierarchy, so looking for common prefixes may be + useful.""" + + def getResults(): + """Returns a constant describing the results of the test: SUCCESS, + WARNINGS, FAILURE.""" + + def getText(): + """Returns a list of short strings which describe the results of the + test in slightly more detail. Suggested components include + 'failure', 'error', 'passed', 'timeout'.""" + + def getLogs(): + # in flux, it may be possible to provide more structured information + # like python Failure instances + """Returns a dictionary of test logs. The keys are strings like + 'stdout', 'log', 'exceptions'. The values are strings.""" + + class IBuildStepStatus(Interface): """I hold status for a single BuildStep.""" From warner at users.sourceforge.net Fri Oct 15 16:59:47 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 15 Oct 2004 16:59:47 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.294,1.295 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8340 Modified Files: ChangeLog Log Message: * buildbot/interfaces.py (IBuildStatus.getTestResults): new method to retrieve a dict of accumulated test results (ITestResult): define what a single test result can do * buildbot/status/builder.py (TestResult): implement ITestResult (BuildStatus.getTestResults): retrieve dict of TestResults (BuildStatus.addTestResult): add TestResults * buildbot/test/test_status.py (Results.testAddResults): test it Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.294 retrieving revision 1.295 diff -u -d -r1.294 -r1.295 --- ChangeLog 14 Oct 2004 17:28:34 -0000 1.294 +++ ChangeLog 15 Oct 2004 16:59:44 -0000 1.295 @@ -1,3 +1,13 @@ +2004-10-15 Brian Warner + + * buildbot/interfaces.py (IBuildStatus.getTestResults): new method + to retrieve a dict of accumulated test results + (ITestResult): define what a single test result can do + * buildbot/status/builder.py (TestResult): implement ITestResult + (BuildStatus.getTestResults): retrieve dict of TestResults + (BuildStatus.addTestResult): add TestResults + * buildbot/test/test_status.py (Results.testAddResults): test it + 2004-10-14 Brian Warner * buildbot/test/test_maildir.py (MaildirTest): use shutil.rmtree From warner at users.sourceforge.net Fri Oct 15 18:44:21 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 15 Oct 2004 18:44:21 +0000 Subject: [Buildbot-commits] buildbot/buildbot/test test_twisted.py,1.2,1.3 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31334/buildbot/test Modified Files: test_twisted.py Log Message: * buildbot/process/step_twisted.py (Trial.createSummary): parse the 'problems' portion of stdout, add TestResults to our build * buildbot/test/test_twisted.py (Parse.testParse): test it Index: test_twisted.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_twisted.py,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- test_twisted.py 10 Jul 2004 23:10:27 -0000 1.2 +++ test_twisted.py 15 Oct 2004 18:44:18 -0000 1.3 @@ -2,7 +2,8 @@ from twisted.trial import unittest -from buildbot.process.step_twisted import countFailedTests +from buildbot.process.step_twisted import countFailedTests, Trial +from buildbot.status import builder noisy = 0 if noisy: @@ -45,8 +46,60 @@ unparseable """ +out6 = """ +=============================================================================== +SKIPPED: testProtocolLocalhost (twisted.flow.test.test_flow.FlowTest) +------------------------------------------------------------------------------- +XXX freezes, fixme +=============================================================================== +SKIPPED: testIPv6 (twisted.names.test.test_names.HostsTestCase) +------------------------------------------------------------------------------- +IPv6 support is not in our hosts resolver yet +=============================================================================== +EXPECTED FAILURE: testSlots (twisted.test.test_rebuild.NewStyleTestCase) +------------------------------------------------------------------------------- +Traceback (most recent call last): + File "/Users/buildbot/Buildbot/twisted/OSX-full2.3/Twisted/twisted/trial/unittest.py", line 240, in _runPhase + stage(*args, **kwargs) + File "/Users/buildbot/Buildbot/twisted/OSX-full2.3/Twisted/twisted/trial/unittest.py", line 262, in _main + self.runner(self.method) + File "/Users/buildbot/Buildbot/twisted/OSX-full2.3/Twisted/twisted/trial/runner.py", line 95, in runTest + method() + File "/Users/buildbot/Buildbot/twisted/OSX-full2.3/Twisted/twisted/test/test_rebuild.py", line 130, in testSlots + rebuild.updateInstance(self.m.SlottedClass()) + File "/Users/buildbot/Buildbot/twisted/OSX-full2.3/Twisted/twisted/python/rebuild.py", line 114, in updateInstance + self.__class__ = latestClass(self.__class__) +TypeError: __class__ assignment: 'SlottedClass' object layout differs from 'SlottedClass' +=============================================================================== +FAILURE: testBatchFile (twisted.conch.test.test_sftp.TestOurServerBatchFile) +------------------------------------------------------------------------------- +Traceback (most recent call last): + File "/Users/buildbot/Buildbot/twisted/OSX-full2.3/Twisted/twisted/trial/unittest.py", line 240, in _runPhase + stage(*args, **kwargs) + File "/Users/buildbot/Buildbot/twisted/OSX-full2.3/Twisted/twisted/trial/unittest.py", line 262, in _main + self.runner(self.method) + File "/Users/buildbot/Buildbot/twisted/OSX-full2.3/Twisted/twisted/trial/runner.py", line 95, in runTest + method() + File "/Users/buildbot/Buildbot/twisted/OSX-full2.3/Twisted/twisted/conch/test/test_sftp.py", line 450, in testBatchFile + self.failUnlessEqual(res[1:-2], ['testDirectory', 'testRemoveFile', 'testRenameFile', 'testfile1']) + File "/Users/buildbot/Buildbot/twisted/OSX-full2.3/Twisted/twisted/trial/unittest.py", line 115, in failUnlessEqual + raise FailTest, (msg or '%r != %r' % (first, second)) +FailTest: [] != ['testDirectory', 'testRemoveFile', 'testRenameFile', 'testfile1'] +------------------------------------------------------------------------------- +Ran 1454 tests in 911.579s + +FAILED (failures=2, skips=49, expectedFailures=9) +Exception exceptions.AttributeError: "'NoneType' object has no attribute 'StringIO'" in > ignored +""" -class Case1(unittest.TestCase): +class MyTrial(Trial): + def addTestResult(self, testname, results, text, logs): + self.results.append((testname, results, text, logs)) + def addCompleteLog(self, name, log): + pass + + +class Count(unittest.TestCase): def count(self, total, failures=0, errors=0, expectedFailures=0, unexpectedSuccesses=0, skips=0): @@ -71,3 +124,53 @@ self.assertEquals(count, self.count(total=None)) count = countFailedTests(out5) self.assertEquals(count, self.count(total=None)) + +class Parse(unittest.TestCase): + def testParse(self): + t = MyTrial(build=None, workdir=".", testpath=None, testChanges=True) + t.results = [] + log = builder.LogFile(None) + log.addStdout(out6) + t.createSummary(log) + + self.failUnlessEqual(len(t.results), 4) + r1, r2, r3, r4 = t.results + testname, results, text, logs = r1 + self.failUnlessEqual(testname, + ("twisted", "flow", "test", "test_flow", + "FlowTest", "testProtocolLocalhost")) + self.failUnlessEqual(results, builder.SKIPPED) + self.failUnlessEqual(text, ['skipped']) + self.failUnless("XXX freezes, fixme" in logs) + self.failUnless(logs.startswith("SKIPPED:")) + self.failUnless(logs.endswith("fixme\n")) + + testname, results, text, logs = r2 + self.failUnlessEqual(testname, + ("twisted", "names", "test", "test_names", + "HostsTestCase", "testIPv6")) + self.failUnlessEqual(results, builder.SKIPPED) + self.failUnlessEqual(text, ['skipped']) + self.failUnless(logs.startswith("SKIPPED: testIPv6")) + self.failUnless(logs.endswith("IPv6 support is not in our hosts resolver yet\n")) + + testname, results, text, logs = r3 + self.failUnlessEqual(testname, + ("twisted", "test", "test_rebuild", + "NewStyleTestCase", "testSlots")) + self.failUnlessEqual(results, builder.SUCCESS) + self.failUnlessEqual(text, ['expected', 'failure']) + self.failUnless(logs.startswith("EXPECTED FAILURE: ")) + self.failUnless("\nTraceback " in logs) + self.failUnless(logs.endswith("layout differs from 'SlottedClass'\n")) + + testname, results, text, logs = r4 + self.failUnlessEqual(testname, + ("twisted", "conch", "test", "test_sftp", + "TestOurServerBatchFile", "testBatchFile")) + self.failUnlessEqual(results, builder.FAILURE) + self.failUnlessEqual(text, ['failure']) + self.failUnless(logs.startswith("FAILURE: ")) + self.failUnless("Traceback " in logs) + self.failUnless(logs.endswith("'testRenameFile', 'testfile1']\n")) + From warner at users.sourceforge.net Fri Oct 15 18:44:22 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 15 Oct 2004 18:44:22 +0000 Subject: [Buildbot-commits] buildbot/buildbot/process step_twisted.py,1.59,1.60 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/process In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31334/buildbot/process Modified Files: step_twisted.py Log Message: * buildbot/process/step_twisted.py (Trial.createSummary): parse the 'problems' portion of stdout, add TestResults to our build * buildbot/test/test_twisted.py (Parse.testParse): test it Index: step_twisted.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/process/step_twisted.py,v retrieving revision 1.59 retrieving revision 1.60 diff -u -d -r1.59 -r1.60 --- step_twisted.py 29 Sep 2004 05:17:58 -0000 1.59 +++ step_twisted.py 15 Oct 2004 18:44:19 -0000 1.60 @@ -464,6 +464,13 @@ self.text = text self.text2 = [text2] + def addTestResult(self, testname, results, text, logs): + if self.reactor is not None: + testname = (self.reactor,) + testname + tr = TestResult(testname, results, text, logs={'log': log}) + #self.step_status.build.addTestResult(tr) + self.build.build_status.addTestResult(tr) + def createSummary(self, log): output = log.getText() problems = "" @@ -493,6 +500,49 @@ if problems: self.addCompleteLog("problems", problems) + # now parse the problems for per-test results + pio = StringIO.StringIO(problems) + testname = None + done = False + while not done: + while 1: + line = pio.readline() + if line == "": + done = True + break + if line.find("=" * 60) == 0: + break + if line.find("-" * 60) == 0: + # the last case has --- as a separator before the + # summary counts are printed + done = True + break + if testname is None: + # the first line after the === is like: +# EXPECTED FAILURE: testLackOfTB (twisted.test.test_failure.FailureTestCase) +# SKIPPED: testRETR (twisted.test.test_ftp.TestFTPServer) +# FAILURE: testBatchFile (twisted.conch.test.test_sftp.TestOurServerBatchFile) + r = re.search(r'^([^:]+): (\w+) \(([\w\.]+)\)', line) + result, name, case = r.groups() + testname = tuple(case.split(".") + [name]) + results = {'SKIPPED': SKIPPED, + 'EXPECTED FAILURE': SUCCESS, + 'UNEXPECTED SUCCESS': WARNINGS, + 'FAILURE': FAILURE, + 'ERROR': FAILURE, + 'SUCCESS': SUCCESS, # not reported + }.get(result, WARNINGS) + text = result.lower().split() + log = line + # the next line is all dashes + log += pio.readline() + else: + # the rest goes into the log + log += line + if testname: + self.addTestResult(testname, results, text, log) + testname = None + if warnings: lines = warnings.keys() lines.sort() From warner at users.sourceforge.net Fri Oct 15 18:44:22 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 15 Oct 2004 18:44:22 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.295,1.296 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31334 Modified Files: ChangeLog Log Message: * buildbot/process/step_twisted.py (Trial.createSummary): parse the 'problems' portion of stdout, add TestResults to our build * buildbot/test/test_twisted.py (Parse.testParse): test it Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.295 retrieving revision 1.296 diff -u -d -r1.295 -r1.296 --- ChangeLog 15 Oct 2004 16:59:44 -0000 1.295 +++ ChangeLog 15 Oct 2004 18:44:20 -0000 1.296 @@ -1,5 +1,9 @@ 2004-10-15 Brian Warner + * buildbot/process/step_twisted.py (Trial.createSummary): parse + the 'problems' portion of stdout, add TestResults to our build + * buildbot/test/test_twisted.py (Parse.testParse): test it + * buildbot/interfaces.py (IBuildStatus.getTestResults): new method to retrieve a dict of accumulated test results (ITestResult): define what a single test result can do From warner at users.sourceforge.net Tue Oct 19 18:31:59 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Tue, 19 Oct 2004 18:31:59 +0000 Subject: [Buildbot-commits] buildbot/buildbot/status html.py,1.42,1.43 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/status In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16992/buildbot/status Modified Files: html.py Log Message: (StatusResourceTestResults): display any TestResults that the Build might have (StatusResourceTestResult): and the logs for each TestResult (StatusResourceBuild): add link from the per-build page Index: html.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/status/html.py,v retrieving revision 1.42 retrieving revision 1.43 diff -u -d -r1.42 -r1.43 --- html.py 14 Oct 2004 16:47:01 -0000 1.42 +++ html.py 19 Oct 2004 18:31:49 -0000 1.43 @@ -164,6 +164,65 @@ except (IndexError, ValueError): return NoResource("No such Log '%s'" % logname) +# $builder/builds/NN/tests/TESTNAME +class StatusResourceTestResult(HtmlResource): + title = "Test Logs" + + def __init__(self, name, result): + HtmlResource.__init__(self) + self.name = name + self.result = result + + def body(self, request): + dotname = ".".join(self.name) + logs = self.result.getLogs() + lognames = logs.keys() + lognames.sort() + data = "

          %s

          \n" % html.escape(dotname) + for name in lognames: + data += "

          %s

          \n" % html.escape(name) + data += "
          " + logs[name] + "
          \n\n" + + return data + + +# $builder/builds/NN/tests +class StatusResourceTestResults(HtmlResource): + title = "Test Results" + + def __init__(self, results): + HtmlResource.__init__(self) + self.results = results + + def body(self, request): + r = self.results + data = "

          Test Results

          \n" + data += "
            \n" + testnames = r.keys() + testnames.sort() + for name in testnames: + res = r[name] + dotname = ".".join(name) + data += "
          • %s: " % dotname + # TODO: this could break on weird test names. At the moment, + # test names only come from Trial tests, where the name + # components must be legal python names, but that won't always + # be a restriction. + url = request.childLink(dotname) + data += "%s" % (url, " ".join(res.getText())) + data += "
          • \n" + data += "
          \n" + return data + + def getChild(self, path, request): + try: + name = tuple(path.split(".")) + result = self.results[name] + return StatusResourceTestResult(name, result) + except KeyError: + return NoResource("No such test name '%s'" % path) + + # $builder/builds/NN class StatusResourceBuild(HtmlResource): title = "Build" @@ -181,7 +240,10 @@ html.escape(b.getReason()))) if b.isFinished(): data += "

          Results:

          " - data += " ".join(b.getText()) + data += " ".join(b.getText()) + "\n" + if b.getTestResults(): + url = request.childLink("tests") + data += "

          test results

          \n" % url else: data += "

          Build In Progress

          " @@ -201,6 +263,9 @@ return data def getChild(self, path, request): + if path == "tests": + # TODO: this will collide with a step named 'tests' + return StatusResourceTestResults(self.build.getTestResults()) stepname = path steps = self.build.getSteps() for s in steps: From warner at users.sourceforge.net Tue Oct 19 18:41:42 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Tue, 19 Oct 2004 18:41:42 +0000 Subject: [Buildbot-commits] buildbot/buildbot/process step_twisted.py,1.60,1.61 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/process In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19896/buildbot/process Modified Files: step_twisted.py Log Message: (Trial.createSummary): bugfixes Index: step_twisted.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/process/step_twisted.py,v retrieving revision 1.60 retrieving revision 1.61 diff -u -d -r1.60 -r1.61 --- step_twisted.py 15 Oct 2004 18:44:19 -0000 1.60 +++ step_twisted.py 19 Oct 2004 18:41:40 -0000 1.61 @@ -2,7 +2,7 @@ from twisted.python import log, failure -from buildbot.status import tests +from buildbot.status import tests, builder from buildbot.status.builder import SUCCESS, FAILURE, WARNINGS, SKIPPED from buildbot.process import step from buildbot.process.step import BuildStep, ShellCommand @@ -464,15 +464,15 @@ self.text = text self.text2 = [text2] - def addTestResult(self, testname, results, text, logs): + def addTestResult(self, testname, results, text, tlog): if self.reactor is not None: testname = (self.reactor,) + testname - tr = TestResult(testname, results, text, logs={'log': log}) + tr = builder.TestResult(testname, results, text, logs={'log': tlog}) #self.step_status.build.addTestResult(tr) self.build.build_status.addTestResult(tr) - def createSummary(self, log): - output = log.getText() + def createSummary(self, loog): + output = loog.getText() problems = "" sio = StringIO.StringIO(output) warnings = {} @@ -502,6 +502,7 @@ self.addCompleteLog("problems", problems) # now parse the problems for per-test results pio = StringIO.StringIO(problems) + pio.readline() # eat the first separator line testname = None done = False while not done: @@ -533,14 +534,14 @@ 'SUCCESS': SUCCESS, # not reported }.get(result, WARNINGS) text = result.lower().split() - log = line + loog = line # the next line is all dashes - log += pio.readline() + loog += pio.readline() else: # the rest goes into the log - log += line + loog += line if testname: - self.addTestResult(testname, results, text, log) + self.addTestResult(testname, results, text, loog) testname = None if warnings: From warner at users.sourceforge.net Tue Oct 19 18:42:13 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Tue, 19 Oct 2004 18:42:13 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.296,1.297 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20049 Modified Files: ChangeLog Log Message: *** empty log message *** Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.296 retrieving revision 1.297 diff -u -d -r1.296 -r1.297 --- ChangeLog 15 Oct 2004 18:44:20 -0000 1.296 +++ ChangeLog 19 Oct 2004 18:42:11 -0000 1.297 @@ -1,3 +1,12 @@ +2004-10-19 Brian Warner + + * buildbot/process/step_twisted.py (Trial.createSummary): bugfixes + + * buildbot/status/html.py (StatusResourceTestResults): display any + TestResults that the Build might have + (StatusResourceTestResult): and the logs for each TestResult + (StatusResourceBuild): add link from the per-build page + 2004-10-15 Brian Warner * buildbot/process/step_twisted.py (Trial.createSummary): parse From warner at users.sourceforge.net Thu Oct 28 07:25:33 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Thu, 28 Oct 2004 07:25:33 +0000 Subject: [Buildbot-commits] buildbot/buildbot/process step.py,1.55,1.56 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/process In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25586/buildbot/process Modified Files: step.py Log Message: (LoggedRemoteCommand.__repr__): avoid a python-2.4 warning Index: step.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/process/step.py,v retrieving revision 1.55 retrieving revision 1.56 diff -u -d -r1.55 -r1.56 --- step.py 23 Sep 2004 20:46:50 -0000 1.55 +++ step.py 28 Oct 2004 07:25:30 -0000 1.56 @@ -171,7 +171,7 @@ rc = None def __repr__(self): - return "" % (self.remote_command, id(self)) + return "" % (self.remote_command, id(self)) def useLog(self, loog, closeWhenFinished=False): self.log = loog From warner at users.sourceforge.net Thu Oct 28 07:27:10 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Thu, 28 Oct 2004 07:27:10 +0000 Subject: [Buildbot-commits] buildbot/buildbot/test test_vc.py,1.17,1.18 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25978/buildbot/test Modified Files: test_vc.py Log Message: * buildbot/slave/commands.py (SourceBase): refactor subclasses to have separate doVCUpdate/doVCFull methods. Catch an update failure and respond by clobbering the source directory and re-trying. This will handle local changes (like replacing a file with a directory) that will cause CVS and SVN updates to fail. * buildbot/test/test_vc.py (SetupMixin.do_vc): test the same Index: test_vc.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_vc.py,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- test_vc.py 30 Sep 2004 07:13:32 -0000 1.17 +++ test_vc.py 28 Oct 2004 07:27:07 -0000 1.18 @@ -221,7 +221,7 @@ def shouldNotExist(self, d, f): self.failIf(os.path.exists(os.path.join(d, f))) - def do_vc(self, vctype, args, metadir=None): + def do_vc(self, vctype, args, metadir=None, testRetry=True): m = self.master vcdir = os.path.join(self.slavebase, "vc-dir", "source") workdir = os.path.join(self.slavebase, "vc-dir", "build") @@ -258,6 +258,18 @@ self.doBuild() # update rebuild leaves new files self.shouldExist(workdir, "newfile") + if testRetry: + # certain local changes will prevent an update from working. The + # most common is to replace a file with a directory, or vice + # versa. The slave code should spot the failure and do a + # clobber/retry. + os.unlink(os.path.join(workdir, "good.c")) + os.mkdir(os.path.join(workdir, "good.c")) + self.touch(os.path.join(workdir, "good.c"), "foo") + + self.doBuild() # update, but must clobber to handle the error + self.shouldNotExist(workdir, "newfile") + self.loadConfig(config % 'copy') self.doBuild() # copy rebuild clobbers new files if metadir: @@ -311,8 +323,13 @@ raise unittest.SkipTest("Darcs is not installed") self.do_vc("step.Darcs", { 'repourl': RepositoryPath_URI + "/Darcs-Repository", - }) - # Darcs has a metadir="_darcs", but it does not have an 'export' mode + }, + testRetry=False) + # Darcs has a metadir="_darcs", but it does not have an 'export' + # mode + + # TODO: testRetry has the same problem with Darcs as it does for + # Arch def testArch(self): if not have_arch: @@ -320,8 +337,16 @@ self.do_vc("step.Arch", { 'url': RepositoryPath + "/Arch-Repository", 'version': "testvc--mainline--1", - }) - # Arch has a metadir="{arch}", but it does not have an 'export' mode + }, + testRetry=False) + # Arch has a metadir="{arch}", but it does not have an 'export' mode. + + # the current testRetry=True logic doesn't have the desired effect: + # "update" is a no-op because arch knows that the repository hasn't + # changed. Other VC systems will re-checkout missing files on + # update, arch just leaves the tree untouched. TODO: come up with + # some better test logic, probably involving a copy of the + # repository that has a few changes checked in. # TODO: run 'tla register-archive -d test at buildbot.sf.net--testvc1' # to get rid of the leftover archive this leaves in the user's 'tla @@ -336,7 +361,7 @@ raise unittest.SkipTest("Darcs is not installed") self.do_vc("step.Darcs", { 'repourl': Repository_HTTP % self.httpPort + "/Darcs-Repository", - }) + }, testRetry=False) # Darcs has a metadir="_darcs", but it does not have an 'export' mode def testArchHTTP(self): @@ -345,7 +370,7 @@ self.do_vc("step.Arch", { 'url': Repository_HTTP % self.httpPort + "/Arch-Repository", 'version': "testvc--mainline--1", - }) + }, testRetry=False) class Patch(SignalMixin, SetupMixin, unittest.TestCase): From warner at users.sourceforge.net Thu Oct 28 07:27:10 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Thu, 28 Oct 2004 07:27:10 +0000 Subject: [Buildbot-commits] buildbot/buildbot/slave commands.py,1.15,1.16 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/slave In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25978/buildbot/slave Modified Files: commands.py Log Message: * buildbot/slave/commands.py (SourceBase): refactor subclasses to have separate doVCUpdate/doVCFull methods. Catch an update failure and respond by clobbering the source directory and re-trying. This will handle local changes (like replacing a file with a directory) that will cause CVS and SVN updates to fail. * buildbot/test/test_vc.py (SetupMixin.do_vc): test the same Index: commands.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/slave/commands.py,v retrieving revision 1.15 retrieving revision 1.16 diff -u -d -r1.15 -r1.16 --- commands.py 14 Oct 2004 16:59:26 -0000 1.15 +++ commands.py 28 Oct 2004 07:27:08 -0000 1.16 @@ -316,9 +316,13 @@ self.deferred.errback(failure.Failure(CommandInterrupted())) def _abandonOnFailure(self, rc): + if type(rc) is not int: + log.msg("weird, _abandonOnFailure was given rc=%s (%s)" % \ + (rc, type(rc))) assert type(rc) is int if rc != 0: raise AbandonChain(rc) + return rc def _sendRC(self, res): self.sendStatus({'rc': 0}) @@ -454,6 +458,7 @@ d.addCallback(self.doClobber, self.srcdir) d.addCallback(self.doVC) + if self.mode == "copy": d.addCallback(self.doCopy) if self.patch: @@ -462,12 +467,36 @@ return d def doVC(self, res): - c = self.buildVC() - d = c.start() + if self.sourcedirIsUpdateable(): + d = self.doVCUpdate() + d.addCallback(self.maybeDoVCFallback) + else: + d = self.doVCFull() + d.addCallback(self._abandonOnFailure) + return d + + def doVCUpdate(self): + raise NotImplementedError("this must be implemented in a subclass") + + def doVCFull(self): + raise NotImplementedError("this must be implemented in a subclass") + + def maybeDoVCFallback(self, rc): + if type(rc) is int and rc == 0: + return rc + msg = "update failed, clobbering and trying again" + self.sendStatus({'header': msg + "\n"}) + log.msg(msg) + d = self.doClobber(None, self.srcdir) + d.addCallback(self.doVCFallback2) + return d + + def doVCFallback2(self, res): + msg = "now retrying VC operation" + self.sendStatus({'header': msg + "\n"}) + log.msg(msg) + d = self.doVCFull() d.addCallback(self._abandonOnFailure) - # TODO: if update fails (rc != 0), do clobber and full checkout. This - # probably wants doCVS to be split into doUpdate and doCheckout, to - # avoid loops return d def doClobber(self, dummy, dirname): @@ -581,33 +610,34 @@ # now we really start return SourceBase.start(self) - def buildVC(self): - if self.sourcedirIsUpdateable(): - # update - d = os.path.join(self.builder.basedir, self.srcdir) - command = ['cvs', '-z3'] + self.global_options + ['update', '-dP'] - if self.branch: - command += ['-r', self.branch] - if self.revision: - command += ['-D', self.revision] + def doVCUpdate(self): + d = os.path.join(self.builder.basedir, self.srcdir) + command = ['cvs', '-z3'] + self.global_options + ['update', '-dP'] + if self.branch: + command += ['-r', self.branch] + if self.revision: + command += ['-D', self.revision] + c = ShellCommand(self.builder, command, d, + sendRC=False, timeout=self.timeout) + return c.start() + + def doVCFull(self): + d = self.builder.basedir + if self.mode == "export": + verb = "export" else: - # checkout - d = self.builder.basedir - if self.mode == "export": - verb = "export" - else: - verb = "checkout" - command = (['cvs', '-d', self.cvsroot, '-z3'] + - self.global_options + - [verb, '-d', self.srcdir]) - if self.branch: - command += ['-r', self.branch] - if self.revision: - command += ['-D', self.revision] - command += [self.cvsmodule] + verb = "checkout" + command = (['cvs', '-d', self.cvsroot, '-z3'] + + self.global_options + + [verb, '-d', self.srcdir]) + if self.branch: + command += ['-r', self.branch] + if self.revision: + command += ['-D', self.revision] + command += [self.cvsmodule] c = ShellCommand(self.builder, command, d, sendRC=False, timeout=self.timeout) - return c + return c.start() registerSlaveCommand("cvs", CVS, cvs_ver) @@ -630,25 +660,28 @@ return os.path.isdir(os.path.join(self.builder.basedir, self.srcdir, ".svn")) - def buildVC(self): + def doVCUpdate(self): revision = self.args['revision'] or 'HEAD' - if self.sourcedirIsUpdateable(): - # update: possible for mode in ('copy', 'update') - d = os.path.join(self.builder.basedir, self.srcdir) - command = ['svn', 'update', '--revision', str(revision)] + # update: possible for mode in ('copy', 'update') + d = os.path.join(self.builder.basedir, self.srcdir) + command = ['svn', 'update', '--revision', str(revision)] + c = ShellCommand(self.builder, command, d, + sendRC=False, timeout=self.timeout) + return c.start() + + def doVCFull(self): + revision = self.args['revision'] or 'HEAD' + d = self.builder.basedir + if self.mode == "export": + command = ['svn', 'export', '--revision', str(revision), + self.svnurl, self.srcdir] else: - # checkout or export - d = self.builder.basedir - if self.mode == "export": - command = ['svn', 'export', '--revision', str(revision), - self.svnurl, self.srcdir] - else: - # mode=='clobber', or copy/update on a broken workspace - command = ['svn', 'checkout', '--revision', str(revision), - self.svnurl, self.srcdir] + # mode=='clobber', or copy/update on a broken workspace + command = ['svn', 'checkout', '--revision', str(revision), + self.svnurl, self.srcdir] c = ShellCommand(self.builder, command, d, sendRC=False, timeout=self.timeout) - return c + return c.start() registerSlaveCommand("svn", SVN, cvs_ver) @@ -671,21 +704,25 @@ return os.path.isdir(os.path.join(self.builder.basedir, self.srcdir, "_darcs")) - def buildVC(self): + def doVCUpdate(self): # TODO: revision - if self.sourcedirIsUpdateable(): - # update: possible for mode in ('copy', 'update') - d = os.path.join(self.builder.basedir, self.srcdir) - command = ['darcs', 'pull', '--all', '--verbose'] - else: - # checkout or export - d = self.builder.basedir - command = ['darcs', 'get', '--verbose', '--partial', - '--repo-name', self.srcdir, - self.repourl] + # update: possible for mode in ('copy', 'update') + d = os.path.join(self.builder.basedir, self.srcdir) + command = ['darcs', 'pull', '--all', '--verbose'] c = ShellCommand(self.builder, command, d, sendRC=False, timeout=self.timeout) - return c + return c.start() + + def doVCFull(self): + # TODO: revision + # checkout or export + d = self.builder.basedir + command = ['darcs', 'get', '--verbose', '--partial', + '--repo-name', self.srcdir, + self.repourl] + c = ShellCommand(self.builder, command, d, + sendRC=False, timeout=self.timeout) + return c.start() registerSlaveCommand("darcs", Darcs, cvs_ver) @@ -714,17 +751,15 @@ return os.path.isdir(os.path.join(self.builder.basedir, self.srcdir, "{arch}")) - def doVC(self, res): - if self.sourcedirIsUpdateable(): - # update: possible for mode in ('copy', 'update') - d = os.path.join(self.builder.basedir, self.srcdir) - command = ['tla', 'update'] - c = ShellCommand(self.builder, command, d, - sendRC=False, timeout=self.timeout) - d = c.start() - d.addCallback(self._abandonOnFailure) - return d + def doVCUpdate(self): + # update: possible for mode in ('copy', 'update') + d = os.path.join(self.builder.basedir, self.srcdir) + command = ['tla', 'update'] + c = ShellCommand(self.builder, command, d, + sendRC=False, timeout=self.timeout) + return c.start() + def doVCFull(self): # to do a checkout, we first must register the archive. This # involves passing the URL to arch and letting it tell us the # archive name. @@ -774,8 +809,8 @@ sendRC=False, timeout=self.timeout) d = c.start() d.addCallback(self._abandonOnFailure) + return d - registerSlaveCommand("arch", Arch, cvs_ver) @@ -795,13 +830,16 @@ def sourcedirIsUpdateable(self): return True - def buildVC(self): + def doVCUpdate(self): # TODO: revision d = os.path.join(self.builder.basedir, self.srcdir) command = ['p4', 'sync'] env = {'P4PORT': self.p4port} c = ShellCommand(self.builder, command, d, environ=env, sendRC=False, timeout=self.timeout) - return c + return c.start() + + def doVCFull(self): + return self.doVCUpdate() registerSlaveCommand("p4sync", P4Sync, cvs_ver) From warner at users.sourceforge.net Thu Oct 28 07:27:22 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Thu, 28 Oct 2004 07:27:22 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.297,1.298 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26055 Modified Files: ChangeLog Log Message: *** empty log message *** Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.297 retrieving revision 1.298 diff -u -d -r1.297 -r1.298 --- ChangeLog 19 Oct 2004 18:42:11 -0000 1.297 +++ ChangeLog 28 Oct 2004 07:27:19 -0000 1.298 @@ -1,3 +1,15 @@ +2004-10-28 Brian Warner + + * buildbot/slave/commands.py (SourceBase): refactor subclasses to + have separate doVCUpdate/doVCFull methods. Catch an update failure + and respond by clobbering the source directory and re-trying. This + will handle local changes (like replacing a file with a directory) + that will cause CVS and SVN updates to fail. + * buildbot/test/test_vc.py (SetupMixin.do_vc): test the same + + * buildbot/process/step.py (LoggedRemoteCommand.__repr__): avoid a + python-2.4 warning + 2004-10-19 Brian Warner * buildbot/process/step_twisted.py (Trial.createSummary): bugfixes From warner at users.sourceforge.net Fri Oct 29 18:03:44 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 29 Oct 2004 18:03:44 +0000 Subject: [Buildbot-commits] buildbot/buildbot/status mail.py,1.10,1.11 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/status In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9191/buildbot/status Modified Files: mail.py Log Message: (MailNotifier): fix typo in docs Index: mail.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/status/mail.py,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- mail.py 1 Oct 2004 01:38:07 -0000 1.10 +++ mail.py 29 Oct 2004 18:03:41 -0000 1.11 @@ -71,8 +71,8 @@ 'problem': only send mail about a build which failed when the previous build passed - builds: a list of builder names for which mail should be sent. Defaults - to all builds. + builders: a list of builder names for which mail should be sent. + Defaults to all builds. addLogs: if True, include all build logs as attachments to the messages. These can be quite large. This can also be set to a list of log From warner at users.sourceforge.net Fri Oct 29 18:03:44 2004 From: warner at users.sourceforge.net (Brian Warner) Date: Fri, 29 Oct 2004 18:03:44 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.298,1.299 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9191 Modified Files: ChangeLog Log Message: (MailNotifier): fix typo in docs Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.298 retrieving revision 1.299 diff -u -d -r1.298 -r1.299 --- ChangeLog 28 Oct 2004 07:27:19 -0000 1.298 +++ ChangeLog 29 Oct 2004 18:03:42 -0000 1.299 @@ -1,3 +1,7 @@ +2004-10-29 Brian Warner + + * buildbot/status/mail.py (MailNotifier): fix typo in docs + 2004-10-28 Brian Warner * buildbot/slave/commands.py (SourceBase): refactor subclasses to