|
- # frozen_string_literal: true
-
- require 'cucumber/file_specs'
-
- module Cucumber
- describe FileSpecs do
- let(:file_specs) { FileSpecs.new(['features/foo.feature:1:2:3', 'features/bar.feature:4:5:6']) }
- let(:locations) { file_specs.locations }
- let(:files) { file_specs.files }
-
- it 'parses locations from multiple files' do
- expect(locations.length).to eq 6
- expect(locations).to eq [
- Cucumber::Core::Test::Location.new('features/foo.feature', 1),
- Cucumber::Core::Test::Location.new('features/foo.feature', 2),
- Cucumber::Core::Test::Location.new('features/foo.feature', 3),
- Cucumber::Core::Test::Location.new('features/bar.feature', 4),
- Cucumber::Core::Test::Location.new('features/bar.feature', 5),
- Cucumber::Core::Test::Location.new('features/bar.feature', 6)
- ]
- end
-
- it 'parses file names from multiple file specs' do
- expect(files.length).to eq 2
- expect(files).to eq [
- 'features/foo.feature',
- 'features/bar.feature'
- ]
- end
-
- context 'when files are not unique' do
- let(:file_specs) { FileSpecs.new(['features/foo.feature:4', 'features/foo.feature:34']) }
-
- it 'parses unique file names' do
- expect(files.length).to eq 1
- expect(files).to eq ['features/foo.feature']
- end
- end
-
- context 'when no line number is specified' do
- let(:file_specs) { FileSpecs.new(['features/foo.feature', 'features/bar.feature:34']) }
-
- it 'returns a wildcard location for that file' do
- expect(locations).to eq [
- Cucumber::Core::Test::Location.new('features/foo.feature'),
- Cucumber::Core::Test::Location.new('features/bar.feature', 34)
- ]
- end
- end
-
- context 'when the same file is referenced more than once' do
- let(:file_specs) { FileSpecs.new(['features/foo.feature:10', 'features/foo.feature:1']) }
-
- it 'returns locations in the order specified' do
- expect(locations).to eq [
- Cucumber::Core::Test::Location.new('features/foo.feature', 10),
- Cucumber::Core::Test::Location.new('features/foo.feature', 1)
- ]
- end
- end
- end
- end
|