diff options
-rwxr-xr-x | swiftclient/shell.py | 3 | ||||
-rw-r--r-- | tests/unit/test_shell.py | 23 |
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): |