Author: David Spickett Date: 2022-05-03T13:40:14Z New Revision: ca0b41665978d5efd8482188a0541342cb298031
URL: https://github.com/llvm/llvm-project/commit/ca0b41665978d5efd8482188a0541342cb298031 DIFF: https://github.com/llvm/llvm-project/commit/ca0b41665978d5efd8482188a0541342cb298031.diff LOG: [lldb][NFC] Add more tests for GenerateOptionsUsage This adds a few targeted tests to make sure that when refactoring this function later I don't break these properties. Some are tested in passing elsewhere but this makes it more obvious what went wrong when it fails. This doesn't cover everything the function does, I couldn't find any examples that would exercise some of the code. Reviewed By: jingham Differential Revision: https://reviews.llvm.org/D123500 Added: Modified: lldb/test/API/commands/help/TestHelp.py Removed: ################################################################################ diff --git a/lldb/test/API/commands/help/TestHelp.py b/lldb/test/API/commands/help/TestHelp.py index 5bd85ddcf7062..49f83411413a9 100644 --- a/lldb/test/API/commands/help/TestHelp.py +++ b/lldb/test/API/commands/help/TestHelp.py @@ -243,3 +243,63 @@ def test_help_option_group_format_options_usage(self): "-f <format> ( --format <format> )", "The format to use for each of the value to be written.", "-s <byte-size> ( --size <byte-size> )", "The size in bytes to write from input file or each value."]) + @no_debug_info_test + def test_help_shows_optional_short_options(self): + """Test that optional short options are printed and that they are in + alphabetical order with upper case options first.""" + self.expect("help memory read", + substrs=["memory read [-br]", "memory read [-AFLORTr]"]) + self.expect("help target modules lookup", + substrs=["target modules lookup [-Airv]"]) + + @no_debug_info_test + def test_help_shows_command_options_usage(self): + """Test that we start the usage section with a specific line.""" + self.expect("help memory read", substrs=["Command Options Usage:\n memory read"]) + + @no_debug_info_test + def test_help_detailed_information_spacing(self): + """Test that we put a break between the usage and the options help lines, + and between the options themselves.""" + self.expect("help memory read", substrs=[ + "[<address-expression>]\n\n --show-tags", + # Starts with the end of the show-tags line + "output).\n\n -A"]) + + @no_debug_info_test + def test_help_detailed_information_ordering(self): + """Test that we order options alphabetically, upper case first.""" + # You could test this with a simple regex like: + # <upper case>.*<later upper case>.*<lower case>.*<later lower case> + # Except that that could pass sometimes even with shuffled output. + # This makes sure that doesn't happen. + + self.runCmd("help memory read") + got = self.res.GetOutput() + _, options_lines = got.split("Command Options Usage:") + options_lines = options_lines.lstrip().splitlines() + + # Skip over "memory read [-xyz] lines. + while("memory read" in options_lines[0]): + options_lines.pop(0) + # Plus the newline after that. + options_lines.pop(0) + + short_options = [] + for line in options_lines: + # Ignore line breaks and descriptions. + # (not stripping the line here in case some line of the descriptions + # happens to start with "-") + if not line or not line.startswith(" -"): + continue + # This apears at the end after the options. + if "This command takes options and free form arguments." in line: + break + line = line.strip() + # The order of -- only options is not enforced so ignore their position. + if not line.startswith("--"): + # Save its short char name. + short_options.append(line[1]) + + self.assertEqual(sorted(short_options), short_options, + "Short option help displayed in an incorrect order!") _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits