assert_dirs_equal 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.
Files changed (36) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +14 -0
  3. data/.travis.yml +9 -0
  4. data/.yardopts +1 -0
  5. data/CHANGELOG.md +1 -0
  6. data/CONTRIBUTING.md +47 -0
  7. data/Gemfile +6 -0
  8. data/LICENSE.txt +22 -0
  9. data/README.md +66 -0
  10. data/Rakefile +7 -0
  11. data/assert_dirs_equal.gemspec +19 -0
  12. data/lib/assert_dirs_equal/matcher.rb +95 -0
  13. data/lib/minitest/assert_dirs_equal.rb +24 -0
  14. data/test/cases/binary_and_text_files/expected/file.txt +1 -0
  15. data/test/cases/binary_and_text_files/target/file.txt +0 -0
  16. data/test/cases/different_binary_files/expected/file.png +0 -0
  17. data/test/cases/different_binary_files/target/file.png +0 -0
  18. data/test/cases/different_text_files/expected/file +1 -0
  19. data/test/cases/different_text_files/target/file +1 -0
  20. data/test/cases/empty_files_are_equal/expected/file +0 -0
  21. data/test/cases/empty_files_are_equal/target/file +0 -0
  22. data/test/cases/expected_is_not_a_dir/expected +0 -0
  23. data/test/cases/extra_file_in_target/target/file +0 -0
  24. data/test/cases/large_different_text_files/expected/file +19 -0
  25. data/test/cases/large_different_text_files/target/file +19 -0
  26. data/test/cases/missing_file_in_target/expected/file +0 -0
  27. data/test/cases/missing_nested_file_in_target/expected/nested/file +0 -0
  28. data/test/cases/same_binary_files/expected/file.png +0 -0
  29. data/test/cases/same_binary_files/target/file.png +0 -0
  30. data/test/cases/same_text_files/expected/file +1 -0
  31. data/test/cases/same_text_files/target/file +1 -0
  32. data/test/cases/target_is_not_a_dir/target +0 -0
  33. data/test/matcher_test.rb +106 -0
  34. data/test/minitest_integration_test.rb +59 -0
  35. data/test/test_helper.rb +12 -0
  36. metadata +143 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: daf396e81ffce0b83fd79a9218cf036385b0c695
4
+ data.tar.gz: 000fafee50178f01fd58bc5da8cb01948091f592
5
+ SHA512:
6
+ metadata.gz: 5396b72a55da522376094401f159b0ef3bc46e96503532c8e3d766132e4ac44bb5e7935903e19d7c4777e722e955a132a2e19388f81e08b47bc512d7045a0737
7
+ data.tar.gz: caff9934d55bb2000b8b4059ab0e339b86491ad91db47f5a27934a17539c4bf951411dd8eee3852e47730fbe03eb55cdc64996f6b62bd1d203968c838f681cd2
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
data/.travis.yml ADDED
@@ -0,0 +1,9 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.0.0
5
+ - 2.1
6
+ - 2.2
7
+ - jruby-19mode
8
+ - rbx-2
9
+ bundler_args: --without doc debug
data/.yardopts ADDED
@@ -0,0 +1 @@
1
+ --no-private
data/CHANGELOG.md ADDED
@@ -0,0 +1 @@
1
+ ## Unreleased
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,47 @@
1
+ # Contributing
2
+
3
+ ## Adding a feature
4
+
5
+ 1. Open an issue and explain what you're planning to do. It is better to discuss new idea first,
6
+ rather when diving into code.
7
+ 2. Add some tests.
8
+ 3. Write the code.
9
+ 4. Make sure all tests pass.
10
+ 5. Commit with detailed explanation what you've done in a message.
11
+ 6. Open pull request.
12
+
13
+ ## Breaking/removing a feature
14
+
15
+ 1. Add deprecation warning and fallback to old behaivour if possible.
16
+ 2. Explain how to migrate to the new code in CHANGELOG.
17
+ 3. Update/remove tests.
18
+ 4. Update the code.
19
+ 5. Make sure all tests pass.
20
+ 6. Commit with detailed explanation what you've done in a message.
21
+ 7. Open pull request.
22
+
23
+ ## Fixing a bug
24
+
25
+ 1. Add failing test.
26
+ 2. Fix the bug.
27
+ 3. Make sure all tests pass.
28
+ 4. Commit with detailed explanation what you've done in a message.
29
+ 5. Open pull request.
30
+
31
+ ## Fixing a typo
32
+
33
+ 1. Commit with a message that include "[ci skip]" remark.
34
+ 2. Open pull request.
35
+
36
+ ## Running the tests
37
+
38
+ ```
39
+ rake test
40
+ ```
41
+
42
+ ## Working with documentation
43
+
44
+ ```
45
+ yard server -dr
46
+ open http://localhost:8808
47
+ ```
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ gem "pry", :group => :debug
6
+ gem "yard", "~> 0.8", :group => :doc
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2016 Andrii Malyshko
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,66 @@
1
+ # AssertDirsEqual
2
+
3
+ [![Build Status](https://img.shields.io/travis/torba-rb/assert_dirs_equal.svg)](https://travis-ci.org/torba-rb/assert_dirs_equal)
4
+ [![Gem version](https://img.shields.io/gem/v/assert_dirs_equal.svg)](https://rubygems.org/gems/assert_dirs_equal)
5
+
6
+ **AssertDirsEqual** is a test framework-agnostic expectation/assertion for directories equality
7
+ by tree and content comparison.
8
+
9
+ ## Status
10
+
11
+ Production ready.
12
+
13
+ ## Documentation
14
+
15
+ [Released version](http://rubydoc.info/gems/assert_dirs_equal/0.1.0)
16
+
17
+ ## Why
18
+
19
+ Sometimes it is easier to commit expected directory structure and compare it with a directory
20
+ created by a method under test.
21
+
22
+ If you prefer DSL-like expectations, see [minitest-filesystem][minitest-filesystem].
23
+
24
+ ## Installation
25
+
26
+ Add this line to your application's Gemfile and run `bundle`:
27
+
28
+ ```ruby
29
+ gem 'assert_dirs_equal', require: false
30
+ ```
31
+ ## Usage
32
+
33
+ ```ruby
34
+ class MyWriter
35
+ def self.perform
36
+ File.write("/tmp/my_writer/result.txt", "Hello world!")
37
+ end
38
+ end
39
+
40
+ ```
41
+
42
+ Create a file "result.txt" with "Hello world!" in "test/fixtures/case01".
43
+
44
+ ### Minitest
45
+
46
+ ```ruby
47
+ require 'minitest/assert_dirs_equal'
48
+
49
+ class MyWriterTest < Minitest::Test
50
+ def test_perform
51
+ MyWriter.perform
52
+ assert_dirs_equal "test/fixtures/case01", "/tmp/my_writer"
53
+ end
54
+ end
55
+ ```
56
+
57
+ ### RSpec
58
+
59
+ TODO
60
+
61
+ ## Origin
62
+
63
+ Extracted from [Torba][torba-github] library since it looks more like a standalone component.
64
+
65
+ [minitest-filesystem]: https://github.com/stefanozanella/minitest-filesystem
66
+ [torba-github]: https://github.com/torba-rb/torba
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ task :default => :test
4
+ task :test do
5
+ $LOAD_PATH.unshift("test")
6
+ Dir.glob("./test/**/*_test.rb").each { |file| require file}
7
+ end
@@ -0,0 +1,19 @@
1
+ Gem::Specification.new do |spec|
2
+ spec.name = "assert_dirs_equal"
3
+ spec.version = "0.1.0"
4
+ spec.authors = ["Andrii Malyshko"]
5
+ spec.email = ["mail@nashbridges.me"]
6
+ spec.description = "Test assertion for directories equality by tree and content comparison"
7
+ spec.summary = spec.description
8
+ spec.homepage = "https://github.com/torba-rb/assert_dirs_equal"
9
+ spec.license = "MIT"
10
+
11
+ spec.files = `git ls-files`.split($/)
12
+ spec.executables = spec.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
13
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
14
+ spec.require_paths = ["lib"]
15
+
16
+ spec.add_development_dependency "bundler", "~> 1.6"
17
+ spec.add_development_dependency "rake", "~> 10.0"
18
+ spec.add_development_dependency "minitest", "~> 5.4"
19
+ end
@@ -0,0 +1,95 @@
1
+ # @since 0.1.0
2
+ module AssertDirsEqual
3
+ class Diff
4
+ # @return [String] human readable diff between `expected` and `actual`.
5
+ # @abstract Reuse existing test framework diff functionality to override this method.
6
+ def self.perform(expected, actual)
7
+ "Expected: #{expected.inspect}\n Actual: #{actual.inspect}"
8
+ end
9
+ end
10
+
11
+ # Confirms with RSpec3 custom matcher protocol.
12
+ # @see https://github.com/rspec/rspec-expectations/blob/3-0-maintenance/lib/rspec/matchers.rb#L130
13
+ class Matcher
14
+ # @return [String]
15
+ attr_reader :failure_message
16
+
17
+ def initialize(expected)
18
+ @expected = expected
19
+ end
20
+
21
+ # @return [true] if `target` mirrors subdirectory of `expected` directory.
22
+ # @return [false] if `target` lacks some files, or has extra files, or any file in subdirectory differs from according file content.
23
+ def matches?(target)
24
+ @target = target
25
+ assert_exists(@expected) && assert_exists(@target) &&
26
+ assert_directory(@expected) && assert_directory(@target) &&
27
+ assert_target_contains_all_expected_entries &&
28
+ refute_extra_files_in_target
29
+ end
30
+
31
+ # @return [String]
32
+ def failure_message_when_negated
33
+ "expected #{@target.inspect} to not be equal to #{@expected.inspect}, but they are equal"
34
+ end
35
+
36
+ private
37
+
38
+ def assert_exists(path, msg = nil)
39
+ File.exist?(path) || fail_with(msg || "expected #{path.inspect} to exist")
40
+ end
41
+
42
+ def assert_directory(directory)
43
+ File.directory?(directory) || fail_with("expected #{directory.inspect} to be a directory")
44
+ end
45
+
46
+ def assert_equal_content(expected, target)
47
+ return true if File.directory?(expected) && File.directory?(target)
48
+
49
+ expected_content = File.read(expected).strip
50
+ target_content = File.read(target).strip
51
+
52
+ expected_content == target_content || fail_with(
53
+ "expected #{target.inspect} to have same content as #{expected.inspect}:\n#{Diff.perform(expected_content, target_content)}"
54
+ )
55
+ rescue ArgumentError # strip on binary file
56
+ expected_size = File.size(expected)
57
+ target_size = File.size(target)
58
+
59
+ expected_size == target_size || fail_with(
60
+ "expected #{target.inspect} to be the same size as #{expected.inspect}"
61
+ )
62
+ end
63
+
64
+ def assert_target_contains_all_expected_entries
65
+ both_paths_in(@expected, @target).all? do |expected_path, target_path|
66
+ exists_msg = "expected #{target_path.inspect} to exist since #{expected_path.inspect} exists"
67
+ assert_exists(target_path, exists_msg) && assert_equal_content(expected_path, target_path)
68
+ end
69
+ end
70
+
71
+ def refute_extra_files_in_target
72
+ expected_files = both_paths_in(@expected, @target).map { |pair| pair[1] }
73
+ actual_expected_files = Dir.glob(File.join(@target, "**/*"))
74
+ diff = actual_expected_files - expected_files
75
+ diff.empty? || fail_with("found unexpected files #{diff.inspect}")
76
+ end
77
+
78
+ def fail_with(message)
79
+ @failure_message = message
80
+ false
81
+ end
82
+
83
+ def both_paths_in(expected, target)
84
+ Enumerator.new do |y|
85
+ glob = File.join(expected, "**/*")
86
+ Dir.glob(glob).each do |expected_full_path|
87
+ path = expected_full_path.sub(expected, "")
88
+ target_full_path = File.join(target, path)
89
+ y << [expected_full_path, target_full_path]
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
95
+
@@ -0,0 +1,24 @@
1
+ require "minitest"
2
+ require "assert_dirs_equal/matcher"
3
+
4
+ module AssertDirsEqual
5
+ class Diff
6
+ extend Minitest::Assertions
7
+
8
+ def self.perform(expected, actual)
9
+ diff(expected, actual)
10
+ end
11
+ end
12
+ end
13
+
14
+ class Minitest::Test
15
+ def assert_dirs_equal(expected, target)
16
+ matcher = AssertDirsEqual::Matcher.new(expected)
17
+ assert matcher.matches?(target), matcher.failure_message
18
+ end
19
+
20
+ def refute_dirs_equal(expected, target)
21
+ matcher = AssertDirsEqual::Matcher.new(expected)
22
+ refute matcher.matches?(target), matcher.failure_message_when_negated
23
+ end
24
+ end
@@ -0,0 +1 @@
1
+ hello
@@ -0,0 +1 @@
1
+ world
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,19 @@
1
+ minitest
2
+ minitest
3
+ minitest
4
+ minitest
5
+ minitest
6
+ minitest
7
+ minitest
8
+ minitest
9
+ minitest
10
+ minitest
11
+ minitest
12
+ minitest
13
+ minitest
14
+ minitest
15
+ minitest
16
+ minitest
17
+ minitest
18
+ minitest
19
+ minitest
@@ -0,0 +1,19 @@
1
+ minitest
2
+ minitest
3
+ minitest
4
+ minitest
5
+ minitest
6
+ minitest
7
+ minitest
8
+ minitest
9
+ minitest
10
+ minitest
11
+ minitest
12
+ minitest
13
+ minitest
14
+ rspec
15
+ minitest
16
+ minitest
17
+ minitest
18
+ minitest
19
+ minitest
File without changes
@@ -0,0 +1 @@
1
+ hello
@@ -0,0 +1 @@
1
+ hello
File without changes
@@ -0,0 +1,106 @@
1
+ require "test_helper"
2
+ require "assert_dirs_equal/matcher"
3
+
4
+ module AssertDirsEqual
5
+ class MatcherTest < Minitest::Test
6
+ def matcher
7
+ @matcher ||= Matcher.new(expected_dir)
8
+ end
9
+
10
+ def test_missing_expected
11
+ @case_directory = "test/cases/missing_expected"
12
+ refute matcher.matches?(target_dir)
13
+ assert_equal "expected \"#{expected_dir}\" to exist", matcher.failure_message
14
+ end
15
+
16
+ def test_missing_target
17
+ @case_directory = "test/cases/missing_target"
18
+ refute matcher.matches?(target_dir)
19
+ assert_equal "expected \"#{target_dir}\" to exist", matcher.failure_message
20
+ end
21
+
22
+ def test_expected_is_not_a_dir
23
+ @case_directory = "test/cases/expected_is_not_a_dir"
24
+ refute matcher.matches?(target_dir)
25
+ assert_equal "expected \"#{expected_dir}\" to be a directory", matcher.failure_message
26
+ end
27
+
28
+ def test_target_is_not_a_dir
29
+ @case_directory = "test/cases/target_is_not_a_dir"
30
+ refute matcher.matches?(target_dir)
31
+ assert_equal "expected \"#{target_dir}\" to be a directory", matcher.failure_message
32
+ end
33
+
34
+ def test_empty_dirs_are_equal
35
+ @case_directory = "test/cases/empty_dirs_are_equal"
36
+ assert matcher.matches?(target_dir), matcher.failure_message
37
+ end
38
+
39
+ def test_missing_file_in_target
40
+ @case_directory = "test/cases/missing_file_in_target"
41
+ refute matcher.matches?(target_dir)
42
+ assert_equal "expected \"#{target_dir}/file\" to exist since \"#{expected_dir}/file\" exists", matcher.failure_message
43
+ end
44
+
45
+ def test_missing_directory_in_target
46
+ @case_directory = "test/cases/missing_directory_in_target"
47
+ refute matcher.matches?(target_dir)
48
+ assert_equal "expected \"#{target_dir}/directory\" to exist since \"#{expected_dir}/directory\" exists", matcher.failure_message
49
+ end
50
+
51
+ def test_missing_nested_file_in_target
52
+ @case_directory = "test/cases/missing_nested_file_in_target"
53
+ refute matcher.matches?(target_dir)
54
+ assert_equal "expected \"#{target_dir}/nested/file\" to exist since \"#{expected_dir}/nested/file\" exists", matcher.failure_message
55
+ end
56
+
57
+ def test_empty_files_are_equal
58
+ @case_directory = "test/cases/empty_files_are_equal"
59
+ assert matcher.matches?(target_dir), matcher.failure_message
60
+ end
61
+
62
+ def test_different_text_files
63
+ @case_directory = "test/cases/different_text_files"
64
+ refute matcher.matches?(target_dir)
65
+ assert_equal <<MSG.strip, matcher.failure_message
66
+ expected "#{target_dir}/file" to have same content as "#{expected_dir}/file":
67
+ Expected: "hello"
68
+ Actual: "world"
69
+ MSG
70
+ end
71
+
72
+ def test_same_text_files
73
+ @case_directory = "test/cases/same_text_files"
74
+ assert matcher.matches?(target_dir), matcher.failure_message
75
+ end
76
+
77
+ def test_different_binary_files
78
+ @case_directory = "test/cases/different_binary_files"
79
+ refute matcher.matches?(target_dir)
80
+ assert_equal "expected \"#{target_dir}/file.png\" to be the same size as \"#{expected_dir}/file.png\"", matcher.failure_message
81
+ end
82
+
83
+ def test_same_binary_files
84
+ @case_directory = "test/cases/same_binary_files"
85
+ assert matcher.matches?(target_dir), matcher.failure_message
86
+ end
87
+
88
+ def test_binary_and_text_files
89
+ @case_directory = "test/cases/binary_and_text_files"
90
+ refute matcher.matches?(target_dir)
91
+ assert_equal "expected \"#{target_dir}/file.txt\" to be the same size as \"#{expected_dir}/file.txt\"", matcher.failure_message
92
+ end
93
+
94
+ def test_extra_file_in_target
95
+ @case_directory = "test/cases/extra_file_in_target"
96
+ refute matcher.matches?(target_dir)
97
+ assert_equal "found unexpected files [\"#{target_dir}/file\"]", matcher.failure_message
98
+ end
99
+
100
+ def test_failure_message_negated
101
+ @case_directory = "test/cases/empty_dirs_are_equal"
102
+ matcher.matches?(target_dir)
103
+ assert_equal "expected \"#{target_dir}\" to not be equal to \"#{expected_dir}\", but they are equal", matcher.failure_message_when_negated
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,59 @@
1
+ require "test_helper"
2
+ require "minitest/assert_dirs_equal"
3
+
4
+ module AssertDirsEqual
5
+ class MinitestIntegrationTest < Minitest::Test
6
+ def test_successful_assert
7
+ @case_directory = "test/cases/empty_dirs_are_equal"
8
+ assert_dirs_equal expected_dir, target_dir
9
+ end
10
+
11
+ def test_failed_assert
12
+ @case_directory = "test/cases/missing_expected"
13
+
14
+ error = assert_raises(Minitest::Assertion) do
15
+ assert_dirs_equal expected_dir, target_dir
16
+ end
17
+
18
+ assert_equal "expected \"#{expected_dir}\" to exist", error.message
19
+ end
20
+
21
+ def test_successful_refute
22
+ @case_directory = "test/cases/missing_expected"
23
+ refute_dirs_equal expected_dir, target_dir
24
+ end
25
+
26
+ def test_failed_refute
27
+ @case_directory = "test/cases/empty_dirs_are_equal"
28
+
29
+ error = assert_raises(Minitest::Assertion) do
30
+ refute_dirs_equal expected_dir, target_dir
31
+ end
32
+
33
+ assert_equal "expected \"#{target_dir}\" to not be equal to \"#{expected_dir}\", but they are equal", error.message
34
+ end
35
+
36
+ def test_minitest_powered_diff
37
+ @case_directory = "test/cases/large_different_text_files"
38
+
39
+ error = assert_raises(Minitest::Assertion) do
40
+ assert_dirs_equal expected_dir, target_dir
41
+ end
42
+
43
+ assert_equal <<MSG, error.message
44
+ expected "#{target_dir}/file" to have same content as "#{expected_dir}/file":
45
+ --- expected
46
+ +++ actual
47
+ @@ -11,7 +11,7 @@
48
+ minitest
49
+ minitest
50
+ minitest
51
+ -minitest
52
+ +rspec
53
+ minitest
54
+ minitest
55
+ minitest
56
+ MSG
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,12 @@
1
+ require "bundler/setup"
2
+ require "minitest/autorun"
3
+
4
+ class Minitest::Test
5
+ def expected_dir
6
+ File.join(@case_directory, "expected")
7
+ end
8
+
9
+ def target_dir
10
+ File.join(@case_directory, "target")
11
+ end
12
+ end
metadata ADDED
@@ -0,0 +1,143 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: assert_dirs_equal
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Andrii Malyshko
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-03-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '5.4'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '5.4'
55
+ description: Test assertion for directories equality by tree and content comparison
56
+ email:
57
+ - mail@nashbridges.me
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - ".gitignore"
63
+ - ".travis.yml"
64
+ - ".yardopts"
65
+ - CHANGELOG.md
66
+ - CONTRIBUTING.md
67
+ - Gemfile
68
+ - LICENSE.txt
69
+ - README.md
70
+ - Rakefile
71
+ - assert_dirs_equal.gemspec
72
+ - lib/assert_dirs_equal/matcher.rb
73
+ - lib/minitest/assert_dirs_equal.rb
74
+ - test/cases/binary_and_text_files/expected/file.txt
75
+ - test/cases/binary_and_text_files/target/file.txt
76
+ - test/cases/different_binary_files/expected/file.png
77
+ - test/cases/different_binary_files/target/file.png
78
+ - test/cases/different_text_files/expected/file
79
+ - test/cases/different_text_files/target/file
80
+ - test/cases/empty_files_are_equal/expected/file
81
+ - test/cases/empty_files_are_equal/target/file
82
+ - test/cases/expected_is_not_a_dir/expected
83
+ - test/cases/extra_file_in_target/target/file
84
+ - test/cases/large_different_text_files/expected/file
85
+ - test/cases/large_different_text_files/target/file
86
+ - test/cases/missing_file_in_target/expected/file
87
+ - test/cases/missing_nested_file_in_target/expected/nested/file
88
+ - test/cases/same_binary_files/expected/file.png
89
+ - test/cases/same_binary_files/target/file.png
90
+ - test/cases/same_text_files/expected/file
91
+ - test/cases/same_text_files/target/file
92
+ - test/cases/target_is_not_a_dir/target
93
+ - test/matcher_test.rb
94
+ - test/minitest_integration_test.rb
95
+ - test/test_helper.rb
96
+ homepage: https://github.com/torba-rb/assert_dirs_equal
97
+ licenses:
98
+ - MIT
99
+ metadata: {}
100
+ post_install_message:
101
+ rdoc_options: []
102
+ require_paths:
103
+ - lib
104
+ required_ruby_version: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ required_rubygems_version: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ requirements: []
115
+ rubyforge_project:
116
+ rubygems_version: 2.4.5.1
117
+ signing_key:
118
+ specification_version: 4
119
+ summary: Test assertion for directories equality by tree and content comparison
120
+ test_files:
121
+ - test/cases/binary_and_text_files/expected/file.txt
122
+ - test/cases/binary_and_text_files/target/file.txt
123
+ - test/cases/different_binary_files/expected/file.png
124
+ - test/cases/different_binary_files/target/file.png
125
+ - test/cases/different_text_files/expected/file
126
+ - test/cases/different_text_files/target/file
127
+ - test/cases/empty_files_are_equal/expected/file
128
+ - test/cases/empty_files_are_equal/target/file
129
+ - test/cases/expected_is_not_a_dir/expected
130
+ - test/cases/extra_file_in_target/target/file
131
+ - test/cases/large_different_text_files/expected/file
132
+ - test/cases/large_different_text_files/target/file
133
+ - test/cases/missing_file_in_target/expected/file
134
+ - test/cases/missing_nested_file_in_target/expected/nested/file
135
+ - test/cases/same_binary_files/expected/file.png
136
+ - test/cases/same_binary_files/target/file.png
137
+ - test/cases/same_text_files/expected/file
138
+ - test/cases/same_text_files/target/file
139
+ - test/cases/target_is_not_a_dir/target
140
+ - test/matcher_test.rb
141
+ - test/minitest_integration_test.rb
142
+ - test/test_helper.rb
143
+ has_rdoc: