class AppMap::Depends::TestFileInspector
Constants
- TestReport
Attributes
test_dir[R]
test_file_patterns[R]
Public Class Methods
new(test_dir, test_file_patterns)
click to toggle source
# 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
Public Instance Methods
report()
click to toggle source
# File lib/appmap/depends/test_file_inspector.rb, line 58 def report metadata_files = Dir.glob(File.join(test_dir, '**', 'metadata.json')) source_locations = Set.new changed_test_files = Set.new failed_test_files = Set.new metadata_files.each do |metadata_file| metadata = JSON.parse(File.read(metadata_file)) appmap_path = File.join(metadata_file.split('/')[0...-1]) appmap_mtime = File.read(File.join(appmap_path, 'mtime')).to_i source_location = Util.normalize_path(metadata['source_location']) test_status = metadata['test_status'] source_location_mtime = (File.stat(source_location).mtime.to_f * 1000).to_i rescue nil raise "Metadata #{metadata_file} does not contain source_location" unless source_location raise "Metadata #{metadata_file} does not contain test_status" unless test_status 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(metadata_files, added_test_files, removed_test_files, changed_test_files, failed_test_files) end