From a2681d196fe91d53f67d3eaea03cb2313db6b751 Mon Sep 17 00:00:00 2001 From: "Tim D. Smith" Date: Mon, 27 Jun 2016 20:16:32 -0700 Subject: [PATCH] Tests for Step class Closes #419. --- Library/Homebrew/test/test_cmd_testbot.rb | 64 +++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/Library/Homebrew/test/test_cmd_testbot.rb b/Library/Homebrew/test/test_cmd_testbot.rb index 40dd22f345..a696b9e95d 100644 --- a/Library/Homebrew/test/test_cmd_testbot.rb +++ b/Library/Homebrew/test/test_cmd_testbot.rb @@ -1,3 +1,5 @@ +require "pathname" + require "testing_env" require "dev-cmd/test-bot" @@ -33,3 +35,65 @@ class TestbotCommandTests < Homebrew::TestCase predicate.call "ARGV" end end + +class TestbotStepTests < Homebrew::TestCase + def run + [nil, "1"].each do |travis| + with_environment("TRAVIS" => travis) { super } + end + self + end + + def teardown + unless passed? + raise "INFO: Previous test failed with ENV['TRAVIS'] = #{ENV["TRAVIS"].inspect}" + end + end + + def stub_test_instance + stub( + :category => "stub", + :log_root => Pathname.pwd + ) + end + + def test_step_run_measures_execution_time + step = Homebrew::Step.new stub_test_instance, %w[sleep 0.1] + shutup do + step.run + end + assert_operator step.time, :>, 0.1 + assert_operator step.time, :<, 1 + assert_equal step.passed?, true + end + + def test_step_run_observes_failure + step = Homebrew::Step.new stub_test_instance, ["false", ""] + shutup do + step.run + end + assert_equal step.passed?, false + assert_equal step.failed?, true + end + + def test_step_dry_run_is_dry_and_always_succeeds + step = Homebrew::Step.new stub_test_instance, ["false", ""] + ARGV.expects(:include?).with("--dry-run").returns(true) + step.stubs(:fork).raises("Dry run isn't dry!") + shutup do + step.run + end + assert_equal step.passed?, true + end + + def test_step_fail_fast_exits_on_failure + step = Homebrew::Step.new stub_test_instance, ["false", ""] + ARGV.stubs(:include?).returns(false) + ARGV.expects(:include?).with("--fail-fast").returns(true) + step.expects(:exit).with(1).returns(nil) + shutup do + step.run + end + assert_equal step.passed?, false + end +end