Skip to content

Commit 67743b2

Browse files
TeamNautilusarielvalentinkaylareopelle
authored
fix: handle force_flush for rake task with arguments (#1412)
Co-authored-by: Ariel Valentin <[email protected]> Co-authored-by: Kayla Reopelle <[email protected]>
1 parent 434473c commit 67743b2

File tree

2 files changed

+24
-1
lines changed
  • instrumentation/rake
    • lib/opentelemetry/instrumentation/rake/patches
    • test/opentelemetry/instrumentation/rake/patches

2 files changed

+24
-1
lines changed

instrumentation/rake/lib/opentelemetry/instrumentation/rake/patches/task.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,11 @@ def tracer
2929
end
3030

3131
def force_flush
32-
OpenTelemetry.tracer_provider.force_flush if ::Rake.application.top_level_tasks.include?(name)
32+
top_level_task_names = ::Rake.application.top_level_tasks.map { |t| t.split('[').first }
33+
34+
if top_level_task_names.include?(name)
35+
OpenTelemetry.tracer_provider.force_flush
36+
end
3337
end
3438
end
3539
end

instrumentation/rake/test/opentelemetry/instrumentation/rake/patches/task_test.rb

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,25 @@
5656
_(execute_span.parent_span_id).must_equal(invoke_span.span_id)
5757
end
5858

59+
describe 'with a task argument' do
60+
it 'should call force_flush on OpenTelemetry.tracer_provider' do
61+
mock = Minitest::Mock.new
62+
mock.expect(:force_flush, nil)
63+
mock.expect(:force_flush, nil)
64+
65+
Rake::Task.define_task("#{task_name}[:arg]")
66+
task_string = "#{task_name}[test_arg]"
67+
68+
Rake.application.instance_eval { @top_level_tasks = [task_string] }
69+
70+
OpenTelemetry.stub(:tracer_provider, mock) do
71+
Rake.application.invoke_task(task_string)
72+
end
73+
74+
mock.verify
75+
end
76+
end
77+
5978
describe 'with a prerequisite task' do
6079
before do
6180
Rake::Task.define_task(prerequisite_task_name)

0 commit comments

Comments
 (0)