ruby_warning_filter 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
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