RubiGen::GeneratorTestHelper

Public Instance Methods

app_root_files() click to toggle source
# File lib/rubigen/helpers/generator_test_helper.rb, line 104
def app_root_files
  Dir[APP_ROOT + '/**/*']
end
assert_directory_exists(path) click to toggle source

asserts that the given directory exists

# File lib/rubigen/helpers/generator_test_helper.rb, line 57
def assert_directory_exists(path)
  assert File.directory?("#{APP_ROOT}/#{path}"),"The directory '#{path}' should exist"
end
assert_file_exists(path) click to toggle source

asserts that the given file exists

# File lib/rubigen/helpers/generator_test_helper.rb, line 52
def assert_file_exists(path)
  assert File.exists?("#{APP_ROOT}/#{path}"),"The file '#{path}' should exist"
end
assert_generated_class(path,parent=nil) click to toggle source

asserts that the given class source file was generated. It takes a path without the .rb part and an optional super class. the contents of the class source file is passed to a block.

# File lib/rubigen/helpers/generator_test_helper.rb, line 64
def assert_generated_class(path,parent=nil)
  path=~/\/?(\d+_)?(\w+)$/
  class_name=$2.camelize
  assert_generated_file("#{path}.rb") do |body|
    assert body=~/class #{class_name}#{parent.nil? ? '':" < #{parent}"}/,"the file '#{path}.rb' should be a class"
    yield body if block_given?
  end
end
assert_generated_file(path) click to toggle source

asserts that the given file was generated. the contents of the file is passed to a block.

# File lib/rubigen/helpers/generator_test_helper.rb, line 44
def assert_generated_file(path)
  assert_file_exists(path)
  File.open("#{APP_ROOT}/#{path}") do |f|
    yield f.read if block_given?
  end
end
assert_generated_module(path) click to toggle source

asserts that the given module source file was generated. It takes a path without the .rb part. the contents of the class source file is passed to a block.

# File lib/rubigen/helpers/generator_test_helper.rb, line 76
def assert_generated_module(path)
  path=~/\/?(\w+)$/
  module_name=$1.camelize
  assert_generated_file("#{path}.rb") do |body|
    assert body=~/module #{module_name}/,"the file '#{path}.rb' should be a module"
    yield body if block_given?
  end
end
assert_generated_test_for(name, parent="Test::Unit::TestCase") click to toggle source

asserts that the given unit test was generated. It takes a name or symbol without the test_ part and an optional super class. the contents of the class source file is passed to a block.

# File lib/rubigen/helpers/generator_test_helper.rb, line 88
def assert_generated_test_for(name, parent="Test::Unit::TestCase")
  assert_generated_class "test/test_#{name.to_s.underscore}", parent do |body|
    yield body if block_given?
  end
end
assert_has_method(body,*methods) click to toggle source

asserts that the given methods are defined in the body. This does assume standard rails code conventions with regards to the source code. The body of each individual method is passed to a block.

# File lib/rubigen/helpers/generator_test_helper.rb, line 97
def assert_has_method(body,*methods)
  methods.each do |name|
    assert body=~/^  def #{name.to_s}\n((\n|   .*\n)*)  end/,"should have method #{name.to_s}"
    yield( name, $1 ) if block_given?
  end
end
bare_setup() click to toggle source
# File lib/rubigen/helpers/generator_test_helper.rb, line 123
def bare_setup
  FileUtils.mkdir_p(APP_ROOT)
  @stdout = StringIO.new
end
bare_teardown() click to toggle source
# File lib/rubigen/helpers/generator_test_helper.rb, line 128
def bare_teardown
  FileUtils.rm_rf TMP_ROOT || APP_ROOT
end
build_generator(name, params, sources, options) click to toggle source

Instatiates the Generator

# File lib/rubigen/helpers/generator_test_helper.rb, line 15
def build_generator(name, params, sources, options)
  @stdout ||= StringIO.new
  options.merge!(:collision => :force)  # so no questions are prompted
  options.merge!(:stdout => @stdout)  # so stdout is piped to a StringIO
  if sources.is_a?(Symbol)
    if sources == :app
      RubiGen::Base.use_application_sources!
    else
      RubiGen::Base.use_component_sources!
    end
  else
    RubiGen::Base.reset_sources
    RubiGen::Base.prepend_sources(*sources) unless sources.blank?
  end
  RubiGen::Base.instance(name, params, options)
end
rubygem_folders() click to toggle source
# File lib/rubigen/helpers/generator_test_helper.rb, line 108
def rubygem_folders
  ]bin examples lib test]
end
rubygems_setup() click to toggle source
# File lib/rubigen/helpers/generator_test_helper.rb, line 112
def rubygems_setup
  bare_setup
  rubygem_folders.each do |folder|
    Dir.mkdir("#{APP_ROOT}/#{folder}") unless File.exists?("#{APP_ROOT}/#{folder}")
  end
end
rubygems_teardown() click to toggle source
# File lib/rubigen/helpers/generator_test_helper.rb, line 119
def rubygems_teardown
  bare_teardown
end
run_generator(name, params, sources, options = {}) click to toggle source

Runs the create command (like the command line does)

# File lib/rubigen/helpers/generator_test_helper.rb, line 6
def run_generator(name, params, sources, options = {})
  generator = build_generator(name, params, sources, options)
  silence_generator do
    generator.command(:create).invoke!
  end
  generator
end
silence_generator() click to toggle source

Silences the logger temporarily and returns the output as a String

# File lib/rubigen/helpers/generator_test_helper.rb, line 33
def silence_generator
  logger_original      = RubiGen::Base.logger
  myout                = StringIO.new
  RubiGen::Base.logger = RubiGen::SimpleLogger.new(myout)
  yield if block_given?
  RubiGen::Base.logger = logger_original
  myout.string
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.