Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-04-20 13:00:54 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-04-20 13:00:54 +0300
commit3cccd102ba543e02725d247893729e5c73b38295 (patch)
treef36a04ec38517f5deaaacb5acc7d949688d1e187 /spec/lib/gitlab/git/blame_spec.rb
parent205943281328046ef7b4528031b90fbda70c75ac (diff)
Add latest changes from gitlab-org/gitlab@14-10-stable-eev14.10.0-rc42
Diffstat (limited to 'spec/lib/gitlab/git/blame_spec.rb')
-rw-r--r--spec/lib/gitlab/git/blame_spec.rb98
1 files changed, 54 insertions, 44 deletions
diff --git a/spec/lib/gitlab/git/blame_spec.rb b/spec/lib/gitlab/git/blame_spec.rb
index 495cb16ebab..7dd7460b142 100644
--- a/spec/lib/gitlab/git/blame_spec.rb
+++ b/spec/lib/gitlab/git/blame_spec.rb
@@ -4,71 +4,81 @@ require "spec_helper"
RSpec.describe Gitlab::Git::Blame, :seed_helper do
let(:repository) { Gitlab::Git::Repository.new('default', TEST_REPO_PATH, '', 'group/project') }
- let(:blame) do
- Gitlab::Git::Blame.new(repository, SeedRepo::Commit::ID, "CONTRIBUTING.md")
+
+ let(:sha) { SeedRepo::Commit::ID }
+ let(:path) { 'CONTRIBUTING.md' }
+ let(:range) { nil }
+
+ subject(:blame) { Gitlab::Git::Blame.new(repository, sha, path, range: range) }
+
+ let(:result) do
+ [].tap do |data|
+ blame.each do |commit, line, previous_path|
+ data << { commit: commit, line: line, previous_path: previous_path }
+ end
+ end
end
describe 'blaming a file' do
- context "each count" do
- it do
- data = []
- blame.each do |commit, line|
- data << {
- commit: commit,
- line: line
- }
- end
+ it 'has the right number of lines' do
+ expect(result.size).to eq(95)
+ expect(result.first[:commit]).to be_kind_of(Gitlab::Git::Commit)
+ expect(result.first[:line]).to eq("# Contribute to GitLab")
+ expect(result.first[:line]).to be_utf8
+ end
- expect(data.size).to eq(95)
- expect(data.first[:commit]).to be_kind_of(Gitlab::Git::Commit)
- expect(data.first[:line]).to eq("# Contribute to GitLab")
- expect(data.first[:line]).to be_utf8
+ context 'blaming a range' do
+ let(:range) { 2..4 }
+
+ it 'only returns the range' do
+ expect(result.size).to eq(range.size)
+ expect(result.map {|r| r[:line] }).to eq(['', 'This guide details how contribute to GitLab.', ''])
end
end
context "ISO-8859 encoding" do
- let(:blame) do
- Gitlab::Git::Blame.new(repository, SeedRepo::EncodingCommit::ID, "encoding/iso8859.txt")
- end
+ let(:sha) { SeedRepo::EncodingCommit::ID }
+ let(:path) { 'encoding/iso8859.txt' }
it 'converts to UTF-8' do
- data = []
- blame.each do |commit, line|
- data << {
- commit: commit,
- line: line
- }
- end
-
- expect(data.size).to eq(1)
- expect(data.first[:commit]).to be_kind_of(Gitlab::Git::Commit)
- expect(data.first[:line]).to eq("Ä ü")
- expect(data.first[:line]).to be_utf8
+ expect(result.size).to eq(1)
+ expect(result.first[:commit]).to be_kind_of(Gitlab::Git::Commit)
+ expect(result.first[:line]).to eq("Ä ü")
+ expect(result.first[:line]).to be_utf8
end
end
context "unknown encoding" do
- let(:blame) do
- Gitlab::Git::Blame.new(repository, SeedRepo::EncodingCommit::ID, "encoding/iso8859.txt")
- end
+ let(:sha) { SeedRepo::EncodingCommit::ID }
+ let(:path) { 'encoding/iso8859.txt' }
it 'converts to UTF-8' do
expect_next_instance_of(CharlockHolmes::EncodingDetector) do |detector|
expect(detector).to receive(:detect).and_return(nil)
end
- data = []
- blame.each do |commit, line|
- data << {
- commit: commit,
- line: line
- }
- end
+ expect(result.size).to eq(1)
+ expect(result.first[:commit]).to be_kind_of(Gitlab::Git::Commit)
+ expect(result.first[:line]).to eq(" ")
+ expect(result.first[:line]).to be_utf8
+ end
+ end
+
+ context "renamed file" do
+ let(:project) { create(:project, :repository) }
+ let(:repository) { project.repository.raw_repository }
+ let(:commit) { project.commit('blame-on-renamed') }
+ let(:sha) { commit.id }
+ let(:path) { 'files/plain_text/renamed' }
+
+ it 'includes the previous path' do
+ expect(result.size).to eq(5)
- expect(data.size).to eq(1)
- expect(data.first[:commit]).to be_kind_of(Gitlab::Git::Commit)
- expect(data.first[:line]).to eq(" ")
- expect(data.first[:line]).to be_utf8
+ expect(result[0]).to include(line: 'Initial commit', previous_path: nil)
+ expect(result[1]).to include(line: 'Initial commit', previous_path: nil)
+ expect(result[2]).to include(line: 'Renamed as "filename"', previous_path: 'files/plain_text/initial-commit')
+ expect(result[3]).to include(line: 'Renamed as renamed', previous_path: 'files/plain_text/"filename"')
+ expect(result[4]).to include(line: 'Last edit, no rename', previous_path: path)
end
end
end