Skip to content

Commit

Permalink
cli: validate master option for 'statuslog' and 'statusgui' commands
Browse files Browse the repository at this point in the history
For 'buildbot statuslog' and 'buildbot statusgui' subcommands, validate
master (-m, --master) option. If not valid print user friendly
error message "master must have the form 'hostname:port'".
  • Loading branch information
Elmir Jagudin committed Feb 25, 2013
1 parent b19daf5 commit 41f22d8
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 11 deletions.
5 changes: 5 additions & 0 deletions master/buildbot/scripts/runner.py
Expand Up @@ -235,6 +235,11 @@ def parseArgs(self, *args):
if len(args) > 1:
raise usage.UsageError("I wasn't expecting so many arguments")

def postOptions(self):
base.SubcommandOptions.postOptions(self)
validate_master_option(self.get('master'))



class StatusLogOptions(BaseStatusClientOptions):
subcommandFunction = "buildbot.scripts.statuslog.statuslog"
Expand Down
26 changes: 15 additions & 11 deletions master/buildbot/test/unit/test_scripts_runner.py
Expand Up @@ -335,23 +335,24 @@ def parse(self, *args):
return self.opts

def test_defaults(self):
opts = self.parse('--master', 'm')
exp = dict(master='m', username='statusClient', passwd='clientpw')
opts = self.parse('--master', 'm:20')
exp = dict(master='m:20', username='statusClient', passwd='clientpw')
self.assertOptions(opts, exp)

def test_short(self):
opts = self.parse('-m', 'm', '-u', 'u', '-p', 'p')
exp = dict(master='m', username='u', passwd='p')
opts = self.parse('-m', 'm:20', '-u', 'u', '-p', 'p')
exp = dict(master='m:20', username='u', passwd='p')
self.assertOptions(opts, exp)

def test_long(self):
opts = self.parse('--master', 'm', '--username', 'u', '--passwd', 'p')
exp = dict(master='m', username='u', passwd='p')
opts = self.parse('--master', 'm:20',
'--username', 'u', '--passwd', 'p')
exp = dict(master='m:20', username='u', passwd='p')
self.assertOptions(opts, exp)

def test_positional_master(self):
opts = self.parse('--username', 'u', '--passwd', 'p', 'm')
exp = dict(master='m', username='u', passwd='p')
opts = self.parse('--username', 'u', '--passwd', 'p', 'm:20')
exp = dict(master='m:20', username='u', passwd='p')
self.assertOptions(opts, exp)

def test_positional_extra(self):
Expand All @@ -362,11 +363,14 @@ def test_missing_master(self):
self.assertRaises(usage.UsageError,
lambda : self.parse('--username', 'u', '--passwd', 'p'))

def test_invalid_master(self):
self.assertRaises(usage.UsageError, self.parse, "-m foo")

def test_options_masterstatus(self):
self.options_file['master'] = 'not seen'
self.options_file['masterstatus'] = 'opt'
self.options_file['master'] = 'not_seen:2'
self.options_file['masterstatus'] = 'opt:3'
opts = self.parse('-p', 'pass', '-u', 'user')
exp = dict(master='opt', username='user', passwd='pass')
exp = dict(master='opt:3', username='user', passwd='pass')
self.assertOptions(opts, exp)


Expand Down

0 comments on commit 41f22d8

Please sign in to comment.