module FakeFS

FakeFS module

FakeFS module

FakeFS module

Public Class Methods

activate!(io_mocks: false) click to toggle source

unconditionally activate

# File lib/fakefs/base.rb, line 24
def activate!(io_mocks: false)
  Object.class_eval do
    remove_const(:Dir)
    remove_const(:File)
    remove_const(:FileTest)
    remove_const(:FileUtils)
    remove_const(:Pathname)

    const_set(:Dir,       FakeFS::Dir)
    const_set(:File,      FakeFS::File)
    const_set(:FileUtils, FakeFS::FileUtils)
    const_set(:FileTest,  FakeFS::FileTest)
    const_set(:Pathname,  FakeFS::Pathname)

    if io_mocks
      remove_const(:IO)
      const_set(:IO, ::FakeFS::IO)
    end

    ::FakeFS::Kernel.hijack!
  end

  @activated = true

  true
end
activated?() click to toggle source
# File lib/fakefs/base.rb, line 19
def activated?
  @activated ||= false
end
clear!() click to toggle source

unconditionally clear the fake filesystem

# File lib/fakefs/base.rb, line 76
def clear!
  ::FakeFS::FileSystem.clear
end
deactivate!() click to toggle source

unconditionally deactivate

# File lib/fakefs/base.rb, line 52
def deactivate!
  Object.class_eval do
    remove_const(:Dir)
    remove_const(:File)
    remove_const(:FileTest)
    remove_const(:FileUtils)
    remove_const(:IO)
    remove_const(:Pathname)

    const_set(:Dir,       RealDir)
    const_set(:File,      RealFile)
    const_set(:FileTest,  RealFileTest)
    const_set(:FileUtils, RealFileUtils)
    const_set(:IO,        RealIO)
    const_set(:Pathname,  RealPathname)
    ::FakeFS::Kernel.unhijack!
  end

  @activated = false

  true
end
with() { || ... } click to toggle source

present the fake filesystem to the block

# File lib/fakefs/base.rb, line 87
def with
  if activated?
    yield
  else
    begin
      activate!
      yield
    ensure
      deactivate!
    end
  end
end
with_fresh(&block) click to toggle source

present a fresh new fake filesystem to the block

# File lib/fakefs/base.rb, line 81
def with_fresh(&block)
  clear!
  with(&block)
end
without() { || ... } click to toggle source

present a non-fake filesystem to the block

# File lib/fakefs/base.rb, line 101
def without
  if !activated?
    yield
  else
    begin
      deactivate!
      yield
    ensure
      activate!
    end
  end
end

Public Instance Methods

use_fakefs(describe_block, opts) click to toggle source
# File lib/fakefs/spec_helpers.rb, line 36
def use_fakefs(describe_block, opts)
  describe_block.before opts[:with] do
    FakeFS.activate!
  end

  describe_block.after opts[:with] do
    FakeFS.deactivate!
    FakeFS::FileSystem.clear if opts[:with] == :each
  end
end