module FakeFS

FakeFS module

FakeFS module

FakeFS module

Public Class Methods

activate!() click to toggle source

unconditionally activate

# File lib/fakefs/base.rb, line 25
def activate!
  Object.class_eval do
    remove_const(:Dir)
    remove_const(:File)
    remove_const(:FileTest)
    remove_const(:FileUtils)
    remove_const(:Pathname) if RUBY_VERSION >= '1.9.3'

    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 RUBY_VERSION >= '1.9.3'
    ::FakeFS::Kernel.hijack!
  end

  @activated = true

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

unconditionally clear the fake filesystem

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

unconditionally deactivate

# File lib/fakefs/base.rb, line 47
def deactivate!
  Object.class_eval do
    remove_const(:Dir)
    remove_const(:File)
    remove_const(:FileTest)
    remove_const(:FileUtils)
    remove_const(:Pathname) if RUBY_VERSION >= '1.9.3'

    const_set(:Dir,       RealDir)
    const_set(:File,      RealFile)
    const_set(:FileTest,  RealFileTest)
    const_set(:FileUtils, RealFileUtils)
    const_set(:Pathname,  RealPathname) if RUBY_VERSION >= '1.9.3'
    ::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 80
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 74
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 94
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