From 0578ebf61a6269e4045153c7d618baebaf00d869 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Thu, 27 Aug 2020 01:50:12 -0400 Subject: init: reject unknown args If you pass args to `repo init` when first creating a checkout, the repo launcher throws an error. But the init subcommand that runs in an existing checkout silently ignores them. Throw a proper error. Change-Id: I433bfcc73902d25f6b6a2974e77f6a977a75ed16 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/279696 Reviewed-by: Jonathan Nieder Tested-by: Mike Frysinger --- tests/test_subcmds_init.py | 49 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 tests/test_subcmds_init.py (limited to 'tests/test_subcmds_init.py') diff --git a/tests/test_subcmds_init.py b/tests/test_subcmds_init.py new file mode 100644 index 00000000..3a5ca3c2 --- /dev/null +++ b/tests/test_subcmds_init.py @@ -0,0 +1,49 @@ +# Copyright (C) 2020 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Unittests for the subcmds/init.py module.""" + +import unittest + +from subcmds import init + + +class InitCommand(unittest.TestCase): + """Check registered all_commands.""" + + def setUp(self): + self.cmd = init.Init() + + def test_cli_parser_good(self): + """Check valid command line options.""" + ARGV = ( + [], + ) + for argv in ARGV: + opts, args = self.cmd.OptionParser.parse_args(argv) + self.cmd.ValidateOptions(opts, args) + + def test_cli_parser_bad(self): + """Check invalid command line options.""" + ARGV = ( + # Too many arguments. + ['asdf'], + + # Conflicting options. + ['--mirror', '--archive'], + ) + for argv in ARGV: + opts, args = self.cmd.OptionParser.parse_args(argv) + with self.assertRaises(SystemExit): + self.cmd.ValidateOptions(opts, args) -- cgit v1.2.3-54-g00ecf