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.
@@ -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,3 @@
1
+ module Rproof
2
+ VERSION = '0.0.1'
3
+ 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: []