From ea981f712d766a9ef60f1efb7a142670fe054fdf Mon Sep 17 00:00:00 2001 From: Kyrylo Silin Date: Thu, 6 Jun 2024 13:08:23 +0300 Subject: [PATCH] Add Telebugs::Promise and make Telebugs.notify return it --- .standard.yml | 1 + lib/telebugs.rb | 5 ++++- lib/telebugs/promise.rb | 15 +++++++++++++++ test/test_promise.rb | 11 +++++++++++ test/test_telebugs.rb | 2 +- 5 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 .standard.yml create mode 100644 lib/telebugs/promise.rb create mode 100644 test/test_promise.rb diff --git a/.standard.yml b/.standard.yml new file mode 100644 index 0000000..6b30e78 --- /dev/null +++ b/.standard.yml @@ -0,0 +1 @@ +ruby_version: 3.0 diff --git a/lib/telebugs.rb b/lib/telebugs.rb index 41c0488..354872c 100644 --- a/lib/telebugs.rb +++ b/lib/telebugs.rb @@ -1,7 +1,10 @@ # frozen_string_literal: true +require "concurrent" + require_relative "telebugs/version" require_relative "telebugs/config" +require_relative "telebugs/promise" module Telebugs # The general error that this library uses when it wants to raise. @@ -13,7 +16,7 @@ def configure end def notify(error:) - Concurrent::Promises.future do + Telebugs::Promise.new(error) do end end end diff --git a/lib/telebugs/promise.rb b/lib/telebugs/promise.rb new file mode 100644 index 0000000..8026658 --- /dev/null +++ b/lib/telebugs/promise.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module Telebugs + # Wraps Concurrent::Promise to provide a consistent API for promises that we + # can control. + class Promise + def initialize(...) + @future = Concurrent::Promises.future(...) + end + + def value + @future.value + end + end +end diff --git a/test/test_promise.rb b/test/test_promise.rb new file mode 100644 index 0000000..b03f40c --- /dev/null +++ b/test/test_promise.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +require "test_helper" + +class TestPromise < Minitest::Test + def test_future_value + promise = Telebugs::Promise.new { 1 + 1 } + + assert_equal 2, promise.value + end +end diff --git a/test/test_telebugs.rb b/test/test_telebugs.rb index 4ce804a..3170d26 100644 --- a/test/test_telebugs.rb +++ b/test/test_telebugs.rb @@ -20,6 +20,6 @@ def test_configure_configures_project_key def test_notify_returns_a_future future = Telebugs.notify(error: StandardError.new) - assert_instance_of Concurrent::Promises::Future, future + assert_instance_of Telebugs::Promise, future end end