rutema 1.3.0 → 2.0.0.pre

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.
Files changed (58) hide show
  1. checksums.yaml +7 -0
  2. data/History.txt +204 -194
  3. data/Manifest.txt +15 -48
  4. data/README.md +55 -61
  5. data/bin/rutema +7 -7
  6. data/lib/rutema/application.rb +61 -0
  7. data/lib/rutema/core/configuration.rb +195 -0
  8. data/lib/rutema/core/engine.rb +186 -0
  9. data/lib/rutema/core/framework.rb +28 -0
  10. data/lib/rutema/{objectmodel.rb → core/objectmodel.rb} +43 -48
  11. data/lib/rutema/core/parser.rb +35 -0
  12. data/lib/rutema/core/reporter.rb +105 -0
  13. data/lib/rutema/core/runner.rb +83 -0
  14. data/lib/rutema/elements/minimal.rb +47 -44
  15. data/lib/rutema/parsers/xml.rb +154 -186
  16. data/lib/rutema/version.rb +9 -0
  17. metadata +39 -108
  18. data/README.txt +0 -44
  19. data/Rakefile +0 -30
  20. data/examples/README.md +0 -17
  21. data/examples/config/database.rutema +0 -17
  22. data/examples/config/full.rutema +0 -27
  23. data/examples/config/minimal.rutema +0 -10
  24. data/examples/specs/T001.spec +0 -8
  25. data/examples/specs/T002.spec +0 -8
  26. data/examples/specs/T003.spec +0 -8
  27. data/examples/specs/T004.spec +0 -8
  28. data/examples/specs/T005.spec +0 -10
  29. data/examples/specs/T006.spec +0 -9
  30. data/examples/specs/check.spec +0 -8
  31. data/examples/specs/fail.spec +0 -9
  32. data/examples/specs/include.scenario +0 -5
  33. data/examples/specs/rutema.spec +0 -10
  34. data/examples/specs/setup.spec +0 -8
  35. data/examples/specs/teardown.spec +0 -8
  36. data/lib/rutema/configuration.rb +0 -173
  37. data/lib/rutema/models/activerecord.rb +0 -159
  38. data/lib/rutema/models/base.rb +0 -5
  39. data/lib/rutema/parsers/base.rb +0 -45
  40. data/lib/rutema/rake.rb +0 -62
  41. data/lib/rutema/reporters/activerecord.rb +0 -82
  42. data/lib/rutema/reporters/base.rb +0 -23
  43. data/lib/rutema/reporters/email.rb +0 -84
  44. data/lib/rutema/reporters/text.rb +0 -77
  45. data/lib/rutema/runners/default.rb +0 -157
  46. data/lib/rutema/runners/step.rb +0 -23
  47. data/lib/rutema/system.rb +0 -302
  48. data/test/data/duplicate_name.spec +0 -8
  49. data/test/data/no_title.spec +0 -5
  50. data/test/data/sample.spec +0 -8
  51. data/test/data/test_identifiers.rutema +0 -7
  52. data/test/test_activerecord.rb +0 -0
  53. data/test/test_configuration.rb +0 -43
  54. data/test/test_objectmodel.rb +0 -82
  55. data/test/test_parsers.rb +0 -131
  56. data/test/test_reporters.rb +0 -115
  57. data/test/test_runners.rb +0 -70
  58. data/test/test_system.rb +0 -45
@@ -1,186 +1,154 @@
1
- # Copyright (c) 2007-2011 Vassilis Rizopoulos. All rights reserved.
2
- $:.unshift File.join(File.dirname(__FILE__),'..','..')
3
- require 'rexml/document'
4
- require 'patir/command'
5
- require 'rutema/objectmodel'
6
- require 'rutema/parsers/base'
7
- require 'rutema/elements/minimal'
8
-
9
- module Rutema
10
- #BaseXMLParser encapsulates all the XML parsing code
11
- class BaseXMLParser<SpecificationParser
12
- ELEM_SPEC="specification"
13
- ELEM_DESC="specification/description"
14
- ELEM_TITLE="specification/title"
15
- ELEM_SCENARIO="specification/scenario"
16
- ELEM_REQ="requirement"
17
- #Parses __param__ and returns the Rutema::TestSpecification instance
18
- #
19
- #param can be the filename of the specification or the contents of that file.
20
- #
21
- #Will throw ParserError if something goes wrong
22
- def parse_specification param
23
- @logger.debug("Loading #{param}")
24
- begin
25
- if File.exists?(param)
26
- #read the file
27
- txt=File.read(param)
28
- filename=File.expand_path(param)
29
- else
30
- filename=Dir.pwd
31
- #try to parse the parameter
32
- txt=param
33
- end
34
- spec=parse_case(txt,filename)
35
- raise "Missing required attribute 'name' in specification element" unless spec.has_name? && !spec.name.empty?
36
- return spec
37
- rescue
38
- @logger.debug($!)
39
- raise ParserError,"Error loading #{param}: #{$!.message}"
40
- end
41
- end
42
-
43
- private
44
- #Parses the XML specification of a testcase and creates the corresponding TestSpecification instance
45
- def parse_case xmltxt,filename
46
- #the testspec to return
47
- spec=TestSpecification.new
48
- #read the test spec
49
- xmldoc=REXML::Document.new( xmltxt )
50
- #validate it
51
- validate_case(xmldoc)
52
- #parse it
53
- el=xmldoc.elements[ELEM_SPEC]
54
- xmldoc.root.attributes.each do |attr,value|
55
- add_attribute(spec,attr,value)
56
- end
57
- #get the title
58
- spec.title=xmldoc.elements[ELEM_TITLE].text
59
- spec.title||=""
60
- spec.title.strip!
61
- #get the description
62
- #strip line feeds, cariage returns and remove all tabs
63
- spec.description=xmldoc.elements[ELEM_DESC].text
64
- spec.description||=""
65
- begin
66
- spec.description.strip!
67
- spec.description.gsub!(/\t/,'')
68
- end unless spec.description.empty?
69
- #get the requirements
70
- reqs=el.elements.select{|e| e.name==ELEM_REQ}
71
- reqs.collect!{|r| r.attributes["name"]}
72
- spec.requirements=reqs
73
- #Get the scenario
74
- Dir.chdir(File.dirname(filename)) do
75
- spec.scenario=parse_scenario(xmldoc.elements[ELEM_SCENARIO].to_s) if xmldoc.elements[ELEM_SCENARIO]
76
- end
77
- spec.filename=filename
78
- return spec
79
- end
80
- #Validates the XML file from our point of view.
81
- #
82
- #Checks for the existence of ELEM_SPEC, ELEM_DESC and ELEM_TITLE and raises ParserError if they're missing.
83
- def validate_case xmldoc
84
- raise ParserError,"missing #{ELEM_SPEC} element" unless xmldoc.elements[ELEM_SPEC]
85
- raise ParserError,"missing #{ELEM_DESC} element" unless xmldoc.elements[ELEM_DESC]
86
- raise ParserError,"missing #{ELEM_TITLE} element" unless xmldoc.elements[ELEM_TITLE]
87
- end
88
-
89
- #Parses the scenario XML element and returns the Rutema::TestScenario instance
90
- def parse_scenario xmltxt
91
- @logger.debug("Parsing scenario from #{xmltxt}")
92
- scenario=Rutema::TestScenario.new
93
- xmldoc=REXML::Document.new( xmltxt )
94
- xmldoc.root.attributes.each do |attr,value|
95
- add_attribute(scenario,attr,value)
96
- end
97
- number=0
98
- xmldoc.root.elements.each do |el|
99
- step=parse_step(el.to_s)
100
- if step.step_type=="include_scenario"
101
- included_scenario=include_scenario(step)
102
- included_scenario.steps.each do |st|
103
- @logger.debug("Adding included step #{st}")
104
- number+=1
105
- st.number=number
106
- st.included_in=step.file
107
- scenario.add_step(st)
108
- end
109
- else
110
- number+=1
111
- step.number=number
112
- scenario.add_step(step)
113
- end
114
- end
115
- return scenario
116
- end
117
-
118
- #Parses xml and returns the Rutema::TestStep instance
119
- def parse_step xmltxt
120
- xmldoc=REXML::Document.new( xmltxt )
121
- #any step element
122
- step=Rutema::TestStep.new()
123
- step.ignore=false
124
- xmldoc.root.attributes.each do |attr,value|
125
- add_attribute(step,attr,value)
126
- end
127
- step.text=xmldoc.root.text.strip if xmldoc.root.text
128
- step.step_type=xmldoc.root.name
129
- return step
130
- end
131
-
132
- def add_attribute element,attr,value
133
- if boolean?(value)
134
- element.attribute(attr,eval(value))
135
- else
136
- element.attribute(attr,value)
137
- end
138
- end
139
-
140
- def boolean? attribute_value
141
- return true if attribute_value=="true" || attribute_value=="false"
142
- return false
143
- end
144
-
145
- #handles <include_scenario> elements, adding the steps to the current scenario
146
- def include_scenario step
147
- @logger.debug("Including file from #{step}")
148
- raise ParserError,"missing required attribute file in #{step}" unless step.has_file?
149
- raise ParserError,"Cannot find #{File.expand_path(step.file)}" unless File.exists?(File.expand_path(step.file))
150
- #Load the scenario
151
- step.file=File.expand_path(step.file)
152
- include_content=File.read(step.file)
153
- @logger.debug(include_content)
154
- return parse_scenario(include_content)
155
- end
156
- end
157
- #The ExtensibleXMLParser allows you to easily add methods to handle specification elements.
158
- #
159
- #A method element_foo(step) allows you to add behaviour for foo scenario elements.
160
- #
161
- #The method will receive a Rutema::TestStep instance.
162
- class ExtensibleXMLParser<BaseXMLParser
163
- def parse_specification param
164
- spec = super(param)
165
- #change into the directory the spec is in to handle relative paths correctly
166
- Dir.chdir(File.dirname(File.expand_path(spec.filename))) do |path|
167
- #iterate through the steps
168
- spec.scenario.steps.each do |step|
169
- #do we have a method to handle the element?
170
- if respond_to?(:"element_#{step.step_type}")
171
- begin
172
- self.send(:"element_#{step.step_type}",step)
173
- rescue
174
- raise ParserError, $!.message
175
- end
176
- end
177
- end
178
- end
179
- return spec
180
- end
181
- end
182
- #MinimalXMLParser offers three runnable steps in the scenarios as defined in Rutema::Elements::Minimal
183
- class MinimalXMLParser<ExtensibleXMLParser
184
- include Rutema::Elements::Minimal
185
- end
186
- end
1
+ # Copyright (c) 2007-2015 Vassilis Rizopoulos. All rights reserved.
2
+ require 'rexml/document'
3
+ require 'patir/command'
4
+ require_relative '../core/parser'
5
+ require_relative '../core/objectmodel'
6
+ require_relative '../elements/minimal'
7
+
8
+ module Rutema
9
+ module Parsers
10
+ #Rutema::Parsers::XML is a basic XML parser that is easily extended
11
+ #
12
+ #Derive your parser from this class and define for each element 'foo' that you want to parse
13
+ #a method element_foo(step)
14
+ #
15
+ #The method will receive a Rutema::Step instance as a parameter which it should return
16
+ class XML<SpecificationParser
17
+ include Rutema::Elements::Minimal
18
+ #:nodoc:
19
+ ELEM_SPEC="specification"
20
+ #:nodoc:
21
+ ELEM_DESC="specification/description"
22
+ #:nodoc:
23
+ ELEM_TITLE="specification/title"
24
+ #:nodoc:
25
+ ELEM_SCENARIO="specification/scenario"
26
+ #Parses __param__ and returns the Rutema::Specification instance
27
+ #
28
+ #param can be the filename of the specification or the contents of that file.
29
+ #
30
+ #Will throw Rutema::ParserError if something goes wrong
31
+ def parse_specification param
32
+ @parsed||=[]
33
+ begin
34
+ if File.exist?(param)
35
+ txt=File.read(param)
36
+ filename=File.expand_path(param)
37
+ else
38
+ txt=param
39
+ filename=Dir.pwd
40
+ end
41
+ spec=parse_case(txt,filename)
42
+ raise Rutema::ParserError,"Missing required attribute 'name' in specification element" unless spec.has_name? && !spec.name.empty?
43
+ raise Rutema::ParserError,"Duplicate test name '#{spec.name}' in #{filename}" if @parsed.include?(spec.name)
44
+ @parsed<<spec.name
45
+ extension_handling(spec)
46
+ end
47
+ end
48
+ private
49
+ #Parses the XML specification of a testcase and creates the corresponding Rutema::Specification instance
50
+ def parse_case xmltxt,filename
51
+ spec=Rutema::Specification.new({})
52
+ xmldoc=REXML::Document.new( xmltxt )
53
+ validate_case(xmldoc)
54
+ xmldoc.root.attributes.each do |attr,value|
55
+ add_attribute(spec,attr,value)
56
+ end
57
+ spec.title=xmldoc.elements[ELEM_TITLE].text
58
+ spec.title||=""
59
+ spec.title.strip!
60
+ spec.description=xmldoc.elements[ELEM_DESC].text
61
+ spec.description||=""
62
+ unless spec.description.empty?
63
+ spec.description.strip!
64
+ spec.description.gsub!(/\t/,'')
65
+ end
66
+ Dir.chdir(File.dirname(filename)) do
67
+ spec.scenario=parse_scenario(xmldoc.elements[ELEM_SCENARIO].to_s) if xmldoc.elements[ELEM_SCENARIO]
68
+ end
69
+ spec.filename=filename
70
+ return spec
71
+ end
72
+ #Validates the XML file from our point of view.
73
+ def validate_case xmldoc
74
+ raise Rutema::ParserError,"missing #{ELEM_SPEC} element in #{xmldoc}" unless xmldoc.elements[ELEM_SPEC]
75
+ raise Rutema::ParserError,"missing #{ELEM_DESC} element in #{xmldoc}" unless xmldoc.elements[ELEM_DESC]
76
+ raise Rutema::ParserError,"missing #{ELEM_TITLE} element in #{xmldoc}" unless xmldoc.elements[ELEM_TITLE]
77
+ end
78
+ #Parses the 'scenario' XML element and returns the Rutema::Scenario instance
79
+ def parse_scenario xmltxt
80
+ scenario=Rutema::Scenario.new([])
81
+ xmldoc=REXML::Document.new( xmltxt )
82
+ xmldoc.root.attributes.each do |attr,value|
83
+ add_attribute(scenario,attr,value)
84
+ end
85
+ number=0
86
+ xmldoc.root.elements.each do |el|
87
+ step=parse_step(el.to_s)
88
+ if step.step_type=="include_scenario"
89
+ included_scenario=include_scenario(step)
90
+ included_scenario.steps.each do |st|
91
+ number+=1
92
+ st.number=number
93
+ st.included_in=step.file
94
+ scenario.add_step(st)
95
+ end
96
+ else
97
+ number+=1
98
+ step.number=number
99
+ scenario.add_step(step)
100
+ end
101
+ end
102
+ return scenario
103
+ end
104
+ #Parses xml and returns the Rutema::Step instance
105
+ def parse_step xmltxt
106
+ xmldoc=REXML::Document.new( xmltxt )
107
+ #any step element
108
+ step=Rutema::Step.new()
109
+ step.ignore=false
110
+ xmldoc.root.attributes.each do |attr,value|
111
+ add_attribute(step,attr,value)
112
+ end
113
+ step.text=xmldoc.root.text.strip if xmldoc.root.text
114
+ step.step_type=xmldoc.root.name
115
+ return step
116
+ end
117
+ def add_attribute element,attr,value
118
+ if boolean?(value)
119
+ element.attribute(attr,eval(value))
120
+ else
121
+ element.attribute(attr,value)
122
+ end
123
+ end
124
+ def boolean? attribute_value
125
+ return true if attribute_value=="true" || attribute_value=="false"
126
+ return false
127
+ end
128
+ #handles <include_scenario> elements, adding the steps to the current scenario
129
+ def include_scenario step
130
+ raise Rutema::ParserError,"missing required attribute file in #{step}" unless step.has_file?
131
+ raise Rutema::ParserError,"Cannot find #{File.expand_path(step.file)}" unless File.exist?(File.expand_path(step.file))
132
+ step.file=File.expand_path(step.file)
133
+ include_content=File.read(step.file)
134
+ return parse_scenario(include_content)
135
+ end
136
+ def extension_handling spec
137
+ #change into the directory the spec is in to handle relative paths correctly
138
+ Dir.chdir(File.dirname(File.expand_path(spec.filename))) do |path|
139
+ spec.scenario.steps.each do |step|
140
+ #do we have a method to handle the element?
141
+ if respond_to?(:"element_#{step.step_type}")
142
+ begin
143
+ self.send(:"element_#{step.step_type}",step)
144
+ rescue
145
+ raise ParserError, $!.message
146
+ end
147
+ end#begin
148
+ end#each
149
+ end#chdir
150
+ return spec
151
+ end
152
+ end
153
+ end
154
+ end
@@ -0,0 +1,9 @@
1
+ module Rutema
2
+ #This module defines the version numbers for the library
3
+ module Version
4
+ MAJOR=2
5
+ MINOR=0
6
+ TINY="0.pre"
7
+ STRING=[ MAJOR, MINOR, TINY ].join( "." )
8
+ end
9
+ end
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rutema
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
5
- prerelease:
4
+ version: 2.0.0.pre
6
5
  platform: ruby
7
6
  authors:
8
7
  - Vassilis Rizopoulos
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-11-28 00:00:00.000000000 Z
11
+ date: 2015-03-09 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: patir
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,136 +27,82 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: highline
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
37
- version: 1.6.15
33
+ version: 1.7.0
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ~>
44
39
  - !ruby/object:Gem::Version
45
- version: 1.6.15
46
- - !ruby/object:Gem::Dependency
47
- name: mailfactory
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ~>
52
- - !ruby/object:Gem::Version
53
- version: 1.4.0
54
- type: :runtime
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ~>
60
- - !ruby/object:Gem::Version
61
- version: 1.4.0
40
+ version: 1.7.0
62
41
  - !ruby/object:Gem::Dependency
63
42
  name: rdoc
64
43
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
44
  requirements:
67
45
  - - ~>
68
46
  - !ruby/object:Gem::Version
69
- version: '3.10'
47
+ version: '4.0'
70
48
  type: :development
71
49
  prerelease: false
72
50
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
51
  requirements:
75
52
  - - ~>
76
53
  - !ruby/object:Gem::Version
77
- version: '3.10'
54
+ version: '4.0'
78
55
  - !ruby/object:Gem::Dependency
79
56
  name: hoe
80
57
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
58
  requirements:
83
59
  - - ~>
84
60
  - !ruby/object:Gem::Version
85
- version: '3.3'
61
+ version: '3.13'
86
62
  type: :development
87
63
  prerelease: false
88
64
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
65
  requirements:
91
66
  - - ~>
92
67
  - !ruby/object:Gem::Version
93
- version: '3.3'
94
- description: ! "rutema is a test execution tool.\nIt allows the combination of various
95
- test tools while it takes care of logging, reporting, archiving of results and formalizes
96
- execution of automated and manual tests.\nIt's purpose is to make testing in heterogeneous
68
+ version: '3.13'
69
+ description: "rutema [http://github.com/damphyr/rutema](http://github.com/damphyr/rutema)\n\nrutema
70
+ is a test execution tool and a framework for organizing and managing test execution
71
+ across different tools.\n\nIt enables the combination of different test tools while
72
+ it takes care of logging, reporting, archiving of results and formalizes execution
73
+ of automated and manual tests.\n\nIt's purpose is to make testing in heterogeneous
97
74
  environments easier. \n\n###Why?\nRequire consistency, repeatability and reliability
98
- from your test infrastructure while gathering data on every run.\n\nWhether running
99
- through a checklist of manual steps, or executing a sequence of fully automated
100
- commands we always want in the end to know if a test has failed, where it failed
101
- and what was the state of the system at that time.\n\nrutema will gather all logs,
102
- timestamp them, store them and report on them. "
103
- email: vassilisrizopoulos@gmail.com
75
+ from your test infrastructure while gathering data on every run."
76
+ email:
77
+ - vassilisrizopoulos@gmail.com
104
78
  executables:
105
79
  - rutema
106
80
  extensions: []
107
81
  extra_rdoc_files:
108
82
  - History.txt
109
83
  - Manifest.txt
110
- - README.txt
84
+ - README.md
111
85
  files:
112
- - bin/rutema
113
86
  - History.txt
114
- - examples/config/database.rutema
115
- - examples/config/full.rutema
116
- - examples/config/minimal.rutema
117
- - examples/README.md
118
- - examples/specs/check.spec
119
- - examples/specs/fail.spec
120
- - examples/specs/include.scenario
121
- - examples/specs/rutema.spec
122
- - examples/specs/setup.spec
123
- - examples/specs/T001.spec
124
- - examples/specs/T002.spec
125
- - examples/specs/T003.spec
126
- - examples/specs/T004.spec
127
- - examples/specs/T005.spec
128
- - examples/specs/T006.spec
129
- - examples/specs/teardown.spec
130
- - lib/rutema/configuration.rb
131
- - lib/rutema/elements/minimal.rb
132
- - lib/rutema/models/activerecord.rb
133
- - lib/rutema/models/base.rb
134
- - lib/rutema/objectmodel.rb
135
- - lib/rutema/parsers/base.rb
136
- - lib/rutema/parsers/xml.rb
137
- - lib/rutema/rake.rb
138
- - lib/rutema/reporters/activerecord.rb
139
- - lib/rutema/reporters/base.rb
140
- - lib/rutema/reporters/email.rb
141
- - lib/rutema/reporters/text.rb
142
- - lib/rutema/runners/default.rb
143
- - lib/rutema/runners/step.rb
144
- - lib/rutema/system.rb
145
87
  - Manifest.txt
146
- - Rakefile
147
88
  - README.md
148
- - README.txt
149
- - test/data/duplicate_name.spec
150
- - test/data/no_title.spec
151
- - test/data/sample.spec
152
- - test/data/test_identifiers.rutema
153
- - test/test_activerecord.rb
154
- - test/test_configuration.rb
155
- - test/test_objectmodel.rb
156
- - test/test_parsers.rb
157
- - test/test_reporters.rb
158
- - test/test_runners.rb
159
- - test/test_system.rb
89
+ - bin/rutema
90
+ - lib/rutema/application.rb
91
+ - lib/rutema/core/configuration.rb
92
+ - lib/rutema/core/engine.rb
93
+ - lib/rutema/core/framework.rb
94
+ - lib/rutema/core/objectmodel.rb
95
+ - lib/rutema/core/parser.rb
96
+ - lib/rutema/core/reporter.rb
97
+ - lib/rutema/core/runner.rb
98
+ - lib/rutema/elements/minimal.rb
99
+ - lib/rutema/parsers/xml.rb
100
+ - lib/rutema/version.rb
160
101
  - .gemtest
161
102
  homepage: http://github.com/damphyr/rutema
162
- licenses: []
103
+ licenses:
104
+ - MIT
105
+ metadata: {}
163
106
  post_install_message:
164
107
  rdoc_options:
165
108
  - --main
@@ -167,32 +110,20 @@ rdoc_options:
167
110
  require_paths:
168
111
  - lib
169
112
  required_ruby_version: !ruby/object:Gem::Requirement
170
- none: false
171
113
  requirements:
172
- - - ! '>='
114
+ - - '>='
173
115
  - !ruby/object:Gem::Version
174
116
  version: '0'
175
- segments:
176
- - 0
177
- hash: 1271940349164417717
178
117
  required_rubygems_version: !ruby/object:Gem::Requirement
179
- none: false
180
118
  requirements:
181
- - - ! '>='
119
+ - - '>'
182
120
  - !ruby/object:Gem::Version
183
- version: '0'
121
+ version: 1.3.1
184
122
  requirements: []
185
- rubyforge_project: patir
186
- rubygems_version: 1.8.24
123
+ rubyforge_project:
124
+ rubygems_version: 2.0.14
187
125
  signing_key:
188
- specification_version: 3
126
+ specification_version: 4
189
127
  summary: rutema is a test execution and management framework for heterogeneous testing
190
128
  environments
191
- test_files:
192
- - test/test_activerecord.rb
193
- - test/test_configuration.rb
194
- - test/test_objectmodel.rb
195
- - test/test_parsers.rb
196
- - test/test_reporters.rb
197
- - test/test_runners.rb
198
- - test/test_system.rb
129
+ test_files: []