diff --git a/lib/boxen/reporter.rb b/lib/boxen/reporter.rb index b7ab165..879686b 100644 --- a/lib/boxen/reporter.rb +++ b/lib/boxen/reporter.rb @@ -32,12 +32,16 @@ module Boxen end def record_failure + return unless issues? + title = "Failed for #{config.user}" config.api.create_issue(config.reponame, title, failure_details, :labels => [failure_label]) end def close_failures + return unless issues? + comment = "Succeeded at version #{checkout.sha}." failures.each do |issue| config.api.add_comment(config.reponame, issue.number, comment) @@ -46,6 +50,8 @@ module Boxen end def failures + return [] unless issues? + issues = config.api.list_issues(config.reponame, :state => 'open', :labels => failure_label, :creator => config.login) issues.reject! {|i| i.labels.collect(&:name).include?(ongoing_label)} diff --git a/test/boxen_reporter_test.rb b/test/boxen_reporter_test.rb index c81d3e9..84b670f 100644 --- a/test/boxen_reporter_test.rb +++ b/test/boxen_reporter_test.rb @@ -49,6 +49,8 @@ class BoxenReporterTest < Boxen::Test end def test_record_failure + @reporter.stubs(:issues?).returns(true) + details = 'Everything went wrong.' @reporter.stubs(:failure_details).returns(details) @@ -63,6 +65,15 @@ class BoxenReporterTest < Boxen::Test @reporter.record_failure end + def test_record_failure_no_issues + @reporter.stubs(:issues?).returns(false) + + @config.api = api = mock('api') + api.expects(:create_issue).never + + @reporter.record_failure + end + def test_failure_label default = 'failure' assert_equal default, @reporter.failure_label @@ -139,6 +150,8 @@ class BoxenReporterTest < Boxen::Test Label = Struct.new(:name) def test_close_failures + @reporter.stubs(:issues?).returns(true) + @config.reponame = repo = 'some/repo' issues = Array.new(3) { |i| Issue.new(i*2 + 2) } @@ -156,7 +169,21 @@ class BoxenReporterTest < Boxen::Test @reporter.close_failures end + def test_close_failures_no_issues + @reporter.stubs(:issues?).returns(false) + + @reporter.expects(:failures).never + + @config.api = api = mock('api') + api.expects(:add_comment).never + api.expects(:close_issue).never + + @reporter.close_failures + end + def test_failures + @reporter.stubs(:issues?).returns(true) + @config.reponame = repo = 'some/repo' @config.login = user = 'hapless' @@ -181,6 +208,15 @@ class BoxenReporterTest < Boxen::Test assert_equal issues.values_at(0,1,3), @reporter.failures end + def test_failures_no_issues + @reporter.stubs(:issues?).returns(false) + + @config.api = api = mock('api') + api.expects(:list_issues).never + + assert_equal [], @reporter.failures + end + RepoInfo = Struct.new(:has_issues) def test_issues? @config.reponame = repo = 'some/repo'