class PropertyGenerator::ConfigLinter
Constants
- TESTS
Attributes
configs[RW]
Public Class Methods
new(path, ignored_tests)
click to toggle source
# File lib/linter/config_linter.rb, line 14 def initialize(path, ignored_tests) @configs = check_for_config(path) @ignored_tests = ignored_tests end
Public Instance Methods
check_for_config(path)
click to toggle source
# File lib/linter/config_linter.rb, line 30 def check_for_config(path) # Tries to load the config file - if is unable to load config.yml it returns an empty hash # Empty hash is returned so that the rest of the files are still able to be linted instead of stopping at this point. YAML.load_file(path) rescue StandardError {} end
config_file_is_present()
click to toggle source
# File lib/linter/config_linter.rb, line 39 def config_file_is_present status = { status: 'pass', error: '' } if @configs == {} status[:status] = 'fail' status[:error] = 'Config.yml file is missing, it is required.' end status end
config_has_correct_keys()
click to toggle source
# File lib/linter/config_linter.rb, line 48 def config_has_correct_keys status = { status: 'pass', error: '' } config_keys = ['environments', 'accounts', 'environment_configs'] if @configs.keys != config_keys status[:status] = 'fail' status[:error] = "Config keys should be 'environments', 'accounts', and 'environment_configs'." end status end
environment_configs_have_valid_region_and_account_values()
click to toggle source
# File lib/linter/config_linter.rb, line 67 def environment_configs_have_valid_region_and_account_values status = { status: 'pass', error: '' } environments_missmatch_values = @configs['environment_configs'].reject do |_, env_config| env_config.key?('region') && @configs['accounts'].include?(env_config['account']) end.keys unless environments_missmatch_values.empty? status[:status] = 'fail' status[:error] = "Environments: #{environments_missmatch_values} in environment_configs have a region or account value not listed in top level." end status end
environment_configs_have_well_formatted_interpolations()
click to toggle source
# File lib/linter/config_linter.rb, line 81 def environment_configs_have_well_formatted_interpolations status = { status: 'pass', error: '' } environments_with_bad_interpolations = [] any_mistakes = false @configs['environment_configs'].keys.each do |environment| if @configs['environment_configs'][environment]['interpolations'].class == Hash @configs['environment_configs'][environment]['interpolations'].each do |interpolation, value| if value.class != String && value.class != Integer && value.class != Float && value.class != Fixnum environments_with_bad_interpolations << { environment => interpolation } any_mistakes = true end end else environments_with_bad_interpolations << environment any_mistakes = true end end if any_mistakes status[:status] = 'fail' status[:error] = "Incorrectly formatted interpolations in Environments: #{environments_with_bad_interpolations}" end status end
environment_configs_match_environments_list()
click to toggle source
# File lib/linter/config_linter.rb, line 58 def environment_configs_match_environments_list status = { status: 'pass', error: '' } if @configs['environments'] != @configs['environment_configs'].keys status[:status] = 'fail' status[:error] = 'Environments in environment_configs do not match environments listed in config environments.' end status end
run_config_tests()
click to toggle source
# File lib/linter/config_linter.rb, line 19 def run_config_tests if @configs == {} tests = ['config_file_is_present'] else tests = TESTS end tests -= @ignored_tests PropertyGenerator.test_runner(self, tests) end