コード例 #1
0
    def testMultiple(self):
        self.setupStep(
            transfer.MultipleFileUpload(workersrcs=["srcfile", "srcdir"], masterdest=self.destdir))

        self.expectCommands(
            Expect('stat', dict(file="srcfile",
                                workdir='wkdir'))
            + Expect.update('stat', [stat.S_IFREG, 99, 99])
            + 0,
            Expect('uploadFile', dict(
                slavesrc="srcfile", workdir='wkdir',
                blocksize=16384, maxsize=None, keepstamp=False,
                writer=ExpectRemoteRef(remotetransfer.FileWriter)))
            + Expect.behavior(uploadString("Hello world!"))
            + 0,
            Expect('stat', dict(file="srcdir",
                                workdir='wkdir'))
            + Expect.update('stat', [stat.S_IFDIR, 99, 99])
            + 0,
            Expect('uploadDirectory', dict(
                slavesrc="srcdir", workdir='wkdir',
                blocksize=16384, compress=None, maxsize=None,
                writer=ExpectRemoteRef(remotetransfer.DirectoryWriter)))
            + Expect.behavior(uploadTarFile('fake.tar', test="Hello world!"))
            + 0)

        self.expectOutcome(
            result=SUCCESS, state_string="uploading 2 files")
        d = self.runStep()
        return d
コード例 #2
0
    def testSubclass(self):
        class CustomStep(transfer.MultipleFileUpload):
            uploadDone = Mock(return_value=None)
            allUploadsDone = Mock(return_value=None)

        step = CustomStep(workersrcs=["srcfile", "srcdir"], masterdest=self.destdir)
        self.setupStep(step)

        self.expectCommands(
            Expect("stat", dict(file="srcfile", workdir="wkdir")) + Expect.update("stat", [stat.S_IFREG, 99, 99]) + 0,
            Expect(
                "uploadFile",
                dict(
                    slavesrc="srcfile",
                    workdir="wkdir",
                    blocksize=16384,
                    maxsize=None,
                    keepstamp=False,
                    writer=ExpectRemoteRef(remotetransfer.FileWriter),
                ),
            )
            + Expect.behavior(uploadString("Hello world!"))
            + 0,
            Expect("stat", dict(file="srcdir", workdir="wkdir")) + Expect.update("stat", [stat.S_IFDIR, 99, 99]) + 0,
            Expect(
                "uploadDirectory",
                dict(
                    slavesrc="srcdir",
                    workdir="wkdir",
                    blocksize=16384,
                    compress=None,
                    maxsize=None,
                    writer=ExpectRemoteRef(remotetransfer.DirectoryWriter),
                ),
            )
            + Expect.behavior(uploadTarFile("fake.tar", test="Hello world!"))
            + 0,
        )

        self.expectOutcome(result=SUCCESS, state_string="uploading 2 files")

        d = self.runStep()

        @d.addCallback
        def checkCalls(res):
            self.assertEquals(step.uploadDone.call_count, 2)
            self.assertEquals(
                step.uploadDone.call_args_list[0], ((SUCCESS, "srcfile", os.path.join(self.destdir, "srcfile")), {})
            )
            self.assertEquals(
                step.uploadDone.call_args_list[1], ((SUCCESS, "srcdir", os.path.join(self.destdir, "srcdir")), {})
            )
            self.assertEquals(step.allUploadsDone.call_count, 1)
            self.assertEquals(
                step.allUploadsDone.call_args_list[0], ((SUCCESS, ["srcfile", "srcdir"], self.destdir), {})
            )
            return res

        return d
コード例 #3
0
 def test_checkout_bzrsvn_failCleanTree(self):
     self.setupStep(BzrSvn(baseURL="/some/bzr/repo/", branch='trunk', forceSharedRepo=True))
     self.expectCommands(
             ExpectShell(workdir='wkdir', command=['bzr', 'plugins'])
             + ExpectShell.log('stdio', stdout="launchpad 1234\nsvn 2345")
             + 0,
             Expect('bzr', dict(workdir='wkdir',
                                repourl="/some/bzr/repo/trunk",
                                logEnviron=True,
                                patch=None,
                                env=None,
                                forceSharedRepo=True,
                                mode='update',
                                timeout=20*60,
                                retry=None))
             + Expect.update('got_revision', 1234)
             + 0,
             ExpectShell(workdir='wkdir',
                         command=['bzr', 'revert', '--no-backup'])
             + 0,
             ExpectShell(workdir='wkdir',
                         command=["bzr", "clean-tree", "--force", "--ignored", "--detritus"])
             + 1,
         )
     self.expectOutcome(result=FAILURE, status_text=['update', 'failed'])
     return self.runStep()
コード例 #4
0
    def testException(self):
        self.setupStep(
            transfer.MultipleFileUpload(workersrcs=["srcfile", "srcdir"], masterdest=self.destdir))

        behavior = UploadError(uploadString("Hello world!"))

        self.expectCommands(
            Expect('stat', dict(file="srcfile",
                                workdir='wkdir'))
            + Expect.update('stat', [stat.S_IFREG, 99, 99])
            + 0,
            Expect('uploadFile', dict(
                slavesrc="srcfile", workdir='wkdir',
                blocksize=16384, maxsize=None, keepstamp=False,
                writer=ExpectRemoteRef(remotetransfer.FileWriter)))
            + Expect.behavior(behavior))

        self.expectOutcome(
            result=EXCEPTION, state_string="uploading 2 files (exception)")
        d = self.runStep()

        @d.addCallback
        def check(_):
            self.assertEqual(behavior.writer.cancel.called, True)
            self.assertEqual(
                len(self.flushLoggedErrors(RuntimeError)), 1)

        return d
コード例 #5
0
 def test_buildonly_and_property(self):
     self.setupStep(pbuilder.DebPbuilder())
     self.expectCommands(
         Expect("stat", {"file": "/var/cache/pbuilder/stable-local-buildbot.tgz"})
         + Expect.update("stat", [stat.S_IFREG, 99, 99, 1, 0, 0, 99, 0, int(time.time()), 0])
         + 0,
         ExpectShell(
             workdir="wkdir",
             usePTY="worker-config",
             command=[
                 "pdebuild",
                 "--buildresult",
                 ".",
                 "--pbuilder",
                 "/usr/sbin/pbuilder",
                 "--",
                 "--buildresult",
                 ".",
                 "--basetgz",
                 "/var/cache/pbuilder/stable-local-buildbot.tgz",
             ],
         )
         + ExpectShell.log("stdio", stdout="blah\ndpkg-genchanges  >../somefilename.changes\foo\n")
         + 0,
     )
     self.expectOutcome(result=SUCCESS)
     self.expectProperty("deb-changes", "somefilename.changes", "DebPbuilder")
     return self.runStep()
コード例 #6
0
 def test_buildonly(self):
     self.setupStep(pbuilder.DebCowbuilder())
     self.expectCommands(
         Expect("stat", {"file": "/var/cache/pbuilder/stable-local-buildbot.cow/"})
         + Expect.update("stat", [stat.S_IFDIR, 99, 99, 1, 0, 0, 99, 0, int(time.time()), 0])
         + 0,
         ExpectShell(
             workdir="wkdir",
             usePTY="worker-config",
             command=[
                 "pdebuild",
                 "--buildresult",
                 ".",
                 "--pbuilder",
                 "/usr/sbin/cowbuilder",
                 "--",
                 "--buildresult",
                 ".",
                 "--basepath",
                 "/var/cache/pbuilder/stable-local-buildbot.cow/",
             ],
         )
         + 0,
     )
     self.expectOutcome(result=SUCCESS)
     return self.runStep()
コード例 #7
0
 def test_checkout_no_bzrsvn_revsion(self):
     self.setupStep(BzrSvn(baseURL="/some/bzr/repo/", branch='trunk', forceSharedRepo=True),
             dict(revision=9999))
     self.expectCommands(
             ExpectShell(workdir='wkdir',
                        command=['bzr', 'plugins'])
             + ExpectShell.log('stdio', stdout="something not containg ^svn")
             + 0,
             Expect('bzr', dict(workdir='wkdir',
                                repourl="/some/bzr/repo/trunk",
                                logEnviron=True,
                                patch=None,
                                env=None,
                                forceSharedRepo=True,
                                mode='update',
                                timeout=20*60,
                                retry=None))
             + Expect.update('got_revision', 1234)
             + 0,
             ExpectShell(workdir='wkdir',
                         command=['bzr', 'revert', '--no-backup'])
             + 0,
             ExpectShell(workdir='wkdir',
                         command=["bzr", "clean-tree", "--force", "--ignored", "--detritus"])
             + 0
     )
     self.expectOutcome(result=SUCCESS, status_text=['update'])
     self.expectProperty('got_revision', '1234')
     return self.runStep()
コード例 #8
0
 def test_buildonly_reg(self):
     self.setupStep(pbuilder.DebCowbuilder(basetgz="/var/cache/pbuilder/stable-local-buildbot.cow"))
     self.expectCommands(
         Expect("stat", {"file": "/var/cache/pbuilder/stable-local-buildbot.cow"})
         + Expect.update("stat", [stat.S_IFREG, 99, 99, 1, 0, 0, 99, 0, int(time.time()), 0])
         + 0,
         ExpectShell(
             workdir="wkdir",
             usePTY="slave-config",
             command=[
                 "pdebuild",
                 "--buildresult",
                 ".",
                 "--pbuilder",
                 "/usr/sbin/cowbuilder",
                 "--",
                 "--buildresult",
                 ".",
                 "--basepath",
                 "/var/cache/pbuilder/stable-local-buildbot.cow",
             ],
         )
         + 1,
     )
     self.expectOutcome(result=FAILURE, status_text=["pdebuild", "failed"])
     return self.runStep()
コード例 #9
0
ファイル: test_steps_worker.py プロジェクト: kenygia/buildbot
 def test_found(self):
     self.setupStep(worker.FileExists(file="x"))
     self.expectCommands(
         Expect('stat', {'file': 'x'})
         + Expect.update('stat', [stat.S_IFREG, 99, 99])
         + 0
     )
     self.expectOutcome(result=SUCCESS, state_string="File found.")
     return self.runStep()
コード例 #10
0
 def test_glob_empty(self):
     self.step.testMethod = lambda: self.step.glob("*.pyc")
     self.expectCommands(
         Expect('glob', {'glob': '*.pyc', 'logEnviron': False})
         + Expect.update('files', [])
         + 0
     )
     self.expectOutcome(result=SUCCESS)
     return self.runStep()
コード例 #11
0
ファイル: test_steps_worker.py プロジェクト: kenygia/buildbot
 def test_not_found(self):
     self.setupStep(worker.FileExists(file="x"))
     self.expectCommands(
         Expect('stat', {'file': 'x'})
         + Expect.update('stat', [0, 99, 99])
         + 0
     )
     self.expectOutcome(result=FAILURE,
                        state_string="Not a file. (failure)")
     return self.runStep()
コード例 #12
0
 def test_not_found(self):
     self.setupStep(slave.FileExists(file="x"))
     self.expectCommands(
         Expect('stat', { 'file' : 'x' })
         + Expect.update('stat', [0, 99, 99])
         + 0
     )
     self.expectOutcome(result=FAILURE,
             status_text=["Not a file."])
     return self.runStep()
コード例 #13
0
    def test_glob(self):
        @defer.inlineCallbacks
        def testFunc(x):
            res = yield x.runGlob("*.pyc")
            self.assertEqual(res, ["one.pyc", "two.pyc"])

        self.setupStep(CompositeUser(testFunc))
        self.expectCommands(
            Expect("glob", {"glob": "*.pyc", "logEnviron": False}) + Expect.update("files", ["one.pyc", "two.pyc"]) + 0
        )
        self.expectOutcome(result=SUCCESS)
        return self.runStep()
コード例 #14
0
 def testFailedGlob(self):
     self.setupStep(
         transfer.MultipleFileUpload(
             workersrcs=["src*"], masterdest=self.destdir, glob=True))
     self.expectCommands(
         Expect('glob', {'path': os.path.join('wkdir', 'src*'), 'logEnviron': False})
         + Expect.update('files', [])
         + 1,
     )
     self.expectOutcome(result=SKIPPED, state_string="uploading 0 files (skipped)")
     d = self.runStep()
     return d
コード例 #15
0
 def test_update_reg(self):
     self.setupStep(pbuilder.DebCowbuilder(basetgz='/var/cache/pbuilder/stable-local-buildbot.cow'))
     self.expectCommands(
         Expect('stat', {'file': '/var/cache/pbuilder/stable-local-buildbot.cow'})
         + Expect.update('stat', [stat.S_IFREG, 99, 99, 1, 0, 0, 99, 0, 0, 0])
         + 0,
         ExpectShell(workdir='wkdir', usePTY='slave-config',
                     command=['sudo', '/usr/sbin/cowbuilder', '--update',
                              '--basepath', '/var/cache/pbuilder/stable-local-buildbot.cow'])
         + 1)
     self.expectOutcome(result=FAILURE, state_string='built (failure)')
     return self.runStep()
コード例 #16
0
    def test_glob(self):
        @defer.inlineCallbacks
        def testFunc():
            res = yield self.step.glob("*.pyc")
            self.assertEqual(res, ["one.pyc", "two.pyc"])

        self.step.testMethod = testFunc
        self.expectCommands(
            Expect("glob", {"glob": "*.pyc", "logEnviron": False}) + Expect.update("files", ["one.pyc", "two.pyc"]) + 0
        )
        self.expectOutcome(result=SUCCESS)
        return self.runStep()
コード例 #17
0
 def test_glob(self):
     @defer.inlineCallbacks
     def testFunc():
         res = yield self.step.runGlob("*.pyc")
         self.assertEqual(res, ["one.pyc", "two.pyc"])
     self.step.testMethod = testFunc
     self.expectCommands(
         Expect('glob', {'path': '*.pyc', 'logEnviron': False})
         + Expect.update('files', ["one.pyc", "two.pyc"])
         + 0
     )
     self.expectOutcome(result=SUCCESS)
     return self.runStep()
コード例 #18
0
 def test_buildonly_reg(self):
     self.setupStep(pbuilder.DebCowbuilder(basetgz='/var/cache/pbuilder/stable-local-buildbot.cow'))
     self.expectCommands(
         Expect('stat', {'file': '/var/cache/pbuilder/stable-local-buildbot.cow'})
         + Expect.update('stat', [stat.S_IFREG, 99, 99, 1, 0, 0, 99, 0, int(time.time()), 0])
         + 0,
         ExpectShell(workdir='wkdir', usePTY='slave-config',
                     command=['pdebuild', '--buildresult', '.',
                              '--pbuilder', '/usr/sbin/cowbuilder', '--', '--buildresult', '.',
                              '--basepath', '/var/cache/pbuilder/stable-local-buildbot.cow'])
         + 1)
     self.expectOutcome(result=FAILURE, status_text=['pdebuild', 'failed'])
     return self.runStep()
コード例 #19
0
 def test_buildonly(self):
     self.setupStep(pbuilder.DebCowbuilder())
     self.expectCommands(
         Expect('stat', {'file': '/var/cache/pbuilder/stable-local-buildbot.cow/'})
         + Expect.update('stat', [stat.S_IFDIR, 99, 99, 1, 0, 0, 99, 0, int(time.time()), 0])
         + 0,
         ExpectShell(workdir='wkdir', usePTY='slave-config',
                     command=['pdebuild', '--buildresult', '.',
                              '--pbuilder', '/usr/sbin/cowbuilder', '--', '--buildresult', '.',
                              '--basepath', '/var/cache/pbuilder/stable-local-buildbot.cow/'])
         + 0)
     self.expectOutcome(result=SUCCESS)
     return self.runStep()
コード例 #20
0
 def testGlob(self):
     self.setupStep(
         transfer.MultipleFileUpload(
             workersrcs=["src*"], masterdest=self.destdir, glob=True))
     self.expectCommands(
         Expect('glob', dict(path=os.path.join('wkdir', 'src*'), logEnviron=False))
         + Expect.update('files', ["srcfile"])
         + 0,
         Expect('stat', dict(file="srcfile",
                             workdir='wkdir'))
         + Expect.update('stat', [stat.S_IFREG, 99, 99])
         + 0,
         Expect('uploadFile', dict(
             workersrc="srcfile", workdir='wkdir',
             blocksize=16384, maxsize=None, keepstamp=False,
             writer=ExpectRemoteRef(remotetransfer.FileWriter)))
         + Expect.behavior(uploadString("Hello world!"))
         + 0,
     )
     self.expectOutcome(
         result=SUCCESS, state_string="uploading 1 file")
     d = self.runStep()
     return d
コード例 #21
0
    def test_glob(self):
        @defer.inlineCallbacks
        def testFunc(x):
            res = yield x.runGlob("*.pyc")
            self.assertEqual(res, ["one.pyc", "two.pyc"])

        self.setupStep(CompositeUser(testFunc))
        self.expectCommands(
            Expect('glob', {'glob': '*.pyc', 'logEnviron': False})
            + Expect.update('files', ["one.pyc", "two.pyc"])
            + 0
        )
        self.expectOutcome(result=SUCCESS,
                           status_text=["generic"])
        return self.runStep()
コード例 #22
0
 def test_update(self):
     self.setupStep(pbuilder.DebPbuilder())
     self.expectCommands(
         Expect('stat', {'file': '/var/cache/pbuilder/stable-local-buildbot.tgz'})
         + Expect.update('stat', [stat.S_IFREG, 99, 99, 1, 0, 0, 99, 0, 0, 0])
         + 0,
         ExpectShell(workdir='wkdir', usePTY='slave-config',
                     command=['sudo', '/usr/sbin/pbuilder', '--update',
                              '--basetgz', '/var/cache/pbuilder/stable-local-buildbot.tgz', ])
         + 0,
         ExpectShell(workdir='wkdir', usePTY='slave-config',
                     command=['pdebuild', '--buildresult', '.',
                              '--pbuilder', '/usr/sbin/pbuilder', '--', '--buildresult', '.',
                              '--basetgz', '/var/cache/pbuilder/stable-local-buildbot.tgz'])
         + 0)
     self.expectOutcome(result=SUCCESS)
     return self.runStep()
コード例 #23
0
    def test_mode_full_clean_force_build(self):
        self.setupStep(
            gerrit.Gerrit(repourl='http://github.com/buildbot/buildbot.git',
                          mode='full', method='clean'))
        self.build.setProperty("event.change.project", "buildbot")
        self.sourcestamp.project = 'buildbot'
        self.build.setProperty("gerrit_change", "1234/567")

        self.expectCommands(
            ExpectShell(workdir='wkdir',
                        command=['git', '--version'])
            + ExpectShell.log('stdio',
                              stdout='git version 1.7.5')
            + 0,
            Expect('stat', dict(file='wkdir/.buildbot-patched',
                                logEnviron=True))
            + 1,
            Expect('listdir', {'dir': 'wkdir', 'logEnviron': True,
                               'timeout': 1200})
            + Expect.update('files', ['.git'])
            + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'clean', '-f', '-f', '-d'])
            + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'fetch', '-t',
                                 'http://github.com/buildbot/buildbot.git',
                                 'refs/changes/34/1234/567'])
            + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'reset', '--hard', 'FETCH_HEAD', '--'])
            + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'checkout', '-B', 'refs/changes/34/1234/567'])
            + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'rev-parse', 'HEAD'])
            + ExpectShell.log('stdio',
                              stdout='f6ad368298bd941e934a41f3babc827b2aa95a1d')
            + 0,
        )
        self.expectOutcome(result=SUCCESS)
        self.expectProperty(
            'got_revision', 'f6ad368298bd941e934a41f3babc827b2aa95a1d', 'Gerrit')
        return self.runStep()
コード例 #24
0
    def testFailure(self):
        self.setupStep(
            transfer.MultipleFileUpload(slavesrcs=["srcfile", "srcdir"], masterdest=self.destdir))

        self.expectCommands(
            Expect('stat', dict(file="srcfile",
                                workdir='wkdir'))
            + Expect.update('stat', [stat.S_IFREG, 99, 99])
            + 0,
            Expect('uploadFile', dict(
                slavesrc="srcfile", workdir='wkdir',
                blocksize=16384, maxsize=None, keepstamp=False,
                writer=ExpectRemoteRef(transfer._FileWriter)))
            + 1)

        self.expectOutcome(result=FAILURE, status_text=["uploading", "2 files"])
        d = self.runStep()
        return d
コード例 #25
0
    def test_with_merge_branch(self):
        self.setupStep(
            self.stepClass(repourl='http://github.com/buildbot/buildbot.git',
                           mode='full', method='clean'),
            dict(branch='refs/pull/1234/merge', revision='12345678'))

        self.expectCommands(
            ExpectShell(workdir='wkdir',
                        command=['git', '--version'])
            + ExpectShell.log('stdio',
                              stdout='git version 1.7.5')
            + 0,
            Expect('stat', dict(file='wkdir/.buildbot-patched',
                                logEnviron=True))
            + 1,
            Expect('listdir', {'dir': 'wkdir', 'logEnviron': True,
                               'timeout': 1200})
            + Expect.update('files', ['.git'])
            + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'clean', '-f', '-f', '-d'])
            + 0,
            # here we always ignore revision, and fetch the merge branch
            ExpectShell(workdir='wkdir',
                        command=['git', 'fetch', '-t',
                                 'http://github.com/buildbot/buildbot.git',
                                 'refs/pull/1234/merge'])
            + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'reset', '--hard', 'FETCH_HEAD', '--'])
            + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'branch', '-M', 'refs/pull/1234/merge'])
            + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'rev-parse', 'HEAD'])
            + ExpectShell.log('stdio',
                              stdout='f6ad368298bd941e934a41f3babc827b2aa95a1d')
            + 0,
        )
        self.expectOutcome(result=SUCCESS)
        self.expectProperty(
            'got_revision', 'f6ad368298bd941e934a41f3babc827b2aa95a1d', 'GitHub')
        return self.runStep()
コード例 #26
0
 def test_buildonly_and_property(self):
     self.setupStep(pbuilder.DebPbuilder())
     self.expectCommands(
         Expect('stat', {'file': '/var/cache/pbuilder/stable-local-buildbot.tgz'})
         + Expect.update('stat', [stat.S_IFREG, 99, 99, 1, 0, 0, 99, 0, int(time.time()), 0])
         + 0,
         ExpectShell(workdir='wkdir', usePTY='slave-config',
                     command=['pdebuild', '--buildresult', '.',
                              '--pbuilder', '/usr/sbin/pbuilder', '--', '--buildresult', '.',
                              '--basetgz', '/var/cache/pbuilder/stable-local-buildbot.tgz'])
         + ExpectShell.log(
             'stdio',
             stdout='blah\ndpkg-genchanges  >../somefilename.changes\foo\n')
         + 0)
     self.expectOutcome(result=SUCCESS)
     self.expectProperty('deb-changes',
                         'somefilename.changes',
                         'DebPbuilder')
     return self.runStep()
コード例 #27
0
    def test_mode_full_clean(self):
        self.setupStep(
            gerrit.Gerrit(repourl='http://github.com/buildbot/buildbot.git',
                          mode='full',
                          method='clean'))
        self.build.setProperty("event.change.project", "buildbot")
        self.sourcestamp.project = 'buildbot'
        self.build.setProperty("event.patchSet.ref", "gerrit_branch")

        self.expectCommands(
            ExpectShell(workdir='wkdir', command=['git', '--version']) +
            ExpectShell.log('stdio', stdout='git version 1.7.5') + 0,
            Expect('stat', dict(file='wkdir/.buildbot-patched',
                                logEnviron=True)) + 1,
            Expect('listdir', {
                'dir': 'wkdir',
                'logEnviron': True,
                'timeout': 1200
            }) + Expect.update('files', ['.git']) + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'clean', '-f', '-f', '-d']) + 0,
            ExpectShell(
                workdir='wkdir',
                command=[
                    'git', 'fetch', '-t',
                    'http://github.com/buildbot/buildbot.git', 'gerrit_branch'
                ]) + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'reset', '--hard', 'FETCH_HEAD', '--'
                                 ]) + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'checkout', '-B', 'gerrit_branch']) +
            0,
            ExpectShell(workdir='wkdir', command=['git', 'rev-parse', 'HEAD'])
            + ExpectShell.log(
                'stdio', stdout='f6ad368298bd941e934a41f3babc827b2aa95a1d') +
            0,
        )
        self.expectOutcome(result=SUCCESS)
        self.expectProperty('got_revision',
                            'f6ad368298bd941e934a41f3babc827b2aa95a1d',
                            'Gerrit')
        return self.runStep()
コード例 #28
0
    def test_with_head_branch(self):
        self.setupStep(
            self.stepClass(repourl='http://github.com/buildbot/buildbot.git',
                           mode='full', method='clean'),
            dict(branch='refs/pull/1234/head', revision='12345678'))

        self.expectCommands(
            ExpectShell(workdir='wkdir',
                        command=['git', '--version'])
            + ExpectShell.log('stdio',
                              stdout='git version 1.7.5')
            + 0,
            Expect('stat', dict(file='wkdir/.buildbot-patched',
                                logEnviron=True))
            + 1,
            Expect('listdir', {'dir': 'wkdir', 'logEnviron': True,
                               'timeout': 1200})
            + Expect.update('files', ['.git'])
            + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'clean', '-f', '-f', '-d'])
            + 0,
            # in the case of the head, we try to find if the head is already present
            # and reset to that without fetching
            ExpectShell(workdir='wkdir',
                        command=['git', 'cat-file', '-e', '12345678'])
            + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'reset', '--hard', '12345678', '--'])
            + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'branch', '-M', 'refs/pull/1234/head'])
            + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'rev-parse', 'HEAD'])
            + ExpectShell.log('stdio',
                              stdout='f6ad368298bd941e934a41f3babc827b2aa95a1d')
            + 0,
        )
        self.expectOutcome(result=SUCCESS)
        self.expectProperty(
            'got_revision', 'f6ad368298bd941e934a41f3babc827b2aa95a1d', 'GitHub')
        return self.runStep()
コード例 #29
0
    def testDirectory(self):
        self.setupStep(
            transfer.MultipleFileUpload(workersrcs=["srcdir"], masterdest=self.destdir))

        self.expectCommands(
            Expect('stat', dict(file="srcdir",
                                workdir='wkdir'))
            + Expect.update('stat', [stat.S_IFDIR, 99, 99])
            + 0,
            Expect('uploadDirectory', dict(
                workersrc="srcdir", workdir='wkdir',
                blocksize=16384, compress=None, maxsize=None,
                writer=ExpectRemoteRef(remotetransfer.DirectoryWriter)))
            + Expect.behavior(uploadTarFile('fake.tar', test="Hello world!"))
            + 0)

        self.expectOutcome(result=SUCCESS, state_string="uploading 1 file")
        d = self.runStep()
        return d
コード例 #30
0
    def testFile(self):
        self.setupStep(
            transfer.MultipleFileUpload(workersrcs=["srcfile"], masterdest=self.destdir))

        self.expectCommands(
            Expect('stat', dict(file="srcfile",
                                workdir='wkdir'))
            + Expect.update('stat', [stat.S_IFREG, 99, 99])
            + 0,
            Expect('uploadFile', dict(
                workersrc="srcfile", workdir='wkdir',
                blocksize=16384, maxsize=None, keepstamp=False,
                writer=ExpectRemoteRef(remotetransfer.FileWriter)))
            + Expect.behavior(uploadString("Hello world!"))
            + 0)

        self.expectOutcome(result=SUCCESS, state_string="uploading 1 file")
        d = self.runStep()
        return d
コード例 #31
0
    def testFile(self):
        self.setupStep(
            transfer.MultipleFileUpload(slavesrcs=["srcfile"], masterdest=self.destdir))

        self.expectCommands(
            Expect('stat', dict(file="srcfile",
                                workdir='wkdir'))
            + Expect.update('stat', [stat.S_IFREG, 99, 99])
            + 0,
            Expect('uploadFile', dict(
                slavesrc="srcfile", workdir='wkdir',
                blocksize=16384, maxsize=None, keepstamp=False,
                writer=ExpectRemoteRef(transfer._FileWriter)))
            + Expect.behavior(uploadString("Hello world!"))
            + 0)

        self.expectOutcome(result=SUCCESS, state_string="uploading 1 file")
        d = self.runStep()
        return d
コード例 #32
0
    def testDirectory(self):
        self.setupStep(
            transfer.MultipleFileUpload(slavesrcs=["srcdir"], masterdest=self.destdir))

        self.expectCommands(
            Expect('stat', dict(file="srcdir",
                                workdir='wkdir'))
            + Expect.update('stat', [stat.S_IFDIR, 99, 99])
            + 0,
            Expect('uploadDirectory', dict(
                slavesrc="srcdir", workdir='wkdir',
                blocksize=16384, compress=None, maxsize=None,
                writer=ExpectRemoteRef(transfer._DirectoryWriter)))
            + Expect.behavior(uploadTarFile('fake.tar', test="Hello world!"))
            + 0)

        self.expectOutcome(result=SUCCESS, status_text=["uploading", "1 file"])
        d = self.runStep()
        return d
コード例 #33
0
    def testFailure(self):
        self.setupStep(
            transfer.MultipleFileUpload(slavesrcs=["srcfile", "srcdir"], masterdest=self.destdir))

        self.expectCommands(
            Expect('stat', dict(file="srcfile",
                                workdir='wkdir'))
            + Expect.update('stat', [stat.S_IFREG, 99, 99])
            + 0,
            Expect('uploadFile', dict(
                slavesrc="srcfile", workdir='wkdir',
                blocksize=16384, maxsize=None, keepstamp=False,
                writer=ExpectRemoteRef(remotetransfer.FileWriter)))
            + 1)

        self.expectOutcome(
            result=FAILURE, state_string="uploading 2 files (failure)")
        d = self.runStep()
        return d
コード例 #34
0
    def test_with_head_branch(self):
        self.setupStep(
            self.stepClass(repourl='http://github.com/buildbot/buildbot.git',
                           mode='full', method='clean'),
            dict(branch='refs/pull/1234/head', revision='12345678'))

        self.expectCommands(
            ExpectShell(workdir='wkdir',
                        command=['git', '--version'])
            + ExpectShell.log('stdio',
                              stdout='git version 1.7.5')
            + 0,
            Expect('stat', dict(file='wkdir/.buildbot-patched',
                                logEnviron=True))
            + 1,
            Expect('listdir', {'dir': 'wkdir', 'logEnviron': True,
                               'timeout': 1200})
            + Expect.update('files', ['.git'])
            + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'clean', '-f', '-f', '-d'])
            + 0,
            # in the case of the head, we try to find if the head is already present
            # and reset to that without fetching
            ExpectShell(workdir='wkdir',
                        command=['git', 'cat-file', '-e', '12345678'])
            + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'reset', '--hard', '12345678', '--'])
            + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'checkout', '-B', 'refs/pull/1234/head'])
            + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'rev-parse', 'HEAD'])
            + ExpectShell.log('stdio',
                              stdout='f6ad368298bd941e934a41f3babc827b2aa95a1d')
            + 0,
        )
        self.expectOutcome(result=SUCCESS)
        self.expectProperty(
            'got_revision', 'f6ad368298bd941e934a41f3babc827b2aa95a1d', 'GitHub')
        return self.runStep()
コード例 #35
0
    def test_mode_full_clean(self):
        self.setupStep(
            gerrit.Gerrit(repourl='http://github.com/buildbot/buildbot.git',
                          mode='full', method='clean'))
        self.build.setProperty("event.patchSet.ref", "gerrit_branch")

        self.expectCommands(
            ExpectShell(workdir='wkdir',
                        command=['git', '--version'])
            + ExpectShell.log('stdio',
                              stdout='git version 1.7.5')
            + 0,
            Expect('stat', dict(file='wkdir/.buildbot-patched',
                                logEnviron=True))
            + 1,
            Expect('listdir', {'dir': 'wkdir', 'logEnviron': True,
                               'timeout': 1200})
            + Expect.update('files', ['.git'])
            + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'clean', '-f', '-f', '-d'])
            + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'fetch', '-t',
                                 'http://github.com/buildbot/buildbot.git',
                                 'gerrit_branch'])
            + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'reset', '--hard', 'FETCH_HEAD', '--'])
            + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'branch', '-M', 'gerrit_branch'])
            + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'rev-parse', 'HEAD'])
            + ExpectShell.log('stdio',
                              stdout='f6ad368298bd941e934a41f3babc827b2aa95a1d')
            + 0,
        )
        self.expectOutcome(result=SUCCESS, status_text=["update"])
        self.expectProperty('got_revision', 'f6ad368298bd941e934a41f3babc827b2aa95a1d', 'Gerrit')
        return self.runStep()
コード例 #36
0
    def test_with_merge_branch(self):
        self.setupStep(
            self.stepClass(repourl='http://github.com/buildbot/buildbot.git',
                           mode='full',
                           method='clean'),
            dict(branch='refs/pull/1234/merge', revision='12345678'))

        self.expectCommands(
            ExpectShell(workdir='wkdir', command=['git', '--version']) +
            ExpectShell.log('stdio', stdout='git version 1.7.5') + 0,
            Expect('stat', dict(file='wkdir/.buildbot-patched',
                                logEnviron=True)) + 1,
            Expect('listdir', {
                'dir': 'wkdir',
                'logEnviron': True,
                'timeout': 1200
            }) + Expect.update('files', ['.git']) + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'clean', '-f', '-f', '-d']) + 0,
            # here we always ignore revision, and fetch the merge branch
            ExpectShell(workdir='wkdir',
                        command=[
                            'git', 'fetch', '-t',
                            'http://github.com/buildbot/buildbot.git',
                            'refs/pull/1234/merge'
                        ]) + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'reset', '--hard', 'FETCH_HEAD', '--'
                                 ]) + 0,
            ExpectShell(
                workdir='wkdir',
                command=['git', 'branch', '-M', 'refs/pull/1234/merge']) + 0,
            ExpectShell(workdir='wkdir', command=['git', 'rev-parse', 'HEAD'])
            + ExpectShell.log(
                'stdio', stdout='f6ad368298bd941e934a41f3babc827b2aa95a1d') +
            0,
        )
        self.expectOutcome(result=SUCCESS)
        self.expectProperty('got_revision',
                            'f6ad368298bd941e934a41f3babc827b2aa95a1d',
                            'GitHub')
        return self.runStep()
コード例 #37
0
    def test_mode_full_clean_force_build(self):
        self.setupStep(
            gerrit.Gerrit(repourl='http://github.com/buildbot/buildbot.git',
                          mode='full',
                          method='clean'))
        self.build.setProperty("gerrit_change", "1234/567")

        self.expectCommands(
            ExpectShell(workdir='wkdir', command=['git', '--version']) +
            ExpectShell.log('stdio', stdout='git version 1.7.5') + 0,
            Expect('stat', dict(file='wkdir/.buildbot-patched',
                                logEnviron=True)) + 1,
            Expect('listdir', {
                'dir': 'wkdir',
                'logEnviron': True,
                'timeout': 1200
            }) + Expect.update('files', ['.git']) + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'clean', '-f', '-f', '-d']) + 0,
            ExpectShell(workdir='wkdir',
                        command=[
                            'git', 'fetch', '-t',
                            'http://github.com/buildbot/buildbot.git',
                            'refs/changes/34/1234/567'
                        ]) + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'reset', '--hard', 'FETCH_HEAD', '--'
                                 ]) + 0,
            ExpectShell(
                workdir='wkdir',
                command=['git', 'branch', '-M', 'refs/changes/34/1234/567']) +
            0,
            ExpectShell(workdir='wkdir', command=['git', 'rev-parse', 'HEAD'])
            + ExpectShell.log(
                'stdio', stdout='f6ad368298bd941e934a41f3babc827b2aa95a1d') +
            0,
        )
        self.expectOutcome(result=SUCCESS, status_text=["update"])
        self.expectProperty('got_revision',
                            'f6ad368298bd941e934a41f3babc827b2aa95a1d',
                            'Gerrit')
        return self.runStep()
コード例 #38
0
 def test_buildonly_reg(self):
     self.setupStep(
         pbuilder.DebCowbuilder(
             basetgz='/var/cache/pbuilder/stable-local-buildbot.cow'))
     self.expectCommands(
         Expect('stat',
                {'file': '/var/cache/pbuilder/stable-local-buildbot.cow'}) +
         Expect.update(
             'stat',
             [stat.S_IFREG, 99, 99, 1, 0, 0, 99, 0,
              int(time.time()), 0]) + 0,
         ExpectShell(workdir='wkdir',
                     command=[
                         'pdebuild', '--buildresult', '.', '--pbuilder',
                         '/usr/sbin/cowbuilder', '--', '--buildresult', '.',
                         '--basepath',
                         '/var/cache/pbuilder/stable-local-buildbot.cow'
                     ]) + 1)
     self.expectOutcome(result=FAILURE, state_string='built (failure)')
     return self.runStep()
コード例 #39
0
    def test_with_merge_branch(self):
        self.setupStep(
            self.stepClass(
                repourl='[email protected]:mmusterman/awesome_project.git',
                mode='full',
                method='clean'), dict(branch='master', revision='12345678'))

        self.expectCommands(
            ExpectShell(workdir='wkdir', command=['git', '--version']) +
            ExpectShell.log('stdio', stdout='git version 1.7.5') + 0,
            Expect('stat', dict(file='wkdir/.buildbot-patched',
                                logEnviron=True)) + 1,
            Expect('listdir', {
                'dir': 'wkdir',
                'logEnviron': True,
                'timeout': 1200
            }) + Expect.update('files', ['.git']) + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'clean', '-f', '-f', '-d']) + 0,
            # here we always ignore revision, and fetch the merge branch
            ExpectShell(workdir='wkdir',
                        command=[
                            'git', 'fetch', '-f', '-t',
                            '[email protected]:build/awesome_project.git',
                            'ms-viewport', '--progress'
                        ]) + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'checkout', '-f', 'FETCH_HEAD']) + 0,
            ExpectShell(workdir='wkdir',
                        command=['git', 'checkout', '-B', 'ms-viewport']) + 0,
            ExpectShell(workdir='wkdir', command=['git', 'rev-parse', 'HEAD'])
            + ExpectShell.log(
                'stdio', stdout='f6ad368298bd941e934a41f3babc827b2aa95a1d') +
            0,
        )
        self.expectOutcome(result=SUCCESS)
        self.expectProperty('got_revision',
                            'f6ad368298bd941e934a41f3babc827b2aa95a1d',
                            'GitLab')
        return self.runStep()
コード例 #40
0
 def test_buildonly_and_property(self):
     self.setupStep(pbuilder.DebPbuilder())
     self.expectCommands(
         Expect(
             'stat', {'file': '/var/cache/pbuilder/stable-local-buildbot.tgz'})
         +
         Expect.update(
             'stat', [stat.S_IFREG, 99, 99, 1, 0, 0, 99, 0, int(time.time()), 0])
         + 0,
         ExpectShell(workdir='wkdir',
                     command=['pdebuild', '--buildresult', '.',
                              '--pbuilder', '/usr/sbin/pbuilder', '--', '--buildresult', '.',
                              '--basetgz', '/var/cache/pbuilder/stable-local-buildbot.tgz'])
         + ExpectShell.log(
             'stdio',
             stdout='blah\ndpkg-genchanges  >../somefilename.changes\foo\n')
         + 0)
     self.expectOutcome(result=SUCCESS)
     self.expectProperty('deb-changes',
                         'somefilename.changes',
                         'DebPbuilder')
     return self.runStep()
コード例 #41
0
    def test_url_text(self):
        self.setupStep(transfer.MultipleFileUpload(workersrcs=["srcfile"], masterdest=self.destdir,
                                                   url="http://server/dir", urlText='url text'))

        self.step.addURL = Mock()

        self.expectCommands(
            Expect('stat', {'file': "srcfile", 'workdir': 'wkdir'})
            + Expect.update('stat', [stat.S_IFREG, 99, 99])
            + 0,
            Expect('uploadFile', {'workersrc': "srcfile", 'workdir': 'wkdir',
                                  'blocksize': 16384, 'maxsize': None, 'keepstamp': False,
                                  'writer': ExpectRemoteRef(remotetransfer.FileWriter)})
            + Expect.behavior(uploadString("Hello world!"))
            + 0)

        self.expectOutcome(result=SUCCESS,
                           state_string="uploading 1 file")

        yield self.runStep()

        self.step.addURL.assert_called_once_with("url text", "http://server/dir")
コード例 #42
0
 def test_update(self):
     self.setupStep(pbuilder.DebPbuilder())
     self.expectCommands(
         Expect('stat',
                {'file': '/var/cache/pbuilder/stable-local-buildbot.tgz'}) +
         Expect.update('stat',
                       [stat.S_IFREG, 99, 99, 1, 0, 0, 99, 0, 0, 0]) + 0,
         ExpectShell(workdir='wkdir',
                     command=[
                         'sudo',
                         '/usr/sbin/pbuilder',
                         '--update',
                         '--basetgz',
                         '/var/cache/pbuilder/stable-local-buildbot.tgz',
                     ]) + 0,
         ExpectShell(workdir='wkdir',
                     command=[
                         'pdebuild', '--buildresult', '.', '--pbuilder',
                         '/usr/sbin/pbuilder', '--', '--buildresult', '.',
                         '--basetgz',
                         '/var/cache/pbuilder/stable-local-buildbot.tgz'
                     ]) + 0)
     self.expectOutcome(result=SUCCESS)
     return self.runStep()
コード例 #43
0
    def testException(self):
        self.setupStep(
            transfer.MultipleFileUpload(workersrcs=["srcfile", "srcdir"], masterdest=self.destdir))

        behavior = UploadError(uploadString("Hello world!"))

        self.expectCommands(
            Expect('stat', dict(file="srcfile",
                                workdir='wkdir'))
            + Expect.update('stat', [stat.S_IFREG, 99, 99])
            + 0,
            Expect('uploadFile', dict(
                workersrc="srcfile", workdir='wkdir',
                blocksize=16384, maxsize=None, keepstamp=False,
                writer=ExpectRemoteRef(remotetransfer.FileWriter)))
            + Expect.behavior(behavior))

        self.expectOutcome(
            result=EXCEPTION, state_string="uploading 2 files (exception)")
        yield self.runStep()

        self.assertEqual(behavior.writer.cancel.called, True)
        self.assertEqual(
            len(self.flushLoggedErrors(RuntimeError)), 1)