Module: ArchUnit::Files::Assertion

Defined in:
lib/archunit/files/assertion/cycle_free.rb,
lib/archunit/files/assertion/matching_files.rb,
lib/archunit/files/assertion/depend_on_files.rb,
lib/archunit/files/assertion/custom_file_condition.rb,
lib/archunit/files/assertion/depend_on_external_modules.rb

Overview

Pure assertions over dependencies from project files to external modules.

Defined Under Namespace

Classes: CustomFileViolation, CycleViolation, ExternalModuleDependencyViolation, FileDependencyViolation, FilePatternViolation

Class Method Summary collapse

Class Method Details

.gather_custom_file_violations(file_infos, condition, message, is_negated:) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/archunit/files/assertion/custom_file_condition.rb', line 60

def gather_custom_file_violations(file_infos, condition, message, is_negated:)
  validate_custom_arguments(file_infos, condition, message, is_negated)

  file_infos.filter_map do |file_info|
    result = condition.call(file_info)
    unless [true, false].include?(result)
      raise ArgumentError, 'condition must return true or false'
    end
    next unless is_negated ? result : !result

    CustomFileViolation.new(file_info:, message:, is_negated:)
  end
end

.gather_cycle_violations(cycles) ⇒ Object

Raises:

  • (ArgumentError)


51
52
53
54
55
# File 'lib/archunit/files/assertion/cycle_free.rb', line 51

def gather_cycle_violations(cycles)
  raise ArgumentError, 'cycles must be an Array' unless cycles.is_a?(Array)

  cycles.map { |cycle| CycleViolation.new(cycle:) }
end

.gather_external_module_dependency_violations(edges, subject_filters, module_filters, is_negated:) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/archunit/files/assertion/depend_on_external_modules.rb', line 54

def gather_external_module_dependency_violations(
  edges, subject_filters, module_filters, is_negated:
)
  validate_external_dependency_arguments(
    edges, subject_filters, module_filters, is_negated
  )

  edges.filter_map do |edge|
    external_dependency_violation(
      edge, subject_filters, module_filters, is_negated
    )
  end
end

.gather_file_dependency_violations(edges, subject_filters, object_filters, is_negated:) ⇒ Object



54
55
56
57
58
59
60
61
62
# File 'lib/archunit/files/assertion/depend_on_files.rb', line 54

def gather_file_dependency_violations(
  edges, subject_filters, object_filters, is_negated:
)
  validate_dependency_arguments(edges, subject_filters, object_filters, is_negated)

  edges.filter_map do |edge|
    dependency_violation(edge, subject_filters, object_filters, is_negated)
  end
end

.gather_matching_file_violations(nodes, check_filter, is_negated:) ⇒ Object



62
63
64
65
66
67
68
69
70
71
# File 'lib/archunit/files/assertion/matching_files.rb', line 62

def gather_matching_file_violations(nodes, check_filter, is_negated:)
  validate_matching_arguments(nodes, check_filter, is_negated)

  nodes.filter_map do |node|
    matches = Common::PatternMatching.matches_pattern?(node.label, check_filter)
    next unless is_negated ? matches : !matches

    FilePatternViolation.new(check_filter:, projected_node: node, is_negated:)
  end
end