Module: Henitai::ConfigurationValidator::Rules
- Defined in:
- lib/henitai/configuration_validator/rules.rb
Overview
Class Method Summary collapse
- .configuration_error(message) ⇒ Object
- .ensure_hash!(value, path) ⇒ Object
- .key_path(path, key) ⇒ Object
- .validate_all_logs(raw) ⇒ Object
- .validate_coverage_criteria(raw) ⇒ Object
- .validate_dashboard(raw) ⇒ Object
- .validate_excludes(raw) ⇒ Object
- .validate_includes(raw) ⇒ Object
- .validate_integration(raw) ⇒ Object
- .validate_jobs(raw) ⇒ Object
- .validate_mutation(raw) ⇒ Object
- .validate_mutation_filters(value) ⇒ Object
- .validate_mutation_limits(value) ⇒ Object
- .validate_reporters(raw) ⇒ Object
- .validate_reports_dir(raw) ⇒ Object
- .validate_sampling(value) ⇒ Object
- .validate_thresholds(raw) ⇒ Object
- .validate_top_level_keys(raw) ⇒ Object
- .warn_unknown_keys(raw, allowed_keys, path = nil) ⇒ Object
Class Method Details
.configuration_error(message) ⇒ Object
138 139 140 |
# File 'lib/henitai/configuration_validator/rules.rb', line 138 def configuration_error() raise Henitai::ConfigurationError, end |
.ensure_hash!(value, path) ⇒ Object
132 133 134 135 136 |
# File 'lib/henitai/configuration_validator/rules.rb', line 132 def ensure_hash!(value, path) return if value.is_a?(Hash) configuration_error("Invalid configuration value for #{path}: expected Hash, got #{value.class}") end |
.key_path(path, key) ⇒ Object
128 129 130 |
# File 'lib/henitai/configuration_validator/rules.rb', line 128 def key_path(path, key) path ? "#{path}.#{key}" : key.to_s end |
.validate_all_logs(raw) ⇒ Object
53 54 55 56 57 58 |
# File 'lib/henitai/configuration_validator/rules.rb', line 53 def validate_all_logs(raw) value = raw[:all_logs] return if value.nil? Scalars.validate_boolean(value, "all_logs") end |
.validate_coverage_criteria(raw) ⇒ Object
92 93 94 95 96 97 98 99 |
# File 'lib/henitai/configuration_validator/rules.rb', line 92 def validate_coverage_criteria(raw) value = raw[:coverage_criteria] return if value.nil? ensure_hash!(value, "coverage_criteria") warn_unknown_keys(value, VALID_COVERAGE_CRITERIA_KEYS, "coverage_criteria") value.each { |key, flag| Scalars.validate_boolean(flag, "coverage_criteria.#{key}") } end |
.validate_dashboard(raw) ⇒ Object
60 61 62 63 64 65 66 67 68 |
# File 'lib/henitai/configuration_validator/rules.rb', line 60 def validate_dashboard(raw) value = raw[:dashboard] return if value.nil? ensure_hash!(value, "dashboard") warn_unknown_keys(value, VALID_DASHBOARD_KEYS, "dashboard") Scalars.validate_optional_string(value[:project], "dashboard.project") Scalars.validate_optional_string(value[:base_url], "dashboard.base_url") end |
.validate_excludes(raw) ⇒ Object
33 34 35 |
# File 'lib/henitai/configuration_validator/rules.rb', line 33 def validate_excludes(raw) Scalars.validate_string_array(raw[:excludes], "excludes") end |
.validate_includes(raw) ⇒ Object
29 30 31 |
# File 'lib/henitai/configuration_validator/rules.rb', line 29 def validate_includes(raw) Scalars.validate_string_array(raw[:includes], "includes") end |
.validate_integration(raw) ⇒ Object
19 20 21 22 23 24 25 26 27 |
# File 'lib/henitai/configuration_validator/rules.rb', line 19 def validate_integration(raw) value = raw[:integration] return if value.nil? return if value.is_a?(String) ensure_hash!(value, "integration") warn_unknown_keys(value, VALID_INTEGRATION_KEYS, "integration") Scalars.validate_optional_string(value[:name], "integration.name") end |
.validate_jobs(raw) ⇒ Object
37 38 39 40 41 42 43 |
# File 'lib/henitai/configuration_validator/rules.rb', line 37 def validate_jobs(raw) value = raw[:jobs] return if value.nil? return if value.is_a?(Integer) configuration_error("Invalid configuration value for jobs: expected Integer, got #{value.class}") end |
.validate_mutation(raw) ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/henitai/configuration_validator/rules.rb', line 70 def validate_mutation(raw) value = raw[:mutation] return if value.nil? ensure_hash!(value, "mutation") warn_unknown_keys(value, VALID_MUTATION_KEYS, "mutation") Scalars.validate_operator(value[:operators]) validate_mutation_limits(value) validate_mutation_filters(value) validate_sampling(value[:sampling]) end |
.validate_mutation_filters(value) ⇒ Object
87 88 89 90 |
# File 'lib/henitai/configuration_validator/rules.rb', line 87 def validate_mutation_filters(value) Scalars.validate_string_array(value[:ignore_patterns], "mutation.ignore_patterns") Scalars.validate_ignore_patterns(value[:ignore_patterns]) end |
.validate_mutation_limits(value) ⇒ Object
82 83 84 85 |
# File 'lib/henitai/configuration_validator/rules.rb', line 82 def validate_mutation_limits(value) Scalars.validate_timeout(value[:timeout]) Scalars.validate_max_flaky_retries(value[:max_flaky_retries]) end |
.validate_reporters(raw) ⇒ Object
45 46 47 |
# File 'lib/henitai/configuration_validator/rules.rb', line 45 def validate_reporters(raw) Scalars.validate_string_array(raw[:reporters], "reporters") end |
.validate_reports_dir(raw) ⇒ Object
49 50 51 |
# File 'lib/henitai/configuration_validator/rules.rb', line 49 def validate_reports_dir(raw) Scalars.validate_optional_string(raw[:reports_dir], "reports_dir") end |
.validate_sampling(value) ⇒ Object
110 111 112 113 114 115 116 117 118 |
# File 'lib/henitai/configuration_validator/rules.rb', line 110 def validate_sampling(value) return if value.nil? ensure_hash!(value, "mutation.sampling") warn_unknown_keys(value, VALID_SAMPLING_KEYS, "mutation.sampling") Scalars.validate_sampling_completeness(value) Scalars.validate_sampling_ratio(value[:ratio]) Scalars.validate_sampling_strategy(value[:strategy]) end |
.validate_thresholds(raw) ⇒ Object
101 102 103 104 105 106 107 108 |
# File 'lib/henitai/configuration_validator/rules.rb', line 101 def validate_thresholds(raw) value = raw[:thresholds] return if value.nil? ensure_hash!(value, "thresholds") warn_unknown_keys(value, VALID_THRESHOLDS_KEYS, "thresholds") value.each { |key, threshold| Scalars.validate_threshold(threshold, "thresholds.#{key}") } end |
.validate_top_level_keys(raw) ⇒ Object
15 16 17 |
# File 'lib/henitai/configuration_validator/rules.rb', line 15 def validate_top_level_keys(raw) warn_unknown_keys(raw, VALID_TOP_LEVEL_KEYS) end |
.warn_unknown_keys(raw, allowed_keys, path = nil) ⇒ Object
120 121 122 123 124 125 126 |
# File 'lib/henitai/configuration_validator/rules.rb', line 120 def warn_unknown_keys(raw, allowed_keys, path = nil) raw.each_key do |key| next if allowed_keys.include?(key) ConfigurationValidator.warn "Unknown configuration key: #{key_path(path, key)}" end end |