required 0.1.1 → 0.1.2
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.
- data/README +1 -5
- data/lib/required.rb +4 -4
- data/tests/required_test.rb +182 -0
- metadata +30 -16
data/README
CHANGED
@@ -89,9 +89,5 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
89
89
|
|
90
90
|
== Links
|
91
91
|
|
92
|
-
Required:: <http://
|
93
|
-
Required's Rubyforge project:: <http://rubyforge.org/projects/required>
|
92
|
+
Required's RubyGems.org project:: <http://rubygems.org/gems/required>
|
94
93
|
Official Required repository:: <http://github.com/required>
|
95
|
-
|
96
|
-
Arild Shirazi:: <http://setup-a-personal-site-quick.com/>
|
97
|
-
|
data/lib/required.rb
CHANGED
@@ -4,11 +4,11 @@ module Kernel
|
|
4
4
|
# `require` all ruby files found. Returns an array of files that were
|
5
5
|
# actually loaded in the order which they were loaded.
|
6
6
|
# Available options:
|
7
|
-
# :recurse =>
|
8
|
-
# :include => /
|
9
|
-
# :exclude => /
|
7
|
+
# :recurse => true # Descend into subdirectories (default is false)
|
8
|
+
# :include => /pattern/ # Only require files with names matching this regex
|
9
|
+
# :exclude => /pattern/ # Don't require files matching this regex
|
10
10
|
# :sort => lambda { |x, y| y <=> x }
|
11
|
-
# # Specify a custom sort order
|
11
|
+
# # Specify a custom file sort order within each directory
|
12
12
|
#
|
13
13
|
# Note: required files are loaded only once.
|
14
14
|
def required(directories, options={})
|
@@ -0,0 +1,182 @@
|
|
1
|
+
Dir.chdir File.expand_path(File.dirname(__FILE__) + "/..")
|
2
|
+
require 'rubygems'
|
3
|
+
require 'shoulda'
|
4
|
+
require 'lib/required'
|
5
|
+
|
6
|
+
class RequiredTest < Test::Unit::TestCase
|
7
|
+
|
8
|
+
@@req_dir = "tests/required_test"
|
9
|
+
|
10
|
+
def reset_required_test_files
|
11
|
+
my_test_files = $".select { |r| r =~ /required_test/ }
|
12
|
+
my_test_files.each { |r| $".delete r }
|
13
|
+
$REQUIRED = []
|
14
|
+
# $REQUIRED global will be populated with name of each test file required
|
15
|
+
end
|
16
|
+
|
17
|
+
context "Non-recursive required" do
|
18
|
+
setup do
|
19
|
+
reset_required_test_files
|
20
|
+
@required = required @@req_dir
|
21
|
+
end
|
22
|
+
|
23
|
+
should "accurately report all files that have been required" do
|
24
|
+
assert_equal(
|
25
|
+
%W(#{@@req_dir}/required-1.rb
|
26
|
+
#{@@req_dir}/required-2.rb
|
27
|
+
#{@@req_dir}/required\ space\ 3.rb
|
28
|
+
).sort, @required.sort)
|
29
|
+
end
|
30
|
+
|
31
|
+
should "require all ruby files (those having a .rb extension)" do
|
32
|
+
%W(#{@@req_dir}/required-1.rb
|
33
|
+
#{@@req_dir}/required-2.rb
|
34
|
+
#{@@req_dir}/required\ space\ 3.rb
|
35
|
+
).each {|f| assert $REQUIRED.include?(f),
|
36
|
+
"#{f} not found in #{$REQUIRED.inspect}"}
|
37
|
+
end
|
38
|
+
|
39
|
+
should "ignore non-ruby files" do
|
40
|
+
%W(#{@@req_dir}/junk space 4.rake
|
41
|
+
#{@@req_dir}/junk-2
|
42
|
+
#{@@req_dir}/junk-1.rbt
|
43
|
+
#{@@req_dir}/junk-3rb
|
44
|
+
).each {|f| assert ! $REQUIRED.include?(f),
|
45
|
+
"#{f} found in #{$REQUIRED.inspect}"}
|
46
|
+
end
|
47
|
+
|
48
|
+
should "ignore hidden files (files with a . prefix)" do
|
49
|
+
%W(#{@@req_dir}/.required-4.rb
|
50
|
+
).each {|f| assert ! $REQUIRED.include?(f),
|
51
|
+
"#{f} found in #{$REQUIRED.inspect}"}
|
52
|
+
end
|
53
|
+
|
54
|
+
should "ignore ruby files in subdirectories" do
|
55
|
+
%W(#{@@req_dir}/sub1
|
56
|
+
#{@@req_dir}/sub1/required-1.rb
|
57
|
+
#{@@req_dir}/sub1/required-2.rb
|
58
|
+
#{@@req_dir}/sub1/required\ space\ 3.rb
|
59
|
+
#{@@req_dir}/sub1/junk space 4.rake
|
60
|
+
#{@@req_dir}/sub1/junk-2
|
61
|
+
#{@@req_dir}/sub1/junk-1.rbt
|
62
|
+
#{@@req_dir}/sub1/junk-3rb
|
63
|
+
).each {|f| assert ! $REQUIRED.include?(f),
|
64
|
+
"#{f} found in #{$REQUIRED.inspect}"}
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
context "Non-recursive, exclude pattern required" do
|
69
|
+
setup do
|
70
|
+
reset_required_test_files
|
71
|
+
@required = required(@@req_dir, :exclude => /-2/)
|
72
|
+
end
|
73
|
+
|
74
|
+
should "require only ruby files matching an include pattern" do
|
75
|
+
%W(#{@@req_dir}/required-2.rb
|
76
|
+
).each {|f| assert ! $REQUIRED.include?(f),
|
77
|
+
"#{f} unexpectedly found in #{$REQUIRED.inspect}"}
|
78
|
+
end
|
79
|
+
|
80
|
+
should "not require ruby files that do not match the include pattern" do
|
81
|
+
%W(#{@@req_dir}/required-1.rb
|
82
|
+
#{@@req_dir}/required\ space\ 3.rb
|
83
|
+
).each {|f| assert $REQUIRED.include?(f),
|
84
|
+
"#{f} not found in #{$REQUIRED.inspect}"}
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
context "Non-recursive, include pattern required" do
|
89
|
+
setup do
|
90
|
+
reset_required_test_files
|
91
|
+
@required = required(@@req_dir, :include => /-2/)
|
92
|
+
end
|
93
|
+
|
94
|
+
should "require only ruby files matching an include pattern" do
|
95
|
+
%W(#{@@req_dir}/required-2.rb
|
96
|
+
).each {|f| assert $REQUIRED.include?(f),
|
97
|
+
"#{f} not found in #{$REQUIRED.inspect}"}
|
98
|
+
end
|
99
|
+
|
100
|
+
should "not require ruby files that do not match the include pattern" do
|
101
|
+
%W(#{@@req_dir}/required-1.rb
|
102
|
+
#{@@req_dir}/required\ space\ 3.rb
|
103
|
+
).each {|f| assert ! $REQUIRED.include?(f),
|
104
|
+
"#{f} unexcpectedly found in #{$REQUIRED.inspect}"}
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
context "Non-recursive, exclude and include pattern required" do
|
109
|
+
setup do
|
110
|
+
reset_required_test_files
|
111
|
+
@required = required(@@req_dir,
|
112
|
+
{:include => /required-/, :exclude => /2/})
|
113
|
+
end
|
114
|
+
|
115
|
+
should "require only ruby files matching an include pattern" do
|
116
|
+
%W(#{@@req_dir}/required-1.rb
|
117
|
+
).each {|f| assert $REQUIRED.include?(f),
|
118
|
+
"#{f} not found in #{$REQUIRED.inspect}"}
|
119
|
+
end
|
120
|
+
|
121
|
+
should "not require ruby files that do not match the include pattern" do
|
122
|
+
%W(#{@@req_dir}/required-2.rb
|
123
|
+
#{@@req_dir}/required\ space\ 3.rb
|
124
|
+
).each {|f| assert ! $REQUIRED.include?(f),
|
125
|
+
"#{f} unexcpectedly found in #{$REQUIRED.inspect}"}
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
context "Recursive required" do
|
130
|
+
setup do
|
131
|
+
reset_required_test_files
|
132
|
+
@required = required(@@req_dir, :recurse => true)
|
133
|
+
end
|
134
|
+
|
135
|
+
should "accurately report all files that have been required" do
|
136
|
+
assert_equal(
|
137
|
+
%W(#{@@req_dir}/required\ space\ 3.rb
|
138
|
+
#{@@req_dir}/required-1.rb
|
139
|
+
#{@@req_dir}/required-2.rb
|
140
|
+
#{@@req_dir}/sub1/required-1.rb
|
141
|
+
#{@@req_dir}/sub1/required-2.rb
|
142
|
+
#{@@req_dir}/sub1/required\ space\ 3.rb
|
143
|
+
#{@@req_dir}/sub1/sub2/required-1.rb
|
144
|
+
#{@@req_dir}/sub1/sub2/required-2.rb
|
145
|
+
#{@@req_dir}/sub1/sub2/required\ space\ 3.rb
|
146
|
+
).sort, @required.sort)
|
147
|
+
end
|
148
|
+
|
149
|
+
should "require all ruby files in subdirectories" do
|
150
|
+
%W(#{@@req_dir}/sub1/required-1.rb
|
151
|
+
#{@@req_dir}/sub1/required-2.rb
|
152
|
+
#{@@req_dir}/sub1/required\ space\ 3.rb
|
153
|
+
#{@@req_dir}/sub1/sub2/required-1.rb
|
154
|
+
#{@@req_dir}/sub1/sub2/required-2.rb
|
155
|
+
#{@@req_dir}/sub1/sub2/required\ space\ 3.rb
|
156
|
+
).each {|f| assert $REQUIRED.include?(f),
|
157
|
+
"#{f} not found in #{$REQUIRED.inspect}"}
|
158
|
+
end
|
159
|
+
|
160
|
+
should "ignore non-ruby files in subdirectories" do
|
161
|
+
%W(#{@@req_dir}/sub1/junk space 4.rake
|
162
|
+
#{@@req_dir}/sub1/junk-2
|
163
|
+
#{@@req_dir}/sub1/junk-1.rbt
|
164
|
+
#{@@req_dir}/sub1/junk-3rb
|
165
|
+
#{@@req_dir}/sub1/sub2/junk space 4.rake
|
166
|
+
#{@@req_dir}/sub1/sub2/junk-2
|
167
|
+
#{@@req_dir}/sub1/sub2/junk-1.rbt
|
168
|
+
#{@@req_dir}/sub1/sub2/junk-3rb
|
169
|
+
).each {|f| assert ! $REQUIRED.include?(f),
|
170
|
+
"#{f} found in #{$REQUIRED.inspect}"}
|
171
|
+
end
|
172
|
+
|
173
|
+
should "ignore hidden files (files with a . prefix) in subdirectories" do
|
174
|
+
%W(#{@@req_dir}/.required-4.rb
|
175
|
+
#{@@req_dir}/sub1/.required-4.rb
|
176
|
+
#{@@req_dir}/sub1/sub2/.required-4.rb
|
177
|
+
#{@@req_dir}/sub1/.sub3/required-1.rb
|
178
|
+
).each {|f| assert ! $REQUIRED.include?(f),
|
179
|
+
"#{f} found in #{$REQUIRED.inspect}"}
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 2
|
9
|
+
version: 0.1.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Arild Shirazi
|
@@ -14,20 +14,34 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-04-01 00:00:00 -05:00
|
18
18
|
default_executable:
|
19
19
|
dependencies: []
|
20
20
|
|
21
|
-
description:
|
22
|
-
Required
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
21
|
+
description: |
|
22
|
+
<p>Required is a utility to require all files in a directory.</p>
|
23
|
+
<p>
|
24
|
+
Why would one want to require a whole bunch of files at once? I have used this
|
25
|
+
gem on 2 projects to:
|
26
|
+
</p>
|
27
|
+
<ul>
|
28
|
+
<li>require dozens of jar files when working on a JRuby project</li>
|
29
|
+
<li>pull in all files before running code coverage (rcov), to find code that
|
30
|
+
is otherwise dead/untouched</li>
|
31
|
+
</ul>
|
32
|
+
|
33
|
+
<p>
|
34
|
+
Options for <strong>required</strong> include the ability to recursively
|
35
|
+
descend through subdirectories, include/exclude files based on pattern
|
36
|
+
matching, and to specify the order of requires based on filename. An array of
|
37
|
+
all the files that were loaded is returned.
|
38
|
+
</p>
|
39
|
+
|
40
|
+
<code>require 'required'
|
41
|
+
required "some/path/to/dir"</code>
|
42
|
+
|
43
|
+
<p>See the README for quick usage instructions</p>
|
44
|
+
|
31
45
|
email: ashirazi@codesherpas.com
|
32
46
|
executables: []
|
33
47
|
|
@@ -67,6 +81,6 @@ rubyforge_project:
|
|
67
81
|
rubygems_version: 1.3.6
|
68
82
|
signing_key:
|
69
83
|
specification_version: 3
|
70
|
-
summary:
|
71
|
-
test_files:
|
72
|
-
|
84
|
+
summary: Required is a utility to require all files in a directory.
|
85
|
+
test_files:
|
86
|
+
- tests/required_test.rb
|