minitest-filesystem 1.0.1 → 1.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
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +2 -0
- data/.gitignore +1 -0
- data/README.md +13 -0
- data/lib/minitest/filesystem/matcher.rb +20 -0
- data/lib/minitest/filesystem/version.rb +1 -1
- data/minitest-filesystem.gemspec +8 -1
- data/rubygems-stefanozanella.crt +20 -0
- data/test/assertion_test.rb +43 -0
- metadata +25 -3
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db73e422e4760423081870612b857aaa490430d8
|
4
|
+
data.tar.gz: 77e25a5ca198b8b23706db1c57f182a123446eae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5e58da2037fbc107914fdfbc7787c7040e203ce0b7081c79e1793050aacbdc20a84471e90f70f49362853e605cedf6e008626ba8979dec746729f662978a20cc
|
7
|
+
data.tar.gz: d829f92388c3762ddadbf0e82342b72f8e21ab8ada64ca7f9f81334f4fb2cda0e3c1961b958c52bc34b6528ba1c7d6d85f845329f5fb6dca80a10b508d692341
|
checksums.yaml.gz.sig
ADDED
Binary file
|
data.tar.gz.sig
ADDED
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -39,6 +39,9 @@ Let's suppose the following filesystem structure exists:
|
|
39
39
|
* `subfile_2`
|
40
40
|
* `subsubdir_1/`
|
41
41
|
* `subdir_2/`
|
42
|
+
* `subdir_3/`
|
43
|
+
* `link_1`
|
44
|
+
* `link_2`, `'../../file_1'`
|
42
45
|
|
43
46
|
You can check if `root_dir` contains a specific structure:
|
44
47
|
|
@@ -49,6 +52,9 @@ assert_contains_filesystem("root_dir") do
|
|
49
52
|
file "subfile_1"
|
50
53
|
end
|
51
54
|
dir "subdir_2"
|
55
|
+
dir "subdir_3" do
|
56
|
+
link "link_1"
|
57
|
+
end
|
52
58
|
end
|
53
59
|
```
|
54
60
|
|
@@ -61,6 +67,9 @@ filesystem {
|
|
61
67
|
file "subfile_1"
|
62
68
|
end
|
63
69
|
dir "subdir_2"
|
70
|
+
dir "subdir_3" do
|
71
|
+
link "link_1"
|
72
|
+
end
|
64
73
|
}.must_exist_within "root_dir"
|
65
74
|
```
|
66
75
|
|
@@ -77,6 +86,10 @@ directories inside `root_dir` that the matcher won't care about).
|
|
77
86
|
|
78
87
|
## Changelog
|
79
88
|
|
89
|
+
### 1.1.0
|
90
|
+
|
91
|
+
* Add support for testing symbolic links
|
92
|
+
|
80
93
|
### 1.0.1
|
81
94
|
|
82
95
|
* Remove CamelCase naming.
|
@@ -13,6 +13,10 @@ module Minitest
|
|
13
13
|
entry(file, :file) && is_a?(file, :file)
|
14
14
|
end
|
15
15
|
|
16
|
+
def link(link, target=nil)
|
17
|
+
entry(link, :symlink) && is_a?(link, :symlink) && is_target_correct?(link, target)
|
18
|
+
end
|
19
|
+
|
16
20
|
def dir(dir, &block)
|
17
21
|
matcher = self.class.new(@actual_tree.expand_path(dir), &block) if block_given?
|
18
22
|
|
@@ -36,10 +40,22 @@ module Minitest
|
|
36
40
|
not_found_msg_for(entry, kind))
|
37
41
|
end
|
38
42
|
|
43
|
+
def is_target_correct?(link, target)
|
44
|
+
return true unless target
|
45
|
+
|
46
|
+
update_matching_status(
|
47
|
+
@actual_tree.expand_path(target) == follow_link(@actual_tree.expand_path(link)),
|
48
|
+
link_target_mismatch_msg_for(link, target))
|
49
|
+
end
|
50
|
+
|
39
51
|
def subtree(matcher)
|
40
52
|
update_matching_status(matcher.match_found?, matcher.message) if matcher
|
41
53
|
end
|
42
54
|
|
55
|
+
def follow_link(link)
|
56
|
+
Pathname.new(File.readlink(link))
|
57
|
+
end
|
58
|
+
|
43
59
|
def is_a?(entry, kind)
|
44
60
|
update_matching_status(
|
45
61
|
@actual_tree.is_a?(entry, kind),
|
@@ -61,6 +77,10 @@ module Minitest
|
|
61
77
|
"Expected `#{entry}` to be a #{kind}, but it was not."
|
62
78
|
end
|
63
79
|
|
80
|
+
def link_target_mismatch_msg_for(link, target)
|
81
|
+
"Expected `#{link}` to point to `#{target}`, but it pointed to #{File.readlink(@actual_tree.expand_path(link))}"
|
82
|
+
end
|
83
|
+
|
64
84
|
def set_failure_msg(msg)
|
65
85
|
@failure_msg ||= msg
|
66
86
|
end
|
data/minitest-filesystem.gemspec
CHANGED
@@ -1,8 +1,12 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
lib = File.expand_path('../lib', __FILE__)
|
3
|
-
|
3
|
+
$:.unshift(lib) unless $:.include?(lib)
|
4
|
+
|
5
|
+
require 'pathname'
|
4
6
|
require 'minitest/filesystem/version'
|
5
7
|
|
8
|
+
signing_key_file = ENV['RUBYGEMS_SIGNING_KEY_FILE']
|
9
|
+
|
6
10
|
Gem::Specification.new do |gem|
|
7
11
|
gem.name = "minitest-filesystem"
|
8
12
|
gem.version = Minitest::Filesystem::VERSION
|
@@ -23,4 +27,7 @@ Gem::Specification.new do |gem|
|
|
23
27
|
gem.add_development_dependency "rake"
|
24
28
|
gem.add_development_dependency "minitest"
|
25
29
|
gem.add_development_dependency "coveralls"
|
30
|
+
|
31
|
+
gem.signing_key = Pathname.new(signing_key_file).expand_path if signing_key_file
|
32
|
+
gem.cert_chain = ["rubygems-stefanozanella.crt"]
|
26
33
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDQDCCAiigAwIBAgIBADANBgkqhkiG9w0BAQUFADBGMRgwFgYDVQQDDA96YW5l
|
3
|
+
bGxhLnN0ZWZhbm8xFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixk
|
4
|
+
ARkWA2NvbTAeFw0xMzA4MDcxOTA2MDZaFw0xNDA4MDcxOTA2MDZaMEYxGDAWBgNV
|
5
|
+
BAMMD3phbmVsbGEuc3RlZmFubzEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYK
|
6
|
+
CZImiZPyLGQBGRYDY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
|
7
|
+
2JCnJCnjjs62MR/Tw/4WgSG42ruiCEqXV1ECMsXymHPE8xyHkYAwLXvBRzOkZ/IA
|
8
|
+
puJ1XhScduMRcUuE0ZPA5N2HBZI0WsmyyNTYBjOob8m0SNInoRZfIMloj3D8QzB7
|
9
|
+
/6G5HLMWNx60JEpIDgfXvIuSRKNKQ0/0+/G/H4COgj72pd3F4dYltvx+mSwPRq7Q
|
10
|
+
MdZsK3T5Q3d4eLBY1VSlJpq0wkwdEWTXAhR0Mfmbn1D8m9IhJfubgXuXVBY4OPO8
|
11
|
+
KAF/wWqTkzA6guVQlSKdZR4vwms7OpeFkotnivBKa6JwUQSXO8AZEyy53V8cSYDu
|
12
|
+
dbaFi53YbEwOWSMQnW8/kQIDAQABozkwNzAdBgNVHQ4EFgQUcBKkmJAvSTKfDf7z
|
13
|
+
LEu1wE+Rk+swCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwDQYJKoZIhvcNAQEFBQAD
|
14
|
+
ggEBAMeqfk1l4Y0iZ8jNiu0afcQ60DVqBkRtrT/rsZEqGsdOw11bntOE4yWpo4Kd
|
15
|
+
Y0C/kYrVQ/mIN7IGKbCSjES3aYdQftV9SRW77FA25m2KXRbnEYtJDUX35gAqSdRY
|
16
|
+
9IiYivsMq2dr70eKPNFrFOwWvmwhcGyEG8EDvYoXWllke7RGz1Dn/AZx6jPnShO+
|
17
|
+
0ru4OXsM9++md3sGXIugEFNygvo2/1yQoTe6+XiBocS+pWsJd6JZBfkxPRT4Dz4H
|
18
|
+
RigBD0E3/t/ABjCXkmqwp5gnAZmP8JiVUkn8rp5E0FXvC8T7nsPs2TW/TAmUV6rN
|
19
|
+
hK25FX8YWgT9fD9y3PpWjiYcrCo=
|
20
|
+
-----END CERTIFICATE-----
|
data/test/assertion_test.rb
CHANGED
@@ -14,7 +14,11 @@ describe "assert_contains_filesystem" do
|
|
14
14
|
(@root_dir + 'unchecked_dir').mkdir
|
15
15
|
|
16
16
|
FileUtils.touch(@root_dir + 'a_file')
|
17
|
+
FileUtils.touch(@root_dir + 'actual_file')
|
18
|
+
FileUtils.ln_s(@root_dir + 'doesnt_matter', @root_dir + 'a_link')
|
19
|
+
FileUtils.ln_s(@root_dir + 'actual_file', @root_dir + 'link_to')
|
17
20
|
FileUtils.touch(@root_dir + 'not_a_dir')
|
21
|
+
FileUtils.touch(@root_dir + 'not_a_link')
|
18
22
|
FileUtils.touch(@root_dir + 'a_subdirectory' + 'deeper_subdirectory' + 'another_file')
|
19
23
|
FileUtils.touch(@root_dir + 'unchecked_file')
|
20
24
|
end
|
@@ -33,6 +37,18 @@ describe "assert_contains_filesystem" do
|
|
33
37
|
end
|
34
38
|
end
|
35
39
|
|
40
|
+
it "passes when single link found" do
|
41
|
+
assert_contains_filesystem(@root_dir) do
|
42
|
+
link "a_link"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
it "passes when a link points to the correct target" do
|
47
|
+
assert_contains_filesystem(@root_dir) do
|
48
|
+
link "link_to", "actual_file"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
36
52
|
it "passes when single directory found" do
|
37
53
|
assert_contains_filesystem(@root_dir) do
|
38
54
|
dir "a_directory"
|
@@ -58,6 +74,24 @@ describe "assert_contains_filesystem" do
|
|
58
74
|
error.message.must_match(/expected `#{@root_dir}` to contain file `foo`/im)
|
59
75
|
end
|
60
76
|
|
77
|
+
it "fails when an expected symlink isn't found" do
|
78
|
+
l = lambda { assert_contains_filesystem(@root_dir) do
|
79
|
+
link "foo"
|
80
|
+
end }
|
81
|
+
|
82
|
+
error = assert_raises(Minitest::Assertion, &l)
|
83
|
+
error.message.must_match(/expected `#{@root_dir}` to contain symlink `foo`/im)
|
84
|
+
end
|
85
|
+
|
86
|
+
it "fails when a symlink points to the wrong file" do
|
87
|
+
l = lambda { assert_contains_filesystem(@root_dir) do
|
88
|
+
link "link_to", "nonexistent_target"
|
89
|
+
end }
|
90
|
+
|
91
|
+
error = assert_raises(Minitest::Assertion, &l)
|
92
|
+
error.message.must_match(/expected `link_to` to point to `nonexistent_target`/im)
|
93
|
+
end
|
94
|
+
|
61
95
|
it "fails when an expected directory isn't found" do
|
62
96
|
l = lambda { assert_contains_filesystem(@root_dir) do
|
63
97
|
dir "bar"
|
@@ -97,6 +131,15 @@ describe "assert_contains_filesystem" do
|
|
97
131
|
error.message.must_match(/expected `not_a_dir` to be a directory/im)
|
98
132
|
end
|
99
133
|
|
134
|
+
it "fails when a file is expected to be a symlink" do
|
135
|
+
l = lambda { assert_contains_filesystem(@root_dir) do
|
136
|
+
link "not_a_link"
|
137
|
+
end }
|
138
|
+
|
139
|
+
error = assert_raises(Minitest::Assertion, &l)
|
140
|
+
error.message.must_match(/expected `not_a_link` to be a symlink/im)
|
141
|
+
end
|
142
|
+
|
100
143
|
it "allows to print custom error messages" do
|
101
144
|
failure_msg = "I really miss this file a lot"
|
102
145
|
|
metadata
CHANGED
@@ -1,14 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: minitest-filesystem
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stefano Zanella
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
|
-
cert_chain:
|
11
|
-
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIDQDCCAiigAwIBAgIBADANBgkqhkiG9w0BAQUFADBGMRgwFgYDVQQDDA96YW5l
|
14
|
+
bGxhLnN0ZWZhbm8xFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixk
|
15
|
+
ARkWA2NvbTAeFw0xMzA4MDcxOTA2MDZaFw0xNDA4MDcxOTA2MDZaMEYxGDAWBgNV
|
16
|
+
BAMMD3phbmVsbGEuc3RlZmFubzEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYK
|
17
|
+
CZImiZPyLGQBGRYDY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
|
18
|
+
2JCnJCnjjs62MR/Tw/4WgSG42ruiCEqXV1ECMsXymHPE8xyHkYAwLXvBRzOkZ/IA
|
19
|
+
puJ1XhScduMRcUuE0ZPA5N2HBZI0WsmyyNTYBjOob8m0SNInoRZfIMloj3D8QzB7
|
20
|
+
/6G5HLMWNx60JEpIDgfXvIuSRKNKQ0/0+/G/H4COgj72pd3F4dYltvx+mSwPRq7Q
|
21
|
+
MdZsK3T5Q3d4eLBY1VSlJpq0wkwdEWTXAhR0Mfmbn1D8m9IhJfubgXuXVBY4OPO8
|
22
|
+
KAF/wWqTkzA6guVQlSKdZR4vwms7OpeFkotnivBKa6JwUQSXO8AZEyy53V8cSYDu
|
23
|
+
dbaFi53YbEwOWSMQnW8/kQIDAQABozkwNzAdBgNVHQ4EFgQUcBKkmJAvSTKfDf7z
|
24
|
+
LEu1wE+Rk+swCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwDQYJKoZIhvcNAQEFBQAD
|
25
|
+
ggEBAMeqfk1l4Y0iZ8jNiu0afcQ60DVqBkRtrT/rsZEqGsdOw11bntOE4yWpo4Kd
|
26
|
+
Y0C/kYrVQ/mIN7IGKbCSjES3aYdQftV9SRW77FA25m2KXRbnEYtJDUX35gAqSdRY
|
27
|
+
9IiYivsMq2dr70eKPNFrFOwWvmwhcGyEG8EDvYoXWllke7RGz1Dn/AZx6jPnShO+
|
28
|
+
0ru4OXsM9++md3sGXIugEFNygvo2/1yQoTe6+XiBocS+pWsJd6JZBfkxPRT4Dz4H
|
29
|
+
RigBD0E3/t/ABjCXkmqwp5gnAZmP8JiVUkn8rp5E0FXvC8T7nsPs2TW/TAmUV6rN
|
30
|
+
hK25FX8YWgT9fD9y3PpWjiYcrCo=
|
31
|
+
-----END CERTIFICATE-----
|
32
|
+
date: 2013-09-04 00:00:00.000000000 Z
|
12
33
|
dependencies:
|
13
34
|
- !ruby/object:Gem::Dependency
|
14
35
|
name: bundler
|
@@ -84,6 +105,7 @@ files:
|
|
84
105
|
- lib/minitest/filesystem/matcher.rb
|
85
106
|
- lib/minitest/filesystem/version.rb
|
86
107
|
- minitest-filesystem.gemspec
|
108
|
+
- rubygems-stefanozanella.crt
|
87
109
|
- test/assertion_test.rb
|
88
110
|
- test/expectation_test.rb
|
89
111
|
- test/test_helper.rb
|
metadata.gz.sig
ADDED
Binary file
|