teresa 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +22 -0
- data/README.md +25 -0
- data/Rakefile +27 -0
- data/lib/teresa.rb +16 -0
- data/lib/teresa/error.rb +3 -0
- data/lib/teresa/parser.rb +29 -0
- data/lib/teresa/parser/generic.rb +13 -0
- data/lib/teresa/parser/tap.rb +61 -0
- data/lib/teresa/parser/xunit.rb +33 -0
- data/lib/teresa/test.rb +26 -0
- data/lib/teresa/version.rb +3 -0
- data/spec/payloads/bacon.knock.txt +10 -0
- data/spec/payloads/bacon.tap.txt +12 -0
- data/spec/payloads/blank-junit.xml +65 -0
- data/spec/payloads/common.tap.txt +11 -0
- data/spec/payloads/fizzbuzz.xml +111 -0
- data/spec/payloads/giving_up.tap.txt +3 -0
- data/spec/payloads/liberties.tap.txt +23 -0
- data/spec/payloads/mustermann.xml +2320 -0
- data/spec/payloads/sample-junit.xml +115 -0
- data/spec/payloads/skip_app.tap.txt +1 -0
- data/spec/payloads/skip_few.tap.txt +7 -0
- data/spec/payloads/spare_tuits.tap.txt +5 -0
- data/spec/payloads/tap.txt +5 -0
- data/spec/payloads/tap13.txt +19 -0
- data/spec/payloads/unknown_amout.tap.txt +9 -0
- data/spec/support.rb +3 -0
- data/spec/support/coverage.rb +9 -0
- data/spec/support/payloads.rb +18 -0
- data/spec/teresa_spec.rb +13 -0
- data/teresa.gemspec +61 -0
- metadata +132 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 645edf57af00f68055fc5488cbb05921cff9ec1e
|
4
|
+
data.tar.gz: 7664b58152731bec25704e264cee249d60e60605
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 95e8b4b2d31d2811d7748c42f6faf4e2ed647c8015e2f5e2672629a46fab0bb4133b0e853f6ab1bd260f6789eb74a0ab7d75e9ddbfa17e6e027eabf2384b70fa
|
7
|
+
data.tar.gz: daab3e0251200a0410e15680199872b85ff4cf2a9017585715c714fbf1fd7cdc12228763ae5a09d70b41b48d1ec469ed7b0b15116e690f730b868e3b8a123b8d
|
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Konstantin Haase
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person
|
4
|
+
obtaining a copy of this software and associated documentation
|
5
|
+
files (the "Software"), to deal in the Software without
|
6
|
+
restriction, including without limitation the rights to use,
|
7
|
+
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
copies of the Software, and to permit persons to whom the
|
9
|
+
Software is furnished to do so, subject to the following
|
10
|
+
conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be
|
13
|
+
included in all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
17
|
+
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
19
|
+
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
20
|
+
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
21
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
22
|
+
OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# Teresa
|
2
|
+
|
3
|
+
Teresa is a Test Result Analyzer. Well, it's more of a Test Output Parser, but that doesn't make a great name.
|
4
|
+
It takes the output from a test run and parses it into Ruby objects.
|
5
|
+
|
6
|
+
Supported formats:
|
7
|
+
|
8
|
+
* [Test Anywhere Protocol](http://en.wikipedia.org/wiki/Test_Anything_Protocol) (version 12 and 13)
|
9
|
+
* [Knock](https://github.com/chneukirchen/knock#readme)
|
10
|
+
* [xUnit XML](http://en.wikipedia.org/wiki/XUnit), as produced by [JUnit](http://junit.org/) and other frameworks
|
11
|
+
|
12
|
+
## Usage
|
13
|
+
|
14
|
+
``` ruby
|
15
|
+
require 'teresa'
|
16
|
+
|
17
|
+
# parse a string of test output
|
18
|
+
Teresa.parse(some_input) do |test|
|
19
|
+
puts "#{test.name}: #{test.state}"
|
20
|
+
end
|
21
|
+
|
22
|
+
# parse a file
|
23
|
+
tests = Teresa.parse_file("result.xml")
|
24
|
+
puts "#{tests.size} tests found"
|
25
|
+
```
|
data/Rakefile
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
$LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
|
2
|
+
|
3
|
+
desc "run specs"
|
4
|
+
task :spec do
|
5
|
+
ruby '-S rspec'
|
6
|
+
end
|
7
|
+
|
8
|
+
desc "generate gemspec"
|
9
|
+
task :gemspec do
|
10
|
+
require 'teresa/version'
|
11
|
+
content = File.read('teresa.gemspec')
|
12
|
+
fields = {
|
13
|
+
authors: `git shortlog -sn`.b.scan(/[^\d\s].*/), email: `git shortlog -sne`.b.scan(/[^<]+@[^>]+/),
|
14
|
+
files: `git ls-files`.b.split("\n").reject { |f| f =~ /^(\.|Gemfile)/ }
|
15
|
+
}
|
16
|
+
|
17
|
+
fields.each do |field, values|
|
18
|
+
updated = " s.#{field} = [" << values.map { |v| "\n %p" % v }.join(',') << "\n ]"
|
19
|
+
content.sub!(/ s\.#{field} = \[\n( .*\n)* \]/, updated)
|
20
|
+
end
|
21
|
+
|
22
|
+
content.sub!(/(s\.version.*=\s+).*/, "\\1\"#{Teresa::VERSION}\"")
|
23
|
+
content.gsub!(/./) { |c| c.bytesize > 1 ? "\\u{#{c.codepoints.first.to_s(16)}}" : c }
|
24
|
+
File.open('teresa.gemspec', 'w') { |f| f << content }
|
25
|
+
end
|
26
|
+
|
27
|
+
task default: [:spec, :gemspec]
|
data/lib/teresa.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'teresa/error'
|
2
|
+
require 'teresa/parser'
|
3
|
+
require 'teresa/test'
|
4
|
+
require 'teresa/version'
|
5
|
+
|
6
|
+
module Teresa
|
7
|
+
extend self
|
8
|
+
|
9
|
+
def parse(string, options = {}, &block)
|
10
|
+
Parser.parse(string, options, &block)
|
11
|
+
end
|
12
|
+
|
13
|
+
def parse_file(string, options = {}, &block)
|
14
|
+
Parser.parse_file(string, options, &block)
|
15
|
+
end
|
16
|
+
end
|
data/lib/teresa/error.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'teresa/parser/tap'
|
2
|
+
require 'teresa/parser/xunit'
|
3
|
+
|
4
|
+
module Teresa
|
5
|
+
module Parser
|
6
|
+
extend self
|
7
|
+
|
8
|
+
def detect(string)
|
9
|
+
constant = constants.sort.reverse.map { |c| const_get(c) }.detect { |c| c.matches? string }
|
10
|
+
constant or raise Teresa::Error, "cannot detect test format"
|
11
|
+
end
|
12
|
+
|
13
|
+
def get(type)
|
14
|
+
return type if type.respond_to? :new
|
15
|
+
raise Teresa::Error, "unknown test format #{type}" unless name = constants.detect { |c| c.to_s.downcase == type.to_s }
|
16
|
+
const_get(name)
|
17
|
+
end
|
18
|
+
|
19
|
+
def parse(string, options = {}, &block)
|
20
|
+
parser = get(options[:type] || detect(string)).new(string)
|
21
|
+
block ? parser.parse(&block) : parser.enum_for(:parse).to_a
|
22
|
+
end
|
23
|
+
|
24
|
+
def parse_file(file, options = {}, &block)
|
25
|
+
encoding = options.fetch(:encoding) { Encoding::UTF_8 }
|
26
|
+
parse(File.read(file, encoding: encoding), options)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'teresa/parser/generic'
|
2
|
+
require 'strscan'
|
3
|
+
|
4
|
+
module Teresa
|
5
|
+
module Parser
|
6
|
+
# Implements Test Anything Protocol and Knock test output format.
|
7
|
+
class TAP < Generic
|
8
|
+
matches /^(?:not )?ok\b|\A\s*1\.\.0/
|
9
|
+
|
10
|
+
def initialize(string)
|
11
|
+
@string = string
|
12
|
+
end
|
13
|
+
|
14
|
+
def parse
|
15
|
+
scanner = StringScanner.new(@string)
|
16
|
+
version = scanner.scan(/TAP version (\d+)\n/) ? scanner[1].to_i : 12
|
17
|
+
maximum = scanner.scan(/1\.\.(\d+)\n/) && scanner[1]
|
18
|
+
expected = 0
|
19
|
+
|
20
|
+
raise "TAP #{version} is not supported" unless version.between? 12, 13
|
21
|
+
|
22
|
+
while scanner.scan_until(/^(not )?ok\b/)
|
23
|
+
expected += 1
|
24
|
+
test = Test.new
|
25
|
+
test.state = :failed if scanner[1]
|
26
|
+
test.id = scanner.scan(/ +(\d+)/) ? scanner[1].to_i : expected
|
27
|
+
test.message = scanner.scan(/ +.+/).to_s.gsub(/^\s*-|-\s*$/, '').strip
|
28
|
+
test.name = test.message.gsub(/(\: FAILED)?(#.*)?$/, '')
|
29
|
+
test.state = :skipped if test.message =~ /# *(SKIP|TODO)/i
|
30
|
+
expected = test.id
|
31
|
+
test.name = "Test ##{test.id}" if test.name.empty?
|
32
|
+
test.message = nil if test.message.empty?
|
33
|
+
|
34
|
+
if version >= 13 and scanner.scan(/^([ \t]+)---\n$/)
|
35
|
+
test.output = "meta data:\n\n\t---\n"
|
36
|
+
prefix = scanner[1]
|
37
|
+
|
38
|
+
while scanner.scan(/^#{prefix}(.*)\n/)
|
39
|
+
test.output << scanner[1]
|
40
|
+
test.message = scanner[1][/message: *"?(.*)"?/, 1] if scanner[1].start_with? "message:"
|
41
|
+
end
|
42
|
+
|
43
|
+
test.output << "\n"
|
44
|
+
end
|
45
|
+
|
46
|
+
while scanner.scan(/^# ?(.*\n)/)
|
47
|
+
test.output ||= ""
|
48
|
+
test.output << scanner[1]
|
49
|
+
end
|
50
|
+
|
51
|
+
yield test
|
52
|
+
end
|
53
|
+
|
54
|
+
unless scanner.scan_until(/^Bail out!\b/)
|
55
|
+
maximum ||= scanner.scan_until(/1\.\.(\d+)\n/) && scanner[1]
|
56
|
+
expected.upto(maximum.to_i) { |i| yield Test.new(state: :failed, id: i, name: "Test ##{i}") }
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'teresa/parser/generic'
|
2
|
+
require 'nokogiri'
|
3
|
+
|
4
|
+
module Teresa
|
5
|
+
module Parser
|
6
|
+
# Implements xUnit (like JUnit) output format.
|
7
|
+
class XUnit < Generic
|
8
|
+
matches /<\?xml.*<testsuite/m
|
9
|
+
|
10
|
+
def initialize(string)
|
11
|
+
@document = Nokogiri::XML(string)
|
12
|
+
end
|
13
|
+
|
14
|
+
def parse
|
15
|
+
@document.xpath("testsuite").each do |suite|
|
16
|
+
suite.xpath("testcase").each do |node|
|
17
|
+
test = Test.new(name: node["name"], id: [suite["name"], node["classname"], node["name"]].compact.join(" "))
|
18
|
+
test.time = node["time"].to_f if node["time"]
|
19
|
+
test.name = node["classname"] + " " + node["name"] unless test.name.include?(" ") or node["name"].to_s.empty?
|
20
|
+
|
21
|
+
node.xpath("failure|error|skipped").each do |failure|
|
22
|
+
test.state = failure.node_name == "skipped" ? :skipped : :failed
|
23
|
+
test.message = failure["message"]
|
24
|
+
test.output = failure.text
|
25
|
+
end
|
26
|
+
|
27
|
+
yield test
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/teresa/test.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
module Teresa
|
2
|
+
class Test
|
3
|
+
attr_accessor :state, :name, :id, :time, :message, :output
|
4
|
+
|
5
|
+
def initialize(options = {})
|
6
|
+
@state = :passed
|
7
|
+
options.each { |k,v| send("#{k}=", v) if respond_to? "#{k}=" }
|
8
|
+
end
|
9
|
+
|
10
|
+
def failed?
|
11
|
+
state == :failed
|
12
|
+
end
|
13
|
+
|
14
|
+
def passed?
|
15
|
+
state == :passed
|
16
|
+
end
|
17
|
+
|
18
|
+
def skipped?
|
19
|
+
state == :skipped
|
20
|
+
end
|
21
|
+
|
22
|
+
def inspect
|
23
|
+
"#<%p:%p>" % [self.class, name]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
ok - should be empty
|
2
|
+
ok - should have zero size
|
3
|
+
ok - should raise on trying fetch any index
|
4
|
+
ok - should have an object identity
|
5
|
+
ok - should be a palindrome
|
6
|
+
not ok - should have super powers: FAILED
|
7
|
+
# Bacon::Error: no super powers found
|
8
|
+
# ./whirlwind.rb:39: A new array - should have super powers
|
9
|
+
# ./whirlwind.rb:38
|
10
|
+
# ./whirlwind.rb:3
|
@@ -0,0 +1,12 @@
|
|
1
|
+
ok 1 - should be empty
|
2
|
+
ok 2 - should have zero size
|
3
|
+
ok 3 - should raise on trying fetch any index
|
4
|
+
ok 4 - should have an object identity
|
5
|
+
ok 5 - should be a palindrome
|
6
|
+
not ok 6 - should have super powers: FAILED
|
7
|
+
# Bacon::Error: no super powers found
|
8
|
+
# ./whirlwind.rb:39: A new array - should have super powers
|
9
|
+
# ./whirlwind.rb:38
|
10
|
+
# ./whirlwind.rb:3
|
11
|
+
1..6
|
12
|
+
# 6 tests, 9 assertions, 1 failures, 0 errors
|
@@ -0,0 +1,65 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<testsuites disabled="" errors="" failures="" name="" tests="" time="">
|
3
|
+
<testsuite disabled="" errors="" failures="" hostname="" id=""
|
4
|
+
name="" package="" skipped="" tests="" time="" timestamp="">
|
5
|
+
<properties>
|
6
|
+
<property name="" value=""/>
|
7
|
+
<property name="" value=""/>
|
8
|
+
</properties>
|
9
|
+
<testcase assertions="" classname="" name="" status="" time="">
|
10
|
+
<skipped/>
|
11
|
+
<error message="" type=""/>
|
12
|
+
<error message="" type=""/>
|
13
|
+
<failure message="" type=""/>
|
14
|
+
<failure message="" type=""/>
|
15
|
+
<system-out/>
|
16
|
+
<system-out/>
|
17
|
+
<system-err/>
|
18
|
+
<system-err/>
|
19
|
+
</testcase>
|
20
|
+
<testcase assertions="" classname="" name="" status="" time="">
|
21
|
+
<skipped/>
|
22
|
+
<error message="" type=""/>
|
23
|
+
<error message="" type=""/>
|
24
|
+
<failure message="" type=""/>
|
25
|
+
<failure message="" type=""/>
|
26
|
+
<system-out/>
|
27
|
+
<system-out/>
|
28
|
+
<system-err/>
|
29
|
+
<system-err/>
|
30
|
+
</testcase>
|
31
|
+
<system-out/>
|
32
|
+
<system-err/>
|
33
|
+
</testsuite>
|
34
|
+
<testsuite disabled="" errors="" failures="" hostname="" id=""
|
35
|
+
name="" package="" skipped="" tests="" time="" timestamp="">
|
36
|
+
<properties>
|
37
|
+
<property name="" value=""/>
|
38
|
+
<property name="" value=""/>
|
39
|
+
</properties>
|
40
|
+
<testcase assertions="" classname="" name="" status="" time="">
|
41
|
+
<skipped/>
|
42
|
+
<error message="" type=""/>
|
43
|
+
<error message="" type=""/>
|
44
|
+
<failure message="" type=""/>
|
45
|
+
<failure message="" type=""/>
|
46
|
+
<system-out/>
|
47
|
+
<system-out/>
|
48
|
+
<system-err/>
|
49
|
+
<system-err/>
|
50
|
+
</testcase>
|
51
|
+
<testcase assertions="" classname="" name="" status="" time="">
|
52
|
+
<skipped/>
|
53
|
+
<error message="" type=""/>
|
54
|
+
<error message="" type=""/>
|
55
|
+
<failure message="" type=""/>
|
56
|
+
<failure message="" type=""/>
|
57
|
+
<system-out/>
|
58
|
+
<system-out/>
|
59
|
+
<system-err/>
|
60
|
+
<system-err/>
|
61
|
+
</testcase>
|
62
|
+
<system-out/>
|
63
|
+
<system-err/>
|
64
|
+
</testsuite>
|
65
|
+
</testsuites>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
1..6
|
2
|
+
#
|
3
|
+
# Create a new Board and Tile, then place
|
4
|
+
# the Tile onto the board.
|
5
|
+
#
|
6
|
+
ok 1 - The object isa Board
|
7
|
+
ok 2 - Board size is zero
|
8
|
+
ok 3 - The object isa Tile
|
9
|
+
ok 4 - Get possible places to put the Tile
|
10
|
+
ok 5 - Placing the tile produces no error
|
11
|
+
ok 6 - Board size is 1
|
@@ -0,0 +1,111 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" ?>
|
2
|
+
<testsuite failures="1" time="0.114" errors="0" skipped="0" tests="5" name="fizzbuzz.FizzBuzzTest">
|
3
|
+
<properties>
|
4
|
+
<property name="java.runtime.name" value="Java(TM) SE Runtime Environment"/>
|
5
|
+
<property name="sun.boot.library.path" value="/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/jre/lib"/>
|
6
|
+
<property name="java.vm.version" value="23.0-b16"/>
|
7
|
+
<property name="user.country.format" value="DE"/>
|
8
|
+
<property name="gopherProxySet" value="false"/>
|
9
|
+
<property name="java.vm.vendor" value="Oracle Corporation"/>
|
10
|
+
<property name="java.vendor.url" value="http://java.oracle.com/"/>
|
11
|
+
<property name="path.separator" value=":"/>
|
12
|
+
<property name="java.vm.name" value="Java HotSpot(TM) 64-Bit Server VM"/>
|
13
|
+
<property name="file.encoding.pkg" value="sun.io"/>
|
14
|
+
<property name="user.country" value="US"/>
|
15
|
+
<property name="sun.java.launcher" value="SUN_STANDARD"/>
|
16
|
+
<property name="sun.os.patch.level" value="unknown"/>
|
17
|
+
<property name="java.vm.specification.name" value="Java Virtual Machine Specification"/>
|
18
|
+
<property name="user.dir" value="/Users/konstantin/Workspace/FizzBuzz"/>
|
19
|
+
<property name="java.runtime.version" value="1.7.0_04-ea-b15"/>
|
20
|
+
<property name="java.awt.graphicsenv" value="sun.awt.CGraphicsEnvironment"/>
|
21
|
+
<property name="basedir" value="/Users/konstantin/Workspace/FizzBuzz"/>
|
22
|
+
<property name="java.endorsed.dirs" value="/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/jre/lib/endorsed"/>
|
23
|
+
<property name="os.arch" value="amd64"/>
|
24
|
+
<property name="surefire.real.class.path" value="/Users/konstantin/Workspace/FizzBuzz/target/surefire/surefirebooter6134039262581307326.jar"/>
|
25
|
+
<property name="java.io.tmpdir" value="/var/folders/wt/qxh50jgs33q2_cszt32tg8140000gn/T/"/>
|
26
|
+
<property name="line.separator" value="
|
27
|
+
"/>
|
28
|
+
<property name="java.vm.specification.vendor" value="Oracle Corporation"/>
|
29
|
+
<property name="os.name" value="Mac OS X"/>
|
30
|
+
<property name="sun.jnu.encoding" value="US-ASCII"/>
|
31
|
+
<property name="java.library.path" value="/Users/konstantin/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java"/>
|
32
|
+
<property name="surefire.test.class.path" value="/Users/konstantin/Workspace/FizzBuzz/target/test-classes:/Users/konstantin/Workspace/FizzBuzz/target/classes:/Users/konstantin/.m2/repository/junit/junit/4.4/junit-4.4.jar:"/>
|
33
|
+
<property name="java.specification.name" value="Java Platform API Specification"/>
|
34
|
+
<property name="java.class.version" value="51.0"/>
|
35
|
+
<property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/>
|
36
|
+
<property name="os.version" value="10.8.4"/>
|
37
|
+
<property name="http.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/>
|
38
|
+
<property name="user.home" value="/Users/konstantin"/>
|
39
|
+
<property name="user.timezone" value=""/>
|
40
|
+
<property name="java.awt.printerjob" value="sun.lwawt.macosx.CPrinterJob"/>
|
41
|
+
<property name="java.specification.version" value="1.7"/>
|
42
|
+
<property name="file.encoding" value="US-ASCII"/>
|
43
|
+
<property name="user.name" value="konstantin"/>
|
44
|
+
<property name="java.class.path" value="/Users/konstantin/Workspace/FizzBuzz/target/test-classes:/Users/konstantin/Workspace/FizzBuzz/target/classes:/Users/konstantin/.m2/repository/junit/junit/4.4/junit-4.4.jar:"/>
|
45
|
+
<property name="java.vm.specification.version" value="1.7"/>
|
46
|
+
<property name="sun.arch.data.model" value="64"/>
|
47
|
+
<property name="java.home" value="/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/jre"/>
|
48
|
+
<property name="sun.java.command" value="/Users/konstantin/Workspace/FizzBuzz/target/surefire/surefirebooter6134039262581307326.jar /Users/konstantin/Workspace/FizzBuzz/target/surefire/surefire4030486674810092790tmp /Users/konstantin/Workspace/FizzBuzz/target/surefire/surefire6864216330091954051tmp"/>
|
49
|
+
<property name="java.specification.vendor" value="Oracle Corporation"/>
|
50
|
+
<property name="user.language" value="en"/>
|
51
|
+
<property name="awt.toolkit" value="sun.lwawt.macosx.LWCToolkit"/>
|
52
|
+
<property name="java.vm.info" value="mixed mode"/>
|
53
|
+
<property name="java.version" value="1.7.0_04-ea"/>
|
54
|
+
<property name="java.ext.dirs" value="/Users/konstantin/Library/Java/Extensions:/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/jre/lib/ext:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java"/>
|
55
|
+
<property name="sun.boot.class.path" value="/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/jre/lib/sunrsasign.jar:/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/jre/lib/JObjC.jar:/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/jre/classes"/>
|
56
|
+
<property name="java.vendor" value="Oracle Corporation"/>
|
57
|
+
<property name="localRepository" value="/Users/konstantin/.m2/repository"/>
|
58
|
+
<property name="file.separator" value="/"/>
|
59
|
+
<property name="java.vendor.url.bug" value="http://bugreport.sun.com/bugreport/"/>
|
60
|
+
<property name="sun.cpu.endian" value="little"/>
|
61
|
+
<property name="sun.io.unicode.encoding" value="UnicodeBig"/>
|
62
|
+
<property name="socksNonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/>
|
63
|
+
<property name="ftp.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/>
|
64
|
+
<property name="sun.cpu.isalist" value=""/>
|
65
|
+
</properties>
|
66
|
+
<testcase time="0.025" classname="fizzbuzz.FizzBuzzTest" name="imprimeElMismoNumeroSiNoEs3">
|
67
|
+
<failure message="expected:<[5]> but was:<[4]>" type="org.junit.ComparisonFailure">org.junit.ComparisonFailure: expected:<[5]> but was:<[4]>
|
68
|
+
at org.junit.Assert.assertEquals(Assert.java:99)
|
69
|
+
at org.junit.Assert.assertEquals(Assert.java:117)
|
70
|
+
at fizzbuzz.FizzBuzzTest.imprimeElMismoNumeroSiNoEs3(FizzBuzzTest.java:24)
|
71
|
+
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
72
|
+
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
|
73
|
+
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
74
|
+
at java.lang.reflect.Method.invoke(Method.java:601)
|
75
|
+
at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
|
76
|
+
at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
|
77
|
+
at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
|
78
|
+
at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
|
79
|
+
at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
|
80
|
+
at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
|
81
|
+
at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
|
82
|
+
at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
|
83
|
+
at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
|
84
|
+
at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
|
85
|
+
at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
|
86
|
+
at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
|
87
|
+
at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:35)
|
88
|
+
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:115)
|
89
|
+
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:97)
|
90
|
+
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
91
|
+
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
|
92
|
+
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
93
|
+
at java.lang.reflect.Method.invoke(Method.java:601)
|
94
|
+
at org.apache.maven.surefire.booter.ProviderFactory$ClassLoaderProxy.invoke(ProviderFactory.java:103)
|
95
|
+
at $Proxy0.invoke(Unknown Source)
|
96
|
+
at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:150)
|
97
|
+
at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcess(SurefireStarter.java:91)
|
98
|
+
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:69)
|
99
|
+
</failure>
|
100
|
+
<system-out>@HL
|
101
|
+
@HL-------------------------------------------------------
|
102
|
+
@HL T E S T S
|
103
|
+
@HL-------------------------------------------------------
|
104
|
+
@SLRunning fizzbuzz.FizzBuzzTest
|
105
|
+
</system-out>
|
106
|
+
</testcase>
|
107
|
+
<testcase time="0.001" classname="fizzbuzz.FizzBuzzTest" name="imprimeFizzSiEsMultiploDe3"/>
|
108
|
+
<testcase time="0.002" classname="fizzbuzz.FizzBuzzTest" name="imprimeBuzzSiNumero5"/>
|
109
|
+
<testcase time="0.002" classname="fizzbuzz.FizzBuzzTest" name="imprimeBuzzSiEsMultiplo5"/>
|
110
|
+
<testcase time="0.001" classname="fizzbuzz.FizzBuzzTest" name="imprimeFizzSiNumeroEs3"/>
|
111
|
+
</testsuite>
|