teresa 0.1.0
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 +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>
|