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
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
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()
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
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()
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()
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()
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()
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()
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()
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()
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()
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()
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
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()
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()
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()
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()
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()
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
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()
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()
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()
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
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()
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()
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()
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()
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
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
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
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
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
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()
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()
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()
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()
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()
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()
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()
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")
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()
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)