snapshot_testing 0.1.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 +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: []
|