61 lines
1.6 KiB
Ruby
61 lines
1.6 KiB
Ruby
|
|
|
|
|
|
# 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'
|
|
|