Sha256: 1eb4d483fb80bc233d234e320c8d8d53174d9fe8e91e911d6e205a19cc714205

Contents?: true

Size: 1.92 KB

Versions: 11

Compression:

Stored size: 1.92 KB

Contents

RealFile            = File
RealFileTest        = FileTest
RealFileUtils       = FileUtils
RealDir             = Dir
RealPathname        = Pathname

def RealPathname(*args)
  RealPathname.new(*args)
end

if RUBY_VERSION >= '1.9.3'
  def Pathname(*args)
    Pathname.new(*args)
  end
end

# FakeFS module
module FakeFS
  class << self
    def activated?
      @activated ? true : false
    end

    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

    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

    def with
      if activated?
        yield
      else
        begin
          activate!
          yield
        ensure
          deactivate!
        end
      end
    end

    def without
      if !activated?
        yield
      else
        begin
          deactivate!
          yield
        ensure
          activate!
        end
      end
    end
  end
end

def FakeFS(&block)
  return ::FakeFS unless block
  ::FakeFS.with(&block)
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
fakefs-0.10.2 lib/fakefs/base.rb
fakefs-0.10.1 lib/fakefs/base.rb
fakefs-0.10.0 lib/fakefs/base.rb
fakefs-0.9.3 lib/fakefs/base.rb
fakefs-0.9.2 lib/fakefs/base.rb
fakefs-0.9.1 lib/fakefs/base.rb
fakefs-0.9.0 lib/fakefs/base.rb
fakefs-0.8.1 lib/fakefs/base.rb
fakefs-0.8.0 lib/fakefs/base.rb
fakefs-0.7.0 lib/fakefs/base.rb
fakefs-0.6.7 lib/fakefs/base.rb