Sha256: 9c60eb21fc4fb7fe64ccaa5988713612eb90e5f23d5f595eb7ee7d803e7887c4

Contents?: true

Size: 1.42 KB

Versions: 31

Compression:

Stored size: 1.42 KB

Contents

module FileSpecs
  # Try to set up known locations of each filetype
  def self.reconfigure()
    @file   = tmp("test.txt")
    @dir    = Dir.pwd
    @fifo   = tmp("test_fifo")

    platform_is_not :windows, :android do
      @block  = `find /dev /devices -type b 2> /dev/null`.split("\n").first
      @char   = `find /dev /devices -type c 2> /dev/null`.split("\n").last

      %w[/dev /usr/bin /usr/local/bin].each do |dir|
        links = `find #{dir} -type l 2> /dev/null`.split("\n")
        next if links.empty?
        @link = links.first
        break
      end

    end

    platform_is :android do
      @block = nil
      @char = "/dev/ashmem"
      @link = "/etc"
    end
  end

  # TODO: Automatic reload mechanism
  reconfigure

  def self.normal_file()
    File.open(@file, "w") {} # 'Touch'
    yield @file
  ensure
    File.unlink @file
  end

  def self.directory()
    yield @dir
  end

  # TODO: need a platform-independent helper here
  def self.fifo()
    system "mkfifo #{@fifo} 2> /dev/null"
    yield @fifo
  ensure
    File.unlink @fifo
  end

  def self.block_device()
    yield @block
  end

  def self.character_device()
    yield @char
  end

  def self.symlink()
    yield @link
  end

  def self.socket()
    require 'socket'
    name = tmp("ftype_socket.socket")
    File.delete name if File.exist? name
    socket = UNIXServer.new name
    yield name
    socket.close
    File.delete name if File.exist? name
  end
end

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
rhodes-3.1.1 spec/framework_spec/app/spec/core/file/fixtures/file_types.rb
rhodes-3.1.1.beta spec/framework_spec/app/spec/core/file/fixtures/file_types.rb
rhodes-3.1.0 spec/framework_spec/app/spec/core/file/fixtures/file_types.rb
rhodes-3.1.0.beta.5 spec/framework_spec/app/spec/core/file/fixtures/file_types.rb
rhodes-3.1.0.beta.4 spec/framework_spec/app/spec/core/file/fixtures/file_types.rb
rhodes-3.1.0.beta.3 spec/framework_spec/app/spec/core/file/fixtures/file_types.rb
rhodes-3.1.0.beta.2 spec/framework_spec/app/spec/core/file/fixtures/file_types.rb
rhodes-3.1.0.beta.1 spec/framework_spec/app/spec/core/file/fixtures/file_types.rb
rhodes-3.0.2 spec/framework_spec/app/spec/core/file/fixtures/file_types.rb
rhodes-3.0.2.beta.1 spec/framework_spec/app/spec/core/file/fixtures/file_types.rb
rhodes-3.0.1 spec/framework_spec/app/spec/core/file/fixtures/file_types.rb
rhodes-3.0.1.beta.8 spec/framework_spec/app/spec/core/file/fixtures/file_types.rb
rhodes-3.0.1.beta.7 spec/framework_spec/app/spec/core/file/fixtures/file_types.rb
rhodes-3.0.1.beta.6 spec/framework_spec/app/spec/core/file/fixtures/file_types.rb
rhodes-3.0.1.beta.5 spec/framework_spec/app/spec/core/file/fixtures/file_types.rb
rhodes-3.0.1.beta.4 spec/framework_spec/app/spec/core/file/fixtures/file_types.rb
rhodes-3.0.1.beta.3 spec/framework_spec/app/spec/core/file/fixtures/file_types.rb
rhodes-3.0.1.beta.2 spec/framework_spec/app/spec/core/file/fixtures/file_types.rb
rhodes-3.0.0 spec/framework_spec/app/spec/core/file/fixtures/file_types.rb
rhodes-3.0.0.beta.7 spec/framework_spec/app/spec/core/file/fixtures/file_types.rb