rspec-paramz 1.2.0 → 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: 13b0814bc75385484cc98d0e177265f3946afc2f85ebfa9cc7b074396723cb36
4
- data.tar.gz: ca7a49c75162ca57d76296a7de15d8d222d92a66451637fa41f5032f3c08c602
3
+ metadata.gz: ad92978ad2f245bcae60978474d7ec8b6de9e20adb2090bc1572f0974cc8c5d8
4
+ data.tar.gz: cad5699ce3a8290b5d7076abea8d5e3f70745b9606f54d909da777bee7155268
5
5
  SHA512:
6
- metadata.gz: efc72c44e493d2010d21468eec25971a04931966f94a50e4fc61c20045d25a85d9cfb189b71716833e909b2b38e8be4816df8b40e669b8b4cbb7c6c1d76d00cb
7
- data.tar.gz: d3e7ddc26c2649fe090e9e36a7924a090fdc6178af4252a6207de64e01321ac1683f02526dcb2048510df3f2ddf986b8b5af8a0e796d8b26a979decec1b5308b
6
+ metadata.gz: 1741436d436b3b23bb739c3d95a794f0d2de2304505bbe3d6cc679c9346fdf21b4c847426d79eb9cdaf10fac9793da4b6a03459223f383a020f16b80134c2eb8
7
+ data.tar.gz: a974dd00c973303da0f7bd7bed9e49b121190aa257da8381e530554e05d37dce45cd2ef76194d1a131e6ef0e961452275d4448d49035010ebc5d92365e3cdcfb
@@ -0,0 +1,26 @@
1
+ name: Test
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+
7
+ permissions:
8
+ contents: read
9
+
10
+ jobs:
11
+ test:
12
+
13
+ runs-on: ubuntu-latest
14
+ strategy:
15
+ matrix:
16
+ ruby-version: ['3.1', '3.2', '3.3', '3.4', 'head']
17
+
18
+ steps:
19
+ - uses: actions/checkout@v4
20
+ - name: Set up Ruby
21
+ uses: ruby/setup-ruby@v1
22
+ with:
23
+ ruby-version: ${{ matrix.ruby-version }}
24
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
25
+ - name: Run tests
26
+ run: bundle exec rake
data/.rubocop.yml CHANGED
@@ -4,4 +4,4 @@ inherit_gem:
4
4
  - "config/rspec.yml"
5
5
 
6
6
  AllCops:
7
- TargetRubyVersion: 2.6
7
+ TargetRubyVersion: 3.1
data/Gemfile.lock CHANGED
@@ -2,65 +2,74 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  rspec-paramz (1.2.0)
5
- rspec (~> 3.0)
5
+ rspec
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
10
  ast (2.4.2)
11
11
  coderay (1.1.3)
12
- diff-lcs (1.5.0)
13
- method_source (1.0.0)
12
+ diff-lcs (1.6.0)
13
+ json (2.10.1)
14
+ language_server-protocol (3.17.0.4)
15
+ lint_roller (1.1.0)
16
+ method_source (1.1.0)
14
17
  onkcop (1.0.0.0)
15
18
  rubocop (>= 0.80.0)
16
19
  rubocop-rspec (>= 1.34.0)
17
- parallel (1.22.1)
18
- parser (3.1.2.0)
20
+ parallel (1.26.3)
21
+ parser (3.3.7.1)
19
22
  ast (~> 2.4.1)
20
- pry (0.14.1)
23
+ racc
24
+ pry (0.15.2)
21
25
  coderay (~> 1.1)
22
26
  method_source (~> 1.0)
27
+ racc (1.8.1)
23
28
  rainbow (3.1.1)
24
- rake (13.0.6)
25
- regexp_parser (2.5.0)
26
- rexml (3.2.5)
27
- rspec (3.11.0)
28
- rspec-core (~> 3.11.0)
29
- rspec-expectations (~> 3.11.0)
30
- rspec-mocks (~> 3.11.0)
31
- rspec-core (3.11.0)
32
- rspec-support (~> 3.11.0)
33
- rspec-expectations (3.11.0)
29
+ rake (13.2.1)
30
+ regexp_parser (2.10.0)
31
+ rspec (3.13.0)
32
+ rspec-core (~> 3.13.0)
33
+ rspec-expectations (~> 3.13.0)
34
+ rspec-mocks (~> 3.13.0)
35
+ rspec-core (3.13.3)
36
+ rspec-support (~> 3.13.0)
37
+ rspec-expectations (3.13.3)
34
38
  diff-lcs (>= 1.2.0, < 2.0)
35
- rspec-support (~> 3.11.0)
36
- rspec-mocks (3.11.1)
39
+ rspec-support (~> 3.13.0)
40
+ rspec-mocks (3.13.2)
37
41
  diff-lcs (>= 1.2.0, < 2.0)
38
- rspec-support (~> 3.11.0)
39
- rspec-support (3.11.0)
40
- rubocop (1.30.1)
42
+ rspec-support (~> 3.13.0)
43
+ rspec-support (3.13.2)
44
+ rubocop (1.72.2)
45
+ json (~> 2.3)
46
+ language_server-protocol (~> 3.17.0.2)
47
+ lint_roller (~> 1.1.0)
41
48
  parallel (~> 1.10)
42
- parser (>= 3.1.0.0)
49
+ parser (>= 3.3.0.2)
43
50
  rainbow (>= 2.2.2, < 4.0)
44
- regexp_parser (>= 1.8, < 3.0)
45
- rexml (>= 3.2.5, < 4.0)
46
- rubocop-ast (>= 1.18.0, < 2.0)
51
+ regexp_parser (>= 2.9.3, < 3.0)
52
+ rubocop-ast (>= 1.38.0, < 2.0)
47
53
  ruby-progressbar (~> 1.7)
48
- unicode-display_width (>= 1.4.0, < 3.0)
49
- rubocop-ast (1.18.0)
50
- parser (>= 3.1.1.0)
51
- rubocop-rspec (2.11.1)
52
- rubocop (~> 1.19)
53
- ruby-progressbar (1.11.0)
54
- unicode-display_width (2.1.0)
54
+ unicode-display_width (>= 2.4.0, < 4.0)
55
+ rubocop-ast (1.38.0)
56
+ parser (>= 3.3.1.0)
57
+ rubocop-rspec (3.5.0)
58
+ lint_roller (~> 1.1)
59
+ rubocop (~> 1.72, >= 1.72.1)
60
+ ruby-progressbar (1.13.0)
61
+ unicode-display_width (3.1.4)
62
+ unicode-emoji (~> 4.0, >= 4.0.4)
63
+ unicode-emoji (4.0.4)
55
64
 
56
65
  PLATFORMS
57
66
  ruby
58
67
 
59
68
  DEPENDENCIES
60
- bundler (~> 2.0)
69
+ bundler
61
70
  onkcop
62
71
  pry
63
- rake (~> 13.0)
72
+ rake
64
73
  rspec-paramz!
65
74
 
66
75
  BUNDLED WITH
data/README.md CHANGED
@@ -6,8 +6,7 @@ Inspired by [tomykaira/rspec-parameterized](https://github.com/tomykaira/rspec-p
6
6
 
7
7
  ## Requirements
8
8
 
9
- - Ruby 2.6 or later
10
- - This gem uses `RubyVM::AbstractSyntaxTree`
9
+ - Ruby 3.1 or later
11
10
 
12
11
  ## Installation
13
12
 
@@ -1,51 +1,61 @@
1
1
  module RSpec
2
2
  module Paramz
3
3
  module PrettyPrint
4
- def self.inspect(value, raw_value = true)
5
- case value
6
- when Hash
7
- subject(value)
8
- when Proc
9
- to_source(value)
10
- else
11
- raw_value ? value : value.inspect
4
+ class << self
5
+ def inspect(value, raw_value = true)
6
+ case value
7
+ when Hash
8
+ subject(value)
9
+ when Proc
10
+ to_source(value)
11
+ else
12
+ raw_value ? value : value.inspect
13
+ end
12
14
  end
13
- end
14
-
15
- def self.subject(value)
16
- return value if value.keys != [:subject]
17
15
 
18
- _subject = value.values.first
19
- case _subject
20
- when Proc
21
- "subject #{to_source(_subject)}"
22
- when Hash
23
- subject_name = _subject.keys.first
24
- subject_value = _subject.values.first
16
+ def subject(value)
17
+ return value if value.keys != [:subject]
25
18
 
26
- case subject_value
19
+ _subject = value.values.first
20
+ case _subject
27
21
  when Proc
28
- "subject(:#{subject_name}) #{to_source(subject_value)}"
22
+ "subject #{to_source(_subject)}"
23
+ when Hash
24
+ subject_name = _subject.keys.first
25
+ subject_value = _subject.values.first
26
+
27
+ case subject_value
28
+ when Proc
29
+ "subject(:#{subject_name}) #{to_source(subject_value)}"
30
+ else
31
+ "subject { #{subject_value} }"
32
+ end
29
33
  else
30
- "subject { #{subject_value} }"
34
+ value
31
35
  end
32
- else
33
- value
34
36
  end
35
- end
36
37
 
37
- def self.to_source(value)
38
- return value if value.is_a?(NamedProc) || !value.is_a?(Proc)
38
+ def to_source(value)
39
+ return value if value.is_a?(NamedProc) || !value.is_a?(Proc)
40
+
41
+ code_location = fetch_code_location(value)
42
+ return value if code_location.nil?
43
+
44
+ path = value.source_location.first
45
+ lines = File.readlines(path)
39
46
 
40
- node = RubyVM::AbstractSyntaxTree.of(value)
41
- return value if node.nil?
47
+ source_lines = lines[(code_location[0] - 1)..(code_location[2] - 1)]
48
+ source_lines[-1] = source_lines[-1][0..(code_location[3] - 1)]
49
+ source_lines[0] = source_lines[0][code_location[1]..]
50
+ source_lines.map(&:strip).join("\n")
51
+ end
52
+
53
+ private
42
54
 
43
- path = value.source_location.first
44
- lines = File.readlines(path)
45
- source_lines = lines[(node.first_lineno - 1)..(node.last_lineno - 1)]
46
- source_lines[-1] = source_lines[-1][0..(node.last_column - 1)]
47
- source_lines[0] = source_lines[0][node.first_column..]
48
- source_lines.map(&:strip).join("\n")
55
+ def fetch_code_location(value)
56
+ iseq = RubyVM::InstructionSequence.of(value)
57
+ iseq.to_a[4][:code_location]
58
+ end
49
59
  end
50
60
  end
51
61
  end
@@ -1,5 +1,5 @@
1
1
  module RSpec
2
2
  module Paramz
3
- VERSION = "1.2.0"
3
+ VERSION = "2.0.0".freeze
4
4
  end
5
5
  end
data/lib/rspec/paramz.rb CHANGED
@@ -9,14 +9,16 @@ module RSpec
9
9
  def paramz(*args, &block)
10
10
  labels = args.first
11
11
 
12
- if !block_given? && !labels.any? { |label| subject_label?(label) }
12
+ if !block_given? && labels.none? {|label| subject_label?(label) }
13
13
  raise ArgumentError, "No block or subject given to paramz."
14
14
  end
15
15
 
16
- args[1..-1].each_slice(labels.length).with_index do |arg, index|
16
+ args[1..].each_slice(labels.length).with_index do |arg, index|
17
17
  pairs = [labels, arg].transpose.to_h
18
18
 
19
- context_name = '[' + pairs.map { |k, v| "#{RSpec::Paramz::PrettyPrint.inspect(k)} = #{RSpec::Paramz::PrettyPrint.inspect(v, false)}" }.join(' | ') + ']'
19
+ context_name = "[" + pairs.map {|k, v|
20
+ "#{RSpec::Paramz::PrettyPrint.inspect(k)} = #{RSpec::Paramz::PrettyPrint.inspect(v, false)}"
21
+ }.join(" | ") + "]"
20
22
 
21
23
  context context_name do
22
24
  pairs.each do |label, val|
@@ -29,7 +31,7 @@ module RSpec
29
31
 
30
32
  _subject, _subject_name = parse_subject(label)
31
33
 
32
- module_exec { _subject.is_a?(Proc) ? subject(_subject_name, &_subject) : subject(_subject_name) { _subject } }
34
+ module_exec { _subject.is_a?(Proc) ? subject(_subject_name, &_subject) : subject(_subject_name) { _subject } }
33
35
 
34
36
  unless block_given?
35
37
  module_exec { val.is_a?(Proc) ? let(:_paramz_subject, &val) : let(:_paramz_subject) { val } }
@@ -44,7 +46,7 @@ module RSpec
44
46
 
45
47
  after(:each) do |example|
46
48
  if example.exception
47
- index_info = arg.map { |v| RSpec::Paramz::PrettyPrint.inspect(v, false) }.join(', ')
49
+ index_info = arg.map {|v| RSpec::Paramz::PrettyPrint.inspect(v, false) }.join(", ")
48
50
  example.exception.backtrace.push("failed paramz index is:#{index + 1}:[#{index_info}]")
49
51
  end
50
52
  end
@@ -54,22 +56,23 @@ module RSpec
54
56
 
55
57
  private
56
58
 
57
- def subject_label?(label)
58
- return true if label == :subject
59
- label.is_a?(Hash) && label.keys == [:subject]
60
- end
61
-
62
- def parse_subject(label)
63
- _subject = label[:subject]
59
+ def subject_label?(label)
60
+ return true if label == :subject
64
61
 
65
- _subject_name = nil
66
- if _subject.is_a?(Hash)
67
- _subject_name = _subject.keys.first
68
- _subject = _subject.values.first
62
+ label.is_a?(Hash) && label.keys == [:subject]
69
63
  end
70
64
 
71
- [_subject, _subject_name]
72
- end
65
+ def parse_subject(label)
66
+ _subject = label[:subject]
67
+
68
+ _subject_name = nil
69
+ if _subject.is_a?(Hash)
70
+ _subject_name = _subject.keys.first
71
+ _subject = _subject.values.first
72
+ end
73
+
74
+ [_subject, _subject_name]
75
+ end
73
76
  end
74
77
  end
75
78
 
data/rspec-paramz.gemspec CHANGED
@@ -8,8 +8,10 @@ Gem::Specification.new do |spec|
8
8
  spec.authors = ["fukayatsu"]
9
9
  spec.email = ["fukayatsu@gmail.com"]
10
10
 
11
- spec.summary = %q{Simple Parameterized Test for RSpec.}
12
- spec.description = %q{Simple Parameterized Test for RSpec}
11
+ spec.required_ruby_version = ">= 3.1.0"
12
+
13
+ spec.summary = "Simple Parameterized Test for RSpec."
14
+ spec.description = "Simple Parameterized Test for RSpec"
13
15
  spec.homepage = "https://github.com/fukayatsu/rspec-paramz"
14
16
  spec.license = "MIT"
15
17
 
@@ -19,17 +21,17 @@ Gem::Specification.new do |spec|
19
21
 
20
22
  # Specify which files should be added to the gem when it is released.
21
23
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
22
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
23
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
24
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
25
+ `git ls-files -z`.split("\x0").reject {|f| f.match(%r{^(test|spec|features)/}) }
24
26
  end
25
27
  spec.bindir = "exe"
26
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
+ spec.executables = spec.files.grep(%r{^exe/}) {|f| File.basename(f) }
27
29
  spec.require_paths = ["lib"]
28
30
 
29
- spec.add_runtime_dependency "rspec", "~> 3.0"
31
+ spec.add_runtime_dependency "rspec"
30
32
 
31
- spec.add_development_dependency "bundler", "~> 2.0"
32
- spec.add_development_dependency "rake", "~> 13.0"
33
+ spec.add_development_dependency "bundler"
33
34
  spec.add_development_dependency "onkcop"
34
35
  spec.add_development_dependency "pry"
36
+ spec.add_development_dependency "rake"
35
37
  end
metadata CHANGED
@@ -1,59 +1,58 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-paramz
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - fukayatsu
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2022-06-15 00:00:00.000000000 Z
10
+ date: 2025-02-19 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: rspec
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
- - - "~>"
16
+ - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: '3.0'
18
+ version: '0'
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
- - - "~>"
23
+ - - ">="
25
24
  - !ruby/object:Gem::Version
26
- version: '3.0'
25
+ version: '0'
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: bundler
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
- - - "~>"
30
+ - - ">="
32
31
  - !ruby/object:Gem::Version
33
- version: '2.0'
32
+ version: '0'
34
33
  type: :development
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
- - - "~>"
37
+ - - ">="
39
38
  - !ruby/object:Gem::Version
40
- version: '2.0'
39
+ version: '0'
41
40
  - !ruby/object:Gem::Dependency
42
- name: rake
41
+ name: onkcop
43
42
  requirement: !ruby/object:Gem::Requirement
44
43
  requirements:
45
- - - "~>"
44
+ - - ">="
46
45
  - !ruby/object:Gem::Version
47
- version: '13.0'
46
+ version: '0'
48
47
  type: :development
49
48
  prerelease: false
50
49
  version_requirements: !ruby/object:Gem::Requirement
51
50
  requirements:
52
- - - "~>"
51
+ - - ">="
53
52
  - !ruby/object:Gem::Version
54
- version: '13.0'
53
+ version: '0'
55
54
  - !ruby/object:Gem::Dependency
56
- name: onkcop
55
+ name: pry
57
56
  requirement: !ruby/object:Gem::Requirement
58
57
  requirements:
59
58
  - - ">="
@@ -67,7 +66,7 @@ dependencies:
67
66
  - !ruby/object:Gem::Version
68
67
  version: '0'
69
68
  - !ruby/object:Gem::Dependency
70
- name: pry
69
+ name: rake
71
70
  requirement: !ruby/object:Gem::Requirement
72
71
  requirements:
73
72
  - - ">="
@@ -87,10 +86,10 @@ executables: []
87
86
  extensions: []
88
87
  extra_rdoc_files: []
89
88
  files:
89
+ - ".github/workflows/test.yml"
90
90
  - ".gitignore"
91
91
  - ".rspec"
92
92
  - ".rubocop.yml"
93
- - ".travis.yml"
94
93
  - CODE_OF_CONDUCT.md
95
94
  - Gemfile
96
95
  - Gemfile.lock
@@ -113,7 +112,6 @@ metadata:
113
112
  homepage_uri: https://github.com/fukayatsu/rspec-paramz
114
113
  source_code_uri: https://github.com/fukayatsu/rspec-paramz
115
114
  changelog_uri: https://github.com/fukayatsu/rspec-paramz/releases
116
- post_install_message:
117
115
  rdoc_options: []
118
116
  require_paths:
119
117
  - lib
@@ -121,15 +119,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
121
119
  requirements:
122
120
  - - ">="
123
121
  - !ruby/object:Gem::Version
124
- version: '0'
122
+ version: 3.1.0
125
123
  required_rubygems_version: !ruby/object:Gem::Requirement
126
124
  requirements:
127
125
  - - ">="
128
126
  - !ruby/object:Gem::Version
129
127
  version: '0'
130
128
  requirements: []
131
- rubygems_version: 3.2.33
132
- signing_key:
129
+ rubygems_version: 3.6.2
133
130
  specification_version: 4
134
131
  summary: Simple Parameterized Test for RSpec.
135
132
  test_files: []
data/.travis.yml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- sudo: false
3
- language: ruby
4
- cache: bundler
5
- rvm:
6
- - 2.6.3
7
- before_install: gem install bundler -v 2.0.2