From 04cb161ddb29ab26314684edc214650cdb192046 Mon Sep 17 00:00:00 2001 From: Vlad Shablinsky Date: Fri, 22 Jul 2016 12:59:08 +0300 Subject: [PATCH] test_formula: add outdated_versions tests --- Library/Homebrew/test/test_formula.rb | 156 +++++++++++++++++++++++--- 1 file changed, 139 insertions(+), 17 deletions(-) diff --git a/Library/Homebrew/test/test_formula.rb b/Library/Homebrew/test/test_formula.rb index 2c4935d587..3f39384146 100644 --- a/Library/Homebrew/test/test_formula.rb +++ b/Library/Homebrew/test/test_formula.rb @@ -134,6 +134,47 @@ class FormulaTests < Homebrew::TestCase f.rack.rmtree end + def test_installed_prefix_outdated_stable_head_installed + f = formula do + url "foo" + version "1.9" + head "foo" + end + + head_prefix = HOMEBREW_CELLAR/"#{f.name}/HEAD" + head_prefix.mkpath + tab = Tab.empty + tab.tabfile = head_prefix.join("INSTALL_RECEIPT.json") + tab.source["versions"] = { "stable" => "1.0" } + tab.write + + assert_equal HOMEBREW_CELLAR/"#{f.name}/#{f.version}", f.installed_prefix + ensure + f.rack.rmtree + end + + def test_installed_prefix_outdated_devel_head_installed + f = formula do + url "foo" + version "1.9" + devel do + url "foo" + version "2.1" + end + end + + head_prefix = HOMEBREW_CELLAR/"#{f.name}/HEAD" + head_prefix.mkpath + tab = Tab.empty + tab.tabfile = head_prefix.join("INSTALL_RECEIPT.json") + tab.source["versions"] = { "stable" => "1.9", "devel" => "2.0" } + tab.write + + assert_equal HOMEBREW_CELLAR/"#{f.name}/#{f.version}", f.installed_prefix + ensure + f.rack.rmtree + end + def test_installed_prefix_head f = formula("test", Pathname.new(__FILE__).expand_path, :head) do head "foo" @@ -526,60 +567,67 @@ class OutdatedVersionsTests < Homebrew::TestCase end def teardown - @f.rack.rmtree + @f.rack.rmtree if @f.rack.exist? end - def setup_tab_for_prefix(prefix, tap_string = nil) + def setup_tab_for_prefix(prefix, options = {}) prefix.mkpath tab = Tab.empty tab.tabfile = prefix.join("INSTALL_RECEIPT.json") - tab.source["tap"] = tap_string if tap_string - tab.write + tab.source["tap"] = options[:tap] if options[:tap] + tab.source["versions"] = options[:versions] if options[:versions] + tab.source_modified_time = options[:source_modified_time].to_i + tab.write unless options[:no_write] tab end + def reset_outdated_versions + f.instance_variable_set(:@outdated_versions, nil) + end + def test_greater_different_tap_installed - setup_tab_for_prefix(greater_prefix, "user/repo") + setup_tab_for_prefix(greater_prefix, :tap => "user/repo") assert_predicate f.outdated_versions, :empty? end def test_greater_same_tap_installed f.instance_variable_set(:@tap, CoreTap.instance) - setup_tab_for_prefix(greater_prefix, "homebrew/core") + setup_tab_for_prefix(greater_prefix, :tap => "homebrew/core") assert_predicate f.outdated_versions, :empty? end def test_outdated_different_tap_installed - setup_tab_for_prefix(outdated_prefix, "user/repo") + setup_tab_for_prefix(outdated_prefix, :tap => "user/repo") refute_predicate f.outdated_versions, :empty? end def test_outdated_same_tap_installed f.instance_variable_set(:@tap, CoreTap.instance) - setup_tab_for_prefix(outdated_prefix, "homebrew/core") + setup_tab_for_prefix(outdated_prefix, :tap => "homebrew/core") refute_predicate f.outdated_versions, :empty? end def test_same_head_installed f.instance_variable_set(:@tap, CoreTap.instance) - setup_tab_for_prefix(head_prefix, "homebrew/core") + setup_tab_for_prefix(head_prefix, :tap => "homebrew/core") assert_predicate f.outdated_versions, :empty? end def test_different_head_installed f.instance_variable_set(:@tap, CoreTap.instance) - setup_tab_for_prefix(head_prefix, "user/repo") + setup_tab_for_prefix(head_prefix, :tap => "user/repo") assert_predicate f.outdated_versions, :empty? end def test_mixed_taps_greater_version_installed f.instance_variable_set(:@tap, CoreTap.instance) - setup_tab_for_prefix(outdated_prefix, "homebrew/core") - setup_tab_for_prefix(greater_prefix, "user/repo") + setup_tab_for_prefix(outdated_prefix, :tap => "homebrew/core") + setup_tab_for_prefix(greater_prefix, :tap => "user/repo") assert_predicate f.outdated_versions, :empty? - setup_tab_for_prefix(greater_prefix, "homebrew/core") + setup_tab_for_prefix(greater_prefix, :tap => "homebrew/core") + reset_outdated_versions assert_predicate f.outdated_versions, :empty? end @@ -590,23 +638,97 @@ class OutdatedVersionsTests < Homebrew::TestCase extra_outdated_prefix = HOMEBREW_CELLAR/"#{f.name}/1.0" setup_tab_for_prefix(outdated_prefix) - setup_tab_for_prefix(extra_outdated_prefix, "homebrew/core") + setup_tab_for_prefix(extra_outdated_prefix, :tap => "homebrew/core") + reset_outdated_versions refute_predicate f.outdated_versions, :empty? - setup_tab_for_prefix(outdated_prefix, "user/repo") + setup_tab_for_prefix(outdated_prefix, :tap => "user/repo") + reset_outdated_versions refute_predicate f.outdated_versions, :empty? end def test_same_version_tap_installed f.instance_variable_set(:@tap, CoreTap.instance) - setup_tab_for_prefix(same_prefix, "homebrew/core") + setup_tab_for_prefix(same_prefix, :tap => "homebrew/core") assert_predicate f.outdated_versions, :empty? - setup_tab_for_prefix(same_prefix, "user/repo") + setup_tab_for_prefix(same_prefix, :tap => "user/repo") + reset_outdated_versions assert_predicate f.outdated_versions, :empty? end + + def test_outdated_installed_head_less_than_stable + tab = setup_tab_for_prefix(head_prefix, :versions => { "stable" => "1.0" }) + refute_predicate f.outdated_versions, :empty? + + # Tab.for_keg(head_prefix) will be fetched from CACHE but we write it anyway + tab.source["versions"] = { "stable" => f.version.to_s } + tab.write + reset_outdated_versions + + assert_predicate f.outdated_versions, :empty? + end + + def test_outdated_fetch_head + outdated_stable_prefix = HOMEBREW_CELLAR.join("testball/1.0") + head_prefix_a = HOMEBREW_CELLAR.join("testball/HEAD") + head_prefix_b = HOMEBREW_CELLAR.join("testball/HEAD-aaaaaaa_1") + head_prefix_c = HOMEBREW_CELLAR.join("testball/HEAD-5658946") + + setup_tab_for_prefix(outdated_stable_prefix) + tab_a = setup_tab_for_prefix(head_prefix_a, :versions => { "stable" => "1.0" }) + setup_tab_for_prefix(head_prefix_b) + + initial_env = ENV.to_hash + testball_repo = HOMEBREW_PREFIX.join("testball_repo") + testball_repo.mkdir + + @f = formula("testball") do + url "foo" + version "2.10" + head "file://#{testball_repo}", :using => :git + end + + %w[AUTHOR COMMITTER].each do |role| + ENV["GIT_#{role}_NAME"] = "brew tests" + ENV["GIT_#{role}_EMAIL"] = "brew-tests@localhost" + ENV["GIT_#{role}_DATE"] = "Thu May 21 00:04:11 2009 +0100" + end + + testball_repo.cd do + FileUtils.touch "LICENSE" + shutup do + system "git", "init" + system "git", "add", "--all" + system "git", "commit", "-m", "Initial commit" + end + end + + refute_predicate f.outdated_versions(:fetch_head => true), :empty? + + tab_a.source["versions"] = { "stable" => f.version.to_s } + tab_a.write + reset_outdated_versions + refute_predicate f.outdated_versions(:fetch_head => true), :empty? + + head_prefix_a.rmtree + reset_outdated_versions + refute_predicate f.outdated_versions(:fetch_head => true), :empty? + + setup_tab_for_prefix(head_prefix_c, :source_modified_time => 1) + reset_outdated_versions + assert_predicate f.outdated_versions(:fetch_head => true), :empty? + ensure + ENV.replace(initial_env) + testball_repo.rmtree if testball_repo.exist? + outdated_stable_prefix.rmtree if outdated_stable_prefix.exist? + head_prefix_b.rmtree if head_prefix.exist? + head_prefix_c.rmtree if head_prefix_c.exist? + FileUtils.rm_rf HOMEBREW_CACHE/"testball--git" + FileUtils.rm_rf HOMEBREW_CELLAR/"testball" + end end