From: Brian Warner Date: Tue, 26 May 2015 18:32:14 +0000 (-0700) Subject: wrap long lines, and tolerate various-width wrappings of the --help output X-Git-Tag: allmydata-tahoe-1.10.1b1~14^2 X-Git-Url: https://git.rkrishnan.org/%5B/frontends/flags/%22doc.html/architecture.txt?a=commitdiff_plain;h=refs%2Fpull%2F170%2Fhead;p=tahoe-lafs%2Ftahoe-lafs.git wrap long lines, and tolerate various-width wrappings of the --help output test_cli.Help was too sensitive to the way that the --help output was wrapped, which caused failures on travis when COLUMNS= was set low and the expected strings were split across separate lines. --- diff --git a/src/allmydata/scripts/startstop_node.py b/src/allmydata/scripts/startstop_node.py index b1aad6ac..e3b2e72c 100644 --- a/src/allmydata/scripts/startstop_node.py +++ b/src/allmydata/scripts/startstop_node.py @@ -11,22 +11,26 @@ from allmydata.util.encodingutil import listdir_unicode, quote_local_unicode_pat class StartOptions(BasedirOptions): subcommand_name = "start" optParameters = [ - ("basedir", "C", None, "Specify which Tahoe base directory should be used. This has the same effect as the global --node-directory option. [default: %s]" - % quote_local_unicode_path(_default_nodedir)), + ("basedir", "C", None, + "Specify which Tahoe base directory should be used." + " This has the same effect as the global --node-directory option." + " [default: %s]" % quote_local_unicode_path(_default_nodedir)), ] def parseArgs(self, basedir=None, *twistd_args): # This can't handle e.g. 'tahoe start --nodaemon', since '--nodaemon' - # looks like an option to the tahoe subcommand, not to twistd. - # So you can either use 'tahoe start' or 'tahoe start NODEDIR --TWISTD-OPTIONS'. - # Note that 'tahoe --node-directory=NODEDIR start --TWISTD-OPTIONS' also - # isn't allowed, unfortunately. + # looks like an option to the tahoe subcommand, not to twistd. So you + # can either use 'tahoe start' or 'tahoe start NODEDIR + # --TWISTD-OPTIONS'. Note that 'tahoe --node-directory=NODEDIR start + # --TWISTD-OPTIONS' also isn't allowed, unfortunately. BasedirOptions.parseArgs(self, basedir) self.twistd_args = twistd_args def getSynopsis(self): - return "Usage: %s [global-options] %s [options] [NODEDIR [twistd-options]]" % (self.command_name, self.subcommand_name) + return ("Usage: %s [global-options] %s [options]" + " [NODEDIR [twistd-options]]" + % (self.command_name, self.subcommand_name)) def getUsage(self, width=None): t = BasedirOptions.getUsage(self, width) + "\n" @@ -45,7 +49,8 @@ class StopOptions(BasedirOptions): BasedirOptions.parseArgs(self, basedir) def getSynopsis(self): - return "Usage: %s [global-options] stop [options] [NODEDIR]" % (self.command_name,) + return ("Usage: %s [global-options] stop [options] [NODEDIR]" + % (self.command_name,)) class RestartOptions(StartOptions): subcommand_name = "restart" @@ -235,9 +240,9 @@ def restart(config, stdout, stderr): def run(config, stdout, stderr): config.twistd_args = config.twistd_args + ("--nodaemon",) - # Previously we would do the equivalent of adding ("--logfile", "tahoesvc.log"), - # but that redirects stdout/stderr which is often unhelpful, and the user can - # add that option explicitly if they want. + # Previously we would do the equivalent of adding ("--logfile", + # "tahoesvc.log"), but that redirects stdout/stderr which is often + # unhelpful, and the user can add that option explicitly if they want. return start(config, stdout, stderr) diff --git a/src/allmydata/test/test_cli.py b/src/allmydata/test/test_cli.py index 3caf7687..5d398149 100644 --- a/src/allmydata/test/test_cli.py +++ b/src/allmydata/test/test_cli.py @@ -561,6 +561,11 @@ class CLI(CLITestMixin, unittest.TestCase): class Help(unittest.TestCase): + def failUnlessInNormalized(self, x, y): + # helper function to deal with the --help output being wrapped to + # various widths, depending on the $COLUMNS environment variable + self.failUnlessIn(x.replace("\n", " "), y.replace("\n", " ")) + def test_get(self): help = str(cli.GetOptions()) self.failUnlessIn("[options] REMOTE_FILE LOCAL_FILE", help) @@ -586,22 +591,22 @@ class Help(unittest.TestCase): def test_mv(self): help = str(cli.MvOptions()) self.failUnlessIn("[options] FROM TO", help) - self.failUnlessIn("Use 'tahoe mv' to move files", help) + self.failUnlessInNormalized("Use 'tahoe mv' to move files", help) def test_cp(self): help = str(cli.CpOptions()) self.failUnlessIn("[options] FROM.. TO", help) - self.failUnlessIn("Use 'tahoe cp' to copy files", help) + self.failUnlessInNormalized("Use 'tahoe cp' to copy files", help) def test_ln(self): help = str(cli.LnOptions()) self.failUnlessIn("[options] FROM_LINK TO_LINK", help) - self.failUnlessIn("Use 'tahoe ln' to duplicate a link", help) + self.failUnlessInNormalized("Use 'tahoe ln' to duplicate a link", help) def test_mkdir(self): help = str(cli.MakeDirectoryOptions()) self.failUnlessIn("[options] [REMOTE_DIR]", help) - self.failUnlessIn("Create a new directory", help) + self.failUnlessInNormalized("Create a new directory", help) def test_backup(self): help = str(cli.BackupOptions()) @@ -670,13 +675,13 @@ class Help(unittest.TestCase): def test_debug_trial(self): help = str(debug.TrialOptions()) self.failUnlessIn(" [global-options] debug trial [options] [[file|package|module|TestCase|testmethod]...]", help) - self.failUnlessIn("The 'tahoe debug trial' command uses the correct imports", help) + self.failUnlessInNormalized("The 'tahoe debug trial' command uses the correct imports", help) def test_debug_flogtool(self): options = debug.FlogtoolOptions() help = str(options) self.failUnlessIn(" [global-options] debug flogtool ", help) - self.failUnlessIn("The 'tahoe debug flogtool' command uses the correct imports", help) + self.failUnlessInNormalized("The 'tahoe debug flogtool' command uses the correct imports", help) for (option, shortcut, oClass, desc) in options.subCommands: subhelp = str(oClass())