spicycode-rcov 0.8.1.5.5 → 0.8.1.5.6
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/rcov/rexml_extensions.rb +44 -0
- data/lib/rcov/version.rb +1 -1
- data/test/rexml_test.rb +23 -0
- metadata +3 -1
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'rexml/document'
|
2
|
+
require 'rexml/formatters/pretty'
|
3
|
+
|
4
|
+
module Rcov
|
5
|
+
module REXMLExtensions
|
6
|
+
|
7
|
+
def self.fix_pretty_formatter_wrap
|
8
|
+
REXML::Formatters::Pretty.class_eval do
|
9
|
+
include PrettyFormatterWrapFix
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
# Fix for this bug: http://clint-hill.com/2008/10/02/a-bug-in-ruby-did-i-just-find-that/
|
14
|
+
# Also known from this fun exception:
|
15
|
+
#
|
16
|
+
# /usr/local/ruby/lib/ruby/1.8/rexml/formatters/pretty.rb:131:in
|
17
|
+
# `[]': no implicit conversion from nil to integer (TypeError)
|
18
|
+
#
|
19
|
+
# This bug was fixed in Ruby with this changeset http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=19487
|
20
|
+
# ...which should mean that this bug only affects Ruby 1.8.6. The latest stable version of 1.8.7 (and up) should be fine.
|
21
|
+
module PrettyFormatterWrapFix
|
22
|
+
|
23
|
+
def self.included(base)
|
24
|
+
base.class_eval do
|
25
|
+
def wrap(string, width)
|
26
|
+
# Recursively wrap string at width.
|
27
|
+
return string if string.length <= width
|
28
|
+
place = string.rindex(' ', width) # Position in string with last ' ' before cutoff
|
29
|
+
return string if place.nil?
|
30
|
+
return string[0,place] + "\n" + wrap(string[place+1..-1], width)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.init!
|
38
|
+
if RUBY_VERSION == "1.8.6"
|
39
|
+
fix_pretty_formatter_wrap
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
data/lib/rcov/version.rb
CHANGED
data/test/rexml_test.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper'
|
2
|
+
require 'rcov/rexml_extensions'
|
3
|
+
|
4
|
+
class TestRexml < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def test_wrap_with_long_lines_without_spaces_should_not_break_wrap
|
7
|
+
Rcov::REXMLExtensions.fix_pretty_formatter_wrap
|
8
|
+
pretty_formatter = ::REXML::Formatters::Pretty.new
|
9
|
+
long_string = "this-is-a-long-string-without-any-spaces-to-try-to-break-rexml-formatter-and-it-is-over-100-characters-long"
|
10
|
+
pretty_formatter.instance_eval { wrap(long_string, 100) } # avoid send, it can't bypass private methods in ruby19
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_wrap_original_behavior_should_be_preserved
|
14
|
+
pretty_formatter = REXML::Formatters::Pretty.new
|
15
|
+
str = "This string should be wrapped at 40 characters"
|
16
|
+
pretty_formatter.instance_eval do
|
17
|
+
str = wrap(str, 40)
|
18
|
+
end # avoid send, it can't bypass private methods in ruby19
|
19
|
+
assert_equal("This string should be wrapped at 40\ncharacters", str)
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spicycode-rcov
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.1.5.
|
4
|
+
version: 0.8.1.5.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mauricio Fernandez
|
@@ -31,6 +31,7 @@ files:
|
|
31
31
|
- lib/rcov/version.rb
|
32
32
|
- lib/rcov/rant.rb
|
33
33
|
- lib/rcov/report.rb
|
34
|
+
- lib/rcov/rexml_extensions.rb
|
34
35
|
- lib/rcov/rcovtask.rb
|
35
36
|
- ext/rcovrt/extconf.rb
|
36
37
|
- ext/rcovrt/rcovrt.c
|
@@ -56,6 +57,7 @@ files:
|
|
56
57
|
- test/turn_off_rcovrt.rb
|
57
58
|
- test/call_site_analyzer_test.rb
|
58
59
|
- test/assets/sample_05.rb
|
60
|
+
- test/rexml_test.rb
|
59
61
|
- rcov.vim
|
60
62
|
- rcov.el
|
61
63
|
- setup.rb
|