minitest-filesystem 0.0.1 → 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 +4 -4
- data/.gitignore +4 -0
- data/.travis.yml +1 -1
- data/README.md +6 -0
- data/lib/minitest/filesystem.rb +8 -0
- data/lib/minitest/filesystem/matcher.rb +28 -27
- data/lib/minitest/filesystem/version.rb +1 -1
- data/minitest-filesystem.gemspec +1 -0
- data/test/{filesystem_test.rb → assertion_test.rb} +22 -8
- data/test/expectation_test.rb +48 -0
- data/test/test_helper.rb +3 -0
- metadata +19 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 06e28053de722c8cc02a8e8679ec05b41fe86e39
|
4
|
+
data.tar.gz: f8e11b3bd7ff63311b7699a9f739f7e91bcac9d1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5375f8b89900b5e6a05eb32289cb8aaf4bf2e144ccf302890dcbd08958f1e8b7d93bdea120be1ebbd22b1fc0fdee7a3134d69d0ff34fc95a9017786ab165d69c
|
7
|
+
data.tar.gz: d58bdf3707630ca24a3a26901bcbff36aaf19439e8e9eadbca43e5d40629db6743acacf6fb66d7acdc126151279cf3e2959523b05567b709bacc863b68432a67
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -80,3 +80,9 @@ directories inside `root_dir` that the matcher won't care about).
|
|
80
80
|
### 0.0.1
|
81
81
|
|
82
82
|
* Extract assertion and matcher from current projects
|
83
|
+
|
84
|
+
### 0.1.0
|
85
|
+
|
86
|
+
* Refactor existing code
|
87
|
+
* Add more tests around assertion
|
88
|
+
* Infect `must_exist_within` expectation
|
data/lib/minitest/filesystem.rb
CHANGED
@@ -6,4 +6,12 @@ module MiniTest::Assertions
|
|
6
6
|
matcher = MiniTest::FileSystem::Matcher.new(dir, &block)
|
7
7
|
assert matcher.match_found?, msg || matcher.message
|
8
8
|
end
|
9
|
+
|
10
|
+
def filesystem(&block)
|
11
|
+
block
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
module MiniTest::Expectations
|
16
|
+
infect_an_assertion :assert_contains_filesystem, :must_exist_within
|
9
17
|
end
|
@@ -14,18 +14,11 @@ module MiniTest
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def dir(dir, &block)
|
17
|
-
matcher = self.class.new(@actual_tree.
|
17
|
+
matcher = self.class.new(@actual_tree.expand_path(dir), &block) if block_given?
|
18
18
|
|
19
19
|
entry(:directory, dir) && is_a?(:directory, dir) && subtree(matcher)
|
20
20
|
end
|
21
21
|
|
22
|
-
def entry(kind = :entry, entry)
|
23
|
-
@is_matching = @is_matching && @actual_tree.include?(entry)
|
24
|
-
set_failure_msg_for(kind, entry) unless @is_matching
|
25
|
-
|
26
|
-
@is_matching
|
27
|
-
end
|
28
|
-
|
29
22
|
def match_found?
|
30
23
|
instance_eval(&@expected_tree)
|
31
24
|
@is_matching
|
@@ -37,31 +30,39 @@ module MiniTest
|
|
37
30
|
|
38
31
|
private
|
39
32
|
|
40
|
-
def
|
41
|
-
|
42
|
-
|
33
|
+
def entry(kind = :entry, entry)
|
34
|
+
update_matching_status(
|
35
|
+
@actual_tree.include?(entry),
|
36
|
+
not_found_msg_for(kind, entry))
|
37
|
+
end
|
43
38
|
|
44
|
-
|
39
|
+
def subtree(matcher)
|
40
|
+
update_matching_status(matcher.match_found?, matcher.message) if matcher
|
45
41
|
end
|
46
42
|
|
47
43
|
def is_a?(kind, entry)
|
48
|
-
|
49
|
-
|
44
|
+
update_matching_status(
|
45
|
+
@actual_tree.is_a?(kind, entry),
|
46
|
+
mismatch_msg_for(kind, entry))
|
47
|
+
end
|
48
|
+
|
49
|
+
def update_matching_status(check, msg)
|
50
|
+
@is_matching = @is_matching && check
|
51
|
+
set_failure_msg(msg) unless @is_matching
|
50
52
|
|
51
53
|
@is_matching
|
52
54
|
end
|
53
55
|
|
54
|
-
def
|
55
|
-
|
56
|
+
def not_found_msg_for(kind, entry)
|
57
|
+
"Expected `#{@actual_tree.root}` to contain #{kind} `#{entry}`."
|
56
58
|
end
|
57
59
|
|
58
|
-
def
|
59
|
-
|
60
|
+
def mismatch_msg_for(kind, entry)
|
61
|
+
"Expected `#{entry}` to be a #{kind}, but it was not."
|
60
62
|
end
|
61
63
|
|
62
|
-
def
|
63
|
-
@failure_msg ||=
|
64
|
-
"Expected `#{entry}` to be a #{kind}, but it was not."
|
64
|
+
def set_failure_msg(msg)
|
65
|
+
@failure_msg ||= msg
|
65
66
|
end
|
66
67
|
|
67
68
|
class MatchingTree
|
@@ -73,11 +74,15 @@ module MiniTest
|
|
73
74
|
end
|
74
75
|
|
75
76
|
def include?(entry)
|
76
|
-
@tree.include?(
|
77
|
+
@tree.include?(expand_path(entry))
|
77
78
|
end
|
78
79
|
|
79
80
|
def is_a?(kind, entry)
|
80
|
-
(
|
81
|
+
(expand_path entry).send("#{kind}?")
|
82
|
+
end
|
83
|
+
|
84
|
+
def expand_path(file)
|
85
|
+
@root + Pathname.new(file)
|
81
86
|
end
|
82
87
|
|
83
88
|
private
|
@@ -85,10 +90,6 @@ module MiniTest
|
|
85
90
|
def expand_tree_under(dir)
|
86
91
|
Pathname.glob(dir.join("**/*"))
|
87
92
|
end
|
88
|
-
|
89
|
-
def root_slash(file)
|
90
|
-
@root + Pathname.new(file)
|
91
|
-
end
|
92
93
|
end
|
93
94
|
end
|
94
95
|
end
|
data/minitest-filesystem.gemspec
CHANGED
@@ -1,22 +1,24 @@
|
|
1
1
|
require 'test_helper'
|
2
|
+
|
2
3
|
require 'tmpdir'
|
3
4
|
require 'fileutils'
|
4
5
|
|
5
6
|
describe "assert_contains_filesystem" do
|
6
7
|
before do
|
7
8
|
@root_dir = Pathname.new(Dir.mktmpdir('minitestfs'))
|
8
|
-
|
9
|
+
|
9
10
|
(@root_dir + 'a_directory').mkdir
|
10
11
|
(@root_dir + 'a_subdirectory').mkdir
|
12
|
+
(@root_dir + 'a_subdirectory' + 'deeper_subdirectory').mkdir
|
11
13
|
(@root_dir + 'not_a_file').mkdir
|
12
14
|
(@root_dir + 'unchecked_dir').mkdir
|
13
|
-
|
15
|
+
|
14
16
|
FileUtils.touch(@root_dir + 'a_file')
|
15
17
|
FileUtils.touch(@root_dir + 'not_a_dir')
|
16
|
-
FileUtils.touch(@root_dir + 'a_subdirectory' + 'another_file')
|
18
|
+
FileUtils.touch(@root_dir + 'a_subdirectory' + 'deeper_subdirectory' + 'another_file')
|
17
19
|
FileUtils.touch(@root_dir + 'unchecked_file')
|
18
20
|
end
|
19
|
-
|
21
|
+
|
20
22
|
after do
|
21
23
|
FileUtils.rm_rf @root_dir
|
22
24
|
end
|
@@ -37,10 +39,12 @@ describe "assert_contains_filesystem" do
|
|
37
39
|
end
|
38
40
|
end
|
39
41
|
|
40
|
-
it "passes when a file within a
|
42
|
+
it "passes when a file within a nested subtree is found" do
|
41
43
|
assert_contains_filesystem(@root_dir) do
|
42
44
|
dir "a_subdirectory" do
|
43
|
-
|
45
|
+
dir "deeper_subdirectory" do
|
46
|
+
file "another_file"
|
47
|
+
end
|
44
48
|
end
|
45
49
|
end
|
46
50
|
end
|
@@ -72,8 +76,7 @@ describe "assert_contains_filesystem" do
|
|
72
76
|
|
73
77
|
error = assert_raises(MiniTest::Assertion, &l)
|
74
78
|
error.message.must_match(
|
75
|
-
/expected `#{@root_dir + 'a_subdirectory'}` to contain file `missing_file`/im
|
76
|
-
)
|
79
|
+
/expected `#{@root_dir + 'a_subdirectory'}` to contain file `missing_file`/im)
|
77
80
|
end
|
78
81
|
|
79
82
|
it "fails when a directory is expected to be a file" do
|
@@ -93,4 +96,15 @@ describe "assert_contains_filesystem" do
|
|
93
96
|
error = assert_raises(MiniTest::Assertion, &l)
|
94
97
|
error.message.must_match(/expected `not_a_dir` to be a directory/im)
|
95
98
|
end
|
99
|
+
|
100
|
+
it "allows to print custom error messages" do
|
101
|
+
failure_msg = "I really miss this file a lot"
|
102
|
+
|
103
|
+
l = lambda { assert_contains_filesystem(@root_dir, failure_msg) do
|
104
|
+
file "baz"
|
105
|
+
end }
|
106
|
+
|
107
|
+
error = assert_raises(MiniTest::Assertion, &l)
|
108
|
+
error.message.must_equal(failure_msg)
|
109
|
+
end
|
96
110
|
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
require 'tmpdir'
|
4
|
+
require 'fileutils'
|
5
|
+
|
6
|
+
describe "filesystem must_exist_within" do
|
7
|
+
before do
|
8
|
+
@root_dir = Pathname.new(Dir.mktmpdir('minitestfs'))
|
9
|
+
|
10
|
+
(@root_dir + 'a_directory').mkdir
|
11
|
+
(@root_dir + 'a_subdirectory').mkdir
|
12
|
+
(@root_dir + 'a_subdirectory' + 'deeper_subdirectory').mkdir
|
13
|
+
(@root_dir + 'not_a_file').mkdir
|
14
|
+
(@root_dir + 'unchecked_dir').mkdir
|
15
|
+
|
16
|
+
FileUtils.touch(@root_dir + 'a_file')
|
17
|
+
FileUtils.touch(@root_dir + 'not_a_dir')
|
18
|
+
FileUtils.touch(@root_dir + 'a_subdirectory' + 'deeper_subdirectory' + 'another_file')
|
19
|
+
FileUtils.touch(@root_dir + 'unchecked_file')
|
20
|
+
end
|
21
|
+
|
22
|
+
after do
|
23
|
+
FileUtils.rm_rf @root_dir
|
24
|
+
end
|
25
|
+
|
26
|
+
it "passes when the expected tree is found" do
|
27
|
+
filesystem {
|
28
|
+
file "a_file"
|
29
|
+
dir "a_subdirectory" do
|
30
|
+
dir "deeper_subdirectory" do
|
31
|
+
file "another_file"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
}.must_exist_within(@root_dir)
|
35
|
+
end
|
36
|
+
|
37
|
+
it "fails when the expected tree is not found" do
|
38
|
+
l = lambda { filesystem {
|
39
|
+
file "a_file"
|
40
|
+
dir "a_subdirectory"
|
41
|
+
file "missing_file"
|
42
|
+
}.must_exist_within(@root_dir) }
|
43
|
+
|
44
|
+
error = assert_raises(MiniTest::Assertion, &l)
|
45
|
+
error.message.must_match(
|
46
|
+
/expected `#{@root_dir}` to contain file `missing_file`/im)
|
47
|
+
end
|
48
|
+
end
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: minitest-filesystem
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stefano Zanella
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: coveralls
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
description: Minitest exstension to check filesystem contents
|
56
70
|
email:
|
57
71
|
- zanella.stefano@gmail.com
|
@@ -70,7 +84,8 @@ files:
|
|
70
84
|
- lib/minitest/filesystem/matcher.rb
|
71
85
|
- lib/minitest/filesystem/version.rb
|
72
86
|
- minitest-filesystem.gemspec
|
73
|
-
- test/
|
87
|
+
- test/assertion_test.rb
|
88
|
+
- test/expectation_test.rb
|
74
89
|
- test/test_helper.rb
|
75
90
|
homepage: https://github.com/stefanozanella/minitest-filesystem
|
76
91
|
licenses:
|
@@ -98,5 +113,6 @@ specification_version: 4
|
|
98
113
|
summary: Adds assertions and expectations to check the content of a filesystem tree
|
99
114
|
with minitest
|
100
115
|
test_files:
|
101
|
-
- test/
|
116
|
+
- test/assertion_test.rb
|
117
|
+
- test/expectation_test.rb
|
102
118
|
- test/test_helper.rb
|