test-bot: fix test default formula handling.

Move the test default formula handling to after all the other formulae
additions are so it'll only be added if no formulae are detected
already in a PR.
This commit is contained in:
Mike McQuaid 2016-09-13 13:25:33 +01:00
parent 8e9a4b6e58
commit 054b1a8f73

View File

@ -62,8 +62,8 @@
#: If `--coverage` is passed, generate coverage report and send it to #: If `--coverage` is passed, generate coverage report and send it to
#: Coveralls. #: Coveralls.
#: #:
#: If `--test-default-formula` is passed, use a default testing formula if #: If `--test-default-formula` is passed, use a default testing formula
#: no formulae are otherwise found. #: when not building a tap and no other formulae are specified.
#: #:
#: If `--ci-master` is passed, use the Homebrew master branch CI #: If `--ci-master` is passed, use the Homebrew master branch CI
#: options. #: options.
@ -271,14 +271,11 @@ module Homebrew
@tap = options[:tap] @tap = options[:tap]
@repository = @tap ? @tap.path : HOMEBREW_REPOSITORY @repository = @tap ? @tap.path : HOMEBREW_REPOSITORY
@skip_homebrew = options.fetch(:skip_homebrew, false) @skip_homebrew = options.fetch(:skip_homebrew, false)
@test_default_formula = options.fetch(:test_default_formula, false)
if quiet_system "git", "-C", @repository.to_s, "rev-parse", "--verify", "-q", argument if quiet_system "git", "-C", @repository.to_s, "rev-parse", "--verify", "-q", argument
@hash = argument @hash = argument
elsif url_match = argument.match(HOMEBREW_PULL_OR_COMMIT_URL_REGEX) elsif url_match = argument.match(HOMEBREW_PULL_OR_COMMIT_URL_REGEX)
@url = url_match[0] @url = url_match[0]
elsif @test_default_formula
@formulae = [argument]
elsif canonical_formula_name = safe_formula_canonical_name(argument) elsif canonical_formula_name = safe_formula_canonical_name(argument)
@formulae = [canonical_formula_name] @formulae = [canonical_formula_name]
else else
@ -386,7 +383,7 @@ module Homebrew
@name = "#{diff_start_sha1}-#{diff_end_sha1}" @name = "#{diff_start_sha1}-#{diff_end_sha1}"
end end
# Handle formulae arguments being passed on the command-line e.g. `brew test-bot wget fish`. # Handle formulae arguments being passed on the command-line e.g. `brew test-bot wget fish`.
elsif @formulae && !@formulae.empty? elsif !@formulae.empty?
@name = "#{@formulae.first}-#{diff_end_sha1}" @name = "#{@formulae.first}-#{diff_end_sha1}"
diff_start_sha1 = diff_end_sha1 diff_start_sha1 = diff_end_sha1
# Handle a hash being passed on the command-line e.g. `brew test-bot 1a2b3c`. # Handle a hash being passed on the command-line e.g. `brew test-bot 1a2b3c`.
@ -423,11 +420,20 @@ module Homebrew
return unless diff_start_sha1 != diff_end_sha1 return unless diff_start_sha1 != diff_end_sha1
return if @url && steps.last && !steps.last.passed? return if @url && steps.last && !steps.last.passed?
return unless @tap
formula_path = @tap.formula_dir.to_s if @tap
@added_formulae += diff_formulae(diff_start_sha1, diff_end_sha1, formula_path, "A") formula_path = @tap.formula_dir.to_s
@modified_formula += diff_formulae(diff_start_sha1, diff_end_sha1, formula_path, "M") @added_formulae += diff_formulae(diff_start_sha1, diff_end_sha1, formula_path, "A")
@modified_formula += diff_formulae(diff_start_sha1, diff_end_sha1, formula_path, "M")\
elsif @formulae.empty? && ARGV.include?("--test-default-formula")
# Build the default test formula.
HOMEBREW_CACHE_FORMULA.mkpath
testbottest = "#{HOMEBREW_LIBRARY}/Homebrew/test/testbottest.rb"
FileUtils.cp testbottest, HOMEBREW_CACHE_FORMULA
@test_default_formula = true
@added_formulae = [testbottest]
end
@formulae += @added_formulae + @modified_formula @formulae += @added_formulae + @modified_formula
end end
@ -702,7 +708,7 @@ module Homebrew
@category = __method__ @category = __method__
return if @skip_homebrew return if @skip_homebrew
if @tap.nil? && (@repository == HOMEBREW_REPOSITORY || Array(@formulae).empty?) if !@tap && (@formulae.empty? || @test_default_formula)
tests_args = ["--official-cmd-taps"] tests_args = ["--official-cmd-taps"]
tests_args_no_compat = [] tests_args_no_compat = []
tests_args_no_compat << "--coverage" if ARGV.include?("--coverage") tests_args_no_compat << "--coverage" if ARGV.include?("--coverage")
@ -1047,16 +1053,8 @@ module Homebrew
any_errors = false any_errors = false
skip_homebrew = ARGV.include?("--skip-homebrew") skip_homebrew = ARGV.include?("--skip-homebrew")
if ARGV.named.empty? if ARGV.named.empty?
current_test = if ARGV.include?("--test-default-formula") # With no arguments just build the most recent commit.
# Build the default test formula. current_test = Test.new("HEAD", :tap => tap, :skip_homebrew => skip_homebrew)
HOMEBREW_CACHE_FORMULA.mkpath
FileUtils.cp "#{HOMEBREW_LIBRARY}/Homebrew/test/testbottest.rb", HOMEBREW_CACHE_FORMULA
Test.new("#{HOMEBREW_LIBRARY}/Homebrew/test/testbottest.rb",
:test_default_formula => true, :skip_homebrew => skip_homebrew)
else
# Otherwise just build the most recent commit.
Test.new("HEAD", :tap => tap, :skip_homebrew => skip_homebrew)
end
any_errors = !current_test.run any_errors = !current_test.run
tests << current_test tests << current_test
else else