summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xswiftclient/shell.py3
-rw-r--r--tests/unit/test_shell.py23
2 files changed, 26 insertions, 0 deletions
diff --git a/swiftclient/shell.py b/swiftclient/shell.py
index 29b3457..4438e9d 100755
--- a/swiftclient/shell.py
+++ b/swiftclient/shell.py
@@ -763,6 +763,9 @@ def st_upload(parser, args, output_manager):
return
options.segment_size = str((1024 ** size_mod) * multiplier)
+ if int(options.segment_size) <= 0:
+ output_manager.error("segment-size should be positive")
+ return
_opts = vars(options)
_opts['object_uu_threads'] = options.object_threads
diff --git a/tests/unit/test_shell.py b/tests/unit/test_shell.py
index 98cef85..4ab9ad7 100644
--- a/tests/unit/test_shell.py
+++ b/tests/unit/test_shell.py
@@ -897,6 +897,29 @@ class TestShell(unittest.TestCase):
swiftclient.shell.main(argv)
self.assertEquals(output.err, "Invalid segment size\n")
+ def test_negative_upload_segment_size(self):
+ with CaptureOutput() as output:
+ with ExpectedException(SystemExit):
+ argv = ["", "upload", "-S", "-40", "container", "object"]
+ swiftclient.shell.main(argv)
+ self.assertEquals(output.err, "segment-size should be positive\n")
+ output.clear()
+ with ExpectedException(SystemExit):
+ argv = ["", "upload", "-S", "-40K", "container", "object"]
+ swiftclient.shell.main(argv)
+ self.assertEquals(output.err, "segment-size should be positive\n")
+ output.clear()
+ with ExpectedException(SystemExit):
+ argv = ["", "upload", "-S", "-40M", "container", "object"]
+ swiftclient.shell.main(argv)
+ self.assertEquals(output.err, "segment-size should be positive\n")
+ output.clear()
+ with ExpectedException(SystemExit):
+ argv = ["", "upload", "-S", "-40G", "container", "object"]
+ swiftclient.shell.main(argv)
+ self.assertEquals(output.err, "segment-size should be positive\n")
+ output.clear()
+
class TestSubcommandHelp(unittest.TestCase):