summaryrefslogtreecommitdiffstats
path: root/tests/test_subcmds.py
diff options
context:
space:
mode:
authorGavin Mak <gavinmak@google.com>2023-03-11 06:46:20 +0000
committerLUCI <gerrit-scoped@luci-project-accounts.iam.gserviceaccount.com>2023-03-22 17:46:28 +0000
commitea2e330e43c182dc16b0111ebc69ee5a71ee4ce1 (patch)
treedc33ba0e56825b3e007d0589891756724725a465 /tests/test_subcmds.py
parent1604cf255f8c1786a23388db6d5277ac7949a24a (diff)
downloadgit-repo-ea2e330e43c182dc16b0111ebc69ee5a71ee4ce1.tar.gz
Format codebase with black and check formatting in CQ
Apply rules set by https://gerrit-review.googlesource.com/c/git-repo/+/362954/ across the codebase and fix any lingering errors caught by flake8. Also check black formatting in run_tests (and CQ). Bug: b/267675342 Change-Id: I972d77649dac351150dcfeb1cd1ad0ea2efc1956 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/363474 Reviewed-by: Mike Frysinger <vapier@google.com> Tested-by: Gavin Mak <gavinmak@google.com> Commit-Queue: Gavin Mak <gavinmak@google.com>
Diffstat (limited to 'tests/test_subcmds.py')
-rw-r--r--tests/test_subcmds.py86
1 files changed, 45 insertions, 41 deletions
diff --git a/tests/test_subcmds.py b/tests/test_subcmds.py
index bc53051a..73b66e3f 100644
--- a/tests/test_subcmds.py
+++ b/tests/test_subcmds.py
@@ -21,53 +21,57 @@ import subcmds
21 21
22 22
23class AllCommands(unittest.TestCase): 23class AllCommands(unittest.TestCase):
24 """Check registered all_commands.""" 24 """Check registered all_commands."""
25 25
26 def test_required_basic(self): 26 def test_required_basic(self):
27 """Basic checking of registered commands.""" 27 """Basic checking of registered commands."""
28 # NB: We don't test all subcommands as we want to avoid "change detection" 28 # NB: We don't test all subcommands as we want to avoid "change
29 # tests, so we just look for the most common/important ones here that are 29 # detection" tests, so we just look for the most common/important ones
30 # unlikely to ever change. 30 # here that are unlikely to ever change.
31 for cmd in {'cherry-pick', 'help', 'init', 'start', 'sync', 'upload'}: 31 for cmd in {"cherry-pick", "help", "init", "start", "sync", "upload"}:
32 self.assertIn(cmd, subcmds.all_commands) 32 self.assertIn(cmd, subcmds.all_commands)
33 33
34 def test_naming(self): 34 def test_naming(self):
35 """Verify we don't add things that we shouldn't.""" 35 """Verify we don't add things that we shouldn't."""
36 for cmd in subcmds.all_commands: 36 for cmd in subcmds.all_commands:
37 # Reject filename suffixes like "help.py". 37 # Reject filename suffixes like "help.py".
38 self.assertNotIn('.', cmd) 38 self.assertNotIn(".", cmd)
39 39
40 # Make sure all '_' were converted to '-'. 40 # Make sure all '_' were converted to '-'.
41 self.assertNotIn('_', cmd) 41 self.assertNotIn("_", cmd)
42 42
43 # Reject internal python paths like "__init__". 43 # Reject internal python paths like "__init__".
44 self.assertFalse(cmd.startswith('__')) 44 self.assertFalse(cmd.startswith("__"))
45 45
46 def test_help_desc_style(self): 46 def test_help_desc_style(self):
47 """Force some consistency in option descriptions. 47 """Force some consistency in option descriptions.
48 48
49 Python's optparse & argparse has a few default options like --help. Their 49 Python's optparse & argparse has a few default options like --help.
50 option description text uses lowercase sentence fragments, so enforce our 50 Their option description text uses lowercase sentence fragments, so
51 options follow the same style so UI is consistent. 51 enforce our options follow the same style so UI is consistent.
52 52
53 We enforce: 53 We enforce:
54 * Text starts with lowercase. 54 * Text starts with lowercase.
55 * Text doesn't end with period. 55 * Text doesn't end with period.
56 """ 56 """
57 for name, cls in subcmds.all_commands.items(): 57 for name, cls in subcmds.all_commands.items():
58 cmd = cls() 58 cmd = cls()
59 parser = cmd.OptionParser 59 parser = cmd.OptionParser
60 for option in parser.option_list: 60 for option in parser.option_list:
61 if option.help == optparse.SUPPRESS_HELP: 61 if option.help == optparse.SUPPRESS_HELP:
62 continue 62 continue
63 63
64 c = option.help[0] 64 c = option.help[0]
65 self.assertEqual( 65 self.assertEqual(
66 c.lower(), c, 66 c.lower(),
67 msg=f'subcmds/{name}.py: {option.get_opt_string()}: help text ' 67 c,
68 f'should start with lowercase: "{option.help}"') 68 msg=f"subcmds/{name}.py: {option.get_opt_string()}: "
69 f'help text should start with lowercase: "{option.help}"',
70 )
69 71
70 self.assertNotEqual( 72 self.assertNotEqual(
71 option.help[-1], '.', 73 option.help[-1],
72 msg=f'subcmds/{name}.py: {option.get_opt_string()}: help text ' 74 ".",
73 f'should not end in a period: "{option.help}"') 75 msg=f"subcmds/{name}.py: {option.get_opt_string()}: "
76 f'help text should not end in a period: "{option.help}"',
77 )