diff --git a/lib/i18n/tasks/scanners/ruby_scanner.rb b/lib/i18n/tasks/scanners/ruby_scanner.rb index 45f00c55..a7922021 100644 --- a/lib/i18n/tasks/scanners/ruby_scanner.rb +++ b/lib/i18n/tasks/scanners/ruby_scanner.rb @@ -150,6 +150,7 @@ def setup_ast_matchers AstMatchers::MessageReceiversMatcher.new( receivers: [ AST::Node.new(:const, [nil, :I18n]), + AST::Node.new(:const, [AST::Node.new(:cbase), :I18n]), nil ], message: message, diff --git a/spec/ruby_scanner_spec.rb b/spec/ruby_scanner_spec.rb new file mode 100644 index 00000000..64273ef6 --- /dev/null +++ b/spec/ruby_scanner_spec.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +require "spec_helper" +require "tempfile" + +RSpec.describe "I18n::Tasks::Scanners::RubyScanner" do + describe "#scan_file" do + subject do + I18n::Tasks::Scanners::RubyScanner.new.send(:scan_file, tempfile.path) + end + + let(:tempfile) do + tempfile = Tempfile.new + tempfile.write(source) + tempfile.flush + tempfile + end + + context "when source contains I18n.t calls" do + let(:source) do + <<~RUBY + I18n.t("foo") + RUBY + end + + it { is_expected.to be_present } + end + + context "when source contains ::I18n.t calls" do + let(:source) do + <<~RUBY + ::I18n.t("foo") + RUBY + end + + it { is_expected.to be_present } + end + end +end