Module: ArchUnit::Testing

Defined in:
lib/archunit/testing.rb,
lib/archunit/testing/color_utils.rb,
lib/archunit/testing/test_result.rb,
lib/archunit/testing/assert_passes.rb,
lib/archunit/testing/rspec_adapter.rb,
lib/archunit/testing/result_factory.rb,
lib/archunit/testing/test_violation.rb,
lib/archunit/testing/minitest_adapter.rb,
lib/archunit/testing/assertion_failure.rb,
lib/archunit/testing/violation_factory.rb,
lib/archunit/testing/layer_violation_formatter.rb,
lib/archunit/testing/slice_violation_formatter.rb,
lib/archunit/testing/metric_violation_formatter.rb

Overview

Violation presentation and test-framework integration.

Defined Under Namespace

Modules: LayerViolationFormatter, MetricViolationFormatter, MinitestAdapter, MinitestAssertions, RSpecAdapter, RSpecMatchers, SliceViolationFormatter Classes: AssertionFailure, ColorUtils, RSpecPassMatcher, ResultFactory, TestResult, TestViolation, ViolationFactory

Class Method Summary collapse

Class Method Details

.assert_passes(rule, options = nil) ⇒ nil

Raises AssertionFailure when a rule returns violations.

Returns:

  • (nil)

Raises:



15
16
17
18
19
20
# File 'lib/archunit/testing/assert_passes.rb', line 15

def assert_passes(rule, options = nil)
  result = result_for(rule, options)
  return if result.passed?

  raise AssertionFailure, result
end

.format_violations(violations, color: nil) ⇒ String

Formats structured violations for a terminal or test failure.

Returns:

  • (String)


19
20
21
# File 'lib/archunit/testing.rb', line 19

def format_violations(violations, color: nil)
  ResultFactory.from_violations(violations, color:).message
end

.result_for(rule, options = nil, expected_to_pass: true) ⇒ TestResult

Converts a rule check into a framework-neutral TestResult.

Returns:



25
26
27
28
29
30
31
32
# File 'lib/archunit/testing.rb', line 25

def result_for(rule, options = nil, expected_to_pass: true)
  unless rule.is_a?(Common::FluentApi::Checkable)
    raise ArgumentError, 'rule must implement Checkable'
  end

  violations = rule.check(options)
  ResultFactory.from_violations(violations, expected_to_pass:, rationale: rule.rationale)
end