Class: AppMap::Depends::TestFileInspector

Inherits:
Object
  • Object
show all
Defined in:
lib/appmap/depends/test_file_inspector.rb

Defined Under Namespace

Classes: TestReport

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(test_dir, test_file_patterns) ⇒ TestFileInspector

Returns a new instance of TestFileInspector.



53
54
55
56
# File 'lib/appmap/depends/test_file_inspector.rb', line 53

def initialize(test_dir, test_file_patterns)
  @test_dir = test_dir
  @test_file_patterns = test_file_patterns
end

Instance Attribute Details

#test_dirObject (readonly)

Returns the value of attribute test_dir.



50
51
52
# File 'lib/appmap/depends/test_file_inspector.rb', line 50

def test_dir
  @test_dir
end

#test_file_patternsObject (readonly)

Returns the value of attribute test_file_patterns.



51
52
53
# File 'lib/appmap/depends/test_file_inspector.rb', line 51

def test_file_patterns
  @test_file_patterns
end

Instance Method Details

#reportObject



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/appmap/depends/test_file_inspector.rb', line 58

def report
   = Dir.glob(File.join(test_dir, '**', 'metadata.json'))
  source_locations = Set.new
  changed_test_files = Set.new
  failed_test_files = Set.new
  .each do ||
     = JSON.parse(File.read())
    appmap_path = File.join(.split('/')[0...-1])

    appmap_mtime = File.read(File.join(appmap_path, 'mtime')).to_i
    source_location = Util.normalize_path(['source_location'])
    test_status = ['test_status']
    next unless source_location && test_status

    source_location_mtime = (File.stat(source_location).mtime.to_f * 1000).to_i rescue nil
    source_locations << source_location
    if source_location_mtime
      changed_test_files << source_location if source_location_mtime > appmap_mtime
      failed_test_files << source_location unless test_status == 'succeeded'
    end
  end
  
  test_files = Set.new(test_file_patterns.map(&Dir.method(:glob)).flatten)
  added_test_files = test_files - source_locations
  changed_test_files -= added_test_files
  removed_test_files = source_locations - test_files
    
  TestReport.new(, added_test_files, removed_test_files, changed_test_files, failed_test_files)
end