class CaptainHoog::Test::Sandbox

Attributes

configuration[R]
plugin[R]

Public Class Methods

new(raw_plugin, config = {}) click to toggle source
# File lib/captain_hoog/test/sandbox.rb, line 61
def initialize(raw_plugin, config = {})
  @raw_plugin    = guess_plugin(raw_plugin)
  @configuration = config
  init_plugin
end

Public Instance Methods

result() click to toggle source
# File lib/captain_hoog/test/sandbox.rb, line 70
def result
  eigenplugin = self.send(:eigenplugin)
  git         = eigenplugin.instance_variable_get(:@git)
  {
    test: git.instance_variable_get(:@test_result),
    message: git.instance_variable_get(:@message).call
  }
end
run() click to toggle source
# File lib/captain_hoog/test/sandbox.rb, line 67
def run
  @plugin = @pre_git.fake_plugin
  mod = Module.new do
    def result
      eigenplugin = self.send(:eigenplugin)
      git         = eigenplugin.instance_variable_get(:@git)
      {
        test: git.instance_variable_get(:@test_result),
        message: git.instance_variable_get(:@message).call
      }
    end
  end
  @plugin.extend(mod)
end

Private Instance Methods

guess_plugin(plugin_code) click to toggle source
# File lib/captain_hoog/test/sandbox.rb, line 91
def guess_plugin(plugin_code)
  prefix = 'CaptainHoog::Test::PluginStrategies'
  types  = %w(File String NullObject)
  strategies = types.inject([]) do |result, strategy|
    result << Module.const_get("#{prefix}::#{strategy}").new(plugin_code)
    result
  end
  strategies.detect(&:match?).to_s
end
init_plugin() click to toggle source
# File lib/captain_hoog/test/sandbox.rb, line 84
def init_plugin
  @pre_git = CaptainHoog::PreGit.new
  @pre_git.extend(CaptainHoog::Test::Sandbox::FakePlugin)
  @pre_git.fake(with_plugin: @raw_plugin, config: configuration)
  @pre_git.plugins_eval
end