snapshot_testing 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.rspec +3 -0
- data/.travis.yml +7 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +61 -0
- data/README.md +123 -0
- data/Rakefile +12 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/examples/__snapshots__/minitest.rb.snap +15 -0
- data/examples/__snapshots__/rspec.rb.snap +7 -0
- data/examples/__snapshots__/test_unit.rb.snap +7 -0
- data/examples/minitest.rb +21 -0
- data/examples/rspec.rb +14 -0
- data/examples/test_unit.rb +12 -0
- data/lib/snapshot_testing.rb +6 -0
- data/lib/snapshot_testing/minitest.rb +29 -0
- data/lib/snapshot_testing/recorder.rb +76 -0
- data/lib/snapshot_testing/rspec.rb +51 -0
- data/lib/snapshot_testing/serializer.rb +11 -0
- data/lib/snapshot_testing/snapshot.rb +34 -0
- data/lib/snapshot_testing/test_unit.rb +23 -0
- data/lib/snapshot_testing/version.rb +3 -0
- data/snapshot_testing.gemspec +33 -0
- metadata +164 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 9eceaf595a2736c2f1f8a0600c2ec583de320dd972d248256a11a981c52b3580
|
4
|
+
data.tar.gz: eeefbc3eaa2c80e65b87d4af75943385ef7421b9f890c921fcdb61fffb3530de
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 374a7c9ac3da75ce4a81a9d72eeefd2c87cfe72db678860a0b74d944a3fc0a027ee83203322086a25e8abea6e4a3b512e74426a98a10f2320597d8444fe771ec
|
7
|
+
data.tar.gz: 23a778788ae7d2bd6165702dc3a34fc66831f974d958c6101e5f3f9fbb1468c3088be709d6ea0a5461772433617c992bb2c677f05a6550214137775a7c91a346
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
snapshot_testing (0.1.0)
|
5
|
+
pastel (~> 0.7.3)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
coderay (1.1.2)
|
11
|
+
diff-lcs (1.3)
|
12
|
+
docile (1.3.2)
|
13
|
+
equatable (0.6.1)
|
14
|
+
json (2.2.0)
|
15
|
+
method_source (0.9.2)
|
16
|
+
minitest (5.11.3)
|
17
|
+
pastel (0.7.3)
|
18
|
+
equatable (~> 0.6)
|
19
|
+
tty-color (~> 0.5)
|
20
|
+
power_assert (1.1.3)
|
21
|
+
pry (0.12.2)
|
22
|
+
coderay (~> 1.1.0)
|
23
|
+
method_source (~> 0.9.0)
|
24
|
+
rake (10.5.0)
|
25
|
+
rspec (3.8.0)
|
26
|
+
rspec-core (~> 3.8.0)
|
27
|
+
rspec-expectations (~> 3.8.0)
|
28
|
+
rspec-mocks (~> 3.8.0)
|
29
|
+
rspec-core (3.8.2)
|
30
|
+
rspec-support (~> 3.8.0)
|
31
|
+
rspec-expectations (3.8.4)
|
32
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
33
|
+
rspec-support (~> 3.8.0)
|
34
|
+
rspec-mocks (3.8.1)
|
35
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
36
|
+
rspec-support (~> 3.8.0)
|
37
|
+
rspec-support (3.8.2)
|
38
|
+
simplecov (0.17.0)
|
39
|
+
docile (~> 1.1)
|
40
|
+
json (>= 1.8, < 3)
|
41
|
+
simplecov-html (~> 0.10.0)
|
42
|
+
simplecov-html (0.10.2)
|
43
|
+
test-unit (3.2.9)
|
44
|
+
power_assert
|
45
|
+
tty-color (0.5.0)
|
46
|
+
|
47
|
+
PLATFORMS
|
48
|
+
ruby
|
49
|
+
|
50
|
+
DEPENDENCIES
|
51
|
+
bundler (~> 2.0)
|
52
|
+
minitest (~> 5.11.3)
|
53
|
+
pry
|
54
|
+
rake (~> 10.0)
|
55
|
+
rspec (~> 3.0)
|
56
|
+
simplecov (~> 0.17.0)
|
57
|
+
snapshot_testing!
|
58
|
+
test-unit (~> 3.2.9)
|
59
|
+
|
60
|
+
BUNDLED WITH
|
61
|
+
2.0.2
|
data/README.md
ADDED
@@ -0,0 +1,123 @@
|
|
1
|
+
# :camera: Snapshot Testing
|
2
|
+
|
3
|
+
Snapshot testing for all Ruby test frameworks.
|
4
|
+
|
5
|
+
### Features
|
6
|
+
|
7
|
+
- Human-readable snapshots
|
8
|
+
- Supports RSpec, Minitest, and Test::Unit
|
9
|
+
- Custom serializers
|
10
|
+
|
11
|
+
## Installation
|
12
|
+
|
13
|
+
Add this line to your application's Gemfile:
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
gem 'snapshot_testing'
|
17
|
+
```
|
18
|
+
|
19
|
+
And then execute:
|
20
|
+
|
21
|
+
$ bundle
|
22
|
+
|
23
|
+
## Usage
|
24
|
+
|
25
|
+
The examples below will show you how to use `snapshot_testing` in each testing framework.
|
26
|
+
|
27
|
+
On the first test run, a [`.snap` file](examples/__snapshots__/rspec.rb.snap) will be created. The contents of the `.snap` file will be compared to the value under test on subsequent test runs.
|
28
|
+
|
29
|
+
If the value in the snapshot is not equal to the value under test, the test will fail. You can update the snapshots by rerunning the test suite by setting `UPDATE_SNAPSHOTS=1` in the environment.
|
30
|
+
|
31
|
+
### RSpec
|
32
|
+
|
33
|
+
Configure `snapshot_testing` in your `spec_helper.rb`:
|
34
|
+
|
35
|
+
```ruby
|
36
|
+
require 'snapshot_testing/rspec'
|
37
|
+
|
38
|
+
RSpec.configure do |config|
|
39
|
+
config.include SnapshotTesting::RSpec
|
40
|
+
end
|
41
|
+
```
|
42
|
+
|
43
|
+
Now, you can take snapshots:
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
RSpec.describe "Example" do
|
47
|
+
it "takes a snapshot" do
|
48
|
+
expect("hello").to match_snapshot
|
49
|
+
expect("goodbye").to match_snapshot
|
50
|
+
end
|
51
|
+
end
|
52
|
+
```
|
53
|
+
|
54
|
+
### Minitest
|
55
|
+
|
56
|
+
```ruby
|
57
|
+
require 'minitest/autorun'
|
58
|
+
require 'snapshot_testing/minitest'
|
59
|
+
|
60
|
+
class ExampleTest < Minitest::Test
|
61
|
+
include SnapshotTesting::Minitest
|
62
|
+
|
63
|
+
def test_takes_a_snapshot
|
64
|
+
assert_snapshot "hello"
|
65
|
+
assert_snapshot "goodbye"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
class ExampleSpec < Minitest::Spec
|
70
|
+
include SnapshotTesting::Minitest
|
71
|
+
|
72
|
+
it "takes a snapshot" do
|
73
|
+
"hello".must_match_snapshot
|
74
|
+
"goodbye".must_match_snapshot
|
75
|
+
end
|
76
|
+
end
|
77
|
+
```
|
78
|
+
|
79
|
+
### Test::Unit
|
80
|
+
|
81
|
+
```ruby
|
82
|
+
require 'test/unit'
|
83
|
+
require 'snapshot_testing/test_unit'
|
84
|
+
|
85
|
+
class ExampleTest < Test::Unit::TestCase
|
86
|
+
include SnapshotTesting::TestUnit
|
87
|
+
|
88
|
+
def test_snapshot
|
89
|
+
assert_snapshot "hello"
|
90
|
+
assert_snapshot "goodbye"
|
91
|
+
end
|
92
|
+
end
|
93
|
+
```
|
94
|
+
|
95
|
+
## Custom Serializers
|
96
|
+
|
97
|
+
Sometimes, you might want to define how objects get serialized as a snapshot. For example, you could define a custom serializer to convert an object to YAML.
|
98
|
+
|
99
|
+
```ruby
|
100
|
+
class PersonSerializer
|
101
|
+
def accepts?(object)
|
102
|
+
object.is_a? Person
|
103
|
+
end
|
104
|
+
|
105
|
+
def dump(object)
|
106
|
+
YAML.dump(object)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
SnapshotTesting::Snapshot.use PersonSerializer.new
|
111
|
+
```
|
112
|
+
|
113
|
+
Now, in your test, you can take snapshots of `Person` objects:
|
114
|
+
|
115
|
+
```ruby
|
116
|
+
it "serializes a person" do
|
117
|
+
expect(Person.new).to match_snapshot
|
118
|
+
end
|
119
|
+
```
|
120
|
+
|
121
|
+
## Contributing
|
122
|
+
|
123
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/rzane/snapshot_testing.
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "snapshot_testing"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
snapshots["test_0001_takes a snapshot 1"] = <<~SNAP
|
2
|
+
hello
|
3
|
+
SNAP
|
4
|
+
|
5
|
+
snapshots["test_0001_takes a snapshot 2"] = <<~SNAP
|
6
|
+
goodbye
|
7
|
+
SNAP
|
8
|
+
|
9
|
+
snapshots["test_snapshot 1"] = <<~SNAP
|
10
|
+
hello
|
11
|
+
SNAP
|
12
|
+
|
13
|
+
snapshots["test_snapshot 2"] = <<~SNAP
|
14
|
+
goodbye
|
15
|
+
SNAP
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "bundler/setup"
|
2
|
+
require "minitest/autorun"
|
3
|
+
require "snapshot_testing/minitest"
|
4
|
+
|
5
|
+
class ExampleTest < Minitest::Test
|
6
|
+
include SnapshotTesting::Minitest
|
7
|
+
|
8
|
+
def test_snapshot
|
9
|
+
assert_snapshot "hello"
|
10
|
+
assert_snapshot "goodbye"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class ExampleSpec < Minitest::Spec
|
15
|
+
include SnapshotTesting::Minitest
|
16
|
+
|
17
|
+
it "takes a snapshot" do
|
18
|
+
"hello".must_match_snapshot
|
19
|
+
"goodbye".must_match_snapshot
|
20
|
+
end
|
21
|
+
end
|
data/examples/rspec.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require "bundler/setup"
|
2
|
+
require "rspec/autorun"
|
3
|
+
require "snapshot_testing/rspec"
|
4
|
+
|
5
|
+
RSpec.configure do |config|
|
6
|
+
config.include SnapshotTesting::RSpec
|
7
|
+
end
|
8
|
+
|
9
|
+
RSpec.describe "Example" do
|
10
|
+
it "takes a snapshot" do
|
11
|
+
expect("hello").to match_snapshot
|
12
|
+
expect("goodbye").to match_snapshot
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require "snapshot_testing"
|
2
|
+
|
3
|
+
module SnapshotTesting
|
4
|
+
module Minitest
|
5
|
+
def self.included(_)
|
6
|
+
return unless defined?(::Minitest::Expectations)
|
7
|
+
return if ::Minitest::Expectations.method_defined?(:must_match_snapshot)
|
8
|
+
::Minitest::Expectations.infect_an_assertion(:assert_snapshot, :must_match_snapshot, true)
|
9
|
+
end
|
10
|
+
|
11
|
+
def before_setup
|
12
|
+
@__snapshot_recorder__ = SnapshotTesting::Recorder.new(
|
13
|
+
name: name,
|
14
|
+
path: method(name).source_location.first,
|
15
|
+
update: !ENV['UPDATE_SNAPSHOTS'].nil?
|
16
|
+
)
|
17
|
+
super
|
18
|
+
end
|
19
|
+
|
20
|
+
def after_teardown
|
21
|
+
super
|
22
|
+
@__snapshot_recorder__.commit
|
23
|
+
end
|
24
|
+
|
25
|
+
def assert_snapshot(actual)
|
26
|
+
assert_equal(@__snapshot_recorder__.record(actual), actual)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
require "fileutils"
|
2
|
+
require "pastel"
|
3
|
+
|
4
|
+
module SnapshotTesting
|
5
|
+
class Recorder
|
6
|
+
def initialize(name:, path:, update:)
|
7
|
+
@name = name
|
8
|
+
@path = path
|
9
|
+
@update = update
|
10
|
+
@state = {}
|
11
|
+
end
|
12
|
+
|
13
|
+
def snapshot_dir
|
14
|
+
File.join(File.dirname(@path), "__snapshots__")
|
15
|
+
end
|
16
|
+
|
17
|
+
def snapshot_file
|
18
|
+
File.join(snapshot_dir, "#{File.basename(@path)}.snap")
|
19
|
+
end
|
20
|
+
|
21
|
+
def snapshots
|
22
|
+
@snapshots ||= begin
|
23
|
+
Snapshot.load_file(snapshot_file)
|
24
|
+
rescue Errno::ENOENT
|
25
|
+
{}
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def record(actual)
|
30
|
+
key = "#{@name} #{@state.length + 1}"
|
31
|
+
|
32
|
+
# keep track each encounter, so we can diff later
|
33
|
+
@state[key] = actual
|
34
|
+
|
35
|
+
# pass the test when updating snapshots
|
36
|
+
return actual if @update
|
37
|
+
|
38
|
+
# pass the test when the snapshot does not exist
|
39
|
+
return actual unless snapshots.key?(key)
|
40
|
+
|
41
|
+
# otherwise, compare actual to the snapshot
|
42
|
+
snapshots[key]
|
43
|
+
end
|
44
|
+
|
45
|
+
def commit
|
46
|
+
added = @state.select { |k, _| !snapshots.key?(k) }
|
47
|
+
changed = @state.select { |k, v| snapshots.key?(k) && snapshots[k] != v }
|
48
|
+
removed = snapshots.keys.select do |k|
|
49
|
+
k.match?(/^#{@name}\s\d+$/) && !@state.key?(k)
|
50
|
+
end
|
51
|
+
|
52
|
+
result = snapshots.merge(added)
|
53
|
+
result = result.merge(changed) if @update
|
54
|
+
result = result.reject { |k, _| removed.include?(k) } if @update
|
55
|
+
|
56
|
+
write(result) if result != snapshots
|
57
|
+
log(added.length, :written, :green) if added.any?
|
58
|
+
log(changed.length, :updated, :green) if @update && changed.any?
|
59
|
+
log(removed.length, :removed, :green) if @update && removed.any?
|
60
|
+
log(removed.length, :obsolete, :yellow) if !@update && removed.any?
|
61
|
+
end
|
62
|
+
|
63
|
+
private
|
64
|
+
|
65
|
+
def log(count, status, color)
|
66
|
+
label = count == 1 ? "snapshot" : "snapshots"
|
67
|
+
message = "#{count} #{label} #{status}."
|
68
|
+
warn Pastel.new.public_send(color, message)
|
69
|
+
end
|
70
|
+
|
71
|
+
def write(snapshots)
|
72
|
+
FileUtils.mkdir_p(snapshot_dir)
|
73
|
+
File.write(snapshot_file, Snapshot.dump(snapshots))
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require "snapshot_testing"
|
2
|
+
|
3
|
+
module SnapshotTesting
|
4
|
+
module RSpec
|
5
|
+
def self.included(base)
|
6
|
+
base.let :__snapshot_recorder__ do |example|
|
7
|
+
SnapshotTesting::Recorder.new(
|
8
|
+
name: example.description,
|
9
|
+
path: example.metadata[:absolute_file_path],
|
10
|
+
update: !ENV['UPDATE_SNAPSHOTS'].nil?
|
11
|
+
)
|
12
|
+
end
|
13
|
+
|
14
|
+
base.after :each do
|
15
|
+
__snapshot_recorder__.commit
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def match_snapshot
|
20
|
+
SnapshotTesting::RSpec::MatchSnapshot.new(recorder: __snapshot_recorder__)
|
21
|
+
end
|
22
|
+
|
23
|
+
class MatchSnapshot
|
24
|
+
attr_reader :expected, :actual
|
25
|
+
|
26
|
+
def initialize(recorder:)
|
27
|
+
@recorder = recorder
|
28
|
+
end
|
29
|
+
|
30
|
+
def matches?(actual)
|
31
|
+
@actual = actual
|
32
|
+
@expected = @recorder.record(@actual)
|
33
|
+
@actual == @expected
|
34
|
+
end
|
35
|
+
|
36
|
+
def failure_message
|
37
|
+
expected = ::RSpec::Support::ObjectFormatter.format(@expected)
|
38
|
+
actual = ::RSpec::Support::ObjectFormatter.format(@actual)
|
39
|
+
"\nexpected: #{expected}\n got: #{actual}\n\n(compared using ==)\n"
|
40
|
+
end
|
41
|
+
|
42
|
+
def diffable?
|
43
|
+
true
|
44
|
+
end
|
45
|
+
|
46
|
+
def supports_block_expectations?
|
47
|
+
false
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require "pathname"
|
2
|
+
require "snapshot_testing/serializer"
|
3
|
+
|
4
|
+
module SnapshotTesting
|
5
|
+
module Snapshot
|
6
|
+
TEMPLATE = "snapshots[%s] = <<~SNAP\n%s\nSNAP\n".freeze
|
7
|
+
|
8
|
+
@@serializers = [SnapshotTesting::Serializer.new]
|
9
|
+
|
10
|
+
def self.use(serializer)
|
11
|
+
@@serializers.unshift(serializer)
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.load_file(file)
|
15
|
+
load File.read(file)
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.load(input)
|
19
|
+
snapshots = {}
|
20
|
+
eval(input)
|
21
|
+
snapshots.transform_values(&:chomp)
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.dump(values)
|
25
|
+
entries = values.map do |name, value|
|
26
|
+
serializer = @@serializers.find { |s| s.accepts?(value) }
|
27
|
+
snapshot = serializer.dump(value)
|
28
|
+
format(TEMPLATE, name.inspect, snapshot)
|
29
|
+
end
|
30
|
+
|
31
|
+
entries.join("\n")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require "snapshot_testing"
|
2
|
+
|
3
|
+
module SnapshotTesting
|
4
|
+
module TestUnit
|
5
|
+
def setup
|
6
|
+
@__snapshot_recorder__ = SnapshotTesting::Recorder.new(
|
7
|
+
name: method_name,
|
8
|
+
path: method(method_name).source_location.first,
|
9
|
+
update: !ENV['UPDATE_SNAPSHOTS'].nil?
|
10
|
+
)
|
11
|
+
super
|
12
|
+
end
|
13
|
+
|
14
|
+
def teardown
|
15
|
+
super
|
16
|
+
@__snapshot_recorder__.commit
|
17
|
+
end
|
18
|
+
|
19
|
+
def assert_snapshot(actual)
|
20
|
+
assert_equal(@__snapshot_recorder__.record(actual), actual)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
lib = File.expand_path("lib", __dir__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require "snapshot_testing/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "snapshot_testing"
|
7
|
+
spec.version = SnapshotTesting::VERSION
|
8
|
+
spec.authors = ["Ray Zane"]
|
9
|
+
spec.email = ["raymondzane@gmail.com"]
|
10
|
+
|
11
|
+
spec.summary = %q{Proper snapshot support for RSpec.}
|
12
|
+
spec.description = %q{Create snapshots of your data for simpler testing.}
|
13
|
+
spec.homepage = "https://github.com/rzane/snapshot_testing"
|
14
|
+
|
15
|
+
# Specify which files should be added to the gem when it is released.
|
16
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
17
|
+
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
18
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
19
|
+
end
|
20
|
+
spec.bindir = "exe"
|
21
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
|
+
spec.require_paths = ["lib"]
|
23
|
+
|
24
|
+
spec.required_ruby_version = '>= 2.4.0'
|
25
|
+
|
26
|
+
spec.add_dependency "pastel", "~> 0.7.3"
|
27
|
+
spec.add_development_dependency "bundler", "~> 2.0"
|
28
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
29
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
30
|
+
spec.add_development_dependency "minitest", "~> 5.11.3"
|
31
|
+
spec.add_development_dependency "test-unit", "~> 3.2.9"
|
32
|
+
spec.add_development_dependency "simplecov", "~> 0.17.0"
|
33
|
+
end
|
metadata
ADDED
@@ -0,0 +1,164 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: snapshot_testing
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ray Zane
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-07-06 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: pastel
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.7.3
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.7.3
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: minitest
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 5.11.3
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 5.11.3
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: test-unit
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 3.2.9
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 3.2.9
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: simplecov
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 0.17.0
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 0.17.0
|
111
|
+
description: Create snapshots of your data for simpler testing.
|
112
|
+
email:
|
113
|
+
- raymondzane@gmail.com
|
114
|
+
executables: []
|
115
|
+
extensions: []
|
116
|
+
extra_rdoc_files: []
|
117
|
+
files:
|
118
|
+
- ".gitignore"
|
119
|
+
- ".rspec"
|
120
|
+
- ".travis.yml"
|
121
|
+
- Gemfile
|
122
|
+
- Gemfile.lock
|
123
|
+
- README.md
|
124
|
+
- Rakefile
|
125
|
+
- bin/console
|
126
|
+
- bin/setup
|
127
|
+
- examples/__snapshots__/minitest.rb.snap
|
128
|
+
- examples/__snapshots__/rspec.rb.snap
|
129
|
+
- examples/__snapshots__/test_unit.rb.snap
|
130
|
+
- examples/minitest.rb
|
131
|
+
- examples/rspec.rb
|
132
|
+
- examples/test_unit.rb
|
133
|
+
- lib/snapshot_testing.rb
|
134
|
+
- lib/snapshot_testing/minitest.rb
|
135
|
+
- lib/snapshot_testing/recorder.rb
|
136
|
+
- lib/snapshot_testing/rspec.rb
|
137
|
+
- lib/snapshot_testing/serializer.rb
|
138
|
+
- lib/snapshot_testing/snapshot.rb
|
139
|
+
- lib/snapshot_testing/test_unit.rb
|
140
|
+
- lib/snapshot_testing/version.rb
|
141
|
+
- snapshot_testing.gemspec
|
142
|
+
homepage: https://github.com/rzane/snapshot_testing
|
143
|
+
licenses: []
|
144
|
+
metadata: {}
|
145
|
+
post_install_message:
|
146
|
+
rdoc_options: []
|
147
|
+
require_paths:
|
148
|
+
- lib
|
149
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
150
|
+
requirements:
|
151
|
+
- - ">="
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: 2.4.0
|
154
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
155
|
+
requirements:
|
156
|
+
- - ">="
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0'
|
159
|
+
requirements: []
|
160
|
+
rubygems_version: 3.0.3
|
161
|
+
signing_key:
|
162
|
+
specification_version: 4
|
163
|
+
summary: Proper snapshot support for RSpec.
|
164
|
+
test_files: []
|