|
- # frozen_string_literal: true
-
- require 'spec_helper'
- require 'cucumber/rake/task'
- require 'rake'
-
- module Cucumber
- module Rake
- describe Task do
- describe '#task_name' do
- it 'can be read' do
- expect(subject.task_name).to eq('cucumber')
- end
- end
-
- describe '#task_name=' do
- it { is_expected.not_to respond_to(:task_name=) }
- end
-
- describe '#cucumber_opts' do
- before { subject.cucumber_opts = opts }
-
- context 'when set via array' do
- let(:opts) { %w[foo bar] }
- it { expect(subject.cucumber_opts).to be opts }
- end
-
- context 'when set via string' do
- let(:opts) { 'foo=bar' }
- it { expect(subject.cucumber_opts).to eq %w[foo=bar] }
- end
-
- context 'when set via space-delimited string' do
- let(:opts) { 'foo bar' }
-
- it { expect(subject.cucumber_opts).to eq %w[foo bar] }
-
- it 'emits a warning to suggest using arrays rather than string' do
- expect { subject.cucumber_opts = opts }.to output(
- a_string_including(
- 'WARNING: consider using an array rather than a space-delimited string with cucumber_opts to avoid undesired behavior.'
- )
- ).to_stderr
- end
- end
- end
-
- describe '#cucumber_opts_with_profile' do
- before do
- subject.cucumber_opts = opts
- subject.profile = profile
- end
-
- context 'with cucumber_opts' do
- let(:opts) { %w[foo bar] }
-
- context 'without profile' do
- let(:profile) { nil }
-
- it 'should return just cucumber_opts' do
- expect(subject.cucumber_opts_with_profile).to be opts
- end
- end
-
- context 'with profile' do
- let(:profile) { 'fancy' }
-
- it 'should combine opts and profile into an array, prepending --profile option' do
- expect(subject.cucumber_opts_with_profile).to eq %w[foo bar --profile fancy]
- end
- end
-
- context 'with multiple profiles' do
- let(:profile) { %w[fancy pants] }
-
- it 'should combine opts and each profile into an array, prepending --profile option' do
- expect(subject.cucumber_opts_with_profile).to eq %w[foo bar --profile fancy --profile pants]
- end
- end
- end
-
- context 'without cucumber_opts' do
- let(:opts) { nil }
-
- context 'without profile' do
- let(:profile) { nil }
-
- it { expect(subject.cucumber_opts_with_profile).to eq [] }
- end
-
- context 'with profile' do
- let(:profile) { 'fancy' }
-
- it 'should combine opts and profile into an array, prepending --profile option' do
- expect(subject.cucumber_opts_with_profile).to eq %w[--profile fancy]
- end
- end
-
- context 'with multiple profiles' do
- let(:profile) { %w[fancy pants] }
-
- it 'should combine opts and each profile into an array, prepending --profile option' do
- expect(subject.cucumber_opts_with_profile).to eq %w[--profile fancy --profile pants]
- end
- end
- end
- end
- end
- end
- end
|