affected_tests 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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
  - - ">="