as_deprecation_tracker 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/README.md +10 -0
 - data/lib/as_deprecation_tracker.rb +17 -0
 - data/lib/as_deprecation_tracker/railtie.rb +1 -1
 - data/lib/as_deprecation_tracker/receiver.rb +14 -0
 - data/lib/as_deprecation_tracker/version.rb +1 -1
 - data/lib/as_deprecation_tracker/whitelist_entry.rb +1 -1
 - data/test/as_deprecation_tracker_test.rb +28 -0
 - data/test/receiver_test.rb +31 -6
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 2d01e6823baf38e699a6de7c4d27391d9f8f6a00
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: f95996a72dd62db5cd33f8cc8a9f0ee5e7686454
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 7b649d6be7f3273fe8400ff28dc6162402b4cc744b47136b355b5648e9a1a27494f2d21c2d7e4c92b0aec10c7009b94882ce21e8cffc522ee8e2eb4f06b7d386
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 80fdb221aa9b693793740b511190a090a895881dec79d0b78ebd1d8c70ce9b18f80aaf49ef0a97a7ecc3135a4a8d82043799f4cd7f106562e23f9b05fa77fe71
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -119,6 +119,16 @@ Supported options: 
     | 
|
| 
       119 
119 
     | 
    
         
             
            * `whitelist_file` to customise the location of the whitelist YAML file
         
     | 
| 
       120 
120 
     | 
    
         
             
              (defaults to `config/as_deprecation_whitelist.yaml`)
         
     | 
| 
       121 
121 
     | 
    
         | 
| 
      
 122 
     | 
    
         
            +
            ### Pause/resume
         
     | 
| 
      
 123 
     | 
    
         
            +
             
     | 
| 
      
 124 
     | 
    
         
            +
            The processing of deprecation warnings can be suspended and resumed via the
         
     | 
| 
      
 125 
     | 
    
         
            +
            `ASDeprecationTracker.pause!` and `ASDeprecationTracker.resume!` methods.
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
            This is useful when programmatically building whitelist entries during Rails
         
     | 
| 
      
 128 
     | 
    
         
            +
            initialisation, as deprecation processing can be disabled until the whitelist
         
     | 
| 
      
 129 
     | 
    
         
            +
            is fully formed. ASDT will queue events while paused and processes them when
         
     | 
| 
      
 130 
     | 
    
         
            +
            `resume!` is called.
         
     | 
| 
      
 131 
     | 
    
         
            +
             
     | 
| 
       122 
132 
     | 
    
         
             
            ## License
         
     | 
| 
       123 
133 
     | 
    
         | 
| 
       124 
134 
     | 
    
         
             
            Copyright (c) 2016-2017 Dominic Cleal.  Distributed under the MIT license.
         
     | 
| 
         @@ -14,6 +14,23 @@ module ASDeprecationTracker 
     | 
|
| 
       14 
14 
     | 
    
         
             
                @config ||= Configuration.new
         
     | 
| 
       15 
15 
     | 
    
         
             
              end
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
      
 17 
     | 
    
         
            +
              def self.pause!
         
     | 
| 
      
 18 
     | 
    
         
            +
                @running = false
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
              def self.receiver
         
     | 
| 
      
 22 
     | 
    
         
            +
                @receiver ||= Receiver.new
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              def self.resume!
         
     | 
| 
      
 26 
     | 
    
         
            +
                @running = true
         
     | 
| 
      
 27 
     | 
    
         
            +
                @receiver.try!(:process_queue)
         
     | 
| 
      
 28 
     | 
    
         
            +
              end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
              def self.running?
         
     | 
| 
      
 31 
     | 
    
         
            +
                @running.nil? || @running
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
       17 
34 
     | 
    
         
             
              def self.whitelist
         
     | 
| 
       18 
35 
     | 
    
         
             
                @whitelist ||= Whitelist.new
         
     | 
| 
       19 
36 
     | 
    
         
             
              end
         
     | 
| 
         @@ -5,7 +5,7 @@ module ASDeprecationTracker 
     | 
|
| 
       5 
5 
     | 
    
         
             
              # Railtie to register for deprecation notifications
         
     | 
| 
       6 
6 
     | 
    
         
             
              class Railtie < ::Rails::Railtie
         
     | 
| 
       7 
7 
     | 
    
         
             
                initializer 'as_deprecation_tracker.deprecation_notifications', after: :load_environment_config, if: -> { ASDeprecationTracker.active? } do
         
     | 
| 
       8 
     | 
    
         
            -
                  Receiver.attach_to :rails
         
     | 
| 
      
 8 
     | 
    
         
            +
                  Receiver.attach_to :rails, ASDeprecationTracker.receiver
         
     | 
| 
       9 
9 
     | 
    
         
             
                  ActiveSupport::Deprecation.behavior = :notify if ASDeprecationTracker.config.register_behavior?
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
                  whitelist = ASDeprecationTracker.config.whitelist_file
         
     | 
| 
         @@ -5,7 +5,21 @@ require 'as_deprecation_tracker/writer' 
     | 
|
| 
       5 
5 
     | 
    
         
             
            module ASDeprecationTracker
         
     | 
| 
       6 
6 
     | 
    
         
             
              # Receives deprecation.rails events via ActiveSupport::Notifications
         
     | 
| 
       7 
7 
     | 
    
         
             
              class Receiver < ::ActiveSupport::Subscriber
         
     | 
| 
      
 8 
     | 
    
         
            +
                def initialize
         
     | 
| 
      
 9 
     | 
    
         
            +
                  super
         
     | 
| 
      
 10 
     | 
    
         
            +
                  @event_queue = []
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
       8 
13 
     | 
    
         
             
                def deprecation(event)
         
     | 
| 
      
 14 
     | 
    
         
            +
                  @event_queue << event
         
     | 
| 
      
 15 
     | 
    
         
            +
                  process_queue if ASDeprecationTracker.running?
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                def process_queue
         
     | 
| 
      
 19 
     | 
    
         
            +
                  process_event(@event_queue.pop) until @event_queue.empty?
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                def process_event(event)
         
     | 
| 
       9 
23 
     | 
    
         
             
                  return if ASDeprecationTracker.whitelist.matches?(event.payload)
         
     | 
| 
       10 
24 
     | 
    
         | 
| 
       11 
25 
     | 
    
         
             
                  message = event.payload[:message]
         
     | 
| 
         @@ -75,7 +75,7 @@ module ASDeprecationTracker 
     | 
|
| 
       75 
75 
     | 
    
         
             
                def engine_root(engine_name)
         
     | 
| 
       76 
76 
     | 
    
         
             
                  ::Rails::Engine.descendants.each do |engine|
         
     | 
| 
       77 
77 
     | 
    
         
             
                    begin
         
     | 
| 
       78 
     | 
    
         
            -
                      return engine.root.to_s if engine_name == engine.engine_name
         
     | 
| 
      
 78 
     | 
    
         
            +
                      return engine.root.to_s if engine_name.to_s == engine.engine_name.to_s
         
     | 
| 
       79 
79 
     | 
    
         
             
                    rescue NoMethodError, RuntimeError # rubocop:disable Lint/HandleExceptions
         
     | 
| 
       80 
80 
     | 
    
         
             
                      # Ignore failures with singleton engine subclasses etc.
         
     | 
| 
       81 
81 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -21,6 +21,34 @@ class ASDeprecationTrackerTest < ASDeprecationTracker::TestCase 
     | 
|
| 
       21 
21 
     | 
    
         
             
                assert_equal config, ASDeprecationTracker.config
         
     | 
| 
       22 
22 
     | 
    
         
             
              end
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
      
 24 
     | 
    
         
            +
              def test_pause!
         
     | 
| 
      
 25 
     | 
    
         
            +
                ASDeprecationTracker.pause!
         
     | 
| 
      
 26 
     | 
    
         
            +
                refute ASDeprecationTracker.running?
         
     | 
| 
      
 27 
     | 
    
         
            +
              ensure
         
     | 
| 
      
 28 
     | 
    
         
            +
                ASDeprecationTracker.resume!
         
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
              def test_receiver
         
     | 
| 
      
 32 
     | 
    
         
            +
                assert_kind_of ASDeprecationTracker::Receiver, ASDeprecationTracker.receiver
         
     | 
| 
      
 33 
     | 
    
         
            +
                assert_kind_of ActiveSupport::Subscriber, ASDeprecationTracker.receiver
         
     | 
| 
      
 34 
     | 
    
         
            +
              end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
              def test_receiver_returns_same_receiver
         
     | 
| 
      
 37 
     | 
    
         
            +
                receiver = ASDeprecationTracker.receiver
         
     | 
| 
      
 38 
     | 
    
         
            +
                assert_equal receiver, ASDeprecationTracker.receiver
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
              def test_resume!
         
     | 
| 
      
 42 
     | 
    
         
            +
                ASDeprecationTracker.pause!
         
     | 
| 
      
 43 
     | 
    
         
            +
                ASDeprecationTracker.receiver.expects(:process_queue)
         
     | 
| 
      
 44 
     | 
    
         
            +
                ASDeprecationTracker.resume!
         
     | 
| 
      
 45 
     | 
    
         
            +
                assert ASDeprecationTracker.running?
         
     | 
| 
      
 46 
     | 
    
         
            +
              end
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
              def test_running
         
     | 
| 
      
 49 
     | 
    
         
            +
                assert_equal true, ASDeprecationTracker.running?
         
     | 
| 
      
 50 
     | 
    
         
            +
              end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
       24 
52 
     | 
    
         
             
              def test_whitelist
         
     | 
| 
       25 
53 
     | 
    
         
             
                assert_kind_of ASDeprecationTracker::Whitelist, ASDeprecationTracker.whitelist
         
     | 
| 
       26 
54 
     | 
    
         
             
              end
         
     | 
    
        data/test/receiver_test.rb
    CHANGED
    
    | 
         @@ -2,27 +2,43 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            require 'test_helper'
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            class ReceiverTest < ASDeprecationTracker::TestCase
         
     | 
| 
       5 
     | 
    
         
            -
              def  
     | 
| 
      
 5 
     | 
    
         
            +
              def test_deprecation_when_running
         
     | 
| 
      
 6 
     | 
    
         
            +
                ASDeprecationTracker.expects(:running?).returns(true)
         
     | 
| 
      
 7 
     | 
    
         
            +
                receiver = ASDeprecationTracker::Receiver.new
         
     | 
| 
      
 8 
     | 
    
         
            +
                event = mock('event')
         
     | 
| 
      
 9 
     | 
    
         
            +
                receiver.expects(:process_event).with(event)
         
     | 
| 
      
 10 
     | 
    
         
            +
                receiver.deprecation(event)
         
     | 
| 
      
 11 
     | 
    
         
            +
              end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              def test_deprecation_when_not_running
         
     | 
| 
      
 14 
     | 
    
         
            +
                ASDeprecationTracker.expects(:running?).returns(false)
         
     | 
| 
      
 15 
     | 
    
         
            +
                receiver = ASDeprecationTracker::Receiver.new
         
     | 
| 
      
 16 
     | 
    
         
            +
                event = mock('event')
         
     | 
| 
      
 17 
     | 
    
         
            +
                receiver.expects(:process_event).never
         
     | 
| 
      
 18 
     | 
    
         
            +
                receiver.deprecation(event)
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
              def test_process_event_whitelisted
         
     | 
| 
       6 
22 
     | 
    
         
             
                whitelist = ASDeprecationTracker::Whitelist.new
         
     | 
| 
       7 
23 
     | 
    
         
             
                ASDeprecationTracker.expects(:whitelist).returns(whitelist)
         
     | 
| 
       8 
24 
     | 
    
         
             
                stack = caller
         
     | 
| 
       9 
25 
     | 
    
         
             
                whitelist.expects(:matches?).with(message: 'deprecated call', callstack: stack).returns(true)
         
     | 
| 
       10 
     | 
    
         
            -
                ASDeprecationTracker::Receiver.new. 
     | 
| 
      
 26 
     | 
    
         
            +
                ASDeprecationTracker::Receiver.new.process_event(event(message: 'deprecated call', callstack: stack))
         
     | 
| 
       11 
27 
     | 
    
         
             
              end
         
     | 
| 
       12 
28 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
              def  
     | 
| 
      
 29 
     | 
    
         
            +
              def test_process_event_unknown
         
     | 
| 
       14 
30 
     | 
    
         
             
                whitelist = ASDeprecationTracker::Whitelist.new
         
     | 
| 
       15 
31 
     | 
    
         
             
                ASDeprecationTracker.expects(:whitelist).returns(whitelist)
         
     | 
| 
       16 
32 
     | 
    
         
             
                stack = caller
         
     | 
| 
       17 
33 
     | 
    
         
             
                whitelist.expects(:matches?).with(message: 'deprecated call', callstack: stack).returns(false)
         
     | 
| 
       18 
34 
     | 
    
         
             
                e = assert_raises(ActiveSupport::DeprecationException) do
         
     | 
| 
       19 
     | 
    
         
            -
                  ASDeprecationTracker::Receiver.new. 
     | 
| 
      
 35 
     | 
    
         
            +
                  ASDeprecationTracker::Receiver.new.process_event(event(message: 'deprecated call', callstack: stack))
         
     | 
| 
       20 
36 
     | 
    
         
             
                end
         
     | 
| 
       21 
37 
     | 
    
         
             
                assert_equal 'deprecated call', e.message
         
     | 
| 
       22 
38 
     | 
    
         
             
                assert_equal stack, e.backtrace
         
     | 
| 
       23 
39 
     | 
    
         
             
              end
         
     | 
| 
       24 
40 
     | 
    
         | 
| 
       25 
     | 
    
         
            -
              def  
     | 
| 
      
 41 
     | 
    
         
            +
              def test_process_event_unknown_record
         
     | 
| 
       26 
42 
     | 
    
         
             
                whitelist = ASDeprecationTracker::Whitelist.new
         
     | 
| 
       27 
43 
     | 
    
         
             
                ASDeprecationTracker.expects(:whitelist).twice.returns(whitelist)
         
     | 
| 
       28 
44 
     | 
    
         
             
                stack = caller
         
     | 
| 
         @@ -31,10 +47,19 @@ class ReceiverTest < ASDeprecationTracker::TestCase 
     | 
|
| 
       31 
47 
     | 
    
         
             
                ASDeprecationTracker::Writer.any_instance.expects(:add).with('deprecated call', stack).returns(message: 'deprecated call', callstack: stack.first)
         
     | 
| 
       32 
48 
     | 
    
         
             
                ASDeprecationTracker::Writer.any_instance.expects(:write_file)
         
     | 
| 
       33 
49 
     | 
    
         
             
                with_env(AS_DEPRECATION_RECORD: 'true') do
         
     | 
| 
       34 
     | 
    
         
            -
                  ASDeprecationTracker::Receiver.new. 
     | 
| 
      
 50 
     | 
    
         
            +
                  ASDeprecationTracker::Receiver.new.process_event(event(message: 'deprecated call', callstack: stack))
         
     | 
| 
       35 
51 
     | 
    
         
             
                end
         
     | 
| 
       36 
52 
     | 
    
         
             
              end
         
     | 
| 
       37 
53 
     | 
    
         | 
| 
      
 54 
     | 
    
         
            +
              def test_process_queue
         
     | 
| 
      
 55 
     | 
    
         
            +
                ASDeprecationTracker.expects(:running?).returns(false)
         
     | 
| 
      
 56 
     | 
    
         
            +
                receiver = ASDeprecationTracker::Receiver.new
         
     | 
| 
      
 57 
     | 
    
         
            +
                event = mock('event')
         
     | 
| 
      
 58 
     | 
    
         
            +
                receiver.deprecation(event)
         
     | 
| 
      
 59 
     | 
    
         
            +
                receiver.expects(:process_event).with(event)
         
     | 
| 
      
 60 
     | 
    
         
            +
                receiver.process_queue
         
     | 
| 
      
 61 
     | 
    
         
            +
              end
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
       38 
63 
     | 
    
         
             
              def test_subscription
         
     | 
| 
       39 
64 
     | 
    
         
             
                ASDeprecationTracker::Receiver.any_instance.expects(:deprecation)
         
     | 
| 
       40 
65 
     | 
    
         
             
                ActiveSupport::Notifications.instrument('deprecation.rails', message: 'test')
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: as_deprecation_tracker
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.4.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Dominic Cleal
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2017-02- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2017-02-27 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: activesupport
         
     |