Class: TestDiff::Storage

Inherits:
Object
  • Object
show all
Defined in:
lib/test_diff/storage.rb

Overview

class used to build the coverage file

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(folder = 'test_diff_coverage', execution_times = ExecutionTimes.new('test_diff_coverage')) ⇒ Storage

Returns a new instance of Storage.



8
9
10
11
12
13
# File 'lib/test_diff/storage.rb', line 8

def initialize(folder = 'test_diff_coverage',
               execution_times = ExecutionTimes.new('test_diff_coverage'))
  @folder = folder
  @execution_times = execution_times
  @preload_name = '_preload_'
end

Instance Attribute Details

#folderObject (readonly)

Returns the value of attribute folder.



6
7
8
# File 'lib/test_diff/storage.rb', line 6

def folder
  @folder
end

Instance Method Details

#clearObject



73
74
75
76
77
# File 'lib/test_diff/storage.rb', line 73

def clear
  Dir["#{@folder}/**/*.yml"].each do |storage_file|
    File.delete(storage_file)
  end
end

#find_for(files, sub_folder = nil) ⇒ Object



49
50
51
52
53
54
55
# File 'lib/test_diff/storage.rb', line 49

def find_for(files, sub_folder = nil)
  results = []
  each_file(sub_folder) do |storage_file|
    find_for_storage_file(results, storage_file, files)
  end
  results
end

#get(file) ⇒ Object



39
40
41
42
43
44
45
46
47
# File 'lib/test_diff/storage.rb', line 39

def get(file)
  get_store(file).transaction(true) do |store|
    coverage_data = {}
    store.roots.each do |key|
      coverage_data[key] = store[key]
    end
    coverage_data
  end
end

#preload=(coverage_data) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
# File 'lib/test_diff/storage.rb', line 15

def preload=(coverage_data)
  raise 'Data must be a Hash' unless coverage_data.is_a?(Hash)
  get_store(@preload_name).transaction do |store|
    store.roots.each do |key|
      store.delete(key)
    end
    coverage_data.keys.sort.each do |key|
      store[key] = coverage_data[key]
    end
  end
end

#select_tests_for(files, sub_folder = nil) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
# File 'lib/test_diff/storage.rb', line 57

def select_tests_for(files, sub_folder = nil)
  results = []
  preload_files = preload_found_files(files)
  each_file(sub_folder) do |storage_file|
    next if storage_file.include?(@preload_name)
    if preload_files.any? || found_files(storage_file, files).any?
      results << TestInfo.new(storage_file, @execution_times[storage_file])
    end
  end
  results
end

#set(file, coverage_data) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/test_diff/storage.rb', line 27

def set(file, coverage_data)
  raise 'Data must be a Hash' unless coverage_data.is_a?(Hash)
  get_store(file).transaction do |store|
    store.roots.each do |key|
      store.delete(key)
    end
    coverage_data.keys.sort.each do |key|
      store[key] = coverage_data[key]
    end
  end
end

#test_info_for(file) ⇒ Object



69
70
71
# File 'lib/test_diff/storage.rb', line 69

def test_info_for(file)
  TestInfo.new(file, @execution_times[file])
end