class Test::Unit::Collector::TestDir::FileSystem

Attributes

object_space[R]

Public Class Methods

new(&block) click to toggle source
# File test-unit-3.3.4/test/collector/test_dir.rb, line 78
def initialize(&block)
  @root = Directory.new('/', self, &block)
  @pwd = @root
  @object_space = ObjectSpace.new
  @required = []
end

Public Instance Methods

basename(name) click to toggle source
# File test-unit-3.3.4/test/collector/test_dir.rb, line 119
def basename(name)
  name[%r"(\A/|[^/]+)/*\z", 1]
end
chdir(to) click to toggle source
# File test-unit-3.3.4/test/collector/test_dir.rb, line 141
def chdir(to)
  e = find(to)
  require_directory(to)
  @pwd = e
end
directory?(name) click to toggle source
# File test-unit-3.3.4/test/collector/test_dir.rb, line 91
def directory?(name)
  return true if (base = basename(name)) == '/'
  e = find(dirname(name))
  return false unless(e)
  e.directory?(base)
end
dirname(name) click to toggle source
# File test-unit-3.3.4/test/collector/test_dir.rb, line 111
def dirname(name)
  if (name = name.tr_s('/', '/')) == '/'
    name
  else
    name[%r"\A.+(?=/[^/]+/?\z)|\A/"] || "."
  end
end
entries(dir) click to toggle source
# File test-unit-3.3.4/test/collector/test_dir.rb, line 85
def entries(dir)
  e = find(dir)
  require_directory(dir)
  e.entries
end
expand_path(path, base = nil) click to toggle source
# File test-unit-3.3.4/test/collector/test_dir.rb, line 147
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
file?(name) click to toggle source
# File test-unit-3.3.4/test/collector/test_dir.rb, line 131
def file?(name)
  e = find(dirname(name))
  return false unless(e)
  e.file?(basename(name))
end
find(path) click to toggle source
# File test-unit-3.3.4/test/collector/test_dir.rb, line 98
def find(path)
  if(/\A\// =~ path)
    thing = @root
  else
    thing = @pwd
  end
  path.scan(/[^\/]+/) do |e|
    break thing = false unless(thing.kind_of?(Directory))
    thing = thing[e]
  end
  thing
end
join(*parts) click to toggle source
# File test-unit-3.3.4/test/collector/test_dir.rb, line 127
def join(*parts)
  parts.join('/').gsub(%r{/+}, '/')
end
pwd() click to toggle source
# File test-unit-3.3.4/test/collector/test_dir.rb, line 137
def pwd
  @pwd.path_to
end
require(file) click to toggle source
# File test-unit-3.3.4/test/collector/test_dir.rb, line 164
def require(file)
  return false if(@required.include?(file))
  begin
    e = find(file)
  rescue Errno::ENOENT => e
    if(/\.rb\Z/ =~ file)
      raise LoadError, file
    end
    e = find(file + '.rb')
  end
  @required << file
  @object_space << e
  true
rescue Errno::ENOENT
  raise LoadError, file
end
require_directory(path) click to toggle source
# File test-unit-3.3.4/test/collector/test_dir.rb, line 160
def require_directory(path)
  raise Errno::ENOTDIR, path unless(directory?(path))
end
split(name) click to toggle source
# File test-unit-3.3.4/test/collector/test_dir.rb, line 123
def split(name)
  [dirname(name), basename(name)]
end