yardcheck 0.0.2 → 0.0.3

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
  SHA1:
3
- metadata.gz: b594df9271ab2ef4f110b5fdaf97a44fc3e633a8
4
- data.tar.gz: be08bcfad68850ed0adca3b1dba4e38562de2840
3
+ metadata.gz: fe668ef28d9117e65a7ef3507e3d43c5f19c817d
4
+ data.tar.gz: 3b03b4b15147cd4db2b7594b02e43f04f5d9f1e3
5
5
  SHA512:
6
- metadata.gz: 5406813ffe5bda64d642a76cf9e6aab7c54fa0953e7bd693d5b98044048702cee8860c1af011fb48eb671a353d95b06e229b2996259180ac07e8ffb1cda68377
7
- data.tar.gz: afc03fd46651422fbef24949eb940b175b4c6d62fb532c790b893482be060449d032c2202d02663c5f47f9dc2682069205da7cc5e403badaf66257ed78645bba
6
+ metadata.gz: 15f0d9b8d5bf900d1b8f090738bdb44f0a5d53d60636afe9b0a9e17ca1612902f4d3a96eaaa71e6a6ece59b46be94a3c0ccebf8c298e9551cfc92e0aa2880bee
7
+ data.tar.gz: 0411aa5a17f544b2f5ae3389ee8b84739c3cad5faeeb574b9794bc41ad321992a7465dd54deb0455485610145de0b69143ecc8fa9033cd5d7ab6c989afe72f1c
@@ -1,10 +1,10 @@
1
1
  steps:
2
- - command: "build/run 2.3.3 'rspec'"
2
+ - command: "build/run 2.4.1 'rspec'"
3
3
  label: ":rspec: RSpec"
4
4
  agents:
5
5
  - queue=elastic
6
6
 
7
7
  - name: ':rubocop: Rubocop'
8
- command: build/run 2.3.3 rubocop
8
+ command: build/run 2.4.1 rubocop
9
9
  agents:
10
10
  - queue=elastic
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.3.3
1
+ 2.4.1
@@ -7,7 +7,7 @@ module Yardcheck
7
7
  :selector,
8
8
  :namespace,
9
9
  :params,
10
- :example_location
10
+ :example_metadata
11
11
  )
12
12
 
13
13
  def self.process(params:, **attributes)
@@ -19,6 +19,14 @@ module Yardcheck
19
19
  new(params: params, **attributes)
20
20
  end
21
21
 
22
+ def example_location
23
+ example_metadata.fetch(:location)
24
+ end
25
+
26
+ def example_id
27
+ example_metadata.fetch(:id)
28
+ end
29
+
22
30
  def method_identifier
23
31
  [namespace, selector, scope]
24
32
  end
@@ -108,7 +108,10 @@ module Yardcheck
108
108
  scope: event.defined_class.__send__(:singleton_class?) ? :class : :instance,
109
109
  selector: event.method_id,
110
110
  namespace: event.defined_class,
111
- example_location: RSpec.current_example.location
111
+ example_metadata: {
112
+ location: RSpec.current_example.location,
113
+ id: RSpec.current_example.id
114
+ }
112
115
  }
113
116
  end
114
117
 
@@ -20,6 +20,10 @@ module Yardcheck
20
20
  event.example_location
21
21
  end
22
22
 
23
+ def test_id
24
+ event.example_id
25
+ end
26
+
23
27
  def method_shorthand
24
28
  documentation.shorthand
25
29
  end
@@ -11,7 +11,7 @@ module Yardcheck
11
11
  undef_method :!
12
12
 
13
13
  def method_missing(method_name, *args, &block)
14
- if target_respond_to?(method_name)
14
+ if respond_to_missing?(method_name, true)
15
15
  @target.__send__(method_name, *args, &block)
16
16
  else
17
17
  ::Object
@@ -21,13 +21,20 @@ module Yardcheck
21
21
  end
22
22
  end
23
23
 
24
- private
25
-
26
- def target_respond_to?(method_name)
24
+ def respond_to_missing?(method_name, include_all = false)
27
25
  ::Object
28
26
  .instance_method(:respond_to?)
29
27
  .bind(@target)
30
- .call(method_name, true)
28
+ .call(method_name, include_all)
29
+ end
30
+
31
+ private
32
+
33
+ def object_dispatch(receiver, method_name, *params)
34
+ ::Object
35
+ .instance_method(method_name)
36
+ .bind(receiver)
37
+ .call(*params)
31
38
  end
32
39
  end # Proxy
33
40
  end # Yardcheck
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Yardcheck
4
- VERSION = '0.0.2'
4
+ VERSION = '0.0.3'
5
5
  end # Yardcheck
@@ -5,9 +5,14 @@ module Yardcheck
5
5
  extend Color
6
6
  include Color
7
7
 
8
- def initialize(observation, test_locations = [observation.test_location])
8
+ def initialize(
9
+ observation,
10
+ test_locations = [observation.test_location],
11
+ test_ids = [observation.test_id]
12
+ )
9
13
  @observation = observation
10
14
  @test_locations = test_locations.sort.uniq
15
+ @test_ids = test_ids.sort.uniq
11
16
  end
12
17
 
13
18
  def offense
@@ -16,23 +21,26 @@ module Yardcheck
16
21
 
17
22
  location_hint = indent(grey("source: #{observation.source_location}"))
18
23
  test_lines = test_locations.map { |l| " - #{l}" }.join("\n")
24
+
19
25
  tests_block = "tests:\n#{test_lines}"
20
26
  test_hint = indent(grey(tests_block))
21
27
 
22
- "#{explanation}\n\n#{location_hint}\n#{test_hint}\n#{source}\n"
28
+ rerun_block = indent(grey("rerun with:\n #{rerun_command}"))
29
+
30
+ "#{explanation}\n\n#{location_hint}\n#{test_hint}\n#{rerun_block}\n#{source}\n"
23
31
  end
24
32
 
25
33
  def combine(other)
26
34
  fail 'Cannot combine' unless combine_with?(other)
27
35
 
28
- with_tests(other.test_locations)
36
+ with_tests(other)
29
37
  end
30
38
 
31
39
  def combination_identifier
32
40
  combine_requirements.map(&method(:__send__))
33
41
  end
34
42
 
35
- attr_reader :test_locations
43
+ attr_reader :test_locations, :test_ids
36
44
 
37
45
  private
38
46
 
@@ -43,7 +51,11 @@ module Yardcheck
43
51
  end
44
52
 
45
53
  def with_tests(other_test_locations)
46
- self.class.new(observation, test_locations + other_test_locations)
54
+ self.class.new(observation, test_locations + other_test_locations, test_ids + other.test_ids)
55
+ end
56
+
57
+ def rerun_command
58
+ "rspec #{test_ids.map { |id| "'#{id}'" }.join(' ')}"
47
59
  end
48
60
 
49
61
  def indent(string)
@@ -70,7 +82,11 @@ module Yardcheck
70
82
  "#{yellow('%<signature>s')} but observed " \
71
83
  "#{red('%<observed_type>s')}"
72
84
 
73
- def initialize(observation, test_locations = [observation.test_location])
85
+ def initialize(
86
+ observation,
87
+ test_locations = [observation.test_location],
88
+ test_ids = [observation.test_id]
89
+ )
74
90
  super
75
91
  end
76
92
 
@@ -103,10 +119,15 @@ module Yardcheck
103
119
  class Param < self
104
120
  include Equalizer.new(:name, :observation)
105
121
 
106
- def initialize(name, observation, test_locations = [observation.test_location])
122
+ def initialize(
123
+ name,
124
+ observation,
125
+ test_locations = [observation.test_location],
126
+ test_ids = [observation.test_id]
127
+ )
107
128
  @name = name
108
129
 
109
- super(observation, test_locations)
130
+ super(observation, test_locations, test_ids)
110
131
  end
111
132
 
112
133
  FORMAT =
@@ -136,11 +157,12 @@ module Yardcheck
136
157
  %i[name shorthand signature observed_type]
137
158
  end
138
159
 
139
- def with_tests(other_test_locations)
160
+ def with_tests(other)
140
161
  self.class.new(
141
162
  name,
142
163
  observation,
143
- test_locations + other_test_locations
164
+ test_locations + other.test_locations,
165
+ test_ids + other.test_ids
144
166
  )
145
167
  end
146
168
 
@@ -42,8 +42,10 @@ RSpec.describe 'test app integration' do
42
42
 
43
43
  it 'reports expectations' do
44
44
  aggregate_failures do
45
- expect_report('Expected TestApp::Namespace#add to return String but observed Fixnum')
46
- expect_report('Expected #<Class:TestApp::Namespace>#add to return String but observed Fixnum')
45
+ expect_report('Expected TestApp::Namespace#add to return String but observed Integer')
46
+ expect_report(
47
+ 'Expected #<Class:TestApp::Namespace>#add to return String but observed Integer'
48
+ )
47
49
  expect_report(
48
50
  'Expected TestApp::Namespace#documents_relative ' \
49
51
  'to return TestApp::Namespace::Child but observed String'
@@ -42,7 +42,7 @@ RSpec.describe Yardcheck::MethodTracer do
42
42
  namespace: Foo.singleton_class,
43
43
  params: { baz: 'Hello' },
44
44
  return_value: 'HELLO',
45
- example_location: RSpec.current_example.location
45
+ example_metadata: { location: RSpec.current_example.location, id: RSpec.current_example.id }
46
46
  ),
47
47
  Yardcheck::MethodCall::Return.process(
48
48
  scope: :instance,
@@ -50,7 +50,7 @@ RSpec.describe Yardcheck::MethodTracer do
50
50
  namespace: Foo,
51
51
  params: { baz: 'Hello' },
52
52
  return_value: 'HELLO',
53
- example_location: RSpec.current_example.location
53
+ example_metadata: { location: RSpec.current_example.location, id: RSpec.current_example.id }
54
54
  )
55
55
  ])
56
56
  end
@@ -25,7 +25,7 @@ RSpec.describe Yardcheck::Runner do
25
25
  namespace: TestApp::Namespace,
26
26
  params: { left: 'foo', right: 3 },
27
27
  return_value: 5,
28
- example_location: 'test_app_spec.rb:1'
28
+ example_metadata: { location: 'test_app_spec.rb:1', id: 'test_app_spec.rb[1:1]' }
29
29
  ),
30
30
  Yardcheck::MethodCall::Return.process(
31
31
  scope: :class,
@@ -33,18 +33,20 @@ RSpec.describe Yardcheck::Runner do
33
33
  namespace: TestApp::Namespace.singleton_class,
34
34
  params: { left: 2, right: 3 },
35
35
  return_value: 5,
36
- example_location: 'test_app_spec.rb:2'
36
+ example_metadata: { location: 'test_app_spec.rb:2', id: 'test_app_spec.rb[1:2]' }
37
37
  )
38
38
  ]
39
39
  end
40
40
 
41
41
  let(:output) do
42
42
  <<~MSG
43
- Expected #<Class:TestApp::Namespace>#add to return String but observed Fixnum
43
+ Expected #<Class:TestApp::Namespace>#add to return String but observed Integer
44
44
 
45
45
  source: ./test_app/lib/test_app.rb:15
46
46
  tests:
47
47
  - test_app_spec.rb:2
48
+ rerun with:
49
+ rspec 'test_app_spec.rb[1:2]'
48
50
 
49
51
  # Singleton method with correct param definition and incorrect return
50
52
  #
@@ -61,6 +63,8 @@ RSpec.describe Yardcheck::Runner do
61
63
  source: ./test_app/lib/test_app.rb:25
62
64
  tests:
63
65
  - test_app_spec.rb:1
66
+ rerun with:
67
+ rspec 'test_app_spec.rb[1:1]'
64
68
 
65
69
  # Instance method with correct param definition and incorrect return
66
70
  #
@@ -72,11 +76,13 @@ RSpec.describe Yardcheck::Runner do
72
76
  left + right
73
77
  end
74
78
 
75
- Expected TestApp::Namespace#add to return String but observed Fixnum
79
+ Expected TestApp::Namespace#add to return String but observed Integer
76
80
 
77
81
  source: ./test_app/lib/test_app.rb:25
78
82
  tests:
79
83
  - test_app_spec.rb:1
84
+ rerun with:
85
+ rspec 'test_app_spec.rb[1:1]'
80
86
 
81
87
  # Instance method with correct param definition and incorrect return
82
88
  #
@@ -118,7 +124,7 @@ RSpec.describe Yardcheck::Runner do
118
124
  namespace: TestApp::Namespace,
119
125
  params: { left: 'foo', right: 3 },
120
126
  return_value: 'valid return type',
121
- example_location: 'test_app_spec.rb:1'
127
+ example_metadata: { location: 'test_app_spec.rb:1', id: 'test_app_spec.rb[1:1]' }
122
128
  ),
123
129
  Yardcheck::MethodCall::Return.process(
124
130
  scope: :instance,
@@ -126,7 +132,7 @@ RSpec.describe Yardcheck::Runner do
126
132
  namespace: TestApp::Namespace,
127
133
  params: { left: 'foo', right: 3 },
128
134
  return_value: 'valid return type',
129
- example_location: 'test_app_spec.rb:2'
135
+ example_metadata: { location: 'test_app_spec.rb:2', id: 'test_app_spec.rb[1:2]' }
130
136
  ),
131
137
  Yardcheck::MethodCall::Return.process(
132
138
  scope: :instance,
@@ -134,7 +140,7 @@ RSpec.describe Yardcheck::Runner do
134
140
  namespace: TestApp::Namespace,
135
141
  params: { left: 1, right: 'now this one is wrong' },
136
142
  return_value: 'valid return type',
137
- example_location: 'test_app_spec.rb:3'
143
+ example_metadata: { location: 'test_app_spec.rb:3', id: 'test_app_spec.rb[1:3]' }
138
144
  )
139
145
  ]
140
146
  end
@@ -147,6 +153,8 @@ RSpec.describe Yardcheck::Runner do
147
153
  tests:
148
154
  - test_app_spec.rb:1
149
155
  - test_app_spec.rb:2
156
+ rerun with:
157
+ rspec 'test_app_spec.rb[1:1]' 'test_app_spec.rb[1:2]'
150
158
 
151
159
  # Instance method with correct param definition and incorrect return
152
160
  #
@@ -163,6 +171,8 @@ RSpec.describe Yardcheck::Runner do
163
171
  source: ./test_app/lib/test_app.rb:25
164
172
  tests:
165
173
  - test_app_spec.rb:3
174
+ rerun with:
175
+ rspec 'test_app_spec.rb[1:3]'
166
176
 
167
177
  # Instance method with correct param definition and incorrect return
168
178
  #
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- yardcheck (0.0.1)
4
+ yardcheck (0.0.3)
5
5
  anima (~> 0.3)
6
6
  coderay (~> 1.1)
7
7
  concord (~> 0.1)
@@ -26,7 +26,7 @@ GEM
26
26
  concord (0.1.5)
27
27
  adamantium (~> 0.2.0)
28
28
  equalizer (~> 0.0.9)
29
- diff-lcs (1.2.5)
29
+ diff-lcs (1.3)
30
30
  equalizer (0.0.11)
31
31
  ice_nine (0.11.2)
32
32
  memoizable (0.4.2)
@@ -41,19 +41,19 @@ GEM
41
41
  pry-byebug (3.4.2)
42
42
  byebug (~> 9.0)
43
43
  pry (~> 0.10)
44
- rspec (3.5.0)
45
- rspec-core (~> 3.5.0)
46
- rspec-expectations (~> 3.5.0)
47
- rspec-mocks (~> 3.5.0)
48
- rspec-core (3.5.4)
49
- rspec-support (~> 3.5.0)
50
- rspec-expectations (3.5.0)
44
+ rspec (3.6.0)
45
+ rspec-core (~> 3.6.0)
46
+ rspec-expectations (~> 3.6.0)
47
+ rspec-mocks (~> 3.6.0)
48
+ rspec-core (3.6.0)
49
+ rspec-support (~> 3.6.0)
50
+ rspec-expectations (3.6.0)
51
51
  diff-lcs (>= 1.2.0, < 2.0)
52
- rspec-support (~> 3.5.0)
53
- rspec-mocks (3.5.0)
52
+ rspec-support (~> 3.6.0)
53
+ rspec-mocks (3.6.0)
54
54
  diff-lcs (>= 1.2.0, < 2.0)
55
- rspec-support (~> 3.5.0)
56
- rspec-support (3.5.0)
55
+ rspec-support (~> 3.6.0)
56
+ rspec-support (3.6.0)
57
57
  slop (3.6.0)
58
58
  thread_safe (0.3.6)
59
59
  yard (0.9.8)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yardcheck
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - John
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-07-31 00:00:00.000000000 Z
12
+ date: 2017-08-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: yard
@@ -176,7 +176,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
176
176
  version: '0'
177
177
  requirements: []
178
178
  rubyforge_project:
179
- rubygems_version: 2.5.2
179
+ rubygems_version: 2.6.11
180
180
  signing_key:
181
181
  specification_version: 4
182
182
  summary: Validate YARD docs by running specs