class TestBoosters::Files::SplitConfiguration

Constants

Job

Public Class Methods

new(path) click to toggle source
# File lib/test_boosters/files/split_configuration.rb, line 7
def initialize(path)
  @path = path
  @valid = true
end

Public Instance Methods

all_files() click to toggle source
# File lib/test_boosters/files/split_configuration.rb, line 22
def all_files
  @all_files ||= jobs.map(&:files).flatten.sort
end
files_for_job(job_index) click to toggle source
# File lib/test_boosters/files/split_configuration.rb, line 26
def files_for_job(job_index)
  job = jobs[job_index]

  job ? job.files : []
end
jobs() click to toggle source
# File lib/test_boosters/files/split_configuration.rb, line 32
def jobs
  @jobs ||= present? ? load_data : []
end
present?() click to toggle source
# File lib/test_boosters/files/split_configuration.rb, line 12
def present?
  File.exist?(@path)
end
valid?() click to toggle source
# File lib/test_boosters/files/split_configuration.rb, line 16
def valid?
  jobs # try to load data into memory

  @valid
end

Private Instance Methods

load_data() click to toggle source

:reek: TooManyStatements

# File lib/test_boosters/files/split_configuration.rb, line 39
def load_data
  @valid = false

  content = JSON.parse(File.read(@path)).map do |raw_job|
    files = raw_job.fetch("files").sort

    TestBoosters::Files::SplitConfiguration::Job.new(files)
  end

  @valid = true

  content
rescue TypeError, KeyError => ex
  log_error("Split Configuration has invalid structure", ex)

  []
rescue JSON::ParserError => ex
  log_error("Split Configuration is not parsable", ex)

  []
end
log_error(message, exception) click to toggle source
# File lib/test_boosters/files/split_configuration.rb, line 61
def log_error(message, exception)
  TestBoosters::Logger.error(message)
  TestBoosters::Logger.error(exception.inspect)
end