rspec-parameterized-core 1.0.1 → 2.0.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: a9a8d43ccf0423ea5eeeee84ec63814c779d554b67c72e117328422f019f6589
4
- data.tar.gz: 85648988761216691d64e09db8e7ca8e35e9b66d3ddcea55f3e693bbab8c938e
3
+ metadata.gz: 533287240763772bdb4bce2c18611e6ae33ea580ef36fc1344f77d7d25993650
4
+ data.tar.gz: 400d4aff05dcf41c042455a8df97e3dd3cc1391a6efa88056dc52f95b25b4aa4
5
5
  SHA512:
6
- metadata.gz: c99e4fef851bd42987a161ff6cb75dc95480a2eb6364c7e8b57b6fe5008412ec6b688f90befcce3cba7479b9ed76077fa7a5e2d7bd445e44c5983ebd9fe9aed9
7
- data.tar.gz: dc8ff9f56961a767b5cf999da41936ddd9fe2f91df1ff02559179d637472b396db80f6efd377b455b9d5c7b16a70f44832920c697ddc3b3d2d3f85cff7030d5c
6
+ metadata.gz: b3a09f8853bbb5b038510976cbca380a762bee57491eaa9722ca9cab31015c2426f277a7238d2cd0efba6493d69fc7d298ea17fc85da255fcdd324a3b7301aab
7
+ data.tar.gz: 92c79e269e753b5f2d971a7ece2f2878a8a0b7b86c4c8de6455ed63387a79162087186358c92c21b04515df1fb994d23de5b1a23f3385c096226662246b09fbf
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  ## [Unreleased]
2
- [Full Changelog](https://github.com/rspec-parameterized/rspec-parameterized-core/compare/v1.0.1...main)
2
+ [Full Changelog](https://github.com/rspec-parameterized/rspec-parameterized-core/compare/v2.0.0...main)
3
+
4
+ ## [2.0.0](https://github.com/rspec-parameterized/rspec-parameterized-core/releases/tag/v2.0.0) - 2025-05-02
5
+ [Full Changelog](https://github.com/rspec-parameterized/rspec-parameterized-core/compare/v1.0.1...v2.0.0)
6
+
7
+ - Requires Ruby 2.7+
8
+ - https://github.com/rspec-parameterized/rspec-parameterized-core/pull/19
9
+ - Use Prism gem instead of Parser gem when Ruby 3.4+
10
+ - https://github.com/rspec-parameterized/rspec-parameterized-core/issues/17
11
+ - https://github.com/rspec-parameterized/rspec-parameterized-core/pull/18
3
12
 
4
13
  ## [1.0.1] - 2024-05-04
5
14
  [Full Changelog](https://github.com/rspec-parameterized/rspec-parameterized-core/compare/v1.0.0...v1.0.1)
@@ -0,0 +1,75 @@
1
+ module RSpec
2
+ module Parameterized
3
+ module Core
4
+ # Proxy class for parser and prism
5
+ module CompositeParser
6
+ # @param obj [Object]
7
+ # @return [String]
8
+ # @raise [RSpec::Parameterized::Core::ParserSyntaxError]
9
+ def self.to_raw_source(obj)
10
+ return to_raw_source_with_prism(obj) if use_prism?
11
+
12
+ to_raw_source_with_parser(obj)
13
+ end
14
+
15
+ # Whether use parser or prism
16
+ #
17
+ # @return [true] Use prism
18
+ # @return [false] Use parser
19
+ def self.use_prism?
20
+ Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0")
21
+ end
22
+
23
+ # @param obj [Object]
24
+ # @return [String]
25
+ # @raise [RSpec::Parameterized::Core::ParserSyntaxError]
26
+ def self.to_raw_source_with_parser(obj)
27
+ obj.is_a?(Proc) ? obj.to_raw_source : obj.inspect
28
+ rescue Parser::SyntaxError => e
29
+ raise ParserSyntaxError
30
+ end
31
+ private_class_method :to_raw_source_with_parser
32
+
33
+ # @param obj [Object]
34
+ # @return [String]
35
+ def self.to_raw_source_with_prism(obj)
36
+ return obj.inspect unless obj.is_a?(Proc)
37
+
38
+ filename, linenum = obj.source_location
39
+ ast = parse_with_prism(filename, linenum)
40
+
41
+ return "" unless ast
42
+
43
+ ast.source.source.strip
44
+ end
45
+ private_class_method :to_raw_source_with_prism
46
+
47
+ # @param filename [String]
48
+ # @param linenum [Integer]
49
+ #
50
+ # @return [Prism::ParseResult,nil]
51
+ def self.parse_with_prism(filename, linenum)
52
+ buf = []
53
+ File.open(filename, "rb").each_with_index do |line, index|
54
+ next if index < linenum - 1
55
+ buf << line
56
+
57
+ ret = Prism.parse(buf.join)
58
+ return ret if ret.success?
59
+ end
60
+
61
+ nil
62
+ end
63
+ private_class_method :parse_with_prism
64
+ end
65
+ end
66
+ end
67
+ end
68
+
69
+ if RSpec::Parameterized::Core::CompositeParser.use_prism?
70
+ require 'prism'
71
+ else
72
+ require 'parser'
73
+ require 'unparser'
74
+ require 'proc_to_ast'
75
+ end
@@ -0,0 +1,9 @@
1
+ module RSpec
2
+ module Parameterized
3
+ module Core
4
+ class Error < StandardError; end
5
+
6
+ class ParserSyntaxError < Error; end
7
+ end
8
+ end
9
+ end
@@ -11,8 +11,8 @@ module RSpec
11
11
  end
12
12
 
13
13
  def inspect
14
- "#{@block.to_raw_source}"
15
- rescue Parser::SyntaxError
14
+ CompositeParser.to_raw_source(@block)
15
+ rescue ParserSyntaxError
16
16
  super.inspect
17
17
  end
18
18
  end
@@ -3,7 +3,7 @@
3
3
  module Rspec
4
4
  module Parameterized
5
5
  module Core
6
- VERSION = "1.0.1"
6
+ VERSION = "2.0.0"
7
7
  end
8
8
  end
9
9
  end
@@ -1,9 +1,8 @@
1
1
  require "rspec/parameterized/core/version"
2
- require 'parser'
3
- require 'unparser'
4
- require 'proc_to_ast'
5
2
  require 'rspec/parameterized/core/helper_methods'
6
3
  require 'rspec/parameterized/core/example_helper_methods'
4
+ require 'rspec/parameterized/core/errors'
5
+ require 'rspec/parameterized/core/composite_parser'
7
6
 
8
7
  module RSpec
9
8
  module Parameterized
@@ -143,11 +142,9 @@ module RSpec
143
142
  end
144
143
 
145
144
  def params_inspect(obj)
146
- begin
147
- obj.is_a?(Proc) ? obj.to_raw_source : obj.inspect
148
- rescue Parser::SyntaxError
149
- return obj.inspect
150
- end
145
+ RSpec::Parameterized::Core::CompositeParser.to_raw_source(obj)
146
+ rescue ParserSyntaxError
147
+ return obj.inspect
151
148
  end
152
149
 
153
150
  def set_verbose_parameters(&block)
@@ -14,7 +14,7 @@ I was inspired by [udzura's mock](https://gist.github.com/1881139).}
14
14
 
15
15
  spec.homepage = "https://github.com/rspec-parameterized/rspec-parameterized-core"
16
16
  spec.license = "MIT"
17
- spec.required_ruby_version = ">= 2.6.0"
17
+ spec.required_ruby_version = ">= 2.7.0"
18
18
 
19
19
  spec.metadata["homepage_uri"] = spec.homepage
20
20
  spec.metadata["source_code_uri"] = spec.homepage
@@ -32,12 +32,18 @@ I was inspired by [udzura's mock](https://gist.github.com/1881139).}
32
32
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
33
33
  spec.require_paths = ["lib"]
34
34
 
35
+ spec.add_dependency "rspec", ">= 2.13", "< 4"
36
+
37
+ # parser dependencies
35
38
  spec.add_dependency "parser"
36
39
  spec.add_dependency "proc_to_ast", ">= 0.2.0"
37
- spec.add_dependency "rspec", ">= 2.13", "< 4"
38
40
  spec.add_dependency "unparser"
39
41
 
42
+ # prism dependencies
43
+ spec.add_dependency "prism"
44
+
40
45
  spec.add_development_dependency "rake", ">= 12.0.0"
46
+ spec.add_development_dependency "rspec-its"
41
47
 
42
48
  # For more information and examples about making a new gem, check out our
43
49
  # guide at: https://bundler.io/guides/creating_gem.html
metadata CHANGED
@@ -1,17 +1,36 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-parameterized-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - sue445
8
8
  - tomykaira
9
9
  - joker1007
10
- autorequire:
11
10
  bindir: exe
12
11
  cert_chain: []
13
- date: 2024-05-04 00:00:00.000000000 Z
12
+ date: 2025-05-02 00:00:00.000000000 Z
14
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '2.13'
21
+ - - "<"
22
+ - !ruby/object:Gem::Version
23
+ version: '4'
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ version: '2.13'
31
+ - - "<"
32
+ - !ruby/object:Gem::Version
33
+ version: '4'
15
34
  - !ruby/object:Gem::Dependency
16
35
  name: parser
17
36
  requirement: !ruby/object:Gem::Requirement
@@ -41,27 +60,21 @@ dependencies:
41
60
  - !ruby/object:Gem::Version
42
61
  version: 0.2.0
43
62
  - !ruby/object:Gem::Dependency
44
- name: rspec
63
+ name: unparser
45
64
  requirement: !ruby/object:Gem::Requirement
46
65
  requirements:
47
66
  - - ">="
48
67
  - !ruby/object:Gem::Version
49
- version: '2.13'
50
- - - "<"
51
- - !ruby/object:Gem::Version
52
- version: '4'
68
+ version: '0'
53
69
  type: :runtime
54
70
  prerelease: false
55
71
  version_requirements: !ruby/object:Gem::Requirement
56
72
  requirements:
57
73
  - - ">="
58
74
  - !ruby/object:Gem::Version
59
- version: '2.13'
60
- - - "<"
61
- - !ruby/object:Gem::Version
62
- version: '4'
75
+ version: '0'
63
76
  - !ruby/object:Gem::Dependency
64
- name: unparser
77
+ name: prism
65
78
  requirement: !ruby/object:Gem::Requirement
66
79
  requirements:
67
80
  - - ">="
@@ -88,6 +101,20 @@ dependencies:
88
101
  - - ">="
89
102
  - !ruby/object:Gem::Version
90
103
  version: 12.0.0
104
+ - !ruby/object:Gem::Dependency
105
+ name: rspec-its
106
+ requirement: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ type: :development
112
+ prerelease: false
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
91
118
  description: RSpec::Parameterized supports simple parameterized test syntax in rspec.
92
119
  email:
93
120
  - sue445@sue445.net
@@ -105,6 +132,8 @@ files:
105
132
  - lib/rspec-parameterized-core.rb
106
133
  - lib/rspec/parameterized/core.rb
107
134
  - lib/rspec/parameterized/core/arg.rb
135
+ - lib/rspec/parameterized/core/composite_parser.rb
136
+ - lib/rspec/parameterized/core/errors.rb
108
137
  - lib/rspec/parameterized/core/example_helper_methods.rb
109
138
  - lib/rspec/parameterized/core/helper_methods.rb
110
139
  - lib/rspec/parameterized/core/lazy_arg.rb
@@ -120,7 +149,6 @@ metadata:
120
149
  source_code_uri: https://github.com/rspec-parameterized/rspec-parameterized-core
121
150
  changelog_uri: https://github.com/rspec-parameterized/rspec-parameterized-core/blob/main/CHANGELOG.md
122
151
  rubygems_mfa_required: 'true'
123
- post_install_message:
124
152
  rdoc_options: []
125
153
  require_paths:
126
154
  - lib
@@ -128,15 +156,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
128
156
  requirements:
129
157
  - - ">="
130
158
  - !ruby/object:Gem::Version
131
- version: 2.6.0
159
+ version: 2.7.0
132
160
  required_rubygems_version: !ruby/object:Gem::Requirement
133
161
  requirements:
134
162
  - - ">="
135
163
  - !ruby/object:Gem::Version
136
164
  version: '0'
137
165
  requirements: []
138
- rubygems_version: 3.5.3
139
- signing_key:
166
+ rubygems_version: 3.6.2
140
167
  specification_version: 4
141
168
  summary: RSpec::Parameterized supports simple parameterized test syntax in rspec.
142
169
  I was inspired by [udzura's mock](https://gist.github.com/1881139).