diff --git a/lib/liquid.rb b/lib/liquid.rb index b98d4d9..61b6557 100644 --- a/lib/liquid.rb +++ b/lib/liquid.rb @@ -80,3 +80,7 @@ require 'liquid/usage' # Load all the tags of the standard library # Dir["#{__dir__}/liquid/tags/*.rb"].each { |f| require f } + +# Load all usage tracking +# +Dir["#{__dir__}/liquid/usages/*.rb"].each { |f| require f } diff --git a/lib/liquid/usage.rb b/lib/liquid/usage.rb index 26b118b..26f73db 100644 --- a/lib/liquid/usage.rb +++ b/lib/liquid/usage.rb @@ -4,7 +4,11 @@ module Liquid @messages = {} class << self def enable - Dir["#{__dir__}/usages/*.rb"].each { |f| require f } + Liquid::Context.send(:alias_method, :try_variable_find_in_environments, :try_variable_find_in_environments_usage) + end + + def disable + Liquid::Context.send(:alias_method, :try_variable_find_in_environments, :try_variable_find_in_environments_original) end def track(message) diff --git a/test/integration/usages/try_variables.rb b/lib/liquid/usages/try_variables.rb similarity index 84% rename from test/integration/usages/try_variables.rb rename to lib/liquid/usages/try_variables.rb index ba412de..5db0e36 100644 --- a/test/integration/usages/try_variables.rb +++ b/lib/liquid/usages/try_variables.rb @@ -1,13 +1,15 @@ module Liquid class Context - remove_method :try_variable_find_in_environments - def try_variable_find_in_environments(key, raise_on_not_found:) + alias try_variable_find_in_environments_original try_variable_find_in_environments + + def try_variable_find_in_environments_usage(key, raise_on_not_found:) Usage.track("Using try_variable_find_in_environment") @environments.each do |environment| found_variable = lookup_and_evaluate(environment, key, raise_on_not_found: raise_on_not_found) if !found_variable.nil? || @strict_variables && raise_on_not_found return found_variable end + Usage.track("try_variable_find_in_environment reports Nil but responds to key") if environment.key?(key) end @static_environments.each do |environment| @@ -15,6 +17,7 @@ module Liquid if !found_variable.nil? || @strict_variables && raise_on_not_found return found_variable end + Usage.track("try_variable_find_in_environment reports Nil but responds to key") if environment.key?(key) end nil diff --git a/test/integration/usage_test.rb b/test/integration/usage_test.rb deleted file mode 100644 index 54504e9..0000000 --- a/test/integration/usage_test.rb +++ /dev/null @@ -1,34 +0,0 @@ -require 'test_helper' - -module Liquid - class TestUsage < Usage - @messages = {} - class << self - def enable - Dir["#{__dir__}/usages/*.rb"].each { |f| require f } - end - end - end -end - -class UsageTest < Minitest::Test - include Liquid - - Usage.enable - - def test_test_usages - Dir["#{__dir__}/usages/*.rb"].each { |f| require f } - - template = Template.parse(%({{test}})) - assert_equal 'worked', template.render!('test' => 'worked') - assert_equal 'worked wonderfully', template.render!('test' => 'worked wonderfully') - assert_equal true, Usage.results["Using try_variable_find_in_environment"] - end - - def test_live_usages - template = Template.parse(%({{test}})) - assert_equal 'worked', template.render!('test' => 'worked') - assert_equal 'worked wonderfully', template.render!('test' => 'worked wonderfully') - assert_equal true, Usage.results["Usage is enabled"] - end -end diff --git a/test/integration/usages/try_variables_test.rb b/test/integration/usages/try_variables_test.rb new file mode 100644 index 0000000..e34c18f --- /dev/null +++ b/test/integration/usages/try_variables_test.rb @@ -0,0 +1,14 @@ +require 'test_helper' + +class TryVariablesUsageTest < Minitest::Test + include Liquid + + def test_test_usages + Usage.enable + template = Template.parse(%({{test}})) + assert_equal 'worked', template.render!('test' => 'worked') + assert_equal 'worked wonderfully', template.render!('test' => 'worked wonderfully') + assert_equal true, Usage.results["Using try_variable_find_in_environment"] + Usage.disable + end +end diff --git a/test/integration/usages/usage_enabled_test.rb b/test/integration/usages/usage_enabled_test.rb new file mode 100644 index 0000000..1e5f74f --- /dev/null +++ b/test/integration/usages/usage_enabled_test.rb @@ -0,0 +1,9 @@ +require 'test_helper' + +class UsageEnabledUsageTest < Minitest::Test + include Liquid + + def test_live_usages + assert_equal true, Usage.results["Usage is enabled"] + end +end