MetaCredo.CheckCase (MetaCredo v0.1.0)

View Source

Test helpers for MetaCredo check tests.

Provides conveniences for building SourceFile fixtures from raw MetaAST, running checks, and asserting on issues.

Usage

use MetaCredo.CheckCase

test "detects issue" do
  issues = run_check(MyCheck, ast: some_ast)
  assert_issue(issues, message: ~r/some pattern/)
end

Summary

Functions

Asserts all issues belong to the given category.

Asserts that at least one issue matches the given criteria.

Asserts exactly n issues were found.

Asserts no issues were found.

Builds an assignment node.

Builds a function call node.

Builds a comment node.

Builds a container (module) node.

Builds an import node.

Builds a literal integer node.

Builds a literal string node.

Builds a literal symbol/atom node.

Builds a pattern_match (case) node.

Runs a check on a MetaAST and returns issues.

Builds a SourceFile from raw MetaAST.

Builds a tuple node.

Builds a variable node.

Functions

assert_all_category(issues, category)

Asserts all issues belong to the given category.

assert_issue(issues, criteria)

Asserts that at least one issue matches the given criteria.

Criteria

  • :message - String or Regex to match against message
  • :category - Expected category atom
  • :severity - Expected severity atom
  • :line_no - Expected line number
  • :trigger - Expected trigger string
  • :check - Expected check module

assert_issue_count(issues, n)

Asserts exactly n issues were found.

assert_no_issues(issues)

Asserts no issues were found.

assign(target, value, meta_extra \\ [])

Builds an assignment node.

binop(category, operator, left, right, meta_extra \\ [])

Builds a binary operation node.

block(statements, meta_extra \\ [])

Builds a block node.

call(name, args, meta_extra \\ [])

Builds a function call node.

comment(text, meta_extra \\ [])

Builds a comment node.

conditional(condition, then_branch, else_branch, meta_extra \\ [])

Builds a conditional node.

container(type, name, body, meta_extra \\ [])

Builds a container (module) node.

exception_handling(try_block, handlers, finally \\ nil, meta_extra \\ [])

Builds an exception_handling node.

function_def(name, params, body, meta_extra \\ [])

Builds a function_def node.

import_node(source, meta_extra \\ [])

Builds an import node.

literal_int(value, meta_extra \\ [])

Builds a literal integer node.

literal_string(value, meta_extra \\ [])

Builds a literal string node.

literal_symbol(value, meta_extra \\ [])

Builds a literal symbol/atom node.

match_arm(pattern, body, meta_extra \\ [])

Builds a match_arm node.

pattern_match(scrutinee, arms, meta_extra \\ [])

Builds a pattern_match (case) node.

run_check(check_module, opts)

Runs a check on a MetaAST and returns issues.

Options

  • :ast (required) - The MetaAST to analyze
  • :params - Check params (default: [])
  • :language - Language (default: :elixir)
  • :filename - Filename (default: "test.ex")
  • :source - Source text (default: "")

source_file_from_ast(ast, opts \\ [])

Builds a SourceFile from raw MetaAST.

Options

  • :language - Source language (default: :elixir)
  • :filename - Filename (default: "test.ex")
  • :source - Original source text (default: "")

tuple(elements, meta_extra \\ [])

Builds a tuple node.

var(name, meta_extra \\ [])

Builds a variable node.