def test_sendchange_defaults(self):
        d = runner.sendchange(dict(who="me", master="a:1"))

        def check(_):
            # called correctly
            self.assertEqual(
                (self.sender.master, self.sender.auth, self.sender.encoding, self.sender.send_kwargs),
                (
                    "a:1",
                    ["change", "changepw"],
                    "utf8",
                    {
                        "branch": None,
                        "category": None,
                        "comments": "",
                        "files": (),
                        "project": "",
                        "properties": {},
                        "repository": "",
                        "revision": None,
                        "revlink": "",
                        "when": None,
                        "who": "me",
                        "vc": None,
                    },
                ),
            )
            # nothing to stdout
            self.assertEqual(self.stdout.getvalue(), "")

        d.addCallback(check)
        return d
Exemplo n.º 2
0
    def test_sendchange_defaults(self):
        d = runner.sendchange(dict(who='me', master='a:1'))

        def check(_):
            # called correctly
            self.assertEqual((self.sender.master, self.sender.auth,
                              self.sender.encoding, self.sender.send_kwargs),
                             ('a:1', ['change', 'changepw'], 'utf8', {
                                 'branch': None,
                                 'category': None,
                                 'comments': '',
                                 'files': (),
                                 'project': '',
                                 'properties': {},
                                 'repository': '',
                                 'revision': None,
                                 'revlink': '',
                                 'when': None,
                                 'who': 'me'
                             }))
            # nothing to stdout
            self.assertEqual(self.stdout.getvalue(), '')

        d.addCallback(check)
        return d
Exemplo n.º 3
0
 def test_sendchange_deprecated_username(self):
     d = runner.sendchange(dict(username='******', master='a:1'))
     def check(_):
         self.assertEqual((self.sender.master, self.sender.auth,
                 self.sender.encoding, self.sender.send_kwargs['who']),
                 ('a:1', ['change','changepw'], 'utf8', 'me'))
         self.assertIn('is deprecated', self.stdout.getvalue())
     d.addCallback(check)
     return d
Exemplo n.º 4
0
 def test_sendchange_auth_prompt(self):
     self.patch(getpass, 'getpass', lambda prompt : 'sekrit')
     d = runner.sendchange(dict(who='me', master='a:1', auth='user'))
     def check(_):
         self.assertEqual((self.sender.master, self.sender.auth,
                 self.sender.encoding),
                 ('a:1', ['user','sekrit'], 'utf8'))
         self.assertEqual(self.stdout.getvalue(), '')
     d.addCallback(check)
     return d
Exemplo n.º 5
0
 def test_sendchange_bad_vc(self):
     d = defer.maybeDeferred(lambda :
             runner.sendchange(dict(master='a:1', who="abc", vc="blargh")))
     def cb(_):
         self.fail("shouldn't succeed")
     def eb(f):
         f.trap(AssertionError)
         pass # A-OK
     d.addCallbacks(cb, eb)
     return d
Exemplo n.º 6
0
 def test_sendchange_master_required(self):
     d = defer.maybeDeferred(lambda :
             runner.sendchange(dict(who='abc')))
     def cb(_):
         self.fail("shouldn't succeed")
     def eb(f):
         f.trap(AssertionError)
         pass # A-OK
     d.addCallbacks(cb, eb)
     return d
Exemplo n.º 7
0
 def test_sendchange_master_required(self):
     d = defer.maybeDeferred(lambda :
             runner.sendchange(dict(who='abc')))
     def cb(_):
         self.fail("shouldn't succeed")
     def eb(f):
         f.trap(AssertionError)
         pass # A-OK
     d.addCallbacks(cb, eb)
     return d
Exemplo n.º 8
0
 def test_sendchange_auth_prompt(self):
     self.patch(getpass, 'getpass', lambda prompt : 'sekrit')
     d = runner.sendchange(dict(who='me', master='a:1', auth='user'))
     def check(_):
         self.assertEqual((self.sender.master, self.sender.auth,
                 self.sender.encoding),
                 ('a:1', ['user','sekrit'], 'utf8'))
         self.assertEqual(self.stdout.getvalue(), '')
     d.addCallback(check)
     return d
Exemplo n.º 9
0
 def test_sendchange_bad_vc(self):
     d = defer.maybeDeferred(lambda :
             runner.sendchange(dict(master='a:1', who="abc", vc="blargh")))
     def cb(_):
         self.fail("shouldn't succeed")
     def eb(f):
         f.trap(AssertionError)
         pass # A-OK
     d.addCallbacks(cb, eb)
     return d
Exemplo n.º 10
0
    def test_sendchange_deprecated_username(self):
        d = runner.sendchange(dict(username='******', master='a:1'))

        def check(_):
            self.assertEqual(
                (self.sender.master, self.sender.auth, self.sender.encoding,
                 self.sender.send_kwargs['who']),
                ('a:1', ['change', 'changepw'], 'utf8', 'me'))
            self.assertIn('is deprecated', self.stdout.getvalue())

        d.addCallback(check)
        return d
Exemplo n.º 11
0
    def test_sendchange_auth_prompt(self):
        self.patch(getpass, "getpass", lambda prompt: "sekrit")
        d = runner.sendchange(dict(who="me", master="a:1", auth="user"))

        def check(_):
            self.assertEqual(
                (self.sender.master, self.sender.auth, self.sender.encoding), ("a:1", ["user", "sekrit"], "utf8")
            )
            self.assertEqual(self.stdout.getvalue(), "")

        d.addCallback(check)
        return d
    def _testSender_1(self, res):
        self.cm = cm = self.master.change_svc
        s1 = list(self.cm)[0]
        port = self.master.slavePort._port.getHost().port

        self.options = {'username': "******",
                        'master': "localhost:%d" % port,
                        'files': ["foo.c"],
                        }

        d = runner.sendchange(self.options)
        d.addCallback(self._testSender_2)
        return d
Exemplo n.º 13
0
    def _testSender_1(self, res):
        self.cm = self.master.change_svc
        port = self.master.slavePort._port.getHost().port

        self.options = {'username': "******",
                        'master': "localhost:%d" % port,
                        'files': ["foo.c"],
                        'category': "categoryA",
                        }

        d = runner.sendchange(self.options)
        d.addCallback(self._testSender_2)
        return d
Exemplo n.º 14
0
 def test_sendchange_logfile(self):
     open('lf', 'w').write('hello')
     d = runner.sendchange(dict(who='me', master='a:1', logfile='lf'))
     def check(_):
         self.assertEqual((self.sender.master, self.sender.auth,
                 self.sender.encoding, self.sender.send_kwargs['comments']),
                 ('a:1', ['change','changepw'], 'utf8', 'hello'))
         self.assertEqual(self.stdout.getvalue(), '')
         try:
             os.unlink('lf')
         except:
             pass
     d.addCallback(check)
     return d
    def _testSender_5(self, res):
        self.failUnlessEqual(len(self.cm.changes), 1)
        c = self.cm.changes.pop()
        self.failUnlessEqual(c.who, "alice")
        self.failUnlessEqual(c.files, ["foo.c"])
        self.failUnlessEqual(c.comments, "")
        self.failUnlessEqual(c.revision, 42)

        # verify --branch too
        self.options['branch'] = "branches/test"

        d = runner.sendchange(self.options)
        d.addCallback(self._testSender_6)
        return d
Exemplo n.º 16
0
    def _testSender_5(self, res):
        c = self.cm.getChangeNumberedNow(4)
        self.failUnlessEqual(c.who, "alice")
        self.failUnlessEqual(c.files, ["foo.c"])
        self.failUnlessEqual(c.comments, "")
        self.failUnlessEqual(c.revision, "42")
        self.failUnlessEqual(c.category, "categoryA")

        # verify --branch too
        self.options['branch'] = "branches/test"

        d = runner.sendchange(self.options)
        d.addCallback(self._testSender_6)
        return d
Exemplo n.º 17
0
    def _testSender_5(self, res):
        c = self.cm.getChangeNumberedNow(4)
        self.failUnlessEqual(c.who, "alice")
        self.failUnlessEqual(c.files, ["foo.c"])
        self.failUnlessEqual(c.comments, "")
        self.failUnlessEqual(c.revision, "42")
        self.failUnlessEqual(c.category, "categoryA")

        # verify --branch too
        self.options['branch'] = "branches/test"

        d = runner.sendchange(self.options)
        d.addCallback(self._testSender_6)
        return d
Exemplo n.º 18
0
    def _testSender_2(self, res):
        # now check that the change was received
        c = self.cm.getChangeNumberedNow(1)
        self.failUnlessEqual(c.who, "alice")
        self.failUnlessEqual(c.files, ["foo.c"])
        self.failUnlessEqual(c.comments, "")
        self.failUnlessEqual(c.revision, None)
        self.failUnlessEqual(c.category, "categoryA")

        self.options['revision'] = "r123"
        self.options['comments'] = "test change"

        d = runner.sendchange(self.options)
        d.addCallback(self._testSender_3)
        return d
    def _testSender_2(self, res):
        # now check that the change was received
        self.failUnlessEqual(len(self.cm.changes), 1)
        c = self.cm.changes.pop()
        self.failUnlessEqual(c.who, "alice")
        self.failUnlessEqual(c.files, ["foo.c"])
        self.failUnlessEqual(c.comments, "")
        self.failUnlessEqual(c.revision, None)

        self.options['revision'] = "r123"
        self.options['comments'] = "test change"

        d = runner.sendchange(self.options)
        d.addCallback(self._testSender_3)
        return d
Exemplo n.º 20
0
 def test_sendchange_logfile(self):
     with open('lf', 'w') as f:
         f.write('hello')
     d = runner.sendchange(dict(who='me', master='a:1', logfile='lf'))
     def check(_):
         self.assertEqual((self.sender.master, self.sender.auth,
                 self.sender.encoding, self.sender.send_kwargs['comments']),
                 ('a:1', ['change','changepw'], 'utf8', 'hello'))
         self.assertEqual(self.stdout.getvalue(), '')
         try:
             os.unlink('lf')
         except:
             pass
     d.addCallback(check)
     return d
Exemplo n.º 21
0
 def test_sendchange_revision_file(self):
     with open('rf', 'w') as f:
         f.write('abcd')
     d = runner.sendchange(dict(who='me', master='a:1', revision_file='rf'))
     def check(_):
         self.assertEqual((self.sender.master, self.sender.auth,
                 self.sender.encoding, self.sender.send_kwargs['revision']),
                 ('a:1', ['change','changepw'], 'utf8', 'abcd'))
         self.assertEqual(self.stdout.getvalue(), '')
         try:
             os.unlink('rf')
         except:
             pass
     d.addCallback(check)
     return d
Exemplo n.º 22
0
    def _testSender_2(self, res):
        # now check that the change was received
        c = self.cm.getChangeNumberedNow(1)
        self.failUnlessEqual(c.who, "alice")
        self.failUnlessEqual(c.files, ["foo.c"])
        self.failUnlessEqual(c.comments, "")
        self.failUnlessEqual(c.revision, None)
        self.failUnlessEqual(c.category, "categoryA")

        self.options['revision'] = "r123"
        self.options['comments'] = "test change"

        d = runner.sendchange(self.options)
        d.addCallback(self._testSender_3)
        return d
Exemplo n.º 23
0
    def test_sendchange_args(self):
        d = runner.sendchange(
            dict(
                encoding="utf16",
                who="me",
                auth="a:b",
                master="a:1",
                branch="br",
                category="cat",
                revision="rr",
                properties={"a": "b"},
                repository="rep",
                project="prj",
                vc="git",
                revlink="rl",
                when="1234",
                comments="comm",
                files=("a", "b"),
            )
        )

        def check(_):
            self.assertEqual(
                (self.sender.master, self.sender.auth, self.sender.encoding, self.sender.send_kwargs),
                (
                    "a:1",
                    ["a", "b"],
                    "utf16",
                    {
                        "branch": "br",
                        "category": "cat",
                        "comments": "comm",
                        "files": ("a", "b"),
                        "project": "prj",
                        "properties": {"a": "b"},
                        "repository": "rep",
                        "revision": "rr",
                        "revlink": "rl",
                        "when": 1234.0,
                        "who": "me",
                        "vc": "git",
                    },
                ),
            )
            self.assertEqual(self.stdout.getvalue(), "")

        d.addCallback(check)
        return d
Exemplo n.º 24
0
    def _testSender_6(self, res):
        self.failUnlessEqual(len(self.cm.changes), 1)
        c = self.cm.changes.pop()
        self.failUnlessEqual(c.who, "alice")
        self.failUnlessEqual(c.files, ["foo.c"])
        self.failUnlessEqual(c.comments, "")
        self.failUnlessEqual(c.revision, 42)
        self.failUnlessEqual(c.branch, "branches/test")
        self.failUnlessEqual(c.category, "categoryA")
        self.failUnlessEqual(c.repository, None)
	
	self.options['repository'] = "svn://my.repository/data/project1"

        d = runner.sendchange(self.options)
        d.addCallback(self._testSender_7)
        return d
Exemplo n.º 25
0
    def _testSender_4(self, res):
        c = self.cm.getChangeNumberedNow(3)
        self.failUnlessEqual(c.who, "alice")
        self.failUnlessEqual(c.files, ["foo.c"])
        self.failUnlessEqual(c.comments, "longer test change")
        self.failUnlessEqual(c.revision, "r123")
        self.failUnlessEqual(c.category, "categoryA")

        # make sure that numeric revisions work too. They are now treated
        # just like strings.
        self.options['logfile'] = None
        self.options['revision'] = "42"

        d = runner.sendchange(self.options)
        d.addCallback(self._testSender_5)
        return d
Exemplo n.º 26
0
 def test_sendchange_logfile_stdin(self):
     stdin = mock.Mock()
     stdin.read = lambda : 'hi!'
     self.patch(sys, 'stdin', stdin)
     d = runner.sendchange(dict(who='me', master='a:1', logfile='-'))
     def check(_):
         self.assertEqual((self.sender.master, self.sender.auth,
                 self.sender.encoding, self.sender.send_kwargs['comments']),
                 ('a:1', ['change','changepw'], 'utf8', 'hi!'))
         self.assertEqual(self.stdout.getvalue(), '')
         try:
             os.unlink('lf')
         except:
             pass
     d.addCallback(check)
     return d
Exemplo n.º 27
0
    def _testSender_4(self, res):
        c = self.cm.getChangeNumberedNow(3)
        self.failUnlessEqual(c.who, "alice")
        self.failUnlessEqual(c.files, ["foo.c"])
        self.failUnlessEqual(c.comments, "longer test change")
        self.failUnlessEqual(c.revision, "r123")
        self.failUnlessEqual(c.category, "categoryA")

        # make sure that numeric revisions work too. They are now treated
        # just like strings.
        self.options['logfile'] = None
        self.options['revision'] = "42"

        d = runner.sendchange(self.options)
        d.addCallback(self._testSender_5)
        return d
    def _testSender_4(self, res):
        self.failUnlessEqual(len(self.cm.changes), 1)
        c = self.cm.changes.pop()
        self.failUnlessEqual(c.who, "alice")
        self.failUnlessEqual(c.files, ["foo.c"])
        self.failUnlessEqual(c.comments, "longer test change")
        self.failUnlessEqual(c.revision, "r123")

        # make sure that numeric revisions work too
        self.options['logfile'] = None
        del self.options['revision']
        self.options['revision_number'] = 42

        d = runner.sendchange(self.options)
        d.addCallback(self._testSender_5)
        return d
Exemplo n.º 29
0
 def test_sendchange_logfile_stdin(self):
     stdin = mock.Mock()
     stdin.read = lambda : 'hi!'
     self.patch(sys, 'stdin', stdin)
     d = runner.sendchange(dict(who='me', master='a:1', logfile='-'))
     def check(_):
         self.assertEqual((self.sender.master, self.sender.auth,
                 self.sender.encoding, self.sender.send_kwargs['comments']),
                 ('a:1', ['change','changepw'], 'utf8', 'hi!'))
         self.assertEqual(self.stdout.getvalue(), '')
         try:
             os.unlink('lf')
         except:
             pass
     d.addCallback(check)
     return d
Exemplo n.º 30
0
    def test_sendchange_revision_file(self):
        open('rf', 'w').write('abcd')
        d = runner.sendchange(dict(who='me', master='a:1', revision_file='rf'))

        def check(_):
            self.assertEqual(
                (self.sender.master, self.sender.auth, self.sender.encoding,
                 self.sender.send_kwargs['revision']),
                ('a:1', ['change', 'changepw'], 'utf8', 'abcd'))
            self.assertEqual(self.stdout.getvalue(), '')
            try:
                os.unlink('rf')
            except:
                pass

        d.addCallback(check)
        return d
Exemplo n.º 31
0
    def test_sendchange_logfile(self):
        with open("lf", "w") as f:
            f.write("hello")
        d = runner.sendchange(dict(who="me", master="a:1", logfile="lf"))

        def check(_):
            self.assertEqual(
                (self.sender.master, self.sender.auth, self.sender.encoding, self.sender.send_kwargs["comments"]),
                ("a:1", ["change", "changepw"], "utf8", "hello"),
            )
            self.assertEqual(self.stdout.getvalue(), "")
            try:
                os.unlink("lf")
            except:
                pass

        d.addCallback(check)
        return d
    def _testSender_3(self, res):
        self.failUnlessEqual(len(self.cm.changes), 1)
        c = self.cm.changes.pop()
        self.failUnlessEqual(c.who, "alice")
        self.failUnlessEqual(c.files, ["foo.c"])
        self.failUnlessEqual(c.comments, "test change")
        self.failUnlessEqual(c.revision, "r123")

        # test options['logfile'] by creating a temporary file
        logfile = self.mktemp()
        f = open(logfile, "wt")
        f.write("longer test change")
        f.close()
        self.options['comments'] = None
        self.options['logfile'] = logfile

        d = runner.sendchange(self.options)
        d.addCallback(self._testSender_4)
        return d
Exemplo n.º 33
0
    def test_sendchange_logfile_stdin(self):
        stdin = mock.Mock()
        stdin.read = lambda: "hi!"
        self.patch(sys, "stdin", stdin)
        d = runner.sendchange(dict(who="me", master="a:1", logfile="-"))

        def check(_):
            self.assertEqual(
                (self.sender.master, self.sender.auth, self.sender.encoding, self.sender.send_kwargs["comments"]),
                ("a:1", ["change", "changepw"], "utf8", "hi!"),
            )
            self.assertEqual(self.stdout.getvalue(), "")
            try:
                os.unlink("lf")
            except:
                pass

        d.addCallback(check)
        return d
Exemplo n.º 34
0
    def _testSender_3(self, res):
        c = self.cm.getChangeNumberedNow(2)
        self.failUnlessEqual(c.who, "alice")
        self.failUnlessEqual(c.files, ["foo.c"])
        self.failUnlessEqual(c.comments, "test change")
        self.failUnlessEqual(c.revision, "r123")
        self.failUnlessEqual(c.category, "categoryA")

        # test options['logfile'] by creating a temporary file
        logfile = self.mktemp()
        f = open(logfile, "wt")
        f.write("longer test change")
        f.close()
        self.options['comments'] = None
        self.options['logfile'] = logfile

        d = runner.sendchange(self.options)
        d.addCallback(self._testSender_4)
        return d
Exemplo n.º 35
0
    def test_sendchange_args(self):
        d = runner.sendchange(
            dict(encoding='utf16',
                 who='me',
                 auth='a:b',
                 master='a:1',
                 branch='br',
                 category='cat',
                 revision='rr',
                 properties={'a': 'b'},
                 repository='rep',
                 project='prj',
                 revlink='rl',
                 when='1234',
                 comments='comm',
                 files=('a', 'b')))

        def check(_):
            self.assertEqual((self.sender.master, self.sender.auth,
                              self.sender.encoding, self.sender.send_kwargs),
                             ('a:1', ['a', 'b'], 'utf16', {
                                 'branch': 'br',
                                 'category': 'cat',
                                 'comments': 'comm',
                                 'files': ('a', 'b'),
                                 'project': 'prj',
                                 'properties': {
                                     'a': 'b'
                                 },
                                 'repository': 'rep',
                                 'revision': 'rr',
                                 'revlink': 'rl',
                                 'when': 1234.0,
                                 'who': 'me'
                             }))
            self.assertEqual(self.stdout.getvalue(), '')

        d.addCallback(check)
        return d
Exemplo n.º 36
0
 def test_sendchange_defaults(self):
     d = runner.sendchange(dict(who='me', master='a:1'))
     def check(_):
         # called correctly
         self.assertEqual((self.sender.master, self.sender.auth,
                 self.sender.encoding, self.sender.send_kwargs),
                 ('a:1', ['change','changepw'], 'utf8', {
                     'branch': None,
                     'category': None,
                     'comments': '',
                     'files': (),
                     'project': '',
                     'properties': {},
                     'repository': '',
                     'revision': None,
                     'revlink': '',
                     'when': None,
                     'who': 'me'}))
         # nothing to stdout
         self.assertEqual(self.stdout.getvalue(), '')
     d.addCallback(check)
     return d
Exemplo n.º 37
0
 def test_sendchange_args(self):
     d = runner.sendchange(dict(encoding='utf16', who='me', auth='a:b',
             master='a:1', branch='br', category='cat', revision='rr',
             properties={'a':'b'}, repository='rep', project='prj',
             revlink='rl', when='1234', comments='comm', files=('a', 'b')))
     def check(_):
         self.assertEqual((self.sender.master, self.sender.auth,
                 self.sender.encoding, self.sender.send_kwargs),
                 ('a:1', ['a','b'], 'utf16', {
                     'branch': 'br',
                     'category': 'cat',
                     'comments': 'comm',
                     'files': ('a', 'b'),
                     'project': 'prj',
                     'properties': {'a':'b'},
                     'repository': 'rep',
                     'revision': 'rr',
                     'revlink': 'rl',
                     'when': 1234.0,
                     'who': 'me'}))
         self.assertEqual(self.stdout.getvalue(), '')
     d.addCallback(check)
     return d
Exemplo n.º 38
0
 def test_sendchange_bad_vc(self):
     d = defer.maybeDeferred(lambda :
             runner.sendchange(dict(master='a:1', who="abc", vc="blargh")))
     return self.assertFailure(d, AssertionError)
Exemplo n.º 39
0
    if len(logfiles) > 1:
        print("Warning, multiple ++log.* files found, getting comments " "from the first one")
    if logfiles:
        open(commentfile, "w").write(open(logfiles[0], "r").read())

elif os.getenv("ARCH_HOOK_ACTION") == "commit":
    revision = os.getenv("ARCH_REVISION")

    files = []
    if os.path.exists(filelist):
        f = open(filelist, "r")
        for line in f.readlines():
            files.append(line.rstrip())
    if not files:
        # buildbot insists upon having at least one modified file (otherwise
        # the prefix-stripping mechanism will ignore the change)
        files = ["dummy"]

    if os.path.exists(commentfile):
        comments = open(commentfile, "r").read()
    else:
        comments = "commit from arch"

    c = {"master": master, "username": username, "revision": revision, "comments": comments, "files": files}
    runner.sendchange(c, True)

    if os.path.exists(filelist):
        os.unlink(filelist)
    if os.path.exists(commentfile):
        os.unlink(commentfile)
Exemplo n.º 40
0
from buildbot.scripts import runner

MASTER = sys.argv[1]

CHANGESET_ID = os.environ["HG_NODE"]

# TODO: consider doing 'import mercurial.hg' and extract this information
# using the native python
out = commands.getoutput(
    "hg log -r %s --template '{author}\n{files}\n{desc}'" % CHANGESET_ID)

s = StringIO(out)
user = s.readline().strip()
# NOTE: this fail when filenames contain spaces. I cannot find a way to get
# hg to use some other filename separator.
files = s.readline().strip().split()
comments = "".join(s.readlines())

change = {
    'master': MASTER,
    # note: this is more likely to be a full email address, which would make
    # the left-hand "Changes" column kind of wide. The buildmaster should
    # probably be improved to display an abbreviation of the username.
    'username': user,
    'revision': CHANGESET_ID,
    'comments': comments,
    'files': files,
}

runner.sendchange(change, True)
Exemplo n.º 41
0
 def test_sendchange_master_required(self):
     d = defer.maybeDeferred(lambda :
             runner.sendchange(dict(who='abc')))
     return self.assertFailure(d, AssertionError)