|
- require 'spec_helper'
- require 'cucumber/runtime/meta_message_builder'
-
- describe Cucumber::Runtime::MetaMessageBuilder do
- describe 'self#build_meta_message' do
- subject { Cucumber::Runtime::MetaMessageBuilder.build_meta_message }
-
- it { is_expected.to be_a(Cucumber::Messages::Meta) }
-
- it 'fills system info in the meta message' do
- expect(subject.protocol_version).to eq(Cucumber::Messages::VERSION)
- expect(subject.implementation.name).to eq('cucumber-ruby')
- expect(subject.implementation.version).to eq(Cucumber::VERSION)
- expect(subject.runtime.name).to eq(RUBY_ENGINE)
- expect(subject.runtime.version).to eq(RUBY_VERSION)
- expect(subject.os.name).to eq(RbConfig::CONFIG['target_os'])
- expect(subject.os.version).to eq(Sys::Uname.uname.version)
- expect(subject.cpu.name).to eq(RbConfig::CONFIG['target_cpu'])
- end
-
- context 'with overriden ENV' do
- subject { Cucumber::Runtime::MetaMessageBuilder.build_meta_message(env) }
- let(:env) { {} }
-
- it 'detects CI environment using the given env' do
- expect(Cucumber::CiEnvironment).to receive(:detect_ci_environment).with(env)
- subject
- end
- end
-
- describe ':ci' do
- subject { Cucumber::Runtime::MetaMessageBuilder.build_meta_message.ci }
-
- before do
- expect(Cucumber::CiEnvironment).to receive(:detect_ci_environment).and_return(ci_data)
- end
-
- context 'when running on a CI system' do
- let(:ci_data) do
- {
- name: 'Jenkins',
- url: 'http://localhost:8080',
- buildNumber: '123'
- }
- end
-
- it { is_expected.to be_a(Cucumber::Messages::Ci) }
-
- it 'fills ci data in the :ci field' do
- expect(subject.name).to eq(ci_data[:name])
- expect(subject.url).to eq(ci_data[:url])
- expect(subject.build_number).to eq(ci_data[:buildNumber])
- end
-
- describe ':git field' do
- subject { Cucumber::Runtime::MetaMessageBuilder.build_meta_message.ci.git }
-
- context 'with some git data' do
- let(:ci_data) do
- {
- git: {
- remote: 'origin',
- revision: '1234567890',
- branch: 'main',
- tag: 'v1.0.0'
- }
- }
- end
-
- it { is_expected.to be_a(Cucumber::Messages::Git) }
-
- it 'fills the git data in the :git field' do
- expect(subject.remote).to eq(ci_data[:git][:remote])
- expect(subject.revision).to eq(ci_data[:git][:revision])
- expect(subject.branch).to eq(ci_data[:git][:branch])
- expect(subject.tag).to eq(ci_data[:git][:tag])
- end
- end
-
- context 'without git data' do
- it { is_expected.to be_nil }
- end
- end
- end
-
- context 'when not running on a CI system' do
- let(:ci_data) { nil }
-
- it { is_expected.to be_nil }
- end
- end
- end
- end
|