Module: AppMap::Depends

Extended by:
Depends
Included in:
Depends
Defined in:
lib/appmap_depends.rb,
lib/appmap/depends/api.rb,
lib/appmap/depends/util.rb,
lib/appmap/depends/version.rb,
lib/appmap/depends/git_diff.rb,
lib/appmap/depends/appmap_js.rb,
lib/appmap/depends/command_error.rb,
lib/appmap/depends/appmap_js_depends.rb,
lib/appmap/depends/test_file_inspector.rb

Defined Under Namespace

Modules: AppMapJS, Util Classes: AppMapJSDepends, CommandError, GitDiff, TestFileInspector

Constant Summary collapse

DEFAULT_APPMAP_DIR =

Default directory to scan for appmap.s

File.join('tmp', 'appmap')
DEFAULT_OUTPUT_FILE =

Default file to write Rake task results.

File.join('tmp', 'appmap_depends.txt')
DEFAULT_BASE_BRANCHES =

Default base branches which will be checked for existance.

%w[remotes/origin/main remotes/origin/master].freeze
DEFAULT_TEST_FILE_PATTERNS =

Default pattern to enumerate test cases.

[ 'spec/**/*_spec.rb', 'test/**/*_test.rb' ].freeze
VERSION =
"0.3.0"

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.verbose(arg = nil) ⇒ Object



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

def self.verbose(arg = nil)
  @verbose = arg if arg
  @verbose
end

Instance Method Details

#diff(appmap_dir: DEFAULT_APPMAP_DIR, base_dir: nil, base_branches: DEFAULT_BASE_BRANCHES, base: nil, head: nil) ⇒ Object



15
16
17
18
19
20
21
22
23
24
# File 'lib/appmap/depends/api.rb', line 15

def diff(appmap_dir: DEFAULT_APPMAP_DIR, base_dir: nil, base_branches: DEFAULT_BASE_BRANCHES, base: nil, head: nil)
  diff = AppMap::Depends::GitDiff.new(base_branches: base_branches, base: base, head: head)
  modified_files = diff.modified_files

  depends = AppMap::Depends::AppMapJSDepends.new(appmap_dir)
  depends.base_dir = base_dir if base_dir
  test_files = depends.depends(modified_files)

  Set.new prune_directory_prefix(test_files)
end

#inspect_test_files(appmap_dir: DEFAULT_APPMAP_DIR, test_file_patterns: DEFAULT_TEST_FILE_PATTERNS) ⇒ Object



26
27
28
29
# File 'lib/appmap/depends/api.rb', line 26

def inspect_test_files(appmap_dir: DEFAULT_APPMAP_DIR, test_file_patterns: DEFAULT_TEST_FILE_PATTERNS)
  inspector = AppMap::Depends::TestFileInspector.new(appmap_dir, test_file_patterns)
  inspector.report
end

#modified(appmap_dir: DEFAULT_APPMAP_DIR, base_dir: nil) ⇒ Object



7
8
9
10
11
12
13
# File 'lib/appmap/depends/api.rb', line 7

def modified(appmap_dir: DEFAULT_APPMAP_DIR, base_dir: nil)
  depends = AppMap::Depends::AppMapJSDepends.new(appmap_dir)
  depends.base_dir = base_dir if base_dir
  test_files = depends.depends

  Set.new prune_directory_prefix(test_files)
end

#remove_out_of_date_appmaps(since, appmap_dir: DEFAULT_APPMAP_DIR, base_dir: nil) ⇒ Object

Remove out-of-date AppMaps which are unmodified since the start time. This operation is used to remove AppMaps that were previously generated from a test case that has been removed from a test file.

  • since an instance of Time



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/appmap/depends/api.rb', line 48

def remove_out_of_date_appmaps(since, appmap_dir: DEFAULT_APPMAP_DIR, base_dir: nil)
  since_ms = ( since.to_f * 1000 ).to_i

  depends = AppMap::Depends::AppMapJSDepends.new(appmap_dir)
  depends.base_dir = base_dir if base_dir
  depends.field = nil
  out_of_date_appmaps = depends.depends
  removed = []
  out_of_date_appmaps.each do |appmap_path|
    mtime_path = File.join(appmap_path, 'mtime')
    next unless File.exists?(mtime_path)

    appmap_mtime = File.read(mtime_path).to_i
    if appmap_mtime < since_ms
      Util.delete_appmap appmap_path
      removed << appmap_path
    end
  end
  removed.sort
end

#report_list(title, files) ⇒ Object



31
32
33
# File 'lib/appmap/depends/api.rb', line 31

def report_list(title, files)
  warn [ title, files.to_a.sort.join(' ') ].join(': ') unless files.empty?
end

#run_tests(test_files, appmap_dir: DEFAULT_APPMAP_DIR) {|test_files| ... } ⇒ Object

Yields:

  • (test_files)


35
36
37
38
39
40
41
42
# File 'lib/appmap/depends/api.rb', line 35

def run_tests(test_files, appmap_dir: DEFAULT_APPMAP_DIR, &block)
  test_files = test_files.to_a.sort
  warn "Running tests: #{test_files.join(' ')}"

  yield test_files

  system(%(./node_modules/@appland/cli/src/cli.js index --appmap-dir #{appmap_dir.shellescape}))  
end