diff options
Diffstat (limited to 'spec/ruby/core/file/fixtures')
| -rw-r--r-- | spec/ruby/core/file/fixtures/common.rb | 22 | ||||
| -rw-r--r-- | spec/ruby/core/file/fixtures/do_not_remove | 1 | ||||
| -rw-r--r-- | spec/ruby/core/file/fixtures/file_types.rb | 66 |
3 files changed, 89 insertions, 0 deletions
diff --git a/spec/ruby/core/file/fixtures/common.rb b/spec/ruby/core/file/fixtures/common.rb new file mode 100644 index 0000000000..50721388ad --- /dev/null +++ b/spec/ruby/core/file/fixtures/common.rb @@ -0,0 +1,22 @@ +module FileSpecs + class SubString < String; end + + def self.make_closer(obj, exc=nil) + ScratchPad << :file_opened + + class << obj + attr_accessor :close_exception + + alias_method :original_close, :close + + def close + original_close + ScratchPad << :file_closed + + raise @close_exception if @close_exception + end + end + + obj.close_exception = exc + end +end diff --git a/spec/ruby/core/file/fixtures/do_not_remove b/spec/ruby/core/file/fixtures/do_not_remove new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/spec/ruby/core/file/fixtures/do_not_remove @@ -0,0 +1 @@ + diff --git a/spec/ruby/core/file/fixtures/file_types.rb b/spec/ruby/core/file/fixtures/file_types.rb new file mode 100644 index 0000000000..109bcfe42e --- /dev/null +++ b/spec/ruby/core/file/fixtures/file_types.rb @@ -0,0 +1,66 @@ +module FileSpecs + def self.configure_types + return if @configured + + @file = tmp("test.txt") + @dir = Dir.pwd + @fifo = tmp("test_fifo") + @link = tmp("test_link") + + platform_is_not :windows do + @block = `find /dev /devices -type b 2>/dev/null`.split("\n").first + @char = `{ tty || find /dev /devices -type c; } 2>/dev/null`.split("\n").last + end + + @configured = true + end + + def self.normal_file + touch(@file) + yield @file + ensure + rm_r @file + end + + def self.directory + yield @dir + end + + def self.fifo + File.mkfifo(@fifo) + yield @fifo + ensure + rm_r @fifo + end + + def self.block_device + raise "Could not find a block device" unless @block + yield @block + end + + def self.character_device + raise "Could not find a character device" unless @char + yield @char + end + + def self.symlink + touch(@file) + File.symlink(@file, @link) + yield @link + ensure + rm_r @file, @link + end + + def self.socket + require_relative '../../../library/socket/fixtures/classes.rb' + + name = SocketSpecs.socket_path + socket = UNIXServer.new name + begin + yield name + ensure + socket.close + rm_r name + end + end +end |
