diff --git a/lib/dry/system.rb b/lib/dry/system.rb index f0bd4c66c..1707f6270 100644 --- a/lib/dry/system.rb +++ b/lib/dry/system.rb @@ -27,17 +27,6 @@ def self.register_provider_sources(path) provider_sources.load_sources(path) end - def self.register_provider(_name, options) - Dry::Core::Deprecations.announce( - "Dry::System.register_provider", - "Use `Dry::System.register_provider_sources` instead", - tag: "dry-system", - uplevel: 1 - ) - - register_provider_sources(options.fetch(:path)) - end - # Registers a provider source, which can be used as the basis for other providers # # @api public @@ -49,26 +38,10 @@ def self.register_provider_source(name, group:, source: nil, &block) if source provider_sources.register(name: name, group: group, source: source) else - provider_sources.register_from_block( - name: name, - group: group, - target_container: self, - &block - ) + provider_sources.register_from_block(name: name, group: group, &block) end end - def self.register_component(name, provider:, &block) - Dry::Core::Deprecations.announce( - "Dry::System.register_component", - "Use `Dry::System.register_provider_source` instead", - tag: "dry-system", - uplevel: 1 - ) - - register_provider_source(name, group: provider, &block) - end - # @api private def self.provider_sources @provider_sources ||= ProviderSourceRegistry.new diff --git a/lib/dry/system/components.rb b/lib/dry/system/components.rb deleted file mode 100644 index 7f1485ad4..000000000 --- a/lib/dry/system/components.rb +++ /dev/null @@ -1,10 +0,0 @@ -# frozen_string_literal: true - -Dry::Core::Deprecations.announce( - "require \"dry/system/components\"", - "Use `require \"dry/system/provider_sources\"` instead", - tag: "dry-system", - uplevel: 1 -) - -require_relative "provider_sources" diff --git a/lib/dry/system/config/component_dir.rb b/lib/dry/system/config/component_dir.rb index 0f98870f1..36987606b 100644 --- a/lib/dry/system/config/component_dir.rb +++ b/lib/dry/system/config/component_dir.rb @@ -190,40 +190,6 @@ class ComponentDir # @api public setting :add_to_load_path, default: true - # @api public - def default_namespace=(namespace) - Dry::Core::Deprecations.announce( - "Dry::System::Config::ComponentDir#default_namespace=", - "Add a namespace instead: `dir.namespaces.add #{namespace.to_s.inspect}, key: nil`", - tag: "dry-system", - uplevel: 1 - ) - - # We don't have the configured separator here, so the best we can do is guess - # that it's a dot - namespace_path = namespace.gsub(".", PATH_SEPARATOR) - - return if namespaces.namespaces[namespace_path] - - namespaces.add namespace_path, key: nil - end - - # @api public - def default_namespace - Dry::Core::Deprecations.announce( - "Dry::System::Config::ComponentDir#default_namespace", - "Use namespaces instead, e.g. `dir.namespaces`", - tag: "dry-system", - uplevel: 1 - ) - - ns_path = namespaces.to_a.reject(&:root?).first&.path - - # We don't have the configured separator here, so the best we can do is guess - # that it's a dot - ns_path&.gsub(PATH_SEPARATOR, ".") - end - # @!endgroup # Returns the component dir path, relative to the configured container root diff --git a/lib/dry/system/config/namespaces.rb b/lib/dry/system/config/namespaces.rb index c5ca5abbb..e3620e664 100644 --- a/lib/dry/system/config/namespaces.rb +++ b/lib/dry/system/config/namespaces.rb @@ -44,19 +44,7 @@ def namespace(path) # @return [Namespace, nil] the root namespace, if configured # # @api public - def root(**options) - if options.any? - Dry::Core::Deprecations.announce( - "Dry::System::Config::Namespaces#root (with arguments)", - "Use `#add_root(key: nil, const: nil)` instead", - tag: "dry-system", - uplevel: 1 - ) - - add_root(**options) - return - end - + def root namespaces[Namespace::ROOT_PATH] end diff --git a/lib/dry/system/container.rb b/lib/dry/system/container.rb index eb1560801..51e2e4046 100644 --- a/lib/dry/system/container.rb +++ b/lib/dry/system/container.rb @@ -59,7 +59,6 @@ class Container setting :name setting :root, default: Pathname.pwd.freeze, constructor: ->(path) { Pathname(path) } setting :provider_dirs, default: ["system/providers"] - setting :bootable_dirs # Deprecated for provider_dirs, see .provider_paths below setting :registrations_dir, default: "system/registrations" setting :component_dirs, default: Config::ComponentDirs.new, cloneable: true setting :exports, reader: true @@ -73,8 +72,6 @@ class Container config.namespace_separator = KEY_SEPARATOR class << self - extend Dry::Core::Deprecations["Dry::System::Container"] - # @!method config # Returns the configuration for the container # @@ -179,27 +176,9 @@ def configured? # been finalized # # @api public - def import(keys: nil, from: Undefined, as: Undefined, **deprecated_import_hash) + def import(from:, as:, keys: nil) raise Dry::System::ContainerAlreadyFinalizedError if finalized? - if deprecated_import_hash.any? - Dry::Core::Deprecations.announce( - "Dry::System::Container.import with {namespace => container} hash", - "Use Dry::System::Container.import(from: container, as: namespace) instead", - tag: "dry-system", - uplevel: 1 - ) - - deprecated_import_hash.each do |namespace, container| - importer.register(container: container, namespace: namespace) - end - return self - elsif from == Undefined || as == Undefined - # These keyword arguments can become properly required in the params list once - # we remove the deprecation shim above - raise ArgumentError, "required keyword arguments: :from, :as" - end - importer.register(container: from, namespace: as, keys: keys) self @@ -298,26 +277,6 @@ def register_provider(...) # rubocop:enable Layout/LineLength - # @see .register_provider - # @api public - def boot(name, **opts, &block) - Dry::Core::Deprecations.announce( - "Dry::System::Container.boot", - "Use `Dry::System::Container.register_provider` instead", - tag: "dry-system", - uplevel: 1 - ) - - register_provider( - name, - namespace: opts[:namespace], - from: opts[:from], - source: opts[:key], - &block - ) - end - deprecate :finalize, :boot - # Return if a container was finalized # # @return [TrueClass, FalseClass] @@ -410,7 +369,6 @@ def prepare(name) providers.prepare(name) self end - deprecate :init, :prepare # Stop a specific component but calls only `stop` lifecycle trigger # @@ -570,7 +528,6 @@ def component_dirs def providers @providers ||= config.provider_registrar.new(self) end - deprecate :booter, :providers # @api private def auto_registrar diff --git a/lib/dry/system/errors.rb b/lib/dry/system/errors.rb index ff3e9d401..54e2cb786 100644 --- a/lib/dry/system/errors.rb +++ b/lib/dry/system/errors.rb @@ -2,8 +2,6 @@ module Dry module System - extend Dry::Core::Deprecations["dry-system"] - # Error raised when import is called on an already finalized container # # @api public @@ -48,8 +46,6 @@ def initialize(provider_name) super("Provider #{provider_name.inspect} has already been registered") end end - DuplicatedComponentKeyError = ProviderAlreadyRegisteredError - deprecate_constant :DuplicatedComponentKeyError # Error raised when a named provider could not be found # @@ -59,8 +55,6 @@ def initialize(name) super("Provider #{name.inspect} not found") end end - InvalidComponentError = ProviderNotFoundError - deprecate_constant :InvalidComponentError # Error raised when a named provider source could not be found # diff --git a/lib/dry/system/provider/source.rb b/lib/dry/system/provider/source.rb index f02dd7bac..42ad58b14 100644 --- a/lib/dry/system/provider/source.rb +++ b/lib/dry/system/provider/source.rb @@ -37,11 +37,11 @@ class << self # @see Dry::System::Provider::SourceDSL # # @api private - def for(name:, group: nil, target_container:, &block) # rubocop:disable Style/KeywordParametersOrder + def for(name:, group: nil, &block) Class.new(self) { |klass| klass.source_name name klass.source_group group - SourceDSL.evaluate(klass, target_container, &block) if block + SourceDSL.evaluate(klass, &block) if block } end @@ -183,21 +183,6 @@ def start; end # @api public def stop; end - def use(*provider_names) - Dry::Core::Deprecations.announce( - "Dry::System::Provider#use", - "Use `target_container.start` instead, e.g. `target_container.start(:another_provider)`", # rubocop:disable Layout/LineLength - tag: "dry-system", - uplevel: 1 - ) - - provider_names.each do |name| - target_container.start(name) - end - - self - end - # Registers a "before" callback for the given lifecycle step. # # The given block will be run before the lifecycle step method is run. The block @@ -212,17 +197,6 @@ def use(*provider_names) # # @api public def before(step_name, &block) - if step_name.to_sym == :init - Dry::Core::Deprecations.announce( - "Dry::System::Provider before(:init) callback", - "Use `before(:prepare)` callback instead", - tag: "dry-system", - uplevel: 1 - ) - - step_name = :prepare - end - callbacks[:before][step_name] << block self end @@ -241,17 +215,6 @@ def before(step_name, &block) # # @api public def after(step_name, &block) - if step_name.to_sym == :init - Dry::Core::Deprecations.announce( - "Dry::System::Provider after(:init) callback", - "Use `after(:prepare)` callback instead", - tag: "dry-system", - uplevel: 1 - ) - - step_name = :prepare - end - callbacks[:after][step_name] << block self end @@ -259,18 +222,7 @@ def after(step_name, &block) # @api private def run_callback(hook, step) callbacks[hook][step].each do |callback| - if callback.parameters.any? - Dry::Core::Deprecations.announce( - "Dry::System::Provider::Source.before and .after callbacks with single block parameter", # rubocop:disable Layout/LineLength - "Use `provider_container` (or `container` for short) inside your block instead", - tag: "dry-system", - uplevel: 1 - ) - - instance_exec(provider_container, &callback) - else - instance_eval(&callback) - end + instance_eval(&callback) end end diff --git a/lib/dry/system/provider/source_dsl.rb b/lib/dry/system/provider/source_dsl.rb index bee6bf8f3..f82caca3f 100644 --- a/lib/dry/system/provider/source_dsl.rb +++ b/lib/dry/system/provider/source_dsl.rb @@ -10,19 +10,8 @@ class Provider # # @api private class SourceDSL - extend Dry::Core::Deprecations["Dry::System::Provider::SourceDSL"] - - def self.evaluate(source_class, target_container, &block) - if block.parameters.any? - Dry::Core::Deprecations.announce( - "Dry::System.register_provider with single block parameter", - "Use `target_container` (or `target` for short) inside your block instead", - tag: "dry-system" - ) - new(source_class).instance_exec(target_container, &block) - else - new(source_class).instance_eval(&block) - end + def self.evaluate(source_class, &block) + new(source_class).instance_eval(&block) end attr_reader :source_class @@ -35,35 +24,9 @@ def setting(...) source_class.setting(...) end - # rubocop:disable Layout/LineLength - - def settings(&block) - Dry::Core::Deprecations.announce( - "Dry::System.register_provider with nested settings block", - "Use individual top-level `setting` declarations instead (see dry-configurable docs for details)", - tag: "dry-system", - uplevel: 1 - ) - - DeprecatedSettingsDSL.new(self).instance_eval(&block) - end - - # rubocop:enable Layout/LineLength - - class DeprecatedSettingsDSL - def initialize(base_dsl) - @base_dsl = base_dsl - end - - def key(name, type) - @base_dsl.setting(name, constructor: type) - end - end - def prepare(&block) source_class.define_method(:prepare, &block) end - deprecate :init, :prepare def start(&block) source_class.define_method(:start, &block) diff --git a/lib/dry/system/provider_registrar.rb b/lib/dry/system/provider_registrar.rb index 1597b827b..f0ae4bb9f 100644 --- a/lib/dry/system/provider_registrar.rb +++ b/lib/dry/system/provider_registrar.rb @@ -15,8 +15,6 @@ module System # # @api private class ProviderRegistrar - extend Dry::Core::Deprecations["Dry::System::Container"] - # @api private attr_reader :providers @@ -138,7 +136,6 @@ def provider_files end }.first end - deprecate :boot_files, :provider_files # @api private def finalize! @@ -184,24 +181,9 @@ def stop(provider_name) private - # rubocop:disable Metrics/AbcSize, Metrics/PerceivedComplexity, Layout/LineLength # @api private def provider_paths provider_dirs = container.config.provider_dirs - bootable_dirs = container.config.bootable_dirs || ["system/boot"] - - if container.config.provider_dirs == ["system/providers"] && \ - provider_dirs.none? { |d| container.root.join(d).exist? } && \ - bootable_dirs.any? { |d| container.root.join(d).exist? } - Dry::Core::Deprecations.announce( - "Dry::System::Container.config.bootable_dirs (defaulting to 'system/boot')", - "Use `Dry::System::Container.config.provider_dirs` (defaulting to 'system/providers') instead", - tag: "dry-system", - uplevel: 2 - ) - - provider_dirs = bootable_dirs - end provider_dirs.map { |dir| dir = Pathname(dir) @@ -213,14 +195,9 @@ def provider_paths end } end - # rubocop:enable Metrics/AbcSize, Metrics/PerceivedComplexity, Layout/LineLength def build_provider(name, namespace:, source: nil, &block) - source_class = source || Provider::Source.for( - name: name, - target_container: container, - &block - ) + source_class = source || Provider::Source.for(name: name, &block) Provider.new( name: name, diff --git a/lib/dry/system/provider_source_registry.rb b/lib/dry/system/provider_source_registry.rb index 76236e01e..e75899b2e 100644 --- a/lib/dry/system/provider_source_registry.rb +++ b/lib/dry/system/provider_source_registry.rb @@ -22,31 +22,19 @@ def register(name:, group:, source:) sources[key(name, group)] = source end - def register_from_block(name:, group:, target_container:, &block) + def register_from_block(name:, group:, &block) register( name: name, group: group, source: Provider::Source.for( name: name, group: group, - target_container: target_container, &block ) ) end def resolve(name:, group:) - if group == :system - Dry::Core::Deprecations.announce( - "Providers using `from: :system`", - "Use `from: :dry_system` instead", - tag: "dry-system", - uplevel: 1 - ) - - group = :dry_system - end - sources[key(name, group)].tap { |source| unless source raise ProviderSourceNotFoundError.new( diff --git a/lib/dry/system/provider_sources/settings/config.rb b/lib/dry/system/provider_sources/settings/config.rb index f814361b3..168f9ba8f 100644 --- a/lib/dry/system/provider_sources/settings/config.rb +++ b/lib/dry/system/provider_sources/settings/config.rb @@ -51,19 +51,6 @@ def self.load(root:, env:, loader: Loader) end end - # rubocop:disable Layout/LineLength - def self.key(name, type) - Dry::Core::Deprecations.announce( - "Dry::System :settings provider source setting definition using `key`", - "Use `setting` instead, with dry-configurable `setting` options, e.g. `setting :my_setting, default: \"hello\", constructor: Types::String.constrained(min_length: 3)`", - tag: "dry-system", - uplevel: 1 - ) - - setting(name, constructor: type) - end - # rubocop:enable Layout/LineLength - include Dry::Configurable private diff --git a/lib/dry/system/provider_sources/settings/loader.rb b/lib/dry/system/provider_sources/settings/loader.rb index e27bd04ee..52d67132c 100644 --- a/lib/dry/system/provider_sources/settings/loader.rb +++ b/lib/dry/system/provider_sources/settings/loader.rb @@ -26,12 +26,6 @@ def load_dotenv(root, env) require "dotenv" Dotenv.load(*dotenv_files(root, env)) if defined?(Dotenv) rescue LoadError - Dry::Core::Deprecations.announce( - "Dry::System :settings provider now requires dotenv to to load settings from .env files`", # rubocop:disable Layout/LineLength - "Add `gem \"dotenv\"` to your application's `Gemfile`", - tag: "dry-system", - uplevel: 3 - ) # Do nothing if dotenv is unavailable end diff --git a/spec/integration/deprecations/deprecated_bootable_dirs_config_spec.rb b/spec/integration/deprecations/deprecated_bootable_dirs_config_spec.rb deleted file mode 100644 index c21e89297..000000000 --- a/spec/integration/deprecations/deprecated_bootable_dirs_config_spec.rb +++ /dev/null @@ -1,68 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "Deprecated bootable_dirs config" do - before do - # We don't care about the deprecation messages when we're not testing for them - # specifically - Dry::Core::Deprecations.set_logger!(StringIO.new) - end - - context "no explicit bootable_dirs config" do - subject(:container) do - module Test - class Container < Dry::System::Container - configure do |config| - config.root = SPEC_ROOT.join("fixtures/deprecations/bootable_dirs_config").realpath - end - end - end - - Test::Container - end - - it "uses 'system/boot' if it exists" do - container.start :logger - expect(container["logger"]).to eq "my logger" - end - - it "prints a deprecation notice" do - logger = StringIO.new - Dry::Core::Deprecations.set_logger! logger - - container.start :logger - - logger.rewind - expect(logger.string).to match(/Dry::System::Container\.config\.bootable_dirs.+is deprecated/m) - end - end - - context "explicit bootable_dirs config" do - subject(:container) do - module Test - class Container < Dry::System::Container - configure do |config| - config.root = SPEC_ROOT.join("fixtures/deprecations/bootable_dirs_config").realpath - config.bootable_dirs = ["system/custom_boot"] - end - end - end - - Test::Container - end - - it "uses the bootable_dirs config" do - container.start :logger - expect(container["logger"]).to eq "my logger" - end - - it "prints a deprecation notice" do - logger = StringIO.new - Dry::Core::Deprecations.set_logger! logger - - container.start :logger - - logger.rewind - expect(logger.string).to match(/Dry::System::Container\.config\.bootable_dirs.+is deprecated/m) - end - end -end diff --git a/spec/integration/deprecations/deprecated_container_boot_spec.rb b/spec/integration/deprecations/deprecated_container_boot_spec.rb deleted file mode 100644 index 8b95d94a2..000000000 --- a/spec/integration/deprecations/deprecated_container_boot_spec.rb +++ /dev/null @@ -1,61 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "Deprecated Dry::System::Container.boot" do - before do - Object.send(:remove_const, :ExternalComponents) if defined? ExternalComponents - require SPEC_ROOT.join("fixtures/external_components/lib/external_components") - - # We don't care about the deprecation messages when we're not testing for them - # specifically - Dry::Core::Deprecations.set_logger!(StringIO.new) - end - - subject(:container) do - module Test - class Container < Dry::System::Container - configure do |config| - config.root = SPEC_ROOT.join("fixtures/app").realpath - end - - boot(:blorp) do - start do - register "blorp", "my blorp" - end - end - - boot(:my_logger, from: :external_components, key: :logger) do - configure do |config| - config.log_level = :debug - end - - after(:start) do - register(:my_logger, container[:logger]) - end - end - end - end - - Test::Container - end - - it "registers a provider via .register_provider" do - expect(container["blorp"]).to eq "my blorp" - end - - it "registers a provider using a provider source" do - my_logger = container[:my_logger] - - expect(my_logger).to be_instance_of(ExternalComponents::Logger) - expect(my_logger.log_level).to be(:debug) - end - - it "prints deprecation warnings" do - logger = StringIO.new - Dry::Core::Deprecations.set_logger! logger - - container.finalize! - - logger.rewind - expect(logger.string).to match(/Container\.boot is deprecated.*Container\.boot is deprecated/m) - end -end diff --git a/spec/integration/deprecations/deprecated_container_import_spec.rb b/spec/integration/deprecations/deprecated_container_import_spec.rb deleted file mode 100644 index deaf85df1..000000000 --- a/spec/integration/deprecations/deprecated_container_import_spec.rb +++ /dev/null @@ -1,43 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "Deprecated Dry::System::Container.import" do - before do - Object.send(:remove_const, :ExternalComponents) if defined? ExternalComponents - require SPEC_ROOT.join("fixtures/external_components/lib/external_components") - - # We don't care about the deprecation messages when we're not testing for them - # specifically - Dry::Core::Deprecations.set_logger!(StringIO.new) - end - - describe "container imports" do - let(:exporting_container) { - Class.new(Dry::System::Container) { - register "foo", "foo" - } - } - - let(:importing_container) { - exporting_container = self.exporting_container - - Class.new(Dry::System::Container) { - import other: exporting_container, again: exporting_container - } - } - - it "registers the container for import" do - expect(importing_container["other.foo"]).to eq "foo" - expect(importing_container["again.foo"]).to eq "foo" - end - - it "prints deprecation warnings" do - logger = StringIO.new - Dry::Core::Deprecations.set_logger! logger - - importing_container - - logger.rewind - expect(logger.string).to match(/Dry::System::Container\.import with \{namespace => container\} hash is deprecated/m) - end - end -end diff --git a/spec/integration/deprecations/deprecated_external_providers_and_components_spec.rb b/spec/integration/deprecations/deprecated_external_providers_and_components_spec.rb deleted file mode 100644 index b8511e5cd..000000000 --- a/spec/integration/deprecations/deprecated_external_providers_and_components_spec.rb +++ /dev/null @@ -1,52 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "Deprecated Dry::System.register_provider and Dry::System.register_component" do - before do - Object.send(:remove_const, :ExternalComponents) if defined? ExternalComponents - - # We don't care about the deprecation messages when we're not testing for them - # specifically - Dry::Core::Deprecations.set_logger!(StringIO.new) - end - - subject(:container) do - module Test - class Container < Dry::System::Container - configure do |config| - config.root = SPEC_ROOT.join("fixtures/app").realpath - end - - register_provider(:my_logger, from: :external_components, source: :logger) do - configure do |config| - config.log_level = :debug - end - - after(:start) do - register(:my_logger, resolve(:logger)) - end - end - end - end - - Test::Container - end - - it "registers provider sources for the external components" do - require SPEC_ROOT.join("fixtures/external_components_deprecated/lib/external_components") - - my_logger = container[:my_logger] - - expect(my_logger).to be_instance_of(ExternalComponents::Logger) - expect(my_logger.log_level).to be(:debug) - end - - it "prints deprecation warnings" do - logger = StringIO.new - Dry::Core::Deprecations.set_logger! logger - - require SPEC_ROOT.join("fixtures/external_components_deprecated/lib/external_components") - - logger.rewind - expect(logger.string).to match(/Dry::System\.register_provider is deprecated.*Dry::System\.register_component is deprecated/m) - end -end diff --git a/spec/integration/deprecations/deprecated_provider_block_args_spec.rb b/spec/integration/deprecations/deprecated_provider_block_args_spec.rb deleted file mode 100644 index e663b00c7..000000000 --- a/spec/integration/deprecations/deprecated_provider_block_args_spec.rb +++ /dev/null @@ -1,44 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "Deprecated register_provider block arg" do - before do - Object.send(:remove_const, :ExternalComponents) if defined? ExternalComponents - require SPEC_ROOT.join("fixtures/external_components/lib/external_components") - - # We don't care about the deprecation messages when we're not testing for them - # specifically - Dry::Core::Deprecations.set_logger!(StringIO.new) - end - - subject(:container) { - module Test - class Container < Dry::System::Container - configure do |config| - config.root = __dir__ - end - - register_provider(:blorp) do |arg1| - init do - arg1.register "blorp", "my blorp" - end - end - end - end - - Test::Container - } - - it "still allows access to the target container via a register_provider block arg" do - expect(container["blorp"]).to eq "my blorp" - end - - it "prints a deprecation notice" do - logger = StringIO.new - Dry::Core::Deprecations.set_logger! logger - - container.init :blorp - - logger.rewind - expect(logger.string).to match(/Dry::System.register_provider with single block parameter is deprecated.*Use `target_container` \(or `target` for short\) inside your block instead/m) - end -end diff --git a/spec/integration/deprecations/deprecated_provider_callback_block_args_spec.rb b/spec/integration/deprecations/deprecated_provider_callback_block_args_spec.rb deleted file mode 100644 index bc6672873..000000000 --- a/spec/integration/deprecations/deprecated_provider_callback_block_args_spec.rb +++ /dev/null @@ -1,48 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "Deprecated provider callback block arg" do - before do - Object.send(:remove_const, :ExternalComponents) if defined? ExternalComponents - require SPEC_ROOT.join("fixtures/external_components/lib/external_components") - - # We don't care about the deprecation messages when we're not testing for them - # specifically - Dry::Core::Deprecations.set_logger!(StringIO.new) - end - - subject(:container) { - module Test - class Container < Dry::System::Container - configure do |config| - config.root = SPEC_ROOT.join("fixtures/app").realpath - end - - register_provider(:my_logger, from: :external_components, source: :logger) do - configure do |config| - config.log_level = :debug - end - - after(:start) do |arg1| - arg1.register(:my_logger, arg1.resolve(:logger)) - end - end - end - end - - Test::Container - } - - it "still allows access to the provider container via a provider step callback block arg" do - expect(container[:my_logger]).to be_instance_of(ExternalComponents::Logger) - end - - it "prints a deprecation notice" do - logger = StringIO.new - Dry::Core::Deprecations.set_logger! logger - - container.start(:my_logger) - - logger.rewind - expect(logger.string).to match(/Dry::System::Provider::Source.before and .after callbacks with single block parameter is deprecated.*Use `provider_container` \(or `container` for short\) inside your block instead/m) - end -end diff --git a/spec/integration/deprecations/deprecated_provider_init_event_spec.rb b/spec/integration/deprecations/deprecated_provider_init_event_spec.rb deleted file mode 100644 index 90fa68d61..000000000 --- a/spec/integration/deprecations/deprecated_provider_init_event_spec.rb +++ /dev/null @@ -1,96 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "Deprecated provider init event" do - before do - Object.send(:remove_const, :ExternalComponents) if defined? ExternalComponents - require SPEC_ROOT.join("fixtures/external_components/lib/external_components") - - # We don't care about the deprecation messages when we're not testing for them - # specifically - Dry::Core::Deprecations.set_logger!(StringIO.new) - end - - subject(:container) do - module Test - class Container < Dry::System::Container - configure do |config| - config.root = SPEC_ROOT.join("fixtures/app").realpath - end - - register_provider(:blorp) do - init do - register "blorp", "my blorp" - end - end - - register_provider(:my_logger, from: :external_components, source: :logger) do - configure do |config| - config.log_level = :debug - end - - before(:init) do - register "before_init", "my before init" - end - - after(:init) do - register "after_init", "my after init" - end - end - end - end - - Test::Container - end - - describe "init event in provider lifecycle" do - it "uses the prepare event" do - container.prepare :blorp - expect(container.registered?("blorp")).to be true - end - - it "prints a deprecation notice" do - logger = StringIO.new - Dry::Core::Deprecations.set_logger! logger - - container.init :blorp - - logger.rewind - expect(logger.string).to match(/Dry::System::Provider::SourceDSL.*#init is deprecated/m) - end - end - - describe "before/after init triggers in providers using provider sources" do - it "triggers the hooks around the prepare event" do - container.prepare :my_logger - expect(container["before_init"]).to eq "my before init" - expect(container["after_init"]).to eq "my after init" - end - - it "prints a deprecation notice" do - logger = StringIO.new - Dry::Core::Deprecations.set_logger! logger - - container.prepare :my_logger - - logger.rewind - expect(logger.string).to match(/Dry::System::Provider before\(:init\) callback is deprecated.*Dry::System::Provider after\(:init\) callback is deprecated/m) - end - end - - describe "Container.init" do - it "forwards to Container.prepare" do - container.init :blorp - expect(container.registered?("blorp")).to be true - end - - it "prints a deprecation notice" do - logger = StringIO.new - Dry::Core::Deprecations.set_logger! logger - - container.init :blorp - - logger.rewind - expect(logger.string).to match(/Dry::System::Container.*#init is deprecated/m) - end - end -end diff --git a/spec/integration/deprecations/deprecated_provider_settings_block_spec.rb b/spec/integration/deprecations/deprecated_provider_settings_block_spec.rb deleted file mode 100644 index be42d9f07..000000000 --- a/spec/integration/deprecations/deprecated_provider_settings_block_spec.rb +++ /dev/null @@ -1,48 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "Deprecated provider settings block" do - before do - # We don't care about the deprecation messages when we're not testing for them - # specifically - Dry::Core::Deprecations.set_logger!(StringIO.new) - end - - subject(:container) { - module Test - class Container < Dry::System::Container - configure do |config| - config.root = __dir__ - end - - Dry::System.register_provider_source(:some_provider, group: :some_group) do - settings do - key :some_int, Dry::Types["coercible.integer"] - end - end - - register_provider(:my_provider, from: :some_group, source: :some_provider) do - configure do |config| - config.some_int = "12" - end - end - end - end - - Test::Container - } - - it "uses the block to declare settings" do - container.start :my_provider - expect(container.providers[:my_provider].source.config.to_h).to eq(some_int: 12) - end - - it "prints a deprecation notice" do - logger = StringIO.new - Dry::Core::Deprecations.set_logger! logger - - container - - logger.rewind - expect(logger.string).to match(/Dry::System.register_provider with nested settings block is deprecated.*Use individual top-level `setting` declarations instead/m) - end -end diff --git a/spec/integration/deprecations/deprecated_provider_use_spec.rb b/spec/integration/deprecations/deprecated_provider_use_spec.rb deleted file mode 100644 index 35edac431..000000000 --- a/spec/integration/deprecations/deprecated_provider_use_spec.rb +++ /dev/null @@ -1,55 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "Deprecated Provider#use" do - before do - # We don't care about the deprecation messages when we're not testing for them - # specifically - Dry::Core::Deprecations.set_logger!(StringIO.new) - end - - subject(:container) { - module Test - class Container < Dry::System::Container - configure do |config| - config.root = __dir__ - end - - register_provider(:use_1) do - start do - register "use_1", "use_1" - end - end - - register_provider(:use_2) do - start do - register "use_2", "use_2" - end - end - - register_provider(:blorp) do - start do - use :use_1, :use_2 - end - end - end - end - - Test::Container - } - - it "starts the given providers" do - expect { container.start :blorp } - .to change { container.registered?("use_1") }.to(true) - .and change { container.registered?("use_2") }.to(true) - end - - it "prints a deprecation notice" do - logger = StringIO.new - Dry::Core::Deprecations.set_logger! logger - - container.start :blorp - - logger.rewind - expect(logger.string).to match(/Dry::System::Provider#use is deprecated.*Use `target_container.start` instead/m) - end -end diff --git a/spec/integration/deprecations/deprecated_settings_provider_source_key_spec.rb b/spec/integration/deprecations/deprecated_settings_provider_source_key_spec.rb deleted file mode 100644 index 381ccccc9..000000000 --- a/spec/integration/deprecations/deprecated_settings_provider_source_key_spec.rb +++ /dev/null @@ -1,54 +0,0 @@ -# frozen_string_literal: true - -require "dry/system/provider_sources" - -RSpec.describe "Deprecated :settings provider source `key`" do - before do - # We don't care about the deprecation messages when we're not testing for them - # specifically - Dry::Core::Deprecations.set_logger!(StringIO.new) - end - - subject(:container) { - module Test - class Container < Dry::System::Container - setting :env - - configure do |config| - config.root = __dir__ - config.env = :development - end - - register_provider(:settings, from: :dry_system) do - settings do - key :some_int_using_deprecated_key, Dry::Types["coercible.integer"] - end - end - end - end - - Test::Container - } - - before do - ENV["SOME_INT_USING_DEPRECATED_KEY"] = "5" - end - - after do - ENV.delete("SOME_INT_USING_DEPRECATED_KEY") - end - - it "defines the setting" do - expect(container[:settings].some_int_using_deprecated_key).to eq 5 - end - - it "prints a deprecation notice" do - logger = StringIO.new - Dry::Core::Deprecations.set_logger! logger - - container.start(:settings) - - logger.rewind - expect(logger.string).to match(/Dry::System :settings provider source setting definition using `key`.*Use `setting` instead, with dry-configurable `setting` options/m) - end -end diff --git a/spec/unit/config/component_dir_spec.rb b/spec/unit/config/component_dir_spec.rb deleted file mode 100644 index 0099699de..000000000 --- a/spec/unit/config/component_dir_spec.rb +++ /dev/null @@ -1,86 +0,0 @@ -# frozen_string_literal: true - -require "dry/system/config/component_dir" - -RSpec.describe Dry::System::Config::ComponentDir do - subject(:component_dir) { described_class.new("some_path") } - - describe "#default_namespace= (deprecated)" do - before do - # We don't care about the deprecation messages when we're not testing for them - # specifically - Dry::Core::Deprecations.set_logger!(StringIO.new) - end - - it "adds a corresponding namespace object" do - expect { component_dir.default_namespace = "admin" } - .to change { component_dir.namespaces.namespaces.keys.to_a.length } - .from(0).to(1) - - added_namespace = component_dir.namespaces.namespaces["admin"] - - expect(added_namespace).to be - expect(added_namespace.path).to eq "admin" - expect(added_namespace.key).to eq nil - expect(added_namespace.const).to eq "admin" - end - - it "converts dot-delimited namespace strings to equivalent paths" do - component_dir.default_namespace = "nested.admin" - - added_namespace = component_dir.namespaces.namespaces["nested/admin"] - - expect(added_namespace).to be - expect(added_namespace.path).to eq "nested/admin" - expect(added_namespace.key).to eq nil - expect(added_namespace.const).to eq "nested/admin" - end - - it "adds the namespace object only once" do - expect { - component_dir.default_namespace = "admin" - component_dir.default_namespace = "admin" - } - .to change { component_dir.namespaces.namespaces.keys.to_a.length } - .from(0).to(1) - end - - it "prints a deprecation warning" do - logger = StringIO.new - Dry::Core::Deprecations.set_logger! logger - - component_dir.default_namespace = "admin" - - logger.rewind - expect(logger.string).to match(/ComponentDir#default_namespace= is deprecated/) - end - end - - describe "#default_namespace (deprecated)" do - before do - # We don't care about the deprecation messages when we're not testing for them - # specifically - Dry::Core::Deprecations.set_logger!(StringIO.new) - end - - it "is nil by default" do - expect(component_dir.default_namespace).to be_nil - end - - it "returns the dot-delimited leading identifier string for the first configured namespace" do - component_dir.default_namespace = "nested.admin" - - expect(component_dir.default_namespace).to eq "nested.admin" - end - - it "prints a deprecation warning" do - logger = StringIO.new - Dry::Core::Deprecations.set_logger! logger - - component_dir.default_namespace - - logger.rewind - expect(logger.string).to match(/ComponentDir#default_namespace is deprecated/) - end - end -end diff --git a/spec/unit/config/namespaces_spec.rb b/spec/unit/config/namespaces_spec.rb index bcbae53a8..59fc61789 100644 --- a/spec/unit/config/namespaces_spec.rb +++ b/spec/unit/config/namespaces_spec.rb @@ -42,39 +42,6 @@ end end - describe "#root with argumments (DEPRECATED for #add_root)" do - before do - # We don't care about the deprecation messages when we're not testing for them - # specifically - Dry::Core::Deprecations.set_logger!(StringIO.new) - end - - it "adds a root namespace with the given configuration" do - expect { - namespaces.root key: "key_ns", const: "const_ns" - } - .to change { namespaces.length } - .from(0).to(1) - - ns = namespaces.namespaces[nil] - - expect(ns).to be_root - expect(ns.path).to be_nil - expect(ns.key).to eq "key_ns" - expect(ns.const).to eq "const_ns" - end - - it "prints a deprecation warning" do - logger = StringIO.new - Dry::Core::Deprecations.set_logger! logger - - namespaces.root key: "key_ns", const: "const_ns" - - logger.rewind - expect(logger.string).to match(/Namespaces#root \(with arguments\) is deprecated/) - end - end - describe "#add" do it "adds the namespace with the given configuration" do expect { diff --git a/spec/unit/provider/source_spec.rb b/spec/unit/provider/source_spec.rb index d9153611d..ab4c0dead 100644 --- a/spec/unit/provider/source_spec.rb +++ b/spec/unit/provider/source_spec.rb @@ -28,7 +28,7 @@ context "using a base class" do it_behaves_like "a provider class" do let(:provider_class) do - described_class.for(name: "Persistence", target_container: target_container) do + described_class.for(name: "Persistence") do start do register(:persistence, {}) end @@ -40,7 +40,7 @@ context "using a sub-class" do it_behaves_like "a provider class" do let(:parent_class) do - described_class.for(name: "Persistence", target_container: target_container) do + described_class.for(name: "Persistence") do start do register(:persistence, {}) end