Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion crystalball.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@ Gem::Specification.new do |spec|
spec.add_development_dependency 'parser'
spec.add_development_dependency 'pry'
spec.add_development_dependency 'pry-byebug'
spec.add_development_dependency "rake", "~> 10.0"
spec.add_development_dependency 'psych', '~> 4.0.0'
spec.add_development_dependency "rake"
spec.add_development_dependency "rspec", "~> 3.0"
spec.add_development_dependency 'rubocop', ">= 0.56"
spec.add_development_dependency 'rubocop-rspec'
Expand Down
2 changes: 1 addition & 1 deletion lib/crystalball/extensions/git/lib.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ def merge_base(*args)

arg_opts = opts.map { |k, v| "--#{k}" if v }.compact + args

command('merge-base', arg_opts)
command('merge-base', arg_opts.each { |opt| return opt })
end
end
end
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ def apply!
# Overrides `FactoryBot::FactoryRunner#run`. Pushes factory name to
# `FactoryBotStrategy.used_factories` and calls original `run`
def run(*)
factory = FactoryBotStrategy.factory_bot_constant.factory_by_name(@name)
factory = FactoryBotStrategy.factory_bot_constant::Internal.factory_by_name(@name)
FactoryBotStrategy.used_factories << factory.name.to_s
super
end
Expand Down
5 changes: 3 additions & 2 deletions lib/crystalball/map_storage/yaml_storage.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def read_files(path)

paths.map do |file|
metadata, *example_groups = file.read.split("---\n").reject(&:empty?).map do |yaml|
YAML.safe_load(yaml, [Symbol])
YAML.safe_load(yaml, permitted_classes: [Symbol])
end
example_groups = example_groups.inject(&:merge!)

Expand All @@ -42,7 +42,8 @@ def read_files(path)
end

def guard_metadata_consistency(metadata)
uniq = metadata.uniq
# check for consistency except for timestamp - to enable parallel map generation
uniq = metadata.uniq{ |m| m.keys.concat(m.values_at(:type, :commit, :version)) }
raise "Can't load execution maps with different metadata. Metadata: #{uniq}" if uniq.size > 1
end
end
Expand Down
15 changes: 12 additions & 3 deletions lib/crystalball/rails/map_generator/i18n_strategy/simple_patch.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,15 +37,16 @@ def revert!
# Will replace original `I18n::Backend::Simple#load_file`.
# Stores filename in current thread
def cb_patched_load_file(filename, *args)
Thread.current[:cb_locale_file_name] = filename
set_cb_locale_file_name(filename)
cb_original_load_file(filename, *args)
end

# Will replace original `I18n::Backend::Simple#store_translations`.
# Adds filename for each value
def cb_patched_store_translations(locale, data, *args)
cb_add_filename_to_values(data, Thread.current[:cb_locale_file_name])
cb_original_store_translations(locale, data, *args)
data_unfreeze = data.dup
cb_add_filename_to_values(data_unfreeze, get_cb_locale_file_name)
cb_original_store_translations(locale, data_unfreeze, *args)
end

# Will replace original `I18n::Backend::Simple#lookup`.
Expand All @@ -57,6 +58,14 @@ def cb_patched_lookup(*args)

private

def set_cb_locale_file_name(filename)
Thread.current[:cb_locale_file_name] = filename
end

def get_cb_locale_file_name
Thread.current[:cb_locale_file_name]
end

def cb_add_filename_to_values(data, filename)
data.each do |key, value|
case value
Expand Down
2 changes: 1 addition & 1 deletion lib/crystalball/rspec/runner.rb
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ def config
@config ||= begin
config_src = if config_file
require 'yaml'
YAML.safe_load(config_file.read)
YAML.safe_load(config_file.read, permitted_classes: [Symbol])
else
{}
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,9 @@ def run(*); end
let(:used_factories) { [] }

before do
class_double('FactoryBotConstant::Internal', factory_by_name: nil).as_stubbed_const
allow(Crystalball::MapGenerator::FactoryBotStrategy).to receive(:used_factories).and_return(used_factories)
allow(FactoryBotConstant).to receive(:factory_by_name).with(:bad_dummy) { double(name: :dummy) }
allow(FactoryBotConstant::Internal).to receive(:factory_by_name).with(:bad_dummy) { double(name: :dummy) }
instance.instance_variable_set(:@name, :bad_dummy)
end

Expand Down
4 changes: 2 additions & 2 deletions spec/map_generator_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ def s.call(example_group_map, _example)
end

it 'dump new map metadata to storage' do
expect(storage).to receive(:dump).with(type: map_class.to_s, commit: 'abc', timestamp: 1234, version: 1.0)
expect(storage).to receive(:dump).with({ type: map_class.to_s, commit: 'abc', timestamp: 1234, version: 1.0 })
subject.start!
end

Expand Down Expand Up @@ -181,7 +181,7 @@ def example_map(uid)
allow(configuration.strategies).to receive(:run).with(kind_of(Crystalball::ExampleGroupMap), any_args)
.and_return(example_map('1'), example_map('2'), example_map('3'))

expect(storage).to receive(:dump).with('1' => [], '2' => []).once
expect(storage).to receive(:dump).with({ '1' => [], '2' => [] }).once
expect_any_instance_of(map_class).to receive(:clear!).once.and_call_original
subject.refresh_for_case(rspec_example('1'))
subject.refresh_for_case(rspec_example('2'))
Expand Down
5 changes: 3 additions & 2 deletions spec/rails/map_generator/i18n_strategy/simple_patch_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -67,11 +67,12 @@ def lookup; end
let(:locale) { :en }
let(:data) { {user: {name: 'John'}} }
let(:filename) { 'locale/foo.yml' }
let(:thread) { class_double(Thread) }

before { allow(Thread.current).to receive(:[]).with(:cb_locale_file_name) { filename } }
before { allow_any_instance_of(described_class).to receive(:get_cb_locale_file_name).and_return(filename) }

it do
expect(instance).to receive(:cb_original_store_translations).with(locale, user: {name: {cb_filename: filename, cb_value: 'John'}})
expect(instance).to receive(:cb_original_store_translations).with(locale, { user: {name: {cb_filename: filename, cb_value: 'John'}} })
subject
end

Expand Down
4 changes: 2 additions & 2 deletions spec/rails/tables_map_generator_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@
end

it 'dump new map metadata to storage' do
expect(storage).to receive(:dump).with(type: map_class.to_s, commit: 'abc', version: 1.0)
expect(storage).to receive(:dump).with({ type: map_class.to_s, commit: 'abc', version: 1.0 })
subject.start!
end
end
Expand All @@ -101,7 +101,7 @@
end

specify do
expect(storage).to receive(:dump).with('Dummy' => ['file1'])
expect(storage).to receive(:dump).with({ 'Dummy' => ['file1'] })
subject.finalize!
end
end
Expand Down
2 changes: 1 addition & 1 deletion spec/rspec/runner_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
end

context 'with CRYSTALBALL_CONFIG env variable set' do
let(:expected_config) { YAML.safe_load(Pathname('spec/fixtures/crystalball.yml').read) }
let(:expected_config) { YAML.safe_load(Pathname('spec/fixtures/crystalball.yml').read, permitted_classes: [Symbol]) }

around do |example|
ENV['CRYSTALBALL_CONFIG'] = 'spec/fixtures/crystalball.yml'
Expand Down