|
- # frozen_string_literal: true
-
- require 'spec_helper'
- require 'yaml'
-
- module Cucumber
- module Cli
- describe ProfileLoader do
- def given_cucumber_yml_defined_as(hash_or_string)
- allow(Dir).to receive(:glob).with('{,.config/,config/}cucumber{.yml,.yaml}') { ['cucumber.yml'] }
- allow(File).to receive(:exist?) { true }
-
- cucumber_yml = hash_or_string.is_a?(Hash) ? hash_or_string.to_yaml : hash_or_string
-
- allow(IO).to receive(:read).with('cucumber.yml') { cucumber_yml }
- end
-
- def loader
- ProfileLoader.new
- end
-
- it 'treats backslashes as literals in rerun.txt when on Windows (JRuby or MRI)' do
- given_cucumber_yml_defined_as('default' => '--format "pretty" features\sync_imap_mailbox.feature:16:22')
- if Cucumber::WINDOWS
- expect(loader.args_from('default')).to eq ['--format', 'pretty', 'features\sync_imap_mailbox.feature:16:22']
- else
- expect(loader.args_from('default')).to eq ['--format', 'pretty', 'featuressync_imap_mailbox.feature:16:22']
- end
- end
-
- it 'treats forward slashes as literals' do
- given_cucumber_yml_defined_as('default' => '--format "ugly" features/sync_imap_mailbox.feature:16:22')
-
- expect(loader.args_from('default')).to eq ['--format', 'ugly', 'features/sync_imap_mailbox.feature:16:22']
- end
-
- it 'treats percent sign as ERB code block after YAML directive' do
- yml = <<-HERE
- ---
- % x = '--format "pretty" features/sync_imap_mailbox.feature:16:22'
- default: <%= x %>
- HERE
- given_cucumber_yml_defined_as yml
- expect(loader.args_from('default')).to eq ['--format', 'pretty', 'features/sync_imap_mailbox.feature:16:22']
- end
-
- it 'correctly parses a profile that uses tag expressions (with double quotes)' do
- given_cucumber_yml_defined_as('default' => '--format "pretty" features\sync_imap_mailbox.feature:16:22 --tags "not @jruby"')
- if Cucumber::WINDOWS
- expect(loader.args_from('default')).to eq ['--format', 'pretty', 'features\sync_imap_mailbox.feature:16:22', '--tags', 'not @jruby']
- else
- expect(loader.args_from('default')).to eq ['--format', 'pretty', 'featuressync_imap_mailbox.feature:16:22', '--tags', 'not @jruby']
- end
- end
-
- it 'correctly parses a profile that uses tag expressions (with single quotes)' do
- given_cucumber_yml_defined_as('default' => "--format 'pretty' features\\sync_imap_mailbox.feature:16:22 --tags 'not @jruby'")
- if Cucumber::WINDOWS
- expect(loader.args_from('default')).to eq ['--format', 'pretty', 'features\sync_imap_mailbox.feature:16:22', '--tags', 'not @jruby']
- else
- expect(loader.args_from('default')).to eq ['--format', 'pretty', 'featuressync_imap_mailbox.feature:16:22', '--tags', 'not @jruby']
- end
- end
- end
- end
- end
|