diff --git a/lib/test_prof/recipes/minitest/sample.rb b/lib/test_prof/recipes/minitest/sample.rb index df4fbcf3..ba6a1810 100644 --- a/lib/test_prof/recipes/minitest/sample.rb +++ b/lib/test_prof/recipes/minitest/sample.rb @@ -29,11 +29,18 @@ def sample_examples(sample_size) all_examples = suites.flat_map do |runnable| runnable.runnable_methods.map { |method| [runnable, method] } end - sample = all_examples.sample(sample_size) + + sample = all_examples.sample(sample_size).group_by(&:first) + sample.transform_values! { |v| v.map(&:last) } + # Filter examples by overriding #runnable_methods for all suites suites.each do |runnable| - runnable.define_singleton_method(:runnable_methods) do - super() & sample.select { |ex| ex.first.equal?(runnable) }.map(&:last) + if sample.key?(runnable) + runnable.define_singleton_method(:runnable_methods) do + super() & sample[runnable] + end + else + runnable.define_singleton_method(:runnable_methods) { [] } end end end