ruby_warning_filter 1.0.0 → 1.0.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 821c2df551dbf8fdcd0ba9889fbe8716606626d4
4
- data.tar.gz: 2b06bcb3f1d649eef059437075db368da6678e7d
3
+ metadata.gz: c91d9f4a9c50812b5453fea598148a4671e1e3c0
4
+ data.tar.gz: f2e129ea8ece436be6c218072feef11a9c3a08de
5
5
  SHA512:
6
- metadata.gz: 695653150630dc7307f548f6c031e8fbc898ff24c918788b928628e8e99bcf9a39ce0243abbe8baaf2cc1bb2f57c77c8b2d208e3c583ffc4c55a7f96ab4645e7
7
- data.tar.gz: 6df030eafa9370d022744a44e50537ca5e4814aea2568306f498812936a4cee935ddcea5759114ff350befbc3e4bcfc711c68e6eaa98f4686ba8a5155a49fb04
6
+ metadata.gz: 73abc3ab4af12b573a56272af381b5cf1f6d7bd44473730978ada189914da8614522938cdcb3625019bbfc7e5bf04d2c7e658bd0a4fc2bd3de9fd6e793b97b53
7
+ data.tar.gz: 4080f1ce3435991cfac80045efc007552adb497445350ce01442ec7886d0f58a095727772a17917f66a8475ddfe2e44b46fa09b4e73c80471ab8be007cbf4a01
data/Gemfile CHANGED
@@ -2,3 +2,4 @@ source "https://rubygems.org"
2
2
 
3
3
  gem "rake", "~> 10.0"
4
4
  gem "minitest", "~> 5.0"
5
+ gem "benchmark-ips"
data/Manifest.txt CHANGED
@@ -4,4 +4,5 @@ Rakefile
4
4
  Readme.md
5
5
  lib/ruby_warning_filter.rb
6
6
  ruby_warning_filter.gemspec
7
+ test/bench.rb
7
8
  test/ruby_warnings_filter_test.rb
data/Readme.md CHANGED
@@ -24,6 +24,8 @@ When running your app or tests you should see only relevant warnings. Now, go fi
24
24
 
25
25
  ## Feedback
26
26
 
27
+ The filter works by proxying all writes to stderr. It has been running for a while in many of my work projects with good results. However, it is probably not comprehensive. Please, report any warnings that it misses or swallows by error.
28
+
27
29
  [![Build Status](https://travis-ci.org/semaperepelitsa/ruby_warning_filter.svg?branch=master)](https://travis-ci.org/semaperepelitsa/ruby_warning_filter)
28
30
 
29
- The filter works by proxying all writes to stderr. It has been running for a while in many of my work projects with good results. However, it is probably not comprehensive. Please, report any warnings that it misses or swallows by error.
31
+ The gem is tested against Ruby 2.0, 2.1, 2.2.
@@ -1,4 +1,5 @@
1
- require 'delegate'
1
+ require "delegate"
2
+ require "set"
2
3
 
3
4
  # Filter IO from Ruby warnings that come out of external gems.
4
5
  # There is no other way currently to filter out Ruby warnings other than hijacking stderr.
@@ -22,9 +23,16 @@ class RubyWarningFilter < DelegateClass(IO)
22
23
 
23
24
  def initialize(io, ignore_path: Gem.path)
24
25
  super(io)
26
+
25
27
  @ruby_warnings = 0
26
28
  @ignored = false
27
- @ignore_path = ignore_path
29
+ @ignore_path = ignore_path.to_set
30
+
31
+ # Gem path can contain symlinks.
32
+ # Some warnings use real path instead of symlinks so we need to ignore both.
33
+ ignore_path.each do |a|
34
+ @ignore_path << File.realpath(a) if File.exist?(a)
35
+ end
28
36
  end
29
37
 
30
38
  def write(line)
@@ -72,10 +80,6 @@ class RubyWarningFilter < DelegateClass(IO)
72
80
  line.start_with?("\tfrom")
73
81
  end
74
82
 
75
- def whitespace?(line)
76
- line =~ /^\s*$/
77
- end
78
-
79
83
  def eval_redefined?(line)
80
84
  line =~ /\(eval\):\d+: warning: previous definition of .+ was here/
81
85
  end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |gem|
2
2
  gem.name = "ruby_warning_filter"
3
- gem.version = "1.0.0"
3
+ gem.version = "1.0.1"
4
4
  gem.summary = "Hassle-free Ruby warnings"
5
5
  gem.license = "MIT"
6
6
  gem.author = "Semyon Perepelitsa"
data/test/bench.rb ADDED
@@ -0,0 +1,32 @@
1
+ require "bundler/setup"
2
+ require_relative "../lib/ruby_warning_filter"
3
+ require "benchmark/ips"
4
+
5
+ file = File.new("/dev/null", "w")
6
+ filter = RubyWarningFilter.new(file, ignore_path: ["/path/to/gems"])
7
+
8
+ def write_errors(io)
9
+ 10.times do
10
+ io.write("/path/to/gems/file.rb:297: warning: instance variable @object not initialized\n")
11
+ end
12
+
13
+ 10.times do |i|
14
+ io.write("\tfrom /something/foo/bar:#{i}:in `<main>'")
15
+ end
16
+
17
+ 10.times do
18
+ io.write("(eval):1: warning: previous definition of foo was here")
19
+ end
20
+ end
21
+
22
+ Benchmark.ips do |x|
23
+ x.report "plain File" do
24
+ write_errors(file)
25
+ end
26
+
27
+ x.report "RubyWarningFilter" do
28
+ write_errors(filter)
29
+ end
30
+ end
31
+
32
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_warning_filter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Semyon Perepelitsa
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-04 00:00:00.000000000 Z
11
+ date: 2015-05-18 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: sema@sema.in
@@ -22,6 +22,7 @@ files:
22
22
  - Readme.md
23
23
  - lib/ruby_warning_filter.rb
24
24
  - ruby_warning_filter.gemspec
25
+ - test/bench.rb
25
26
  - test/ruby_warnings_filter_test.rb
26
27
  homepage: https://github.com/semaperepelitsa/ruby_warning_filter
27
28
  licenses:
@@ -48,4 +49,5 @@ signing_key:
48
49
  specification_version: 4
49
50
  summary: Hassle-free Ruby warnings
50
51
  test_files:
52
+ - test/bench.rb
51
53
  - test/ruby_warnings_filter_test.rb