From c4ef403ac80204346c4cd7114e38107e6807ae3c Mon Sep 17 00:00:00 2001 From: Nathan Broadbent Date: Tue, 5 Mar 2013 13:36:41 +1300 Subject: [PATCH] Strip any query strings from files --- app/models/backtrace_line_normalizer.rb | 7 ++++++- spec/models/backtrace_line_normalizer_spec.rb | 23 ++++++++++++++++------- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/app/models/backtrace_line_normalizer.rb b/app/models/backtrace_line_normalizer.rb index be9d49e..de35ed1 100644 --- a/app/models/backtrace_line_normalizer.rb +++ b/app/models/backtrace_line_normalizer.rb @@ -12,7 +12,12 @@ class BacktraceLineNormalizer if @raw_line['file'].blank? "[unknown source]" else - @raw_line['file'].to_s.gsub(/\[PROJECT_ROOT\]\/.*\/ruby\/[0-9.]+\/gems/, '[GEM_ROOT]/gems') + file = @raw_line['file'].to_s + # Detect lines from gem + file.gsub!(/\[PROJECT_ROOT\]\/.*\/ruby\/[0-9.]+\/gems/, '[GEM_ROOT]/gems') + # Strip any query strings + file.gsub!(/\?[^\?]*$/, '') + @raw_line['file'] = file end end diff --git a/spec/models/backtrace_line_normalizer_spec.rb b/spec/models/backtrace_line_normalizer_spec.rb index 1a81f4c..8094899 100644 --- a/spec/models/backtrace_line_normalizer_spec.rb +++ b/spec/models/backtrace_line_normalizer_spec.rb @@ -3,16 +3,25 @@ require 'spec_helper' describe BacktraceLineNormalizer do subject { described_class.new(raw_line).call } - describe "sanitize file and method" do - let(:raw_line) { { 'number' => rand(999), 'file' => nil, 'method' => nil } } + describe "sanitize" do + context "unknown file and method" do + let(:raw_line) { { 'number' => rand(999), 'file' => nil, 'method' => nil } } - it "should replace nil file with [unknown source]" do - subject['file'].should == "[unknown source]" - end + it "should replace nil file with [unknown source]" do + subject['file'].should == "[unknown source]" + end - it "should replace nil method with [unknown method]" do - subject['method'].should == "[unknown method]" + it "should replace nil method with [unknown method]" do + subject['method'].should == "[unknown method]" + end end + context "in app file" do + let(:raw_line) { { 'number' => rand(999), 'file' => "[PROJECT_ROOT]/assets/file.js?body=1", 'method' => nil } } + + it "should strip query strings from files" do + subject['file'].should == "[PROJECT_ROOT]/assets/file.js" + end + end end end -- libgit2 0.21.2