diff --git a/lib/minitrace.rb b/lib/minitrace.rb index 03ad930..e503d53 100644 --- a/lib/minitrace.rb +++ b/lib/minitrace.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require "minitrace/version" +require "minitrace/backends" require "minitrace/event" # A minimalist tracing framework. diff --git a/lib/minitrace/backend.rb b/lib/minitrace/backend.rb new file mode 100644 index 0000000..9c33a22 --- /dev/null +++ b/lib/minitrace/backend.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class Minitrace::Backend + def process(event) + raise NotImplementedError + end +end diff --git a/lib/minitrace/backends.rb b/lib/minitrace/backends.rb new file mode 100644 index 0000000..d26c863 --- /dev/null +++ b/lib/minitrace/backends.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require "minitrace/backend" + +module Minitrace::Backends + autoload :Spy, "minitrace/backends/spy" +end diff --git a/lib/minitrace/backends/spy.rb b/lib/minitrace/backends/spy.rb new file mode 100644 index 0000000..6a97c2e --- /dev/null +++ b/lib/minitrace/backends/spy.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class Minitrace::Backends::Spy < Minitrace::Backend + def processed + @processed ||= [] + end + + def process(event) + processed << event + end +end diff --git a/test/lib/minitrace/backends/spy_test.rb b/test/lib/minitrace/backends/spy_test.rb new file mode 100644 index 0000000..fb4c423 --- /dev/null +++ b/test/lib/minitrace/backends/spy_test.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +require "test_helper" + +class Minitrace::Backends::SpyTest < Minitest::Test + def test_process + spy = Minitrace::Backends::Spy.new + + a = Minitrace::Event.new + spy.process(a) + + b = Minitrace::Event.new + spy.process(b) + + c = Minitrace::Event.new + spy.process(c) + + assert { spy.processed == [a, b, c] } + end +end