diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-12-19 14:01:45 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-12-19 14:01:45 +0300 |
commit | 9297025d0b7ddf095eb618dfaaab2ff8f2018d8b (patch) | |
tree | 865198c01d1824a9b098127baa3ab980c9cd2c06 /spec/lib/gitlab/git/compare_spec.rb | |
parent | 6372471f43ee03c05a7c1f8b0c6ac6b8a7431dbe (diff) |
Add latest changes from gitlab-org/gitlab@16-7-stable-eev16.7.0-rc42
Diffstat (limited to 'spec/lib/gitlab/git/compare_spec.rb')
-rw-r--r-- | spec/lib/gitlab/git/compare_spec.rb | 110 |
1 files changed, 106 insertions, 4 deletions
diff --git a/spec/lib/gitlab/git/compare_spec.rb b/spec/lib/gitlab/git/compare_spec.rb index 81b5aa94656..5ee5e18d5af 100644 --- a/spec/lib/gitlab/git/compare_spec.rb +++ b/spec/lib/gitlab/git/compare_spec.rb @@ -2,11 +2,14 @@ require "spec_helper" -RSpec.describe Gitlab::Git::Compare do - let_it_be(:repository) { create(:project, :repository).repository.raw } +RSpec.describe Gitlab::Git::Compare, feature_category: :source_code_management do + let_it_be(:project) { create(:project, :repository) } + let_it_be(:repository) { project.repository.raw } - let(:compare) { described_class.new(repository, SeedRepo::BigCommit::ID, SeedRepo::Commit::ID, straight: false) } - let(:compare_straight) { described_class.new(repository, SeedRepo::BigCommit::ID, SeedRepo::Commit::ID, straight: true) } + let(:compare) { described_class.new(repository, base, head, straight: false) } + let(:compare_straight) { described_class.new(repository, base, head, straight: true) } + let(:base) { SeedRepo::BigCommit::ID } + let(:head) { SeedRepo::Commit::ID } describe '#commits' do subject do @@ -109,4 +112,103 @@ RSpec.describe Gitlab::Git::Compare do it { is_expected.to include('files/ruby/popen.rb') } it { is_expected.not_to include('LICENSE') } end + + describe '#generated_files' do + subject(:generated_files) { compare.generated_files } + + context 'with a detected generated file' do + let_it_be(:project) { create(:project, :repository) } + let_it_be(:repository) { project.repository.raw } + let_it_be(:branch) { 'generated-file-test' } + let_it_be(:base) do + project + .repository + .create_file( + project.creator, + '.gitattributes', + "*.txt gitlab-generated\n", + branch_name: branch, + message: 'Add .gitattributes file') + end + + let_it_be(:head) do + project + .repository + .create_file( + project.creator, + 'file1.rb', + "some content\n", + branch_name: branch, + message: 'Add file1') + project + .repository + .create_file( + project.creator, + 'file1.txt', + "some content\n", + branch_name: branch, + message: 'Add file2') + end + + it 'sets the diff as generated' do + expect(generated_files).to eq Set.new(['file1.txt']) + end + + context 'when base is nil' do + let(:base) { nil } + + it 'does not try to detect generated files' do + expect(repository).not_to receive(:detect_generated_files) + expect(repository).not_to receive(:find_changed_paths) + expect(generated_files).to eq Set.new + end + end + + context 'when head is nil' do + let(:head) { nil } + + it 'does not try to detect generated files' do + expect(repository).not_to receive(:detect_generated_files) + expect(repository).not_to receive(:find_changed_paths) + expect(generated_files).to eq Set.new + end + end + end + + context 'with updated .gitattributes in the HEAD' do + let_it_be(:project) { create(:project, :repository) } + let_it_be(:repository) { project.repository.raw } + let_it_be(:branch) { 'generated-file-test' } + let_it_be(:head) do + project + .repository + .create_file( + project.creator, + '.gitattributes', + "*.txt gitlab-generated\n", + branch_name: branch, + message: 'Add .gitattributes file') + project + .repository + .create_file( + project.creator, + 'file1.rb', + "some content\n", + branch_name: branch, + message: 'Add file1') + project + .repository + .create_file( + project.creator, + 'file1.txt', + "some content\n", + branch_name: branch, + message: 'Add file2') + end + + it 'does not set any files as generated' do + expect(generated_files).to eq Set.new + end + end + end end |