# This package only contains end-to-end tests for the style linter.

load(
    ":verilog_style_lint.bzl",
    "verilog_style_lint",
    "verilog_syntax",
)
load("//bazel:sh_test_with_runfiles_lib.bzl", "sh_test_with_runfiles_lib")

licenses(["notice"])

# Integration tests for different flags and configurations
# These tests help confirm that rules' cc_libraries are properly alwayslink-ed.
# TODO(fangism): re-organize this into structs instead of tuples,
#   and provide the group in a .bzl macro,
#   and define a test_suite for all of these.
_linter_test_configs = [
    # (rule-name, testdata/FILE.sv, default-enabled?)
    # See verilog/analysis/default_rules.h for default-enabled rules.
    ("always-comb", "always_comb_module", True),
    ("suggest-parentheses", "suggest_parentheses_example", True),
    ("always-comb-blocking", "always_comb_blocking", True),
    ("always-ff-non-blocking", "always_ff_non_blocking", True),
    ("case-missing-default", "case_missing_default", True),
    ("constraint-name-style", "constraint_name_style", True),
    ("disable-statement", "disable_statement", False),
    ("endif-comment", "endif_comment", False),
    ("enum-name-style", "enum_name_style", True),
    ("explicit-function-lifetime", "explicit_function_lifetime", True),
    ("explicit-function-task-parameter-type", "explicit_function_parameter_type", True),
    ("explicit-function-task-parameter-type", "explicit_task_parameter_type", True),
    ("explicit-parameter-storage-type", "explicit_parameter_storage_type", True),
    ("explicit-task-lifetime", "explicit_task_lifetime", True),
    ("forbid-consecutive-null-statements", "forbid_consecutive_null_statements", True),
    ("forbid-line-continuations", "forbid_line_continuations", True),
    ("generate-label", "generate_label_module", True),
    ("generate-label", "generate-label-module-body", True),  # uses parse directive
    ("generate-label-prefix", "generate_label_prefix", True),
    ("invalid-system-task-function", "psprintf", True),
    ("interface-name-style", "interface_type_name_style", True),
    ("legacy-genvar-declaration", "legacy_genvar_declaration", False),
    ("legacy-generate-region", "legacy_generate_region", False),
    ("macro-name-style", "macro_name_style", True),
    ("macro-string-concatenation", "macro_string_concatenation", False),
    ("mismatched-labels", "mismatched_labels", False),
    ("module-begin-block", "module_begin_block", True),
    ("module-filename", "module_filename", True),
    ("numeric-format-string-style", "numeric_format_string_style", False),
    ("package-filename", "package_filename_pkg", True),
    ("packed-dimensions-range-ordering", "packed_dimensions", True),
    ("parameter-name-style", "localparam_name_style", True),
    ("parameter-name-style=localparam_style:ALL_CAPS", "localparam_name_style_all_caps", False),
    ("parameter-name-style=localparam_style:CamelCase", "localparam_name_style_camel_case", True),
    ("parameter-name-style", "parameter_name_style", True),
    ("parameter-type-name-style", "parameter_type_name_style", False),
    ("parameter-type-name-style", "localparam_type_name_style", False),
    ("plusarg-assignment", "plusarg_assignment", True),
    ("port-name-suffix", "port_name_suffix", False),
    ("positive-meaning-parameter-name", "positive_meaning_parameter_name", True),
    ("proper-parameter-declaration", "proper_parameter_declaration", False),
    ("proper-parameter-declaration", "proper_localparam_declaration", False),
    ("module-parameter", "instance_parameters", True),
    ("module-port", "instance_ports", True),
    ("module-port", "instance-ports-module-body", True),  # uses parse directive
    ("signal-name-style", "signal_name_style", False),
    ("struct-union-name-style", "struct_name_style", True),
    ("struct-union-name-style", "union_name_style", True),
    ("v2001-generate-begin", "generate_begin_module", True),
    ("void-cast", "void-cast", True),
    ("undersized-binary-literal", "undersized_binary_literal", True),
    ("unpacked-dimensions-range-ordering", "unpacked_dimensions", True),
    ("forbidden-macro", "uvm_warning", True),
    ("create-object-name-match", "object_creation_name", True),
    ("posix-eof", "posix_eof", True),
    ("no-tabs", "tabs", True),
    ("line-length", "long_line", True),
    ("no-trailing-spaces", "trailing_spaces", True),
    ("forbid-defparam", "defparam_usage", True),
    ("typedef-enums", "typedef_enums", True),
    ("typedef-structs-unions", "typedef_structs", True),
    ("typedef-structs-unions", "typedef_unions", True),
    ("truncated-numeric-literal", "truncated_numeric_literal", True),
    ("one-module-per-file", "one_module_per_file", False),
    ("uvm-macro-semicolon", "uvm_macro_semicolon", False),
    ("banned-declared-name-patterns", "banned_declared_name_patterns", False),
]

[
    (
        # Verifies that with no lint rules, test case is syntactically valid.
        verilog_style_lint.test(
            name = testfilebase + "-syntax-test",
            srcs = ["testdata/{}.sv".format(testfilebase)],
            flags = ["--ruleset=none"],
        ),
        # Verifies that rule is available as part of the 'all' set.
        # This is only relevant for rules that are not testing specific
        # configurations.
        verilog_style_lint.test(
            name = testfilebase + "-allrules-test",
            srcs = ["testdata/{}.sv".format(testfilebase)],
            expect_fail = True,
            flags = ["--ruleset=all"],
        ) if "=" not in rule else (),  # Only useful when not configured
        # Verifies that the rule is/is not enabled in the 'default' set.
        verilog_style_lint.test(
            name = testfilebase + "-defaultrules-test",
            srcs = ["testdata/{}.sv".format(testfilebase)],
            expect_fail = default,
        ),
        # Verifies that one specific rule alone fails this test case.
        verilog_style_lint.test(
            name = testfilebase + "-onerule-test",
            srcs = ["testdata/{}.sv".format(testfilebase)],
            expect_fail = True,
            flags = [
                "--ruleset=none",
                "--rules=" + rule,
            ],
        ),
        # Verifies that all rules *except* this one is lint clean.
        verilog_style_lint.test(
            name = testfilebase + "-minusrule-test",
            srcs = ["testdata/{}.sv".format(testfilebase)],
            flags = [
                "--ruleset=all",
                "--rules=-" + rule,  # exclude one rule
            ],
        ),
    )
    for rule, testfilebase, default in _linter_test_configs
]

# Modify a file with a known violation by inserting a waiver above the offending line.
genrule(
    name = "psprintf-waived-next-line",
    srcs = ["testdata/psprintf.sv"],
    outs = ["psprintf-waived-next-line.sv"],
    cmd = "sed -e '/psprintf/i\\\n  // verilog_lint: waive invalid-system-task-function\n' $< > $@",
)

# Modify a file with a known violation by inserting a waiver on the offending line.
genrule(
    name = "psprintf-waived-same-line",
    srcs = ["testdata/psprintf.sv"],
    outs = ["psprintf-waived-same-line.sv"],
    cmd = "sed -e '/psprintf/s|$$|  // verilog_lint: waive invalid-system-task-function|' $< > $@",
)

# Modify a file with a known violation by inserting a waiver range around the offending line.
genrule(
    name = "psprintf-waived-line-range",
    srcs = ["testdata/psprintf.sv"],
    outs = ["psprintf-waived-line-range.sv"],
    cmd = "sed " +
          "-e '/psprintf/i\\\n  // verilog_lint: waive-start invalid-system-task-function\n' " +
          "-e '/psprintf/a\\\n  // verilog_lint: waive-stop invalid-system-task-function\n' " +
          "$< > $@",
)

# Test that waiver works on one rule, one line, and line range.
[
    verilog_style_lint.test(
        name = "psprintf-waive-" + variant + "-test",
        srcs = [
            ":psprintf-waived-" + variant,
        ],
        flags = [
            "--ruleset=none",
            "--rules=invalid-system-task-function",
        ],
    )
    for variant in ("same-line", "next-line", "line-range")
]

# Modify a file with a known violation by inserting a waiver on the offending line.
genrule(
    name = "line-length-in-module-body-waived",
    srcs = ["testdata/line-length-in-module-body.sv"],
    outs = ["line-length-in-module-body-waived.sv"],
    cmd = "sed -e '$$s|$$|  // verilog_lint: waive line-length|' $< > $@",
)

# Test that one long line is caught.
verilog_style_lint.test(
    name = "line-length-in-module-body-fail-test",
    srcs = [
        "testdata/line-length-in-module-body.sv",
    ],
    expect_fail = True,
    flags = [
        "--ruleset=none",
        "--rules=line-length",
    ],
)

# Test that one long line is caught and waived.
verilog_style_lint.test(
    name = "line-length-in-module-body-waived-test",
    srcs = [
        ":line-length-in-module-body-waived",
    ],
    expect_fail = False,
    flags = [
        "--ruleset=none",
        "--rules=line-length",
    ],
)

# Verifies that lexer errors are properly rejected.
verilog_style_lint.test(
    name = "verilog_lint-lexer-fail-test",
    srcs = ["testdata/bad-id-lex.sv"],
    expect_fail = True,
)

verilog_syntax.test(
    name = "verilog_syntax-lexer-fail-test",
    srcs = ["testdata/bad-id-lex.sv"],
    expect_fail = True,
)

# SystemVerilog-parser based linter
cc_binary(
    name = "verible-verilog-lint",
    srcs = ["verilog_lint.cc"],
    visibility = ["//visibility:public"],
    deps = [
        "//common/analysis:violation_handler",
        "//common/util:enum_flags",
        "//common/util:file_util",
        "//common/util:init_command_line",
        "//common/util:logging",
        "//verilog/analysis:verilog_linter",
        "//verilog/analysis:verilog_linter_configuration",
        "@com_google_absl//absl/flags:flag",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
    ],
)

sh_test_with_runfiles_lib(
    name = "lint_tool_test",
    size = "small",
    srcs = ["lint_tool_test.sh"],
    args = ["$(location :verible-verilog-lint)"],
    data = [":verible-verilog-lint"],
    deps = [],
)
