Prepare for unit tests.
This commit is contained in:
parent
cda1edf92c
commit
c0f0c890ca
2 changed files with 66 additions and 0 deletions
5
Rakefile
5
Rakefile
|
@ -0,0 +1,5 @@
|
||||||
|
require 'rspec/core/rake_task'
|
||||||
|
|
||||||
|
RSpec::Core::RakeTask.new(:spec)
|
||||||
|
|
||||||
|
task :default => :spec
|
|
@ -0,0 +1,61 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Load all spec files
|
||||||
|
Dir["./spec/support/**/*.rb"].each {|f| require f}
|
||||||
|
|
||||||
|
RSpec.configure do |config|
|
||||||
|
# Allows using build(), create(), etc. without the "FactoryGirl." part.
|
||||||
|
config.include FactoryGirl::Syntax::Methods
|
||||||
|
|
||||||
|
config.before(:each) do
|
||||||
|
$0 = "kook" # Pretend we're running as 'kook'
|
||||||
|
ARGV.clear # Make sure no args are passed to the commands.
|
||||||
|
@directory = Dir.mktmpdir('kook-spec-') # Create a temp directory to work in.
|
||||||
|
@orig_directory = Dir.pwd # Save the original directory.
|
||||||
|
Dir.chdir(@directory) # Change to it. pwd() is the temp directory in the examples.
|
||||||
|
end
|
||||||
|
|
||||||
|
config.after(:each) do
|
||||||
|
Dir.chdir(@orig_directory) # Change back to the origin directory.
|
||||||
|
FileUtils.rmtree(@directory) # Remove the temp directory.
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
# Captures the output for analysis later
|
||||||
|
#
|
||||||
|
# @example Capture `$stderr`
|
||||||
|
#
|
||||||
|
# output = capture(:stderr) { $stderr.puts "this is captured" }
|
||||||
|
#
|
||||||
|
# @param [Symbol] stream `:stdout` or `:stderr`
|
||||||
|
# @yield The block to capture stdout/stderr for.
|
||||||
|
# @return [String] The contents of $stdout or $stderr
|
||||||
|
def capture(stream)
|
||||||
|
begin
|
||||||
|
stream = stream.to_s
|
||||||
|
eval "$#{stream} = StringIO.new"
|
||||||
|
yield
|
||||||
|
result = eval("$#{stream}").string
|
||||||
|
ensure
|
||||||
|
eval("$#{stream} = #{stream.upcase}")
|
||||||
|
end
|
||||||
|
|
||||||
|
result
|
||||||
|
end
|
||||||
|
|
||||||
|
# Silences the output stream
|
||||||
|
#
|
||||||
|
# @example Silence `$stdout`
|
||||||
|
#
|
||||||
|
# silence(:stdout) { $stdout.puts "hi" }
|
||||||
|
#
|
||||||
|
# @param [IO] stream The stream to use such as $stderr or $stdout
|
||||||
|
# @return [nil]
|
||||||
|
alias :silence :capture
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
EXAMPLES_DIR = Pathname.new(__FILE__).dirname + 'examples'
|
||||||
|
|
Loading…
Reference in a new issue