mirror of
https://github.com/zhigang1992/boxen.git
synced 2026-01-12 22:46:11 +08:00
Merge pull request #13 from boxen/issue_check
Add issue check to error reporting
This commit is contained in:
@@ -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)}
|
||||
@@ -86,5 +92,12 @@ module Boxen
|
||||
@ongoing_label ||= 'ongoing'
|
||||
end
|
||||
attr_writer :ongoing_label
|
||||
|
||||
def issues?
|
||||
return unless config.reponame
|
||||
return if config.reponame == 'boxen/our-boxen'
|
||||
|
||||
config.api.repository(config.reponame).has_issues
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -180,4 +207,36 @@ 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'
|
||||
|
||||
repo_info = RepoInfo.new(true)
|
||||
|
||||
@config.api = api = mock('api')
|
||||
api.stubs(:repository).with(repo).returns(repo_info)
|
||||
assert @reporter.issues?
|
||||
|
||||
repo_info = RepoInfo.new(false)
|
||||
api.stubs(:repository).with(repo).returns(repo_info)
|
||||
refute @reporter.issues?
|
||||
|
||||
@config.stubs(:reponame) # to ensure the returned value is nil
|
||||
api.stubs(:repository).returns(RepoInfo.new(true))
|
||||
refute @reporter.issues?
|
||||
|
||||
@config.stubs(:reponame).returns('boxen/our-boxen') # our main public repo
|
||||
api.stubs(:repository).returns(RepoInfo.new(true))
|
||||
refute @reporter.issues?
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user