rspec-paramz 1.2.0 → 2.0.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: 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