Module: Akainaa

Defined in:
lib/akainaa.rb,
lib/akainaa/util.rb,
lib/akainaa/version.rb,
lib/akainaa/call_node_visitor.rb

Defined Under Namespace

Modules: Util Classes: CallNodeVisitor, Error, Middleware

Constant Summary collapse

VERSION =
"0.1.7"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.hide_not_executed_filesObject

Returns the value of attribute hide_not_executed_files.



14
15
16
# File 'lib/akainaa.rb', line 14

def hide_not_executed_files
  @hide_not_executed_files
end

.ignore_filesObject

Returns the value of attribute ignore_files.



14
15
16
# File 'lib/akainaa.rb', line 14

def ignore_files
  @ignore_files
end

.project_dirObject

Returns the value of attribute project_dir.



14
15
16
# File 'lib/akainaa.rb', line 14

def project_dir
  @project_dir
end

Class Method Details

.peek_resultObject



48
49
50
51
52
53
54
# File 'lib/akainaa.rb', line 48

def peek_result
  Coverage
    .peek_result
    .select { |k, _v| k.start_with?(project_dir) }
    .reject { |k, _v| ignore_files.member?(k) }
    .transform_keys { |k| k.sub(project_dir, '') }
end

.resetObject



56
57
58
59
60
61
# File 'lib/akainaa.rb', line 56

def reset
  @monitor.synchronize do
    Coverage.result(stop: false, clear: true)
    @previous_result = {}
  end
end

.start(project_dir:, ignore_glob_patterns: [], hide_not_executed_files: false, online_emit: nil) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/akainaa.rb', line 16

def start(
  project_dir:,
  ignore_glob_patterns: [],
  hide_not_executed_files: false,
  online_emit: nil
)
  @project_dir = project_dir
  @project_dir += '/' unless @project_dir.end_with?('/')
  ignore_files = ignore_glob_patterns.flat_map do |pattern|
    Dir["#{@project_dir}#{pattern}"].to_a
  end
  @ignore_files = Set.new(ignore_files)
  @hide_not_executed_files = hide_not_executed_files
  @monitor = Monitor.new
  @first_emitted = false

  Coverage.start(lines: true)

  if online_emit.is_a?(Hash)
    require 'json'
    option = default_online_emit.merge(online_emit)
    FileUtils.mkdir_p(File.dirname(option[:path]))
    start_multipart_emit(option)

    if option[:trap_at_exit]
      at_exit do
        write_result(peek_result, option[:path])
      end
    end
  end
end