diff --git a/app/jobs/update_tracks_build_status_job.rb b/app/jobs/update_tracks_build_status_job.rb index 6fccbc8177..eca6ea9b6c 100644 --- a/app/jobs/update_tracks_build_status_job.rb +++ b/app/jobs/update_tracks_build_status_job.rb @@ -7,7 +7,7 @@ def perform tracks.find_each do |track| Track::UpdateBuildStatus.(track) rescue StandardError => e - Sentry.capture_exception(e) + Sentry.capture_exception(e, extra: { track_slug: track.slug, synced_to_git_sha: track.synced_to_git_sha }) end end diff --git a/app/models/git/repository.rb b/app/models/git/repository.rb index 504bc4fead..b30f6827bc 100644 --- a/app/models/git/repository.rb +++ b/app/models/git/repository.rb @@ -57,11 +57,13 @@ def read_blob(oid, default = nil) def lookup_commit(sha, update_on_failure: true) return head_commit if sha == "HEAD" + raise MissingCommitError, sha if sha.blank? + lookup(sha).tap do |object| raise 'wrong-type' if object.type != :commit end rescue Rugged::OdbError, Rugged::InvalidError - raise MissingCommitError unless update_on_failure + raise MissingCommitError, sha unless update_on_failure fetch! lookup_commit(sha, update_on_failure: false) diff --git a/test/models/git/repository_test.rb b/test/models/git/repository_test.rb index 28368524e5..f22709b2a4 100644 --- a/test/models/git/repository_test.rb +++ b/test/models/git/repository_test.rb @@ -14,6 +14,22 @@ class RepositoryTest < ActiveSupport::TestCase end end + test "lookup_commit_for_blank_sha_raises_without_fetch" do + repository = ::Git::Repository.new(repo_url: TestHelpers.git_repo_url("track")) + repository.expects(:fetch!).never + assert_raises Git::MissingCommitError do + repository.lookup_commit("") + end + end + + test "lookup_commit_for_nil_sha_raises_without_fetch" do + repository = ::Git::Repository.new(repo_url: TestHelpers.git_repo_url("track")) + repository.expects(:fetch!).never + assert_raises Git::MissingCommitError do + repository.lookup_commit(nil) + end + end + test "lookup_commit_for_head" do repository = ::Git::Repository.new(repo_url: TestHelpers.git_repo_url("track")) assert_equal repository.head_commit, repository.lookup_commit("HEAD")