From 182486e048c3ca93de44aef318e193cd8782e613 Mon Sep 17 00:00:00 2001 From: Yossef Mendelssohn Date: Wed, 10 Oct 2012 16:34:03 -0400 Subject: [PATCH] Skip failure reporting if repo has no issues --- lib/boxen/reporter.rb | 6 ++++++ test/boxen_reporter_test.rb | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) 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'