affected_tests 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: af75eb73948c85a496715e0ea5f27610a1edb9ad9db22ddf1529122bc9129fcf
4
- data.tar.gz: 812ebcd3b665254bfc365e10537896bec4d84bbca4efd17b5de46bfa73ed0346
3
+ metadata.gz: 96f592851e15e03100476ea65886d785a8baf5c8fa954beb0c628c3b4db99fa5
4
+ data.tar.gz: a25451d7b286eeed185ea9dee6783512364252607efbc5b26055f687811bdc6d
5
5
  SHA512:
6
- metadata.gz: 90130e1a9102afb5afae71d4b0f14bb024c35ae44f807fd8c3fc75d7f143d14636854c84bb67bebfbd5970bc7326b2968cd2f2997345d86d5be41897ec312ab7
7
- data.tar.gz: e4d4f3879148330499743228daf4facabd030a4cd799c3a92bb95f99886bb86760d5f77385037fd5b3982c5d7e3546462fc1f4def93eb7ec048e047a2dc52f3b
6
+ metadata.gz: 27bd7c5b5b591a7f082a849830350621b24a178db62b338862ed609332e79618a26c6a3c8e8409c3c5573840bb7f6c84475f47ec5a3bfeb61a2cc397601ca0c7
7
+ data.tar.gz: 98dc67e1439bb8a7cc6bc10700028dd99e6e6ea7ddf0c0c59a510b73cee33f1fe0ee50404d1de6cd729003a55f30dbef4a9834c9d5bfc5b81914f7a049e885fc
data/Gemfile.lock CHANGED
@@ -2,13 +2,13 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  affected_tests (0.1.0)
5
- calleree
5
+ rotoscope
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- calleree (0.1.0)
11
10
  rake (13.0.6)
11
+ rotoscope (0.3.0)
12
12
 
13
13
  PLATFORMS
14
14
  arm64-darwin-21
@@ -1,13 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RSpec.configure do |config|
4
- config.before(:suite) do
5
- AffectedTests.start
4
+ config.prepend_before(:each) do
5
+ AffectedTests.start_trace
6
6
  end
7
7
 
8
- config.after(:each) do
8
+ config.append_after(:each) do
9
+ AffectedTests.stop_trace
9
10
  target_spec = self.class.declaration_locations.last[0]
10
- AffectedTests.emit(target_spec)
11
+ AffectedTests.checkpoint(target_spec)
11
12
  end
12
13
 
13
14
  config.after(:suite) do
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AffectedTests
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
@@ -3,7 +3,7 @@
3
3
  require "set"
4
4
  require "json"
5
5
 
6
- require "calleree"
6
+ require "rotoscope"
7
7
 
8
8
  require_relative "affected_tests/version"
9
9
 
@@ -14,50 +14,50 @@ module AffectedTests
14
14
  @project_path = project_path
15
15
  @test_dir_path = test_dir_path
16
16
  @output_path = output_path
17
+ @rotoscope = Rotoscope.new do |call|
18
+ next if self == call.receiver
19
+
20
+ if call.caller_path && target_path?(call.caller_path)
21
+ buffer << call.caller_path
22
+ end
23
+ end
17
24
  end
18
25
 
19
- def start
20
- Calleree.start
26
+ def start_trace
27
+ @rotoscope.start_trace
21
28
  end
22
29
 
23
- def import_from_calleree(target_test_path, result)
24
- caller_in_project = result.select do |(caller_info, _callee_info, _count)|
25
- caller_path = caller_info.first
26
- target_path?(caller_path)
27
- end.map do |(caller_info, _callee_info, _count)|
28
- format_path(caller_info.first)
29
- end
30
+ def stop_trace
31
+ @rotoscope.stop_trace
32
+ end
30
33
 
31
- called_in_project = result.select do |(_caller_info, callee_info, _count)|
32
- callee_path = callee_info.first
33
- target_path?(callee_path)
34
- end.map do |(_caller_info, callee_info, _count)|
35
- format_path(callee_info.first)
34
+ def import_from_rotoscope(target_test_path, result)
35
+ all_related_paths = result.uniq.map do |caller_path|
36
+ format_path(caller_path)
36
37
  end
37
38
 
38
- all_related_paths = (called_in_project + caller_in_project).uniq
39
-
40
- target_test_file_path = format_path(target_test_path)
39
+ formatted_target_test_path = format_path(target_test_path)
41
40
 
42
41
  all_related_paths.each do |path|
43
42
  next if path.start_with?(@test_dir_path)
44
43
 
45
- if path != target_test_file_path
46
- add(target_test_file_path, path)
44
+ if path != formatted_target_test_path
45
+ add(formatted_target_test_path, path)
47
46
  end
48
47
  end
49
48
  end
50
49
 
51
- def emit(target_test_path)
52
- res = Calleree.result(clear: true)
53
- import_from_calleree(target_test_path, res)
50
+ def checkpoint(target_test_path)
51
+ diff = buffer
52
+ import_from_rotoscope(target_test_path, diff)
53
+ buffer.clear
54
54
  end
55
55
 
56
56
  def dump
57
57
  data = { revision: revision, map: cache.transform_values(&:to_a) }
58
58
  File.write(@output_path, JSON.dump(data))
59
59
  ensure
60
- Calleree.stop
60
+ @rotoscope.stop_trace if @rotoscope.tracing?
61
61
  end
62
62
 
63
63
  def format_path(path)
@@ -82,8 +82,12 @@ module AffectedTests
82
82
  end
83
83
  end
84
84
 
85
+ def buffer
86
+ Thread.current[:buffer] ||= []
87
+ end
88
+
85
89
  def cache
86
- @cache ||= {}
90
+ Thread.current[:cache] ||= {}
87
91
  end
88
92
 
89
93
  def bundler_path
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: affected_tests
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shia
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-07-19 00:00:00.000000000 Z
11
+ date: 2022-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: calleree
14
+ name: rotoscope
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="