diff --git a/CHANGELOG.md b/CHANGELOG.md index e2e15cdd..e6844e19 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Change Log +### 1.16.0 + +* Add test runner name to `KNAPSACK-PRO-CLIENT-NAME` header send to Knapsack Pro API + + https://github.com/KnapsackPro/knapsack_pro-ruby/pull/95 + +https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v1.15.0...v1.16.0 + ### 1.15.0 * Add support for Codefresh.io CI provider diff --git a/lib/knapsack_pro.rb b/lib/knapsack_pro.rb index fbd574af..262371ae 100644 --- a/lib/knapsack_pro.rb +++ b/lib/knapsack_pro.rb @@ -47,17 +47,17 @@ require_relative 'knapsack_pro/test_flat_distributor' require_relative 'knapsack_pro/task_loader' require_relative 'knapsack_pro/tracker' -require_relative 'knapsack_pro/allocator' -require_relative 'knapsack_pro/queue_allocator' -require_relative 'knapsack_pro/base_allocator_builder' -require_relative 'knapsack_pro/allocator_builder' -require_relative 'knapsack_pro/queue_allocator_builder' require_relative 'knapsack_pro/adapters/base_adapter' require_relative 'knapsack_pro/adapters/rspec_adapter' require_relative 'knapsack_pro/adapters/cucumber_adapter' require_relative 'knapsack_pro/adapters/minitest_adapter' require_relative 'knapsack_pro/adapters/test_unit_adapter' require_relative 'knapsack_pro/adapters/spinach_adapter' +require_relative 'knapsack_pro/allocator' +require_relative 'knapsack_pro/queue_allocator' +require_relative 'knapsack_pro/base_allocator_builder' +require_relative 'knapsack_pro/allocator_builder' +require_relative 'knapsack_pro/queue_allocator_builder' require_relative 'knapsack_pro/runners/base_runner' require_relative 'knapsack_pro/runners/rspec_runner' require_relative 'knapsack_pro/runners/cucumber_runner' diff --git a/lib/knapsack_pro/base_allocator_builder.rb b/lib/knapsack_pro/base_allocator_builder.rb index 2db220f4..5010dab9 100644 --- a/lib/knapsack_pro/base_allocator_builder.rb +++ b/lib/knapsack_pro/base_allocator_builder.rb @@ -1,7 +1,16 @@ module KnapsackPro class BaseAllocatorBuilder + TEST_RUNNER_MAP = { + KnapsackPro::Adapters::RSpecAdapter => 'rspec', + KnapsackPro::Adapters::CucumberAdapter => 'cucumber', + KnapsackPro::Adapters::MinitestAdapter => 'minitest', + KnapsackPro::Adapters::SpinachAdapter => 'spinach', + KnapsackPro::Adapters::TestUnitAdapter => 'test-unit', + } + def initialize(adapter_class) @adapter_class = adapter_class + ENV['KNAPSACK_PRO_TEST_RUNNER'] = TEST_RUNNER_MAP[adapter_class] end def allocator diff --git a/lib/knapsack_pro/client/connection.rb b/lib/knapsack_pro/client/connection.rb index 775ee259..16a7ead2 100644 --- a/lib/knapsack_pro/client/connection.rb +++ b/lib/knapsack_pro/client/connection.rb @@ -67,11 +67,18 @@ def json_headers { 'Content-Type' => 'application/json', 'Accept' => 'application/json', - 'KNAPSACK-PRO-CLIENT-NAME' => 'knapsack_pro-ruby', + 'KNAPSACK-PRO-CLIENT-NAME' => client_name, 'KNAPSACK-PRO-CLIENT-VERSION' => KnapsackPro::VERSION, } end + def client_name + [ + 'knapsack_pro-ruby', + ENV['KNAPSACK_PRO_TEST_RUNNER'], + ].compact.join('/') + end + def parse_response_body(body) return '' if body == '' || body.nil? JSON.parse(body) diff --git a/spec/knapsack_pro/base_allocator_builder_spec.rb b/spec/knapsack_pro/base_allocator_builder_spec.rb index f2131a1b..2b652f67 100644 --- a/spec/knapsack_pro/base_allocator_builder_spec.rb +++ b/spec/knapsack_pro/base_allocator_builder_spec.rb @@ -2,6 +2,62 @@ let(:adapter_class) { KnapsackPro::Adapters::BaseAdapter } let(:allocator_builder) { described_class.new(adapter_class) } + describe 'initialize method' do + context 'when unknown adapter (base adapter)' do + let(:adapter_class) { KnapsackPro::Adapters::BaseAdapter } + + it do + allocator_builder + expect(ENV['KNAPSACK_PRO_TEST_RUNNER']).to be_nil + end + end + + context 'when RSpec adapter' do + let(:adapter_class) { KnapsackPro::Adapters::RSpecAdapter } + + it do + allocator_builder + expect(ENV['KNAPSACK_PRO_TEST_RUNNER']).to eq 'rspec' + end + end + + context 'when Cucumber adapter' do + let(:adapter_class) { KnapsackPro::Adapters::CucumberAdapter } + + it do + allocator_builder + expect(ENV['KNAPSACK_PRO_TEST_RUNNER']).to eq 'cucumber' + end + end + + context 'when Minitest adapter' do + let(:adapter_class) { KnapsackPro::Adapters::MinitestAdapter } + + it do + allocator_builder + expect(ENV['KNAPSACK_PRO_TEST_RUNNER']).to eq 'minitest' + end + end + + context 'when Spinach adapter' do + let(:adapter_class) { KnapsackPro::Adapters::SpinachAdapter } + + it do + allocator_builder + expect(ENV['KNAPSACK_PRO_TEST_RUNNER']).to eq 'spinach' + end + end + + context 'when Test::Unit adapter' do + let(:adapter_class) { KnapsackPro::Adapters::TestUnitAdapter } + + it do + allocator_builder + expect(ENV['KNAPSACK_PRO_TEST_RUNNER']).to eq 'test-unit' + end + end + end + describe '#allocator' do subject { allocator_builder.allocator }