From 0b2cc5c20db30f5d0046091f8c2318752f7b0659 Mon Sep 17 00:00:00 2001 From: Vlad Shablinsky Date: Wed, 25 May 2016 20:11:27 +0300 Subject: [PATCH] test_download_strategies: add git tests --- .../Homebrew/test/test_download_strategies.rb | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/Library/Homebrew/test/test_download_strategies.rb b/Library/Homebrew/test/test_download_strategies.rb index 24f38ad2de..9a53d48ebc 100644 --- a/Library/Homebrew/test/test_download_strategies.rb +++ b/Library/Homebrew/test/test_download_strategies.rb @@ -60,6 +60,69 @@ class VCSDownloadStrategyTests < Homebrew::TestCase end end +class GitDownloadStrategyTests < Homebrew::TestCase + include FileUtils + + def setup + resource = ResourceDouble.new("https://github.com/homebrew/foo") + @commit_id = 1 + @strategy = GitDownloadStrategy.new("baz", resource) + @cached_location = @strategy.cached_location + mkpath @cached_location + touch @cached_location/"README" + end + + def teardown + rmtree @cached_location + end + + def git_commit_all + shutup do + system "git", "add", "--all" + system "git", "commit", "-m", "commit number #{@commit_id}" + @commit_id += 1 + end + end + + def inside_repo_using_git_env + initial_env = ENV.to_hash + %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 + @cached_location.cd do + yield + end + ensure + ENV.replace(initial_env) + end + + def setup_git_repo + inside_repo_using_git_env do + shutup do + system "git", "init" + system "git", "remote", "add", "origin", "https://github.com/Homebrew/homebrew-foo" + end + git_commit_all + end + end + + def test_source_modified_time + setup_git_repo + assert_equal 1242860651, @strategy.source_modified_time.to_i + end + + def test_last_commit + setup_git_repo + inside_repo_using_git_env do + touch "LICENSE" + git_commit_all + end + assert_equal "c50c79b", @strategy.last_commit + end +end + class DownloadStrategyDetectorTests < Homebrew::TestCase def setup @d = DownloadStrategyDetector.new