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 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
@@ -0,0 +1,11 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+
10
+ # rspec failure tracking
11
+ .rspec_status
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/.travis.yml ADDED
@@ -0,0 +1,7 @@
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
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in snapshot_testing.gemspec
4
+ gemspec
5
+ gem 'pry'
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
@@ -0,0 +1,12 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :examples do
7
+ ruby 'examples/minitest.rb'
8
+ ruby 'examples/test_unit.rb'
9
+ ruby 'examples/rspec.rb'
10
+ end
11
+
12
+ task :default => :spec
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,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -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,7 @@
1
+ snapshots["takes a snapshot 1"] = <<~SNAP
2
+ hello
3
+ SNAP
4
+
5
+ snapshots["takes a snapshot 2"] = <<~SNAP
6
+ goodbye
7
+ SNAP
@@ -0,0 +1,7 @@
1
+ snapshots["test_snapshot 1"] = <<~SNAP
2
+ hello
3
+ SNAP
4
+
5
+ snapshots["test_snapshot 2"] = <<~SNAP
6
+ goodbye
7
+ 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,12 @@
1
+ require "bundler/setup"
2
+ require "test/unit"
3
+ require "snapshot_testing/test_unit"
4
+
5
+ class ExampleTest < Test::Unit::TestCase
6
+ include SnapshotTesting::TestUnit
7
+
8
+ def test_snapshot
9
+ assert_snapshot "hello"
10
+ assert_snapshot "goodbye"
11
+ end
12
+ end
@@ -0,0 +1,6 @@
1
+ require "snapshot_testing/version"
2
+ require "snapshot_testing/snapshot"
3
+ require "snapshot_testing/recorder"
4
+
5
+ module SnapshotTesting
6
+ 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,11 @@
1
+ module SnapshotTesting
2
+ class Serializer
3
+ def accepts?(value)
4
+ true
5
+ end
6
+
7
+ def dump(value)
8
+ value.to_s
9
+ end
10
+ end
11
+ 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,3 @@
1
+ module SnapshotTesting
2
+ VERSION = "0.1.0"
3
+ 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: []