# encoding: utf-8 # # Copyright (c) 2009-2017, rultor.com # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: 1) Redistributions of source code must retain the above # copyright notice, this list of conditions and the following # disclaimer. 2) Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. 3) Neither the name of the rultor.com nor # the names of its contributors may be used to endorse or promote # products derived from this software without specific prior written # permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT # NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL # THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. require 'rultor' require 'tmpdir' require 'English' Before do @cwd = Dir.pwd @dir = Dir.mktmpdir('test') FileUtils.mkdir_p(@dir) unless File.exist?(@dir) Dir.chdir(@dir) end After do Dir.chdir(@cwd) FileUtils.rm_rf(@dir) if File.exist?(@dir) end Given(/^I have a "([^"]*)" file with content:$/) do |file, text| FileUtils.mkdir_p(File.dirname(file)) unless File.exist?(file) File.open(file, 'w') do |f| f.write(text) end end When(/^I run bin\/rultor with "([^"]*)"$/) do |arg| home = File.join(File.dirname(__FILE__), '../..') @stdout = `ruby -I#{home}/lib #{home}/bin/rultor #{arg} 2>&1` @exitstatus = $CHILD_STATUS.exitstatus end Then(/^Stdout contains "([^"]*)"$/) do |txt| unless @stdout.include?(txt) fail "STDOUT doesn't contain '#{txt}':\n#{@stdout}" end end Then(/^Exit code is zero$/) do fail "Non-zero exit code #{@exitstatus}:\n#{@stdout}" unless @exitstatus == 0 end Then(/^Exit code is not zero$/) do fail "Zero exit code:\n#{@stdout}" if @exitstatus == 0 end When(/^I run bash with$/) do |text| FileUtils.copy_entry(@cwd, File.join(@dir, 'rultor')) @stdout = `#{text}` @exitstatus = $CHILD_STATUS.exitstatus end