def test_md030_bad_spacing_ul_single_nested_double_2_1(): """ Test to make sure this rule does trigger with a document that contains nested unordered lists with two space after the marker, single-paragraph and nested double-paragraph lists. """ # Arrange scanner = MarkdownScanner() supplied_arguments = [ "--set", "plugins.md030.ul_single=$#2", "--set", "plugins.md030.ul_multi=$#1", "--strict-config", "--disable-rules", "md007", "scan", "test/resources/rules/md030/bad_spacing_ul_single_nested_double.md", ] expected_return_code = 1 expected_output = ( "test/resources/rules/md030/bad_spacing_ul_single_nested_double.md:1:1: " + "MD030: Spaces after list markers " + "[Expected: 1; Actual: 2] (list-marker-space)") expected_error = "" # Act execute_results = scanner.invoke_main(arguments=supplied_arguments) # Assert execute_results.assert_results(expected_output, expected_error, expected_return_code)
def test_md030_bad_configuration_ul_multi(): """ Test to verify that a configuration error is thrown when supplying the ul_multi value with a string that is not an integer. """ # Arrange scanner = MarkdownScanner() supplied_arguments = [ "--set", "plugins.md030.ul_multi=not-integer", "--strict-config", "scan", "test/resources/rules/md030/good_one_list.md", ] expected_return_code = 1 expected_output = "" expected_error = ( "BadPluginError encountered while configuring plugins:\n" + "The value for property 'plugins.md030.ul_multi' must be of type 'int'." ) # Act execute_results = scanner.invoke_main(arguments=supplied_arguments) # Assert execute_results.assert_results(expected_output, expected_error, expected_return_code)
def test_md030_bad_configuration_ul_single_zero(): """ Test to verify that a configuration error is thrown when supplying the ul_single value with an integer not greater than 0. """ # Arrange scanner = MarkdownScanner() supplied_arguments = [ "--set", "plugins.md030.ul_single=$#0", "--strict-config", "scan", "test/resources/rules/md030/good_one_list.md", ] expected_return_code = 1 expected_output = "" expected_error = ( "BadPluginError encountered while configuring plugins:\n" + "The value for property 'plugins.md030.ul_single' is not valid: Allowable values are any integer greater than 0." ) # Act execute_results = scanner.invoke_main(arguments=supplied_arguments) # Assert execute_results.assert_results(expected_output, expected_error, expected_return_code)
def test_md030_bad_spacing_ul_double(): """ Test to make sure this rule does trigger with a document that contains single-paragraph unordered lists with two space after the marker. """ # Arrange scanner = MarkdownScanner() supplied_arguments = [ "--disable-rules", "md007", "--stack-trace", "scan", "test/resources/rules/md030/bad_spacing_ul_double.md", ] expected_return_code = 1 expected_output = ( "test/resources/rules/md030/bad_spacing_ul_double.md:1:1: " + "MD030: Spaces after list markers " + "[Expected: 1; Actual: 2] (list-marker-space)\n" + "test/resources/rules/md030/bad_spacing_ul_double.md:2:1: " + "MD030: Spaces after list markers " + "[Expected: 1; Actual: 2] (list-marker-space)\n" + "test/resources/rules/md030/bad_spacing_ul_double.md:5:1: " + "MD030: Spaces after list markers " + "[Expected: 1; Actual: 2] (list-marker-space)") expected_error = "" # Act execute_results = scanner.invoke_main(arguments=supplied_arguments) # Assert execute_results.assert_results(expected_output, expected_error, expected_return_code)
def test_md030_bad_spacing_ul_single_config_2_1(): """ Test to make sure this rule does not trigger with a document that contains unordered lists with two spaces after the marker, and configuration to make it okay. ul_multi does not come into effect as all list items have a single paragraph. """ # Arrange scanner = MarkdownScanner() supplied_arguments = [ "--set", "plugins.md030.ul_single=$#2", "--set", "plugins.md030.ul_multi=$#1", "--strict-config", "--stack-trace", "scan", "test/resources/rules/md030/bad_spacing_ul_single.md", ] expected_return_code = 0 expected_output = "" expected_error = "" # Act execute_results = scanner.invoke_main(arguments=supplied_arguments) # Assert execute_results.assert_results(expected_output, expected_error, expected_return_code)
def test_md030_good_spacing_ul_double_config_1_2(): """ Test to make sure this rule does trigger with a document that contains single-paragraph unordered lists with one space after the marker, and configuration. """ # Arrange scanner = MarkdownScanner() supplied_arguments = [ "--set", "plugins.md030.ul_single=$#1", "--set", "plugins.md030.ul_multi=$#2", "--strict-config", "scan", "test/resources/rules/md030/good_spacing_ul_double.md", ] expected_return_code = 1 expected_output = ( "test/resources/rules/md030/good_spacing_ul_double.md:2:1: " + "MD030: Spaces after list markers " + "[Expected: 2; Actual: 1] (list-marker-space)") expected_error = "" # Act execute_results = scanner.invoke_main(arguments=supplied_arguments) # Assert execute_results.assert_results(expected_output, expected_error, expected_return_code)
def test_md001_bad_configuration_enabled(): """ Test to verify that enabling front matter with text "True" fails. """ # Arrange scanner = MarkdownScanner() supplied_arguments = [ "--strict-config", "--set", "extensions.front-matter.enabled=True", "scan", "test/resources/rules/md001/front_matter_with_title.md", ] expected_return_code = 1 expected_output = "" expected_error = """Configuration error ValueError encountered while initializing extensions: The value for property 'extensions.front-matter.enabled' must be of type 'bool'.""" # Act execute_results = scanner.invoke_main(arguments=supplied_arguments) # Assert execute_results.assert_results(expected_output, expected_error, expected_return_code)
def test_md001_bad_configuration_front_matter_title(): """ Test to verify that enabling front matter title with number "1" fails. """ # Arrange scanner = MarkdownScanner() supplied_arguments = [ "--strict-config", "--set", "extensions.front-matter.enabled=$!True", "--set", "plugins.md001.front_matter_title=$#1", "scan", "test/resources/rules/md001/proper_atx_heading_incrementing.md", ] expected_return_code = 1 expected_output = "" expected_error = ( "BadPluginError encountered while configuring plugins:\n" + "The value for property 'plugins.md001.front_matter_title' must be of type 'str'." ) # Act execute_results = scanner.invoke_main(arguments=supplied_arguments) # Assert execute_results.assert_results(expected_output, expected_error, expected_return_code)
def test_md001_front_matter_with_alternate_title(): """ Variation of test_md001_front_matter_with_title using configuration to specify an alternate title. """ # Arrange scanner = MarkdownScanner() supplied_arguments = [ "--set", "extensions.front-matter.enabled=$!True", "--set", "plugins.md001.front_matter_title=Subject", "scan", "test/resources/rules/md001/front_matter_with_alternate_title.md", ] expected_return_code = 1 expected_output = "test/resources/rules/md001/front_matter_with_alternate_title.md:5:1: MD001: Heading levels should only increment by one level at a time. [Expected: h2; Actual: h3] (heading-increment,header-increment)\n" expected_error = "" # Act execute_results = scanner.invoke_main(arguments=supplied_arguments) # Assert execute_results.assert_results(expected_output, expected_error, expected_return_code)
def test_md001_front_matter_with_title(): """ Test to make sure the rule does trigger with a document with a front-matter element with a title and the front matter extension enabled, and a following Atx Heading of level 3. """ # Arrange scanner = MarkdownScanner() supplied_arguments = [ "--set", "extensions.front-matter.enabled=$!True", "scan", "test/resources/rules/md001/front_matter_with_title.md", ] expected_return_code = 1 expected_output = "test/resources/rules/md001/front_matter_with_title.md:5:1: MD001: Heading levels should only increment by one level at a time. [Expected: h2; Actual: h3] (heading-increment,header-increment)\n" expected_error = "" # Act execute_results = scanner.invoke_main(arguments=supplied_arguments) # Assert execute_results.assert_results(expected_output, expected_error, expected_return_code)
def test_md001_front_matter_with_no_title(): """ Test to make sure the rule does not trigger with a document with a front-matter element with no title and the front matter extension enabled, and a following Atx Heading of level 3. """ # Arrange scanner = MarkdownScanner() supplied_arguments = [ "--set", "extensions.front-matter.enabled=$!True", "scan", "test/resources/rules/md001/front_matter_with_no_title.md", ] expected_return_code = 0 expected_output = "" expected_error = "" # Act execute_results = scanner.invoke_main(arguments=supplied_arguments) # Assert execute_results.assert_results(expected_output, expected_error, expected_return_code)
def test_md001_bad_improper_setext_heading_incrementing(): """ Test to make sure the rule does trigger with a document with only SetExt Headings (and Atx Headings after level 2), that when they increase, only increase by 2. """ # Arrange scanner = MarkdownScanner() supplied_arguments = [ "--disable-rules", "MD003", "scan", "test/resources/rules/md001/improper_setext_heading_incrementing.md", ] expected_return_code = 1 expected_output = ( "test/resources/rules/md001/improper_setext_heading_incrementing.md:4:1: " + "MD001: Heading levels should only increment by one level at a time. " + "[Expected: h3; Actual: h4] (heading-increment,header-increment)\n") expected_error = "" # Act execute_results = scanner.invoke_main(arguments=supplied_arguments) # Assert execute_results.assert_results(expected_output, expected_error, expected_return_code)
def test_md001_good_proper_setext_heading_incrementing(): """ Test to make sure the rule doesn't trigger with a document with only SetExt Headings, that when they increase, only increase by 1. Note that after the first 2 headings, it switches over to Atx Headings. """ # Arrange scanner = MarkdownScanner() supplied_arguments = [ "--disable-rules", "MD003", "scan", "test/resources/rules/md001/proper_setext_heading_incrementing.md", ] expected_return_code = 0 expected_output = "" expected_error = "" # Act execute_results = scanner.invoke_main(arguments=supplied_arguments) # Assert execute_results.assert_results(expected_output, expected_error, expected_return_code)