Best Knapsack_ruby code snippet using Knapsack.Config.test_file_pattern
allocator_builder_spec.rb
Source:allocator_builder_spec.rb
...3 let(:allocator) { double }4 let(:report) { double }5 let(:knapsack_report) { instance_double(Knapsack::Report) }6 let(:adapter_report_path) { adapter_class::REPORT_PATH }7 let(:adapter_test_file_pattern) { adapter_class::TEST_DIR_PATTERN }8 let(:env_ci_node_total) { double }9 let(:env_ci_node_index) { double }10 let(:env_report_path) { nil }11 let(:env_test_file_pattern) { nil }12 describe '#allocator' do13 subject { allocator_builder.allocator }14 before do15 expect(Knapsack::Config::Env).to receive(:report_path).and_return(env_report_path)16 expect(Knapsack::Config::Env).to receive(:test_file_pattern).and_return(env_test_file_pattern)17 expect(Knapsack::Config::Env).to receive(:ci_node_total).and_return(env_ci_node_total)18 expect(Knapsack::Config::Env).to receive(:ci_node_index).and_return(env_ci_node_index)19 expect(Knapsack).to receive(:report).twice.and_return(knapsack_report)20 expect(knapsack_report).to receive(:open).and_return(report)21 expect(knapsack_report).to receive(:config).with(report_config)22 expect(Knapsack::Allocator).to receive(:new).with(allocator_args).and_return(allocator)23 end24 shared_examples 'allocator builder' do25 context 'when ENVs are nil' do26 let(:report_config) { { report_path: adapter_report_path } }27 let(:allocator_args) do28 {29 report: report,30 test_file_pattern: adapter_test_file_pattern,31 ignore_test_file_pattern: nil,32 ci_node_total: env_ci_node_total,33 ci_node_index: env_ci_node_index34 }35 end36 it { should eql allocator }37 end38 context 'when ENV report_path has value' do39 let(:env_report_path) { 'knapsack_custom_report.json' }40 let(:report_config) { { report_path: env_report_path } }41 let(:allocator_args) do42 {43 report: report,44 test_file_pattern: adapter_test_file_pattern,45 ignore_test_file_pattern: nil,46 ci_node_total: env_ci_node_total,47 ci_node_index: env_ci_node_index48 }49 end50 it { should eql allocator }51 end52 context 'when ENV test_file_pattern has value' do53 let(:env_test_file_pattern) { 'custom_spec/**{,/*/**}/*_spec.rb' }54 let(:report_config) { { report_path: adapter_report_path } }55 let(:allocator_args) do56 {57 report: report,58 test_file_pattern: env_test_file_pattern,59 ignore_test_file_pattern: nil,60 ci_node_total: env_ci_node_total,61 ci_node_index: env_ci_node_index62 }63 end64 it { should eql allocator }65 end66 end67 context 'when RSpecAdapter' do68 let(:adapter_class) { Knapsack::Adapters::RSpecAdapter }69 it_behaves_like 'allocator builder'70 end71 # To make sure we do not break backwards compatibility72 context 'when RspecAdapter' do73 let(:adapter_class) { Knapsack::Adapters::RspecAdapter }74 it_behaves_like 'allocator builder'75 end76 context 'when CucumberAdapter' do77 let(:adapter_class) { Knapsack::Adapters::CucumberAdapter }78 it_behaves_like 'allocator builder'79 end80 end81 describe '#test_dir' do82 let(:adapter_class) { Knapsack::Adapters::RSpecAdapter }83 subject { allocator_builder.test_dir }84 context 'when ENV test_dir has value' do85 before do86 expect(Knapsack::Config::Env).to receive(:test_dir).and_return("custom_spec")87 end88 it { should eq 'custom_spec' }89 end90 context 'when ENV test_dir has no value' do91 before do92 expect(Knapsack::Config::Env).to receive(:test_file_pattern).and_return(env_test_file_pattern)93 end94 context 'when ENV test_file_pattern has value' do95 let(:env_test_file_pattern) { 'custom_spec/**{,/*/**}/*_spec.rb' }96 it { should eq 'custom_spec' }97 end98 context 'when ENV test_file_pattern has no value' do99 it { should eq 'spec' }100 end101 end102 end103end...
test_file_finder.rb
Source:test_file_finder.rb
1module KnapsackPro2 class TestFileFinder3 def self.call(test_file_pattern, test_file_list_enabled: true)4 new(test_file_pattern, test_file_list_enabled).call5 end6 # finds slow test files on disk based on ENV patterns7 # returns example: [{ 'path' => 'a_spec.rb' }]8 def self.slow_test_files_by_pattern(adapter_class)9 raise 'KNAPSACK_PRO_SLOW_TEST_FILE_PATTERN is not defined' unless KnapsackPro::Config::Env.slow_test_file_pattern10 test_file_pattern = KnapsackPro::TestFilePattern.call(adapter_class)11 test_file_entities = call(test_file_pattern)12 slow_test_file_entities = call(KnapsackPro::Config::Env.slow_test_file_pattern, test_file_list_enabled: false)13 # slow test files (KNAPSACK_PRO_SLOW_TEST_FILE_PATTERN)14 # should be subset of test file pattern (KNAPSACK_PRO_TEST_FILE_PATTERN)15 slow_test_file_entities & test_file_entities16 end17 # Args:18 # test_file_entities_to_run - it can be list of slow test files that you want to run19 # Return:20 # subset of test_file_entities_to_run that are present on disk and it is subset of tests matching pattern KNAPSACK_PRO_TEST_FILE_PATTERN21 # Thanks to that we can select only slow test files that are within list of test file pattern we want to run tests for22 def self.select_test_files_that_can_be_run(adapter_class, test_file_entities_to_run)23 test_file_pattern = KnapsackPro::TestFilePattern.call(adapter_class)24 test_file_entities = call(test_file_pattern)25 test_file_paths_existing_on_disk = KnapsackPro::TestFilePresenter.paths(test_file_entities)26 selected_test_files = []27 test_file_entities_to_run.each do |test_file_entity|28 if test_file_paths_existing_on_disk.include?(test_file_entity.fetch('path'))29 selected_test_files << test_file_entity30 end31 end32 selected_test_files33 end34 def initialize(test_file_pattern, test_file_list_enabled)35 @test_file_pattern = test_file_pattern36 @test_file_list_enabled = test_file_list_enabled37 end38 def call39 test_file_hashes = []40 test_files.each do |test_file_path|41 test_file_hashes << test_file_hash_for(test_file_path)42 end43 test_file_hashes44 end45 private46 attr_reader :test_file_pattern, :test_file_list_enabled47 def test_files48 if test_file_list_enabled && KnapsackPro::Config::Env.test_file_list49 return KnapsackPro::Config::Env.test_file_list.split(',').map(&:strip)50 end51 if test_file_list_enabled && KnapsackPro::Config::Env.test_file_list_source_file52 return File.read(KnapsackPro::Config::Env.test_file_list_source_file).split(/\n/)53 end54 test_file_paths = Dir.glob(test_file_pattern).uniq55 excluded_test_file_paths =56 if KnapsackPro::Config::Env.test_file_exclude_pattern57 Dir.glob(KnapsackPro::Config::Env.test_file_exclude_pattern).uniq58 else59 []60 end61 (test_file_paths - excluded_test_file_paths).sort62 end63 def test_file_hash_for(test_file_path)64 {65 'path' => TestFileCleaner.clean(test_file_path)66 }67 end68 end...
allocator_builder.rb
Source:allocator_builder.rb
...6 end7 def allocator8 Knapsack::Allocator.new({9 report: Knapsack.report.open,10 test_file_pattern: test_file_pattern,11 ignore_test_file_pattern: ignore_test_file_pattern,12 ci_node_total: Knapsack::Config::Env.ci_node_total,13 ci_node_index: Knapsack::Config::Env.ci_node_index14 })15 end16 def test_dir17 Knapsack::Config::Env.test_dir || test_file_pattern.split('/').first18 end19 private20 def set_report_path21 Knapsack.report.config({22 report_path: report_path23 })24 end25 def report_path26 Knapsack::Config::Env.report_path || @adapter_class::REPORT_PATH27 end28 def test_file_pattern29 Knapsack::Config::Env.test_file_pattern || @adapter_class::TEST_DIR_PATTERN30 end31 def ignore_test_file_pattern32 Knapsack::Config::Env.ignore_test_file_pattern33 end34 end35end...
test_file_pattern
Using AI Code Generation
1test_file_pattern = knapsack_config.test_file_pattern('test/1.rb')2test_file_pattern = knapsack_config.test_file_pattern('test/2.rb')3test_file_pattern = knapsack_config.test_file_pattern('test/3.rb')4test_file_pattern = knapsack_config.test_file_pattern('test/4.rb')5test_file_pattern = knapsack_config.test_file_pattern('test/5.rb')6test_file_pattern = knapsack_config.test_file_pattern('
test_file_pattern
Using AI Code Generation
1puts Knapsack::Config.test_file_pattern.match?('test/path/to/file_spec.rb')2puts Knapsack::Adapters::BaseAdapter.test_file_pattern.match?('test/path/to/file_spec.rb')3puts Knapsack::Adapters::RSpecAdapter.test_file_pattern.match?('test/path/to/file_spec.rb')4puts Knapsack::Adapters::CucumberAdapter.test_file_pattern.match?('test/path/to/file_spec.rb')5puts Knapsack::Adapters::MinitestAdapter.test_file_pattern.match?('test/path/to/file_spec.rb')6puts Knapsack::Adapters::SpinachAdapter.test_file_pattern.match?('test/path/to/file_spec.rb')7puts Knapsack::Adapters::TestUnitAdapter.test_file_pattern.match?('test/path/to/file_spec.rb')
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!