rproof 0.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 +7 -0
- data/LICENSE +674 -0
- data/README.md +9 -0
- data/lib/rproof.rb +16 -0
- data/lib/rproof/abstract_reporter.rb +37 -0
- data/lib/rproof/assertion.rb +18 -0
- data/lib/rproof/censor.rb +52 -0
- data/lib/rproof/composite_reporter.rb +53 -0
- data/lib/rproof/live_reporter.rb +161 -0
- data/lib/rproof/located_info.rb +28 -0
- data/lib/rproof/test.rb +41 -0
- data/lib/rproof/test_result.rb +63 -0
- data/lib/rproof/test_runner.rb +24 -0
- data/lib/rproof/test_suite.rb +60 -0
- data/lib/rproof/version.rb +3 -0
- data/lib/rproof/warning.rb +15 -0
- data/lib/rproof/xml_reporter.rb +86 -0
- metadata +87 -0
@@ -0,0 +1,24 @@
|
|
1
|
+
########################################################################################################################
|
2
|
+
# Run test or test suite with an associated reporter.
|
3
|
+
########################################################################################################################
|
4
|
+
|
5
|
+
require_relative 'test'
|
6
|
+
require_relative 'test_suite'
|
7
|
+
require_relative 'abstract_reporter'
|
8
|
+
|
9
|
+
module Rproof
|
10
|
+
class TestRunner
|
11
|
+
def initialize(reporter)
|
12
|
+
raise "reporter is not an Abstract_Reporter" unless reporter.is_a? AbstractReporter
|
13
|
+
@reporter = reporter
|
14
|
+
end
|
15
|
+
|
16
|
+
def run(test)
|
17
|
+
start_time = Time.now
|
18
|
+
@reporter.report_campaign_begin
|
19
|
+
results = test.execute
|
20
|
+
end_time = Time.now
|
21
|
+
@reporter.report_campaign_end results, start_time, end_time
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
########################################################################################################################
|
2
|
+
# Define a test suite. This class has to be inherited in child classes, where the developer defines its test suites.
|
3
|
+
########################################################################################################################
|
4
|
+
|
5
|
+
require_relative 'test'
|
6
|
+
|
7
|
+
module Rproof
|
8
|
+
class TestSuite < Test
|
9
|
+
def initialize(reporter, name, description = nil)
|
10
|
+
super(reporter, name, description)
|
11
|
+
@tests = []
|
12
|
+
@test_results = []
|
13
|
+
end
|
14
|
+
|
15
|
+
# Register a Test to be run
|
16
|
+
def register(test)
|
17
|
+
@tests << test
|
18
|
+
end
|
19
|
+
|
20
|
+
def unregister_all
|
21
|
+
@tests = []
|
22
|
+
end
|
23
|
+
|
24
|
+
def run
|
25
|
+
@tests.shuffle.each do |test|
|
26
|
+
@test_results << test.execute
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def execute
|
31
|
+
@reporter.report_suite_begin(@id, @name, @description)
|
32
|
+
begin
|
33
|
+
setup
|
34
|
+
run
|
35
|
+
clean_up
|
36
|
+
rescue Exception => e
|
37
|
+
@censor.log_exception e
|
38
|
+
@test_results << @censor.test_result
|
39
|
+
end
|
40
|
+
@reporter.report_suite_end(@id, @test_results)
|
41
|
+
@test_results
|
42
|
+
end
|
43
|
+
|
44
|
+
def get_tests(filename_pattern)
|
45
|
+
tests = []
|
46
|
+
if nil != self.class.name.downcase.match(filename_pattern.downcase)
|
47
|
+
tests << self
|
48
|
+
else
|
49
|
+
@tests.each do |test|
|
50
|
+
if test.is_a? Test_Suite
|
51
|
+
tests << test.get_tests(filename_pattern)
|
52
|
+
else
|
53
|
+
tests << test if nil != test.class.name.downcase.match(filename_pattern.downcase)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
tests
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
########################################################################################################################
|
2
|
+
# Stores warning information
|
3
|
+
########################################################################################################################
|
4
|
+
|
5
|
+
require_relative 'located_info'
|
6
|
+
|
7
|
+
module Rproof
|
8
|
+
class Warning < LocatedInfo
|
9
|
+
def initialize(message)
|
10
|
+
super()
|
11
|
+
@message = message
|
12
|
+
end
|
13
|
+
attr_reader :message
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
########################################################################################################################
|
2
|
+
#
|
3
|
+
########################################################################################################################
|
4
|
+
|
5
|
+
require 'builder'
|
6
|
+
|
7
|
+
require_relative 'abstract_reporter'
|
8
|
+
require_relative 'assertion'
|
9
|
+
|
10
|
+
module Rproof
|
11
|
+
class XMLReporter < AbstractReporter
|
12
|
+
|
13
|
+
def initialize(xml_pathname:)
|
14
|
+
@xml_pathname = xml_pathname
|
15
|
+
end
|
16
|
+
|
17
|
+
def report_campaign_begin
|
18
|
+
end
|
19
|
+
|
20
|
+
def report_suite_begin(id, name, description)
|
21
|
+
end
|
22
|
+
|
23
|
+
def report_test_begin(id, name, description)
|
24
|
+
end
|
25
|
+
|
26
|
+
def report_test_end(id, test_result)
|
27
|
+
end
|
28
|
+
|
29
|
+
def report_suite_end(id, test_results)
|
30
|
+
end
|
31
|
+
|
32
|
+
def assertion_to_xml(assertion, xml_assertion)
|
33
|
+
xml_assertion.file = assertion.file
|
34
|
+
xml_assertion.line = assertion.line
|
35
|
+
xml_assertion.method = assertion.method
|
36
|
+
xml_assertion.comment = assertion.comment
|
37
|
+
xml_assertion.expected = assertion.expected.inspect
|
38
|
+
xml_assertion.obtained = assertion.obtained.inspect
|
39
|
+
xml_assertion
|
40
|
+
end
|
41
|
+
|
42
|
+
def report_campaign_end(test_results, start_time, end_time)
|
43
|
+
results = (test_results.is_a? Array) ? test_results.flatten : [test_results]
|
44
|
+
xml = Builder::XmlMarkup.new(indent: 2)
|
45
|
+
xml.test_campgain do |xml_campgain|
|
46
|
+
results.each do |result|
|
47
|
+
xml_campgain.test_result do |xml_result|
|
48
|
+
xml_result.name result.name
|
49
|
+
xml_result.description result.description
|
50
|
+
xml_result.assertions do |xml_assertions|
|
51
|
+
result.assertions.each do |assertion|
|
52
|
+
if assertion.is_successful
|
53
|
+
xml_assertions.success do |xml_assertion|
|
54
|
+
xml_assertion = assertion_to_xml(assertion, xml_assertion)
|
55
|
+
end
|
56
|
+
else
|
57
|
+
xml_assertions.failure do |xml_assertion|
|
58
|
+
xml_assertion = assertion_to_xml(assertion, xml_assertion)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
xml_result.warnings do |xml_warnings|
|
64
|
+
result.warnings.each do |warning|
|
65
|
+
xml_warnings.warning warning.message
|
66
|
+
end
|
67
|
+
end
|
68
|
+
xml_result.exceptions do |xml_exceptions|
|
69
|
+
result.exceptions.each do |exception|
|
70
|
+
xml_exceptions.exception do |xml_exception|
|
71
|
+
xml_exception.message = exception.message
|
72
|
+
xml_exception.backtrace = exception.backtrace.join("\n")
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
xml_file = File.open(@xml_pathname, "w")
|
81
|
+
xml_file << xml.target!
|
82
|
+
xml_file.close
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
end
|
metadata
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rproof
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Francois Ruche
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-10-10 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: builder
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.2'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.2'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: colorize
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.7'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.7'
|
41
|
+
description: Simple test framework in Ruby.
|
42
|
+
email: francois.ruche@gmail.com
|
43
|
+
executables: []
|
44
|
+
extensions: []
|
45
|
+
extra_rdoc_files: []
|
46
|
+
files:
|
47
|
+
- LICENSE
|
48
|
+
- README.md
|
49
|
+
- lib/rproof.rb
|
50
|
+
- lib/rproof/abstract_reporter.rb
|
51
|
+
- lib/rproof/assertion.rb
|
52
|
+
- lib/rproof/censor.rb
|
53
|
+
- lib/rproof/composite_reporter.rb
|
54
|
+
- lib/rproof/live_reporter.rb
|
55
|
+
- lib/rproof/located_info.rb
|
56
|
+
- lib/rproof/test.rb
|
57
|
+
- lib/rproof/test_result.rb
|
58
|
+
- lib/rproof/test_runner.rb
|
59
|
+
- lib/rproof/test_suite.rb
|
60
|
+
- lib/rproof/version.rb
|
61
|
+
- lib/rproof/warning.rb
|
62
|
+
- lib/rproof/xml_reporter.rb
|
63
|
+
homepage: https://github.com/Fransez/rproof
|
64
|
+
licenses:
|
65
|
+
- GPL-3.0
|
66
|
+
metadata: {}
|
67
|
+
post_install_message:
|
68
|
+
rdoc_options: []
|
69
|
+
require_paths:
|
70
|
+
- lib
|
71
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0'
|
81
|
+
requirements: []
|
82
|
+
rubyforge_project:
|
83
|
+
rubygems_version: 2.4.5
|
84
|
+
signing_key:
|
85
|
+
specification_version: 4
|
86
|
+
summary: Test framework in Ruby.
|
87
|
+
test_files: []
|