core_ex 0.2.0 → 0.3.1
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/NEWS +39 -1
- data/SPEC.dyn.yml +6 -6
- data/SPEC.gemspec +13 -0
- data/SPEC.yml +3 -3
- data/lib/core_ex/dependencies_ext/constant_load_path.rb +23 -0
- data/lib/core_ex/embedded_tests.rb +29 -23
- data/lib/core_ex/enumerable.rb +10 -18
- data/lib/core_ex/exception.rb +24 -21
- data/lib/core_ex/file_utils.rb +51 -0
- data/lib/core_ex/module/attr_once.rb +41 -0
- data/lib/core_ex/module/import.rb +28 -0
- data/lib/core_ex/module/mix_in_with_args.rb +267 -0
- data/lib/core_ex/object/instance_eval_with_args.rb +56 -0
- data/lib/core_ex/object/singleton_class.rb +78 -0
- data/lib/core_ex/object/the_first_time.rb +32 -0
- data/lib/core_ex/pathname.rb +268 -164
- data/lib/core_ex/proc.rb +77 -0
- data/lib/core_ex/rakefile_base.rf +93 -51
- data/lib/core_ex/require.rb +43 -384
- data/lib/core_ex/string.rb +52 -41
- data/lib/core_ex/time.rb +26 -41
- data/lib/core_ex/try_dup.rb +68 -0
- data/lib/core_ex/yaml.rb +103 -100
- data/lib/core_ex.rb +246 -35
- data/lib/{core_ex/dtime.rb → d_time.rb} +36 -22
- data/lib/{core_ex/dumpable_proc.rb → dumpable_proc.rb} +1 -2
- data/lib/{core_ex/pathlist.rb → path_list.rb} +111 -63
- data/lib/{core_ex/temp_path.rb → temp_path.rb} +55 -41
- data/lib/{core_ex/test/unit/ui/yaml/testrunner.rb → test/unit/u_i/yaml/test_runner.rb} +7 -10
- data/lib/{core_ex/version.rb → version.rb} +4 -7
- data/lib/yaml_extension.rb +78 -0
- data/test/check-core_ex.yml +6 -8
- data/test/check-pkg-core_ex.yml +3 -6
- data/test/sanity/multiple-requires.yml +41 -17
- data/test/sanity/single-requires.yml +36 -20
- data/test/sanity-suite.yml +5 -7
- data/test/test-unit-setup.rb +11 -3
- data/test/unit-suite.yml +8 -9
- metadata +35 -13
- data/lib/core_ex/attr_once.rb +0 -36
- data/lib/core_ex/fileutils.rb +0 -44
@@ -0,0 +1,56 @@
|
|
1
|
+
# Copyright:: Copyright (c) 2005 Nicolas Pouillard. All rights reserved.
|
2
|
+
# Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
|
3
|
+
# License:: Gnu General Public License.
|
4
|
+
# Revision:: $Id: instance_eval_with_args.rb 355 2005-09-15 23:18:43Z ertai $
|
5
|
+
|
6
|
+
|
7
|
+
module CoreEx
|
8
|
+
|
9
|
+
module Object
|
10
|
+
|
11
|
+
module InstanceEvalWithArgs
|
12
|
+
|
13
|
+
@@seed ||= 0
|
14
|
+
|
15
|
+
def instance_eval_with_args ( *args, &block )
|
16
|
+
raise ArgumentError, "no block given" if block.nil?
|
17
|
+
method_name = :"instance_eval_temporary_method#{object_id}.#{@@seed}"
|
18
|
+
@@seed += 1
|
19
|
+
define_singleton_method(method_name, &block)
|
20
|
+
begin
|
21
|
+
result = __send__(method_name, *args)
|
22
|
+
ensure
|
23
|
+
undef_singleton_method(method_name)
|
24
|
+
end
|
25
|
+
result
|
26
|
+
end
|
27
|
+
|
28
|
+
end # module InstanceEvalWithArgs
|
29
|
+
|
30
|
+
end # module Object
|
31
|
+
|
32
|
+
end # module CoreEx
|
33
|
+
|
34
|
+
|
35
|
+
test_section __FILE__ do
|
36
|
+
|
37
|
+
class TestInstanceEvalWithArgs < ::Test::Unit::TestCase
|
38
|
+
|
39
|
+
def setup
|
40
|
+
end
|
41
|
+
|
42
|
+
def teardown
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_instance_eval
|
46
|
+
assert_nothing_raised do
|
47
|
+
@res = "foo".instance_eval_with_args(42) do |x|
|
48
|
+
x + 1
|
49
|
+
end
|
50
|
+
end
|
51
|
+
assert_equal 43, @res
|
52
|
+
end
|
53
|
+
|
54
|
+
end # class TestInstanceEvalWithArgs
|
55
|
+
|
56
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# Copyright:: Copyright (c) 2005 Nicolas Pouillard. All rights reserved.
|
2
|
+
# Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
|
3
|
+
# License:: Gnu General Public License.
|
4
|
+
# Revision:: $Id: singleton_class.rb 332 2005-09-04 14:01:01Z ertai $
|
5
|
+
|
6
|
+
|
7
|
+
module CoreEx
|
8
|
+
|
9
|
+
module Object
|
10
|
+
|
11
|
+
module SingletonClass
|
12
|
+
|
13
|
+
def singleton_class
|
14
|
+
class << self
|
15
|
+
self
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def define_singleton_method ( method_name, *a, &b )
|
20
|
+
singleton_class.send(:define_method, method_name, *a, &b)
|
21
|
+
end
|
22
|
+
private :define_singleton_method
|
23
|
+
|
24
|
+
def undef_singleton_method ( method_name )
|
25
|
+
singleton_class.send(:undef_method, method_name)
|
26
|
+
end
|
27
|
+
private :undef_singleton_method
|
28
|
+
|
29
|
+
def singleton_class_eval ( *args, &block )
|
30
|
+
if block.nil? or args.empty?
|
31
|
+
singleton_class.class_eval(*args, &block)
|
32
|
+
else
|
33
|
+
singleton_class.instance_eval(*args, &block)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
end # module SingletonClass
|
38
|
+
|
39
|
+
|
40
|
+
test_section __FILE__ do
|
41
|
+
|
42
|
+
class TestSingletonClass < ::Test::Unit::TestCase
|
43
|
+
|
44
|
+
def setup
|
45
|
+
@string = 'foo'
|
46
|
+
end
|
47
|
+
|
48
|
+
def teardown
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_singleton_class
|
52
|
+
assert_nothing_raised do
|
53
|
+
assert_kind_of Class, @string.singleton_class, 'not a class'
|
54
|
+
end
|
55
|
+
assert_equal @string.singleton_class.object_id,
|
56
|
+
@string.singleton_class.object_id, 'not the same object id'
|
57
|
+
assert_equal ::String, @string.singleton_class.superclass, 'bad super class'
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_define_and_undef_singleton_method
|
61
|
+
assert_nothing_raised do
|
62
|
+
@string.send(:define_singleton_method, :foo) { 42 }
|
63
|
+
end
|
64
|
+
assert_equal 42, @string.foo
|
65
|
+
assert_raise(NoMethodError) { @string.dup.foo }
|
66
|
+
assert_nothing_raised do
|
67
|
+
@string.send(:undef_singleton_method, :foo)
|
68
|
+
end
|
69
|
+
assert_raise(NoMethodError) { @string.foo }
|
70
|
+
end
|
71
|
+
|
72
|
+
end # class TestSingletonClass
|
73
|
+
|
74
|
+
end
|
75
|
+
|
76
|
+
end # module Object
|
77
|
+
|
78
|
+
end # module CoreEx
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# Copyright:: Copyright (c) 2005 Nicolas Pouillard. All rights reserved.
|
2
|
+
# Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
|
3
|
+
# License:: Gnu General Public License.
|
4
|
+
# Revision:: $Id: the_first_time.rb 332 2005-09-04 14:01:01Z ertai $
|
5
|
+
|
6
|
+
|
7
|
+
module CoreEx
|
8
|
+
|
9
|
+
module Object
|
10
|
+
|
11
|
+
module TheFirstTime
|
12
|
+
|
13
|
+
@@set = Set.new
|
14
|
+
|
15
|
+
def the_first_time ( &block )
|
16
|
+
id = block.source_file
|
17
|
+
return if @@set.include? id
|
18
|
+
@@set << id
|
19
|
+
block[]
|
20
|
+
end
|
21
|
+
|
22
|
+
alias_method :just_one_time, :the_first_time
|
23
|
+
|
24
|
+
end # module TheFirstTime
|
25
|
+
|
26
|
+
end # module Object
|
27
|
+
|
28
|
+
end # module CoreEx
|
29
|
+
|
30
|
+
test_section __FILE__ do
|
31
|
+
|
32
|
+
end
|
data/lib/core_ex/pathname.rb
CHANGED
@@ -3,145 +3,211 @@
|
|
3
3
|
# License: Gnu General Public License.
|
4
4
|
|
5
5
|
# $LastChangedBy: ertai $
|
6
|
-
# $Id: pathname.rb
|
6
|
+
# $Id: pathname.rb 351 2005-09-14 08:33:42Z ertai $
|
7
7
|
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
RequireSystem.instance.load(self)
|
102
|
-
else
|
103
|
-
Kernel.__load__(*a)
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
def expand_path_with ( directories, extensions=nil )
|
108
|
-
ext = extname
|
109
|
-
exts, dirs = [''], ['']
|
110
|
-
unless extensions.nil?
|
111
|
-
if ext.empty?
|
112
|
-
exts = extensions
|
9
|
+
|
10
|
+
|
11
|
+
module CoreEx
|
12
|
+
|
13
|
+
module Pathname
|
14
|
+
|
15
|
+
setup do
|
16
|
+
have YamlExtension, :path
|
17
|
+
alias_method :split_no_args, :split
|
18
|
+
end
|
19
|
+
|
20
|
+
# Allow this kind of things:
|
21
|
+
#
|
22
|
+
# root = Pathname.new('/tmp/test')
|
23
|
+
# foo, bar = 'foo', 'bar'
|
24
|
+
#
|
25
|
+
# ...
|
26
|
+
#
|
27
|
+
# (root/foo/bar).each_line do |line|
|
28
|
+
# ...
|
29
|
+
# end
|
30
|
+
def / ( rhs )
|
31
|
+
self + rhs
|
32
|
+
end
|
33
|
+
|
34
|
+
def ensure_mkdir
|
35
|
+
(mkdir) rescue Errno::EEXIST
|
36
|
+
end
|
37
|
+
|
38
|
+
def ensure_mkpath
|
39
|
+
(mkpath) rescue Errno::EEXIST
|
40
|
+
end
|
41
|
+
|
42
|
+
def extsplit ( aChar='.' )
|
43
|
+
raise ArgumentError, "#{aChar} is not just a char" if aChar.size != 1
|
44
|
+
aChar = Regexp.escape(aChar)
|
45
|
+
to_s =~ /^(.*?)(#{aChar}[^#{aChar}]*)?$/
|
46
|
+
[::Pathname.new($1), $2 || '']
|
47
|
+
end
|
48
|
+
|
49
|
+
# Replace the file extension with +newext+. If there is no
|
50
|
+
# extenson on the string, append the new extension to the end. If
|
51
|
+
# the new extension is not given, or is the empty string, remove
|
52
|
+
# any existing extension.
|
53
|
+
#
|
54
|
+
# +ext+ is a user added method for the String class.
|
55
|
+
def ext(newext='')
|
56
|
+
str = self.to_s
|
57
|
+
return self if ['.', '..'].include? str
|
58
|
+
if newext != ''
|
59
|
+
newext = (newext =~ /^\./) ? newext : ("." + newext)
|
60
|
+
end
|
61
|
+
(str.sub!(%r(([^/\\])\.[^./\\]*$)) { $1 + newext } || str + newext).to_path
|
62
|
+
end
|
63
|
+
|
64
|
+
def split ( *args )
|
65
|
+
args.shift if args.first == '/'
|
66
|
+
split_no_args(*args)
|
67
|
+
end
|
68
|
+
|
69
|
+
def cp ( aPath )
|
70
|
+
::FileUtils.cp self.to_s, aPath.to_s
|
71
|
+
end
|
72
|
+
|
73
|
+
def mv ( aPath )
|
74
|
+
::FileUtils.mv self.to_s, aPath.to_s
|
75
|
+
end
|
76
|
+
|
77
|
+
def cp_r ( aPath )
|
78
|
+
::FileUtils.cp_r self.to_s, aPath.to_s
|
79
|
+
end
|
80
|
+
|
81
|
+
def rm
|
82
|
+
::FileUtils.rm self.to_s
|
83
|
+
end
|
84
|
+
|
85
|
+
def rm_r
|
86
|
+
::FileUtils.rm_r self.to_s
|
87
|
+
end
|
88
|
+
|
89
|
+
def rm_rf
|
90
|
+
::FileUtils.rm_rf self.to_s
|
91
|
+
end
|
92
|
+
|
93
|
+
def rm_f
|
94
|
+
::FileUtils.rm_f self.to_s
|
95
|
+
end
|
96
|
+
|
97
|
+
# The current ruby's unlink implementation has a bug.
|
98
|
+
def unlink()
|
99
|
+
if FileTest.directory? @path and not FileTest.symlink? @path
|
100
|
+
Dir.unlink @path
|
113
101
|
else
|
114
|
-
|
115
|
-
|
102
|
+
File.unlink @path
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def to_io
|
107
|
+
@open_mode ||= :r
|
108
|
+
open(@open_mode.to_s)
|
109
|
+
end
|
110
|
+
|
111
|
+
def to_path
|
112
|
+
self
|
113
|
+
end
|
114
|
+
|
115
|
+
def to_yaml_string
|
116
|
+
to_s
|
117
|
+
end
|
118
|
+
|
119
|
+
attr_accessor :open_mode
|
120
|
+
|
121
|
+
def split_with_load_path ( load_paths=Controllers.load_paths )
|
122
|
+
str = to_s
|
123
|
+
load_paths = load_paths.sort { |x, y| y.to_path.to_s.size <=> x.to_path.to_s.size }
|
124
|
+
load_paths.each do |load_path|
|
125
|
+
if str =~ /^#{Regexp.quote(load_path.to_path)}\/*(.*)/
|
126
|
+
return [load_path.to_path, Regexp.last_match[1].to_path]
|
116
127
|
end
|
117
128
|
end
|
129
|
+
return nil
|
130
|
+
end
|
131
|
+
|
132
|
+
def import!
|
133
|
+
base_path = expand_path.cleanpath.to_s.gsub(/\/+/, '/').to_path.split_with_load_path.last
|
134
|
+
Dependencies.depend_on to_s unless base_path.ext.to_s.camelize.constantize
|
135
|
+
end
|
136
|
+
|
137
|
+
def load_path!
|
138
|
+
string = expand_path.cleanpath.to_s
|
139
|
+
raise "bad path name `#{string}' need a directory" unless directory?
|
140
|
+
raise 'bad Controllers' unless Controllers.is_a? Dependencies::RootLoadingModule
|
141
|
+
path = string.to_path
|
142
|
+
return false if Controllers.load_paths.any? { |c| c.to_path == path }
|
143
|
+
Controllers.load_paths.unshift Dependencies::ConstantLoadPath.new(string)
|
144
|
+
$LOAD_PATH.unshift string
|
118
145
|
end
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
146
|
+
|
147
|
+
def expand_path_with ( directories, extensions=nil )
|
148
|
+
ext = extname
|
149
|
+
exts, dirs = [''], ['']
|
150
|
+
unless extensions.nil?
|
151
|
+
if ext.empty?
|
152
|
+
exts = extensions
|
153
|
+
else
|
154
|
+
unless extensions.include? ext
|
155
|
+
raise ArgumentError, "bad extension `#{ext}' for #{self}"
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
dirs = directories unless absolute?
|
161
|
+
|
162
|
+
exts.each do |ext|
|
163
|
+
dirs.each do |dir|
|
164
|
+
dir = dir.to_path
|
165
|
+
file = dir + "#{self}#{ext}"
|
166
|
+
return file.expand_path.cleanpath if file.exist?
|
167
|
+
end
|
127
168
|
end
|
169
|
+
return nil
|
128
170
|
end
|
129
|
-
return nil
|
130
|
-
end
|
131
171
|
|
132
|
-
|
172
|
+
module ShortCut
|
133
173
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
174
|
+
# Allow to use this sort of constructions:
|
175
|
+
#
|
176
|
+
# `/path/to/a/file`.open do |f|
|
177
|
+
# ...
|
178
|
+
# end
|
179
|
+
def ` ( path )
|
180
|
+
::Pathname.new(path)
|
181
|
+
end
|
141
182
|
end
|
142
|
-
end
|
143
183
|
|
144
|
-
|
184
|
+
module ClassMethods
|
185
|
+
|
186
|
+
def yaml_load ( val )
|
187
|
+
new(val.to_s)
|
188
|
+
end
|
189
|
+
|
190
|
+
end # module ClassMethods
|
191
|
+
|
192
|
+
module Assertions
|
193
|
+
|
194
|
+
def assert_expand_path_with ( inp, ref, load_path=(@load_path || $LOAD_PATH) )
|
195
|
+
assert_nothing_raised do
|
196
|
+
@my = inp.expand_path_with(load_path, %w[ .rb .so .bundle .o .dll ] << '')
|
197
|
+
ref = ref.expand_path.cleanpath unless ref.nil?
|
198
|
+
assert_equal(ref, @my, inp)
|
199
|
+
end
|
200
|
+
unless ref.nil?
|
201
|
+
assert_kind_of(Pathname, @my)
|
202
|
+
assert(@my.exist?)
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
end # module Assertions
|
207
|
+
|
208
|
+
end # module Pathname
|
209
|
+
|
210
|
+
end # module CoreEx
|
145
211
|
|
146
212
|
|
147
213
|
|
@@ -150,51 +216,89 @@ end # class Pathname
|
|
150
216
|
#
|
151
217
|
test_section __FILE__ do
|
152
218
|
|
219
|
+
require 'tempfile'
|
220
|
+
|
221
|
+
module CoreEx
|
222
|
+
|
223
|
+
class PathnameExTest < Test::Unit::TestCase
|
224
|
+
include YamlExtension::Assertions
|
225
|
+
include CoreEx::Pathname::Assertions
|
226
|
+
|
227
|
+
def setup
|
228
|
+
@test = __FILE__.to_path.dirname.parent.parent + 'test'
|
229
|
+
@res = @test + 'resources'
|
230
|
+
@req = @res + 'require'
|
231
|
+
@s = 'test_require'
|
232
|
+
@s_dne = 'test_require_dne'
|
233
|
+
@s_so = 'test_require_so.so'
|
234
|
+
@s_rb = 'test_require_rb.rb'
|
235
|
+
@p = @s.to_path
|
236
|
+
@p_dne = @s_dne.to_path
|
237
|
+
@p_so = @s_so.to_path
|
238
|
+
@p_rb = @s_rb.to_path
|
239
|
+
@ls = [ @s, @s_dne, @s_so, @s_rb ]
|
240
|
+
@lp = [ @p, @p_dne, @p_rb ] # FIXME @p_so on mac
|
241
|
+
@l = @ls + @lp
|
242
|
+
@load_path = $LOAD_PATH
|
243
|
+
end
|
153
244
|
|
154
|
-
|
245
|
+
#
|
246
|
+
# Tests
|
247
|
+
#
|
248
|
+
def test_ensure_dir
|
249
|
+
p = nil
|
250
|
+
begin
|
251
|
+
name = Tempfile.new('pathname')
|
252
|
+
p = name.path.to_path
|
253
|
+
name.delete
|
254
|
+
assert(! p.directory?, 'no directory')
|
255
|
+
assert_nothing_raised { p.ensure_mkdir }
|
256
|
+
assert(p.directory?, 'directory')
|
257
|
+
assert_nothing_raised { p.ensure_mkdir }
|
258
|
+
assert(p.directory?, 'still directory')
|
259
|
+
ensure
|
260
|
+
p.rmdir unless p.nil?
|
261
|
+
end
|
262
|
+
end
|
155
263
|
|
264
|
+
include Pathname::ShortCut
|
156
265
|
|
157
|
-
|
266
|
+
def test_simple
|
267
|
+
assert_equal([`path.ext1`, '.ext2'], `path.ext1.ext2`.extsplit)
|
268
|
+
assert_equal([`path`, ''], `path`.extsplit)
|
269
|
+
assert_equal([`path`, '.'], `path.`.extsplit)
|
270
|
+
assert_equal([`path`, '-ext'], `path-ext`.extsplit('-'))
|
271
|
+
assert_equal([`path-ext1`, '-ext2'], `path-ext1-ext2`.extsplit('-'))
|
272
|
+
end
|
158
273
|
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
begin
|
165
|
-
name = Tempfile.new('pathname')
|
166
|
-
p = Pathname.new(name.path)
|
167
|
-
name.delete
|
168
|
-
assert(! p.directory?, 'no directory')
|
169
|
-
assert_nothing_raised { p.ensure_mkdir }
|
170
|
-
assert(p.directory?, 'directory')
|
171
|
-
assert_nothing_raised { p.ensure_mkdir }
|
172
|
-
assert(p.directory?, 'still directory')
|
173
|
-
ensure
|
174
|
-
p.rmdir unless p.nil?
|
175
|
-
end
|
176
|
-
end
|
274
|
+
def test_slash
|
275
|
+
assert_equal(`path/to/a/file`, `path`/'to'/'a'/'file')
|
276
|
+
path, to, a, file = `/path`, 'to', 'a', 'file'
|
277
|
+
assert_equal(`/path/to/a/file`, path/to/a/file)
|
278
|
+
end
|
177
279
|
|
178
|
-
|
280
|
+
def test_1_expand_path_with
|
281
|
+
@lp.each { |x| assert_expand_path_with(x, nil) }
|
282
|
+
end
|
179
283
|
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
284
|
+
def test_2_expand_path_with
|
285
|
+
@load_path << @req
|
286
|
+
@lp.delete(@p_dne)
|
287
|
+
@lp.each { |x| assert_expand_path_with(x, @req + x) }
|
288
|
+
@lp.each { |x| assert_expand_path_with(@req + x, @req + x) }
|
289
|
+
assert_expand_path_with(@p_dne, nil)
|
290
|
+
end
|
187
291
|
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
292
|
+
def test_yaml
|
293
|
+
str = 'foo/bar/baz.rb'
|
294
|
+
assert_yaml_load "--- !path #{str}", ::Pathname, str.to_path
|
295
|
+
assert_equal('baz.rb', @val.basename.to_s)
|
296
|
+
assert_equal(str, @val.to_s)
|
297
|
+
assert_yaml_dump str.to_path, @ref
|
298
|
+
end
|
193
299
|
|
194
|
-
|
195
|
-
# See core_ex/require RequireSystemTest#test_*_search
|
196
|
-
# end
|
300
|
+
end # class PathnameExTest
|
197
301
|
|
198
|
-
end #
|
302
|
+
end # module CoreEx
|
199
303
|
|
200
304
|
end
|