1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/spec/ruby/core/dir/fixtures/common.rb
eregon 1d15d5f080 Move spec/rubyspec to spec/ruby for consistency
* Other ruby implementations use the spec/ruby directory.
  [Misc #13792] [ruby-core:82287]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59979 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-20 20:18:52 +00:00

169 lines
3.1 KiB
Ruby

# encoding: utf-8
module DirSpecs
def self.mock_dir(dirs = ['dir_specs_mock'])
@mock_dir ||= tmp("")
File.join @mock_dir, dirs
end
def self.nonexistent
name = File.join mock_dir, "nonexistent00"
name = name.next while File.exist? name
name
end
# TODO: make these relative to the mock_dir
def self.clear_dirs
[ 'nonexisting',
'default_perms',
'reduced',
'always_returns_0',
'???',
[0xe9].pack('U')
].each do |dir|
begin
Dir.rmdir dir
rescue
end
end
end
# The names of the fixture directories and files used by
# various Dir specs.
def self.mock_dir_files
unless @mock_dir_files
@mock_dir_files = %w[
.dotfile
.dotsubdir/.dotfile
.dotsubdir/nondotfile
deeply/.dotfile
deeply/nested/.dotfile.ext
deeply/nested/directory/structure/.ext
deeply/nested/directory/structure/bar
deeply/nested/directory/structure/baz
deeply/nested/directory/structure/file_one
deeply/nested/directory/structure/file_one.ext
deeply/nested/directory/structure/foo
deeply/nondotfile
file_one.ext
file_two.ext
dir_filename_ordering
dir/filename_ordering
nondotfile
subdir_one/.dotfile
subdir_one/nondotfile
subdir_two/nondotfile
subdir_two/nondotfile.ext
brace/a
brace/a.js
brace/a.erb
brace/a.js.rjs
brace/a.html.erb
special/+
special/^
special/$
special/(
special/)
special/[
special/]
special/{
special/}
special/test{1}/file[1]
]
platform_is_not :windows do
@mock_dir_files += %w[
special/*
special/?
special/|
special/こんにちは.txt
]
end
end
@mock_dir_files
end
def self.create_mock_dirs
mock_dir_files.each do |name|
file = File.join mock_dir, name
mkdir_p File.dirname(file)
touch file
end
end
def self.delete_mock_dirs
begin
rm_r mock_dir
rescue Errno::ENOTEMPTY => e
puts Dir["#{mock_dir}/**/*"]
raise e
end
end
def self.mock_rmdir(*dirs)
mock_dir ['rmdir_dirs'].concat(dirs)
end
def self.rmdir_dirs(create = true)
dirs = %w[
empty
nonempty
nonempty/child
noperm
noperm/child
]
base_dir = mock_dir ['rmdir_dirs']
dirs.reverse_each do |d|
dir = File.join base_dir, d
if File.exist? dir
File.chmod 0777, dir
rm_r dir
end
end
rm_r base_dir
if create
dirs.each do |d|
dir = File.join base_dir, d
unless File.exist? dir
mkdir_p dir
File.chmod 0777, dir
end
end
end
end
def self.expected_paths
%w[
.
..
.dotfile
.dotsubdir
brace
deeply
dir
dir_filename_ordering
file_one.ext
file_two.ext
nondotfile
special
subdir_one
subdir_two
]
end
end