diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-09-02 00:11:46 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-09-02 00:11:46 +0000 |
commit | 5b72415235c4a056380758c5d23bff3a738158e7 (patch) | |
tree | 47a04433210a8f3af8b0c1f3f0a5fcf8250dabc4 /spec/lib | |
parent | 64667f74b1613f91fe7eb53cd6610f0693c3a45e (diff) | |
download | gitlab-ce-5b72415235c4a056380758c5d23bff3a738158e7.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/lib')
-rw-r--r-- | spec/lib/banzai/filter/blockquote_fence_filter_spec.rb | 12 | ||||
-rw-r--r-- | spec/lib/banzai/pipeline/pre_process_pipeline_spec.rb | 17 | ||||
-rw-r--r-- | spec/lib/gitlab/shell_spec.rb | 53 |
3 files changed, 74 insertions, 8 deletions
diff --git a/spec/lib/banzai/filter/blockquote_fence_filter_spec.rb b/spec/lib/banzai/filter/blockquote_fence_filter_spec.rb index 2d326bd77a6..36e8002b796 100644 --- a/spec/lib/banzai/filter/blockquote_fence_filter_spec.rb +++ b/spec/lib/banzai/filter/blockquote_fence_filter_spec.rb @@ -14,10 +14,22 @@ RSpec.describe Banzai::Filter::BlockquoteFenceFilter do expect(output).to eq(expected) end + it 'does not require newlines at start or end of string' do + expect(filter(">>>\ntest\n>>>")).to eq("\n> test\n") + end + it 'allows trailing whitespace on blockquote fence lines' do expect(filter(">>> \ntest\n>>> ")).to eq("\n> test\n") end + context 'when feature flag is turned off' do + it 'does not require a leading or trailing blank line' do + stub_feature_flags(markdown_corrected_blockquote: false) + + expect(filter("Foo\n>>>\ntest\n>>>\nBar")).to eq("Foo\n\n> test\n\nBar") + end + end + context 'when incomplete blockquote fences with multiple blocks are present' do it 'does not raise timeout error' do test_string = ">>>#{"\n```\nfoo\n```" * 20}" diff --git a/spec/lib/banzai/pipeline/pre_process_pipeline_spec.rb b/spec/lib/banzai/pipeline/pre_process_pipeline_spec.rb index 5021ef3a79a..303d0fcb6c2 100644 --- a/spec/lib/banzai/pipeline/pre_process_pipeline_spec.rb +++ b/spec/lib/banzai/pipeline/pre_process_pipeline_spec.rb @@ -32,4 +32,21 @@ RSpec.describe Banzai::Pipeline::PreProcessPipeline do expect(result[:output]).to eq('foo foo f...') end + + context 'when multiline blockquote' do + it 'data-sourcepos references correct line in source markdown' do + markdown = <<~MD + >>> + foo + >>> + MD + + pipeline_output = described_class.call(markdown, {})[:output] + pipeline_output = Banzai::Pipeline::PlainMarkdownPipeline.call(pipeline_output, {})[:output] + sourcepos = pipeline_output.at('blockquote')['data-sourcepos'] + source_line = sourcepos.split(':').first.to_i + + expect(markdown.lines[source_line - 1]).to eq "foo\n" + end + end end diff --git a/spec/lib/gitlab/shell_spec.rb b/spec/lib/gitlab/shell_spec.rb index 891b3639709..785429aa3b0 100644 --- a/spec/lib/gitlab/shell_spec.rb +++ b/spec/lib/gitlab/shell_spec.rb @@ -9,9 +9,13 @@ RSpec.describe Gitlab::Shell do let(:repository) { project.repository } let(:gitlab_shell) { described_class.new } + before do + described_class.instance_variable_set(:@secret_token, nil) + end + it { is_expected.to respond_to :remove_repository } - describe 'memoized secret_token' do + describe '.secret_token' do let(:secret_file) { 'tmp/tests/.secret_shell_test' } let(:link_file) { 'tmp/tests/shell-secret-test/.gitlab_shell_secret' } @@ -19,7 +23,6 @@ RSpec.describe Gitlab::Shell do allow(Gitlab.config.gitlab_shell).to receive(:secret_file).and_return(secret_file) allow(Gitlab.config.gitlab_shell).to receive(:path).and_return('tmp/tests/shell-secret-test') FileUtils.mkdir('tmp/tests/shell-secret-test') - described_class.ensure_secret_token! end after do @@ -27,13 +30,47 @@ RSpec.describe Gitlab::Shell do FileUtils.rm_rf(secret_file) end - it 'creates and links the secret token file' do - secret_token = described_class.secret_token + shared_examples 'creates and links the secret token file' do + it 'creates and links the secret token file' do + secret_token = described_class.secret_token + + expect(File.exist?(secret_file)).to be(true) + expect(File.read(secret_file).chomp).to eq(secret_token) + expect(File.symlink?(link_file)).to be(true) + expect(File.readlink(link_file)).to eq(secret_file) + end + end + + describe 'memoized secret_token' do + before do + described_class.ensure_secret_token! + end + + it_behaves_like 'creates and links the secret token file' + end + + context 'when link_file is a broken symbolic link' do + before do + File.symlink('tmp/tests/non_existing_file', link_file) + described_class.ensure_secret_token! + end + + it_behaves_like 'creates and links the secret token file' + end + + context 'when secret_file exists' do + let(:secret_token) { 'secret-token' } - expect(File.exist?(secret_file)).to be(true) - expect(File.read(secret_file).chomp).to eq(secret_token) - expect(File.symlink?(link_file)).to be(true) - expect(File.readlink(link_file)).to eq(secret_file) + before do + File.write(secret_file, 'secret-token') + described_class.ensure_secret_token! + end + + it_behaves_like 'creates and links the secret token file' + + it 'reads the token from the existing file' do + expect(described_class.secret_token).to eq(secret_token) + end end end |