From f6f8256b3551939234d7617bc9e7b5ca6593e1bd Mon Sep 17 00:00:00 2001 From: Brian Warner <warner@lothar.com> Date: Sat, 24 Apr 2010 16:30:03 -0700 Subject: [PATCH] "tahoe webopen": add --info flag, to get ?t=info Also fix some trailing whitespace. --- src/allmydata/scripts/cli.py | 6 ++++- src/allmydata/scripts/tahoe_webopen.py | 2 ++ src/allmydata/test/test_cli.py | 36 ++++++++++++++------------ 3 files changed, 27 insertions(+), 17 deletions(-) diff --git a/src/allmydata/scripts/cli.py b/src/allmydata/scripts/cli.py index 890ece56..f02d2c35 100644 --- a/src/allmydata/scripts/cli.py +++ b/src/allmydata/scripts/cli.py @@ -333,6 +333,9 @@ class BackupOptions(VDriveOptions): TO/Archives/(new) TO/Latest'.""" class WebopenOptions(VDriveOptions): + optFlags = [ + ("info", "i", "Open the t=info page for the file"), + ] def parseArgs(self, where=''): self.where = where @@ -340,7 +343,8 @@ class WebopenOptions(VDriveOptions): return "%s webopen [ALIAS:PATH]" % (os.path.basename(sys.argv[0]),) longdesc = """Open a web browser to the contents of some file or - directory on the grid.""" + directory on the grid. When run without arguments, open the Welcome + page.""" class ManifestOptions(VDriveOptions): optFlags = [ diff --git a/src/allmydata/scripts/tahoe_webopen.py b/src/allmydata/scripts/tahoe_webopen.py index 37d157b0..891d8db0 100644 --- a/src/allmydata/scripts/tahoe_webopen.py +++ b/src/allmydata/scripts/tahoe_webopen.py @@ -22,6 +22,8 @@ def webopen(options, opener=None): url += "/" + escape_path(path) else: url = nodeurl + if options['info']: + url += "?t=info" if not opener: import webbrowser opener = webbrowser.open diff --git a/src/allmydata/test/test_cli.py b/src/allmydata/test/test_cli.py index c6d27c27..3503b1bc 100644 --- a/src/allmydata/test/test_cli.py +++ b/src/allmydata/test/test_cli.py @@ -11,8 +11,8 @@ from allmydata.util import fileutil, hashutil, base32 from allmydata import uri from allmydata.immutable import upload -# Test that the scripts can be imported -- although the actual tests of their functionality are -# done by invoking them in a subprocess. +# Test that the scripts can be imported -- although the actual tests of their +# functionality are done by invoking them in a subprocess. from allmydata.scripts import tahoe_ls, tahoe_get, tahoe_put, tahoe_rm, tahoe_cp _hush_pyflakes = [tahoe_ls, tahoe_get, tahoe_put, tahoe_rm, tahoe_cp] @@ -530,8 +530,13 @@ class CreateAlias(GridTestMixin, CLITestMixin, unittest.TestCase): self._test_webopen(["tahoe:"], self.tahoe_url) self._test_webopen(["tahoe:/"], self.tahoe_url) self._test_webopen(["tahoe:subdir"], self.tahoe_subdir_url) + self._test_webopen(["-i", "tahoe:subdir"], + self.tahoe_subdir_url+"?t=info") self._test_webopen(["tahoe:subdir/"], self.tahoe_subdir_url + '/') - self._test_webopen(["tahoe:subdir/file"], self.tahoe_subdir_url + '/file') + self._test_webopen(["tahoe:subdir/file"], + self.tahoe_subdir_url + '/file') + self._test_webopen(["--info", "tahoe:subdir/file"], + self.tahoe_subdir_url + '/file?t=info') # if "file" is indeed a file, then the url produced by webopen in # this case is disallowed by the webui. but by design, webopen # passes through the mistake from the user to the resultant @@ -615,7 +620,7 @@ class Ln(GridTestMixin, CLITestMixin, unittest.TestCase): return d def test_ln_with_nonexistent_alias(self): - # If invoked with aliases that don't exist, 'tahoe ln' should + # If invoked with aliases that don't exist, 'tahoe ln' should # output a useful error message and not a stack trace. self.basedir = "cli/Ln/ln_with_nonexistent_alias" self.set_up_grid() @@ -1072,7 +1077,7 @@ class Mv(GridTestMixin, CLITestMixin, unittest.TestCase): return d def test_mv_without_alias(self): - # doing 'tahoe mv' without explicitly specifying an alias or + # doing 'tahoe mv' without explicitly specifying an alias or # creating the default 'tahoe' alias should fail with a useful # error message. self.basedir = "cli/Mv/mv_without_alias" @@ -1100,7 +1105,7 @@ class Mv(GridTestMixin, CLITestMixin, unittest.TestCase): return d def test_mv_with_nonexistent_alias(self): - # doing 'tahoe mv' with an alias that doesn't exist should fail + # doing 'tahoe mv' with an alias that doesn't exist should fail # with an informative error message. self.basedir = "cli/Mv/mv_with_nonexistent_alias" self.set_up_grid() @@ -1148,8 +1153,8 @@ class Cp(GridTestMixin, CLITestMixin, unittest.TestCase): fileutil.write(fn2, DATA2) # Bug #534 - # Assure that uploading a file whose name contains unicode character doesn't - # prevent further uploads in the same directory + # Assure that uploading a file whose name contains unicode character + # doesn't prevent further uploads in the same directory d = self.do_cli("create-alias", "tahoe") d.addCallback(lambda res: self.do_cli("cp", fn1, "tahoe:")) d.addCallback(lambda res: self.do_cli("cp", fn2, "tahoe:")) @@ -1258,9 +1263,9 @@ class Cp(GridTestMixin, CLITestMixin, unittest.TestCase): self.failUnlessEqual(rc, 1) self.failUnlessIn("error:", err) d.addCallback(_check) - # 'tahoe cp' actually processes the target argument first, so we - # need to check to make sure that validation extends to the - # source argument. + # 'tahoe cp' actually processes the target argument first, so we need + # to check to make sure that validation extends to the source + # argument. d.addCallback(lambda ign: self.do_cli("create-alias", "tahoe")) d.addCallback(lambda ign: self.do_cli("cp", "fake:file1", "tahoe:file2")) @@ -2109,9 +2114,8 @@ class Manifest(GridTestMixin, CLITestMixin, unittest.TestCase): class Mkdir(GridTestMixin, CLITestMixin, unittest.TestCase): def test_mkdir_with_nonexistent_alias(self): - # when invoked with an alias that doesn't exist, 'tahoe mkdir' - # should output a sensible error message rather than a stack - # trace. + # when invoked with an alias that doesn't exist, 'tahoe mkdir' should + # output a sensible error message rather than a stack trace. self.basedir = "cli/Mkdir/mkdir_with_nonexistent_alias" self.set_up_grid() d = self.do_cli("mkdir", "havasu:") @@ -2191,7 +2195,7 @@ class Stats(GridTestMixin, CLITestMixin, unittest.TestCase): return d def test_stats_with_nonexistent_alias(self): - # when invoked with an explicit alias that doesn't exist, + # when invoked with an explicit alias that doesn't exist, # 'tahoe stats' should output a useful error message. self.basedir = "cli/Stats/stats_with_nonexistent_alias" self.set_up_grid() @@ -2206,7 +2210,7 @@ class Stats(GridTestMixin, CLITestMixin, unittest.TestCase): class Webopen(GridTestMixin, CLITestMixin, unittest.TestCase): def test_webopen_with_nonexistent_alias(self): # when invoked with an alias that doesn't exist, 'tahoe webopen' - # should output an informative error message instead of a stack + # should output an informative error message instead of a stack # trace. self.basedir = "cli/Webopen/webopen_with_nonexistent_alias" self.set_up_grid() -- 2.45.2