From fcfec068cc344ba0b33e52ac060231dec8d4850e Mon Sep 17 00:00:00 2001 From: David Stainton Date: Mon, 19 Oct 2015 16:02:28 +0200 Subject: [PATCH] Teach magic-folder join to use argv_to_abspath - also we modify argv_to_abspath to through a usage error if the name starts with a '-' - add a test currently the tests fail --- src/allmydata/scripts/magic_folder_cli.py | 2 +- src/allmydata/test/test_cli_magic_folder.py | 15 +++++++++++++++ src/allmydata/util/encodingutil.py | 2 ++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/allmydata/scripts/magic_folder_cli.py b/src/allmydata/scripts/magic_folder_cli.py index 5356ce8b..0f45b1ab 100644 --- a/src/allmydata/scripts/magic_folder_cli.py +++ b/src/allmydata/scripts/magic_folder_cli.py @@ -22,7 +22,7 @@ class CreateOptions(BasedirOptions): raise usage.UsageError("An alias must end with a ':' character.") self.alias = alias[:-1] self.nickname = nickname - self.localdir = localdir + self.localdir = argv_to_abspath(str(localdir)) if self.nickname and not self.localdir: raise usage.UsageError("If NICKNAME is specified then LOCALDIR must also be specified.") node_url_file = os.path.join(self['node-directory'], "node.url") diff --git a/src/allmydata/test/test_cli_magic_folder.py b/src/allmydata/test/test_cli_magic_folder.py index 01fa6c2c..cdd7df9c 100644 --- a/src/allmydata/test/test_cli_magic_folder.py +++ b/src/allmydata/test/test_cli_magic_folder.py @@ -215,3 +215,18 @@ class CreateMagicFolder(MagicFolderCLITestMixin, unittest.TestCase): d.addCallback(lambda x: self.check_joined_config(0, self.upload_dircap)) d.addCallback(lambda x: self.check_config(0, self.local_dir)) return d + + def test_create_invite_join_failure(self): + self.basedir = "cli/MagicFolder/create-invite-join-failure" + self.set_up_grid() + self.local_dir = os.path.join(self.basedir, "magic") + self.local_dir = "-" + self.local_dir + d = self.do_cli("magic-folder", "create", u"magic:", u"Alice", self.local_dir) + def _done((rc,stdout,stderr)): + print "rc %s" % (rc,) + print "stdout %s" % (stdout,) + print "stderr %s" % (stderr,) + self.failUnless(rc == 1) + return (rc,stdout,stderr) + d.addCallback(_done) + return d diff --git a/src/allmydata/util/encodingutil.py b/src/allmydata/util/encodingutil.py index efd1e218..4eff033a 100644 --- a/src/allmydata/util/encodingutil.py +++ b/src/allmydata/util/encodingutil.py @@ -95,6 +95,8 @@ def argv_to_unicode(s): except UnicodeDecodeError: raise usage.UsageError("Argument %s cannot be decoded as %s." % (quote_output(s), io_encoding)) + if local_dir.startswith('-'): + raise usage.UsageError("Argument %s cannot start with a -." % (quote_output(s),)) def argv_to_abspath(s, **kwargs): """ -- 2.37.2