mirror of
https://github.com/ruby/ruby.git
synced 2025-09-18 10:03:59 +02:00
* lib/test/unit/collector/dir.rb (Collector::Dir#collect): prepend
base directory to load path. * lib/test/unit/collector/dir.rb (Collector::Dir#collect_file): should use the given File-like interface, but not File directly. * test/testunit/collector/test_dir.rb (TestDir::FileSystem): implement File-like methods correctly. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@11147 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
98716977c4
commit
11a696870a
3 changed files with 39 additions and 7 deletions
|
@ -89,19 +89,19 @@ module Test
|
|||
end
|
||||
|
||||
def directory?(name)
|
||||
return true if (base = basename(name)) == '/'
|
||||
e = find(dirname(name))
|
||||
return false unless(e)
|
||||
e.directory?(basename(name))
|
||||
e.directory?(base)
|
||||
end
|
||||
|
||||
def find(path)
|
||||
if(/\A\// =~ path)
|
||||
path = path.sub(/\A\//, '')
|
||||
thing = @root
|
||||
else
|
||||
thing = @pwd
|
||||
end
|
||||
split(path).each do |e|
|
||||
path.scan(/[^\/]+/) do |e|
|
||||
break thing = false unless(thing.kind_of?(Directory))
|
||||
thing = thing[e]
|
||||
end
|
||||
|
@ -109,15 +109,19 @@ module Test
|
|||
end
|
||||
|
||||
def dirname(name)
|
||||
join(*split(name)[0..-2])
|
||||
if (name = name.tr_s('/', '/')) == '/'
|
||||
name
|
||||
else
|
||||
name[%r"\A.+(?=/[^/]+/?\z)|\A/"] || "."
|
||||
end
|
||||
end
|
||||
|
||||
def basename(name)
|
||||
split(name)[-1]
|
||||
name[%r"(\A/|[^/]+)/*\z", 1]
|
||||
end
|
||||
|
||||
def split(name)
|
||||
name.split('/')
|
||||
[dirname(name), basename(name)]
|
||||
end
|
||||
|
||||
def join(*parts)
|
||||
|
@ -140,6 +144,19 @@ module Test
|
|||
@pwd = e
|
||||
end
|
||||
|
||||
def expand_path(path, base = nil)
|
||||
until /\A\// =~ path
|
||||
base ||= pwd
|
||||
path = join(base, path)
|
||||
base = nil
|
||||
end
|
||||
path.gsub!(%r"(?:/\.)+(?=/)", '')
|
||||
nil while path.sub!(%r"/(?!\.\./)[^/]+/\.\.(?=/)", '')
|
||||
path.sub!(%r"\A(?:/\.\.)+(?=/)", '')
|
||||
path.sub!(%r"(?:\A(/)|/)\.\.?\z", '\1')
|
||||
path
|
||||
end
|
||||
|
||||
def require_directory(path)
|
||||
raise Errno::ENOTDIR, path unless(directory?(path))
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue