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)
Esempio n. 7
0
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)
Esempio n. 8
0
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)
Esempio n. 9
0
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)
Esempio n. 10
0
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)
Esempio n. 11
0
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)
Esempio n. 12
0
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)
Esempio n. 13
0
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)