r_spec 0.3.2 → 1.0.0.beta4
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 +4 -4
- data/LICENSE.md +1 -1
- data/README.md +187 -79
- data/lib/r_spec.rb +54 -22
- data/lib/r_spec/dsl.rb +135 -0
- data/lib/r_spec/expectation_helper.rb +10 -0
- data/lib/r_spec/expectation_helper/base.rb +96 -0
- data/lib/r_spec/expectation_helper/it.rb +41 -0
- data/lib/r_spec/expectation_helper/its.rb +25 -0
- data/lib/r_spec/expectation_target.rb +30 -0
- data/lib/r_spec/expectation_target/base.rb +73 -0
- data/lib/r_spec/expectation_target/block.rb +60 -0
- data/lib/r_spec/expectation_target/value.rb +53 -0
- data/lib/r_spec/pending.rb +26 -0
- data/lib/r_spec/sandbox.rb +9 -0
- metadata +104 -68
- data/.gitignore +0 -11
- data/.rubocop.yml +0 -1
- data/.rubocop_todo.yml +0 -28
- data/.travis.yml +0 -26
- data/.yardopts +0 -1
- data/CODE_OF_CONDUCT.md +0 -13
- data/Gemfile +0 -5
- data/Rakefile +0 -22
- data/VERSION.semver +0 -1
- data/bin/console +0 -8
- data/bin/setup +0 -5
- data/checksum/r_spec-0.1.0.gem.sha512 +0 -1
- data/checksum/r_spec-0.1.1.gem.sha512 +0 -1
- data/checksum/r_spec-0.2.0.gem.sha512 +0 -1
- data/checksum/r_spec-0.3.0.gem.sha512 +0 -1
- data/checksum/r_spec-0.3.1.gem.sha512 +0 -1
- data/lib/fix/it.rb +0 -12
- data/lib/fix/on.rb +0 -45
- data/pkg_checksum +0 -12
- data/r_spec.gemspec +0 -29
@@ -0,0 +1,96 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "matchi/rspec"
|
4
|
+
|
5
|
+
require_relative File.join("..", "pending")
|
6
|
+
|
7
|
+
module RSpec
|
8
|
+
module ExpectationHelper
|
9
|
+
# Abstract expectation helper base module.
|
10
|
+
#
|
11
|
+
# This module defines a number of methods to create expectations, which are
|
12
|
+
# automatically included into example namespaces.
|
13
|
+
#
|
14
|
+
# It also includes a collection of expectation matchers 🤹
|
15
|
+
#
|
16
|
+
# @example Equivalence matcher
|
17
|
+
# matcher = eql("foo") # => Matchi::Matcher::Eql.new("foo")
|
18
|
+
# matcher.matches? { "foo" } # => true
|
19
|
+
# matcher.matches? { "bar" } # => false
|
20
|
+
#
|
21
|
+
# matcher = eq("foo") # => Matchi::Matcher::Eq.new("foo")
|
22
|
+
# matcher.matches? { "foo" } # => true
|
23
|
+
# matcher.matches? { "bar" } # => false
|
24
|
+
#
|
25
|
+
# @example Identity matcher
|
26
|
+
# object = "foo"
|
27
|
+
#
|
28
|
+
# matcher = equal(object) # => Matchi::Matcher::Equal.new(object)
|
29
|
+
# matcher.matches? { object } # => true
|
30
|
+
# matcher.matches? { "foo" } # => false
|
31
|
+
#
|
32
|
+
# matcher = be(object) # => Matchi::Matcher::Be.new(object)
|
33
|
+
# matcher.matches? { object } # => true
|
34
|
+
# matcher.matches? { "foo" } # => false
|
35
|
+
#
|
36
|
+
# @example Regular expressions matcher
|
37
|
+
# matcher = match(/^foo$/) # => Matchi::Matcher::Match.new(/^foo$/)
|
38
|
+
# matcher.matches? { "foo" } # => true
|
39
|
+
# matcher.matches? { "bar" } # => false
|
40
|
+
#
|
41
|
+
# @example Expecting errors matcher
|
42
|
+
# matcher = raise_exception(NameError) # => Matchi::Matcher::RaiseException.new(NameError)
|
43
|
+
# matcher.matches? { Boom } # => true
|
44
|
+
# matcher.matches? { true } # => false
|
45
|
+
#
|
46
|
+
# @example Truth matcher
|
47
|
+
# matcher = be_true # => Matchi::Matcher::BeTrue.new
|
48
|
+
# matcher.matches? { true } # => true
|
49
|
+
# matcher.matches? { false } # => false
|
50
|
+
# matcher.matches? { nil } # => false
|
51
|
+
# matcher.matches? { 4 } # => false
|
52
|
+
#
|
53
|
+
# @example Untruth matcher
|
54
|
+
# matcher = be_false # => Matchi::Matcher::BeFalse.new
|
55
|
+
# matcher.matches? { false } # => true
|
56
|
+
# matcher.matches? { true } # => false
|
57
|
+
# matcher.matches? { nil } # => false
|
58
|
+
# matcher.matches? { 4 } # => false
|
59
|
+
#
|
60
|
+
# @example Nil matcher
|
61
|
+
# matcher = be_nil # => Matchi::Matcher::BeNil.new
|
62
|
+
# matcher.matches? { nil } # => true
|
63
|
+
# matcher.matches? { false } # => false
|
64
|
+
# matcher.matches? { true } # => false
|
65
|
+
# matcher.matches? { 4 } # => false
|
66
|
+
#
|
67
|
+
# @example Type/class matcher
|
68
|
+
# matcher = be_instance_of(String) # => Matchi::Matcher::BeInstanceOf.new(String)
|
69
|
+
# matcher.matches? { "foo" } # => true
|
70
|
+
# matcher.matches? { 4 } # => false
|
71
|
+
#
|
72
|
+
# matcher = be_an_instance_of(String) # => Matchi::Matcher::BeAnInstanceOf.new(String)
|
73
|
+
# matcher.matches? { "foo" } # => true
|
74
|
+
# matcher.matches? { 4 } # => false
|
75
|
+
#
|
76
|
+
# @see https://github.com/fixrb/matchi
|
77
|
+
# @see https://github.com/fixrb/matchi-rspec
|
78
|
+
module Base
|
79
|
+
include ::Matchi::Helper
|
80
|
+
|
81
|
+
# Mark a spec as pending, expectation results will be ignored.
|
82
|
+
#
|
83
|
+
# @param description [String] The reason why the example is pending.
|
84
|
+
#
|
85
|
+
# @return [nil] Write a message to STDOUT.
|
86
|
+
#
|
87
|
+
# @example Output a message to the console and return nil
|
88
|
+
# pending("something else getting finished") # => nil
|
89
|
+
#
|
90
|
+
# @api public
|
91
|
+
def pending(description)
|
92
|
+
Pending.result(description)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "base"
|
4
|
+
require_relative File.join("..", "expectation_target")
|
5
|
+
|
6
|
+
module RSpec
|
7
|
+
module ExpectationHelper
|
8
|
+
# `it` expectation helper module.
|
9
|
+
module It
|
10
|
+
include Base
|
11
|
+
|
12
|
+
# Create an expectation for a spec.
|
13
|
+
#
|
14
|
+
# @param value [#object_id, nil] An actual value.
|
15
|
+
# @param block [#call, nil] A code to evaluate.
|
16
|
+
#
|
17
|
+
# @return [Block, Value] The wrapped target of an expectation.
|
18
|
+
#
|
19
|
+
# @example
|
20
|
+
# expect("foo") # => #<RSpec::ExpectationTarget::Value:0x00007fb6b82311a0 @actual="foo">
|
21
|
+
# expect { Boom } # => #<RSpec::ExpectationTarget::Block:0x00007fb6b8263df8 @callable=#<Proc:0x00007fb6b8263e20>>
|
22
|
+
#
|
23
|
+
# @api public
|
24
|
+
def expect(value = self.class.superclass, &block)
|
25
|
+
ExpectationTarget.call(self.class.superclass, value, block)
|
26
|
+
end
|
27
|
+
|
28
|
+
# Wraps the target of an expectation with the subject as actual value.
|
29
|
+
#
|
30
|
+
# @return (see #expect)
|
31
|
+
#
|
32
|
+
# @example
|
33
|
+
# is_expected # => #<RSpec::ExpectationTarget::Block:0x00007fb6b8263df8 @callable=#<Proc:0x00007fb6b8263e20>>
|
34
|
+
#
|
35
|
+
# @api public
|
36
|
+
def is_expected
|
37
|
+
expect { subject }
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "base"
|
4
|
+
require_relative File.join("..", "expectation_target", "block")
|
5
|
+
|
6
|
+
module RSpec
|
7
|
+
module ExpectationHelper
|
8
|
+
# `its` expectation helper module.
|
9
|
+
module Its
|
10
|
+
include Base
|
11
|
+
|
12
|
+
# Wraps the target of an expectation with the actual value.
|
13
|
+
#
|
14
|
+
# @return [Block] The wrapped target of an expectation.
|
15
|
+
#
|
16
|
+
# @example
|
17
|
+
# is_expected # => #<RSpec::ExpectationTarget::Block:0x00007fb6b8263df8 @callable=#<Proc:0x00007fb6b8263e20>>
|
18
|
+
#
|
19
|
+
# @api public
|
20
|
+
def is_expected
|
21
|
+
ExpectationTarget::Block.new(method(:actual))
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RSpec
|
4
|
+
# Wraps the target of an expectation.
|
5
|
+
#
|
6
|
+
# @api private
|
7
|
+
module ExpectationTarget
|
8
|
+
# @param undefined_value A sentinel value to be able to tell when the user
|
9
|
+
# did not pass an argument. We can't use `nil` for that because `nil` is a
|
10
|
+
# valid value to pass.
|
11
|
+
# @param value [#object_id, nil] An actual value.
|
12
|
+
# @param block [#call, nil] A code to evaluate.
|
13
|
+
#
|
14
|
+
# @return [Block, Value] The wrapped target of an expectation.
|
15
|
+
def self.call(undefined_value, value, block)
|
16
|
+
if undefined_value.equal?(value)
|
17
|
+
raise ::ArgumentError, "Pass either an argument or a block" unless block
|
18
|
+
|
19
|
+
Block.new(block)
|
20
|
+
else
|
21
|
+
raise ::ArgumentError, "Can't pass both an argument and a block" if block
|
22
|
+
|
23
|
+
Value.new(value)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
require_relative File.join("expectation_target", "block")
|
30
|
+
require_relative File.join("expectation_target", "value")
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "expresenter"
|
4
|
+
|
5
|
+
module RSpec
|
6
|
+
module ExpectationTarget
|
7
|
+
# Abstract expectation target base class.
|
8
|
+
#
|
9
|
+
# @note `RSpec::ExpectationTarget::Base` is not intended to be instantiated
|
10
|
+
# directly by users. Use `expect` instead.
|
11
|
+
class Base
|
12
|
+
# Runs the given expectation, passing if `matcher` returns true.
|
13
|
+
#
|
14
|
+
# @example _Absolute requirement_ definition
|
15
|
+
# expect { "foo".upcase }.to eq("foo")
|
16
|
+
#
|
17
|
+
# @param matcher [#matches?] The matcher.
|
18
|
+
#
|
19
|
+
# @raise (see #result)
|
20
|
+
# @return (see #result)
|
21
|
+
#
|
22
|
+
# @api public
|
23
|
+
def to(matcher)
|
24
|
+
absolute_requirement(matcher: matcher, negate: false)
|
25
|
+
end
|
26
|
+
|
27
|
+
# Runs the given expectation, passing if `matcher` returns false.
|
28
|
+
#
|
29
|
+
# @example _Absolute prohibition_ definition
|
30
|
+
# expect { "foo".size }.not_to be(4)
|
31
|
+
#
|
32
|
+
# @param (see #to)
|
33
|
+
#
|
34
|
+
# @raise (see #result)
|
35
|
+
# @return (see #result)
|
36
|
+
#
|
37
|
+
# @api public
|
38
|
+
def not_to(matcher)
|
39
|
+
absolute_requirement(matcher: matcher, negate: true)
|
40
|
+
end
|
41
|
+
|
42
|
+
protected
|
43
|
+
|
44
|
+
# @param actual [#object_id] The actual value.
|
45
|
+
# @param error [Exception, nil] Any raised exception.
|
46
|
+
# @param got [Boolean, nil] Any returned value.
|
47
|
+
# @param matcher [#matches?] The matcher.
|
48
|
+
# @param negate [Boolean] The assertion is positive or negative.
|
49
|
+
# @param valid [Boolean] The result of an expectation.
|
50
|
+
#
|
51
|
+
# @return [nil] Write a message to STDOUT.
|
52
|
+
#
|
53
|
+
# @raise [SystemExit] Terminate execution immediately by calling
|
54
|
+
# `Kernel.exit(false)` with a failure message written to STDERR.
|
55
|
+
#
|
56
|
+
# @api private
|
57
|
+
def result(actual:, error:, got:, matcher:, negate:, valid:)
|
58
|
+
puts " " + ::Expresenter.call(valid).with(
|
59
|
+
actual: actual,
|
60
|
+
error: error,
|
61
|
+
expected: matcher.expected,
|
62
|
+
got: got,
|
63
|
+
negate: negate,
|
64
|
+
valid: valid,
|
65
|
+
matcher: matcher.class.to_sym,
|
66
|
+
level: :MUST
|
67
|
+
).colored_string
|
68
|
+
rescue ::Expresenter::Fail => e
|
69
|
+
abort " #{e.colored_string}"
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "spectus/exam"
|
4
|
+
|
5
|
+
require_relative "base"
|
6
|
+
|
7
|
+
module RSpec
|
8
|
+
module ExpectationTarget
|
9
|
+
# Wraps the target of an expectation with a block.
|
10
|
+
#
|
11
|
+
# @example
|
12
|
+
# expect { something } # => ExpectationTarget::Block wrapping something
|
13
|
+
#
|
14
|
+
# # used with `to`
|
15
|
+
# expect { actual }.to be(42)
|
16
|
+
#
|
17
|
+
# # with `not_to`
|
18
|
+
# expect { actual }.not_to be(4)
|
19
|
+
#
|
20
|
+
# @note `RSpec::ExpectationTarget::Block` is not intended to be instantiated
|
21
|
+
# directly by users. Use `expect` instead.
|
22
|
+
class Block < Base
|
23
|
+
# Instantiate a new expectation target.
|
24
|
+
#
|
25
|
+
# @param block [#call] The code to evaluate.
|
26
|
+
def initialize(block)
|
27
|
+
super()
|
28
|
+
|
29
|
+
@callable = block
|
30
|
+
end
|
31
|
+
|
32
|
+
protected
|
33
|
+
|
34
|
+
# @param matcher [#matches?] The matcher.
|
35
|
+
# @param negate [Boolean] The assertion is positive or negative.
|
36
|
+
#
|
37
|
+
# @return [nil] Write a message to STDOUT.
|
38
|
+
#
|
39
|
+
# @raise [SystemExit] Terminate execution immediately by calling
|
40
|
+
# `Kernel.exit(false)` with a failure message written to STDERR.
|
41
|
+
def absolute_requirement(matcher:, negate:)
|
42
|
+
exam = ::Spectus::Exam.new(
|
43
|
+
callable: @callable,
|
44
|
+
isolation: false,
|
45
|
+
negate: negate,
|
46
|
+
matcher: matcher
|
47
|
+
)
|
48
|
+
|
49
|
+
result(
|
50
|
+
actual: exam.actual,
|
51
|
+
error: exam.exception,
|
52
|
+
got: exam.got,
|
53
|
+
matcher: matcher,
|
54
|
+
negate: negate,
|
55
|
+
valid: exam.valid?
|
56
|
+
)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "base"
|
4
|
+
|
5
|
+
module RSpec
|
6
|
+
module ExpectationTarget
|
7
|
+
# Wraps the target of an expectation with a value.
|
8
|
+
#
|
9
|
+
# @example
|
10
|
+
# expect(something) # => ExpectationTarget::Value wrapping something
|
11
|
+
#
|
12
|
+
# # used with `to`
|
13
|
+
# expect(actual).to be(42)
|
14
|
+
#
|
15
|
+
# # with `not_to`
|
16
|
+
# expect(actual).not_to be(4)
|
17
|
+
#
|
18
|
+
# @note `RSpec::ExpectationTarget::Value` is not intended to be instantiated
|
19
|
+
# directly by users. Use `expect` instead.
|
20
|
+
class Value < Base
|
21
|
+
# Instantiate a new expectation target.
|
22
|
+
#
|
23
|
+
# @param actual [#object_id] The actual value.
|
24
|
+
def initialize(actual)
|
25
|
+
super()
|
26
|
+
|
27
|
+
@actual = actual
|
28
|
+
end
|
29
|
+
|
30
|
+
protected
|
31
|
+
|
32
|
+
# @param matcher [#matches?] The matcher.
|
33
|
+
# @param negate [Boolean] The assertion is positive or negative.
|
34
|
+
#
|
35
|
+
# @return [nil] Write a message to STDOUT.
|
36
|
+
#
|
37
|
+
# @raise [SystemExit] Terminate execution immediately by calling
|
38
|
+
# `Kernel.exit(false)` with a failure message written to STDERR.
|
39
|
+
def absolute_requirement(matcher:, negate:)
|
40
|
+
valid = negate ^ matcher.matches? { @actual }
|
41
|
+
|
42
|
+
result(
|
43
|
+
actual: @actual,
|
44
|
+
error: nil,
|
45
|
+
got: valid,
|
46
|
+
matcher: matcher,
|
47
|
+
negate: negate,
|
48
|
+
valid: valid
|
49
|
+
)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "expresenter"
|
4
|
+
|
5
|
+
module RSpec
|
6
|
+
# Exception for pending expectations.
|
7
|
+
#
|
8
|
+
# @api private
|
9
|
+
class Pending < ::NotImplementedError
|
10
|
+
# @param message [String] The not implemented expectation description.
|
11
|
+
#
|
12
|
+
# @return [nil] Write a pending expectation to STDOUT.
|
13
|
+
def self.result(message)
|
14
|
+
warn " " + ::Expresenter.call(true).with(
|
15
|
+
actual: new(message),
|
16
|
+
error: nil,
|
17
|
+
expected: self,
|
18
|
+
got: false,
|
19
|
+
matcher: :raise_exception,
|
20
|
+
negate: true,
|
21
|
+
level: :SHOULD,
|
22
|
+
valid: false
|
23
|
+
).colored_string
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
metadata
CHANGED
@@ -1,175 +1,211 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: r_spec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0.beta4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cyril Kato
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-06-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: expresenter
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 1.2.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 1.2.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: matchi-rspec
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 1.1.1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 1.1.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: spectus
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 3.3.2
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 3.3.2
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bundler
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name: rubocop
|
84
|
+
name: rubocop-md
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '0
|
89
|
+
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '0
|
96
|
+
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: rubocop-performance
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - "
|
101
|
+
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '0
|
103
|
+
version: '0'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - "
|
108
|
+
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '0
|
110
|
+
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: rubocop-rake
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - "
|
115
|
+
- - ">="
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
117
|
+
version: '0'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- - "
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rubocop-rspec
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rubocop-thread_safety
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
123
151
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: simplecov
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
125
167
|
- !ruby/object:Gem::Dependency
|
126
168
|
name: yard
|
127
169
|
requirement: !ruby/object:Gem::Requirement
|
128
170
|
requirements:
|
129
|
-
- - "
|
171
|
+
- - ">="
|
130
172
|
- !ruby/object:Gem::Version
|
131
|
-
version: '0
|
173
|
+
version: '0'
|
132
174
|
type: :development
|
133
175
|
prerelease: false
|
134
176
|
version_requirements: !ruby/object:Gem::Requirement
|
135
177
|
requirements:
|
136
|
-
- - "
|
178
|
+
- - ">="
|
137
179
|
- !ruby/object:Gem::Version
|
138
|
-
version: '0
|
139
|
-
description: A
|
140
|
-
email:
|
141
|
-
- contact@cyril.email
|
180
|
+
version: '0'
|
181
|
+
description: A minimalist RSpec clone with all the essentials.
|
182
|
+
email: contact@cyril.email
|
142
183
|
executables: []
|
143
184
|
extensions: []
|
144
185
|
extra_rdoc_files: []
|
145
186
|
files:
|
146
|
-
- ".gitignore"
|
147
|
-
- ".rubocop.yml"
|
148
|
-
- ".rubocop_todo.yml"
|
149
|
-
- ".travis.yml"
|
150
|
-
- ".yardopts"
|
151
|
-
- CODE_OF_CONDUCT.md
|
152
|
-
- Gemfile
|
153
187
|
- LICENSE.md
|
154
188
|
- README.md
|
155
|
-
- Rakefile
|
156
|
-
- VERSION.semver
|
157
|
-
- bin/console
|
158
|
-
- bin/setup
|
159
|
-
- checksum/r_spec-0.1.0.gem.sha512
|
160
|
-
- checksum/r_spec-0.1.1.gem.sha512
|
161
|
-
- checksum/r_spec-0.2.0.gem.sha512
|
162
|
-
- checksum/r_spec-0.3.0.gem.sha512
|
163
|
-
- checksum/r_spec-0.3.1.gem.sha512
|
164
|
-
- lib/fix/it.rb
|
165
|
-
- lib/fix/on.rb
|
166
189
|
- lib/r_spec.rb
|
167
|
-
-
|
168
|
-
- r_spec.
|
169
|
-
|
190
|
+
- lib/r_spec/dsl.rb
|
191
|
+
- lib/r_spec/expectation_helper.rb
|
192
|
+
- lib/r_spec/expectation_helper/base.rb
|
193
|
+
- lib/r_spec/expectation_helper/it.rb
|
194
|
+
- lib/r_spec/expectation_helper/its.rb
|
195
|
+
- lib/r_spec/expectation_target.rb
|
196
|
+
- lib/r_spec/expectation_target/base.rb
|
197
|
+
- lib/r_spec/expectation_target/block.rb
|
198
|
+
- lib/r_spec/expectation_target/value.rb
|
199
|
+
- lib/r_spec/pending.rb
|
200
|
+
- lib/r_spec/sandbox.rb
|
201
|
+
homepage: https://r-spec.dev/
|
170
202
|
licenses:
|
171
203
|
- MIT
|
172
|
-
metadata:
|
204
|
+
metadata:
|
205
|
+
bug_tracker_uri: https://github.com/cyril/r_spec.rb/issues
|
206
|
+
documentation_uri: https://rubydoc.info/gems/r_spec
|
207
|
+
source_code_uri: https://github.com/cyril/r_spec.rb
|
208
|
+
wiki_uri: https://github.com/cyril/r_spec.rb/wiki
|
173
209
|
post_install_message:
|
174
210
|
rdoc_options: []
|
175
211
|
require_paths:
|
@@ -178,15 +214,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
178
214
|
requirements:
|
179
215
|
- - ">="
|
180
216
|
- !ruby/object:Gem::Version
|
181
|
-
version:
|
217
|
+
version: 2.7.0
|
182
218
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
183
219
|
requirements:
|
184
|
-
- - "
|
220
|
+
- - ">"
|
185
221
|
- !ruby/object:Gem::Version
|
186
|
-
version:
|
222
|
+
version: 1.3.1
|
187
223
|
requirements: []
|
188
|
-
rubygems_version: 3.
|
224
|
+
rubygems_version: 3.1.6
|
189
225
|
signing_key:
|
190
226
|
specification_version: 4
|
191
|
-
summary:
|
227
|
+
summary: A minimalist RSpec clone
|
192
228
|
test_files: []
|