cuke_parser 0.0.5 → 0.0.6
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.
- data/lib/cuke_parser.rb +6 -0
- data/lib/parse_engine/html_parser.rb +103 -0
- data/lib/parse_engine/parser_utils.rb +3 -0
- metadata +12 -11
data/lib/cuke_parser.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
require 'parse_engine/json_parser.rb'
|
2
|
+
require 'parse_engine/html_parser.rb'
|
2
3
|
require 'parse_engine/parser_utils.rb'
|
3
4
|
|
4
5
|
module CukeParser
|
5
6
|
|
6
7
|
@json_parser = ParseEngine::JsonParser.new
|
8
|
+
@html_parser = ParseEngine::HtmlParser.new
|
7
9
|
@parser_utils = ParseEngine::ParserUtils.new
|
8
10
|
|
9
11
|
def CukeParser.write_pretty(build,file)
|
@@ -21,5 +23,9 @@ module CukeParser
|
|
21
23
|
def CukeParser.json_jenkins_list(file_path,timestamp)
|
22
24
|
@json_parser.get_jenkins_build_list(file_path,timestamp)
|
23
25
|
end
|
26
|
+
|
27
|
+
def CukeParser.html(file_path)
|
28
|
+
@html_parser.get_build(file_path)
|
29
|
+
end
|
24
30
|
|
25
31
|
end #end CukeParser module
|
@@ -0,0 +1,103 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
require 'cuke_model/feature.rb'
|
3
|
+
require 'cuke_model/scenario.rb'
|
4
|
+
require 'cuke_model/step.rb'
|
5
|
+
require 'cuke_model/suite.rb'
|
6
|
+
|
7
|
+
module CukeParser
|
8
|
+
module ParseEngine
|
9
|
+
class HtmlParser
|
10
|
+
|
11
|
+
def initialize
|
12
|
+
@utils = ParserUtils.new
|
13
|
+
@system_data_path = "/archive/systemData.json"
|
14
|
+
@cuke_data = "/archive/cucumber.html"
|
15
|
+
end
|
16
|
+
|
17
|
+
def get_build(file_path)
|
18
|
+
if File.exists?(file_path)
|
19
|
+
today = Time.now
|
20
|
+
date = today.to_s.split(" ")[0]
|
21
|
+
time = today.to_s.split(" ")[1]
|
22
|
+
@cur_build = CukeModel::CukeSuite.new(date,time,today,nil,nil,nil,nil,nil)
|
23
|
+
return parse_build(file_path)
|
24
|
+
else
|
25
|
+
#nothing was found
|
26
|
+
return false
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def parse_build(file_path)
|
31
|
+
page = Nokogiri::HTML(open(file_path))
|
32
|
+
features = parse_features(page)
|
33
|
+
if @cur_build.status.empty?
|
34
|
+
#all the steps passed
|
35
|
+
@cur_build.status = "passed"
|
36
|
+
end
|
37
|
+
script = page.css('script').to_a.pop(2)
|
38
|
+
duration = script[0].text.gsub("document.getElementById('duration').innerHTML = \"Finished in <strong>","")
|
39
|
+
duration = duration.to_s.gsub(" seconds</strong>\";","")
|
40
|
+
@cur_build.duration = 0
|
41
|
+
@cur_build.converted_duration = duration
|
42
|
+
@cur_build.features = features['list']
|
43
|
+
return @cur_build
|
44
|
+
end
|
45
|
+
|
46
|
+
def parse_features(features)
|
47
|
+
feature_data = Hash['duration', 0, 'list', Array.new]
|
48
|
+
features.css('div.feature').each do |feature|
|
49
|
+
@cur_feature = CukeModel::CukeFeature.new("Feature",feature.css('span.val')[0].text.gsub("Feature: ",""))
|
50
|
+
scenarios = parse_scenarios((feature.css('div.background') + feature.css('div.scenario')))
|
51
|
+
if @cur_feature.status.empty?
|
52
|
+
#all the steps passed
|
53
|
+
@cur_feature.status = "passed"
|
54
|
+
end
|
55
|
+
@cur_feature.duration = scenarios['duration']
|
56
|
+
@cur_feature.converted_duration = @utils.format_time(scenarios['duration'])
|
57
|
+
@cur_feature.scenarios = scenarios['list']
|
58
|
+
feature_data['list'].push(@cur_feature)
|
59
|
+
feature_data['duration'] = feature_data['duration'] + @cur_feature.duration
|
60
|
+
end
|
61
|
+
return feature_data
|
62
|
+
end
|
63
|
+
|
64
|
+
def parse_scenarios(scenarios)
|
65
|
+
scenario_data = Hash['duration', 0, 'list', Array.new]
|
66
|
+
scenarios.each do |scenario|
|
67
|
+
@cur_scenario = CukeModel::CukeScenario.new(scenario.css('span.keyword')[0].text.gsub(":",""),scenario.css('span.val')[0].text)
|
68
|
+
steps = parse_steps(scenario.css('ol li div.step_name'))
|
69
|
+
if @cur_scenario.status.empty?
|
70
|
+
#all the steps passed
|
71
|
+
@cur_scenario.status = "passed"
|
72
|
+
end
|
73
|
+
@cur_scenario.duration = steps['duration']
|
74
|
+
@cur_scenario.converted_duration = @utils.format_time(steps['duration'])
|
75
|
+
@cur_scenario.steps = steps['list']
|
76
|
+
scenario_data['list'].push(@cur_scenario)
|
77
|
+
scenario_data['duration'] = scenario_data['duration'] + @cur_scenario.duration
|
78
|
+
end
|
79
|
+
return scenario_data
|
80
|
+
end
|
81
|
+
|
82
|
+
def parse_steps(steps)
|
83
|
+
step_data = Hash['duration', 0, 'list', Array.new]
|
84
|
+
steps.each do |step|
|
85
|
+
stepErrorMessage = ''
|
86
|
+
stepFailureImage = "I NEED TO FIND IMAGE"
|
87
|
+
if step.parent.attribute('class').to_s.gsub("step ","") == "failed"
|
88
|
+
@cur_scenario.status = "failed"
|
89
|
+
@cur_feature.status = "failed"
|
90
|
+
@cur_build.status = "failed"
|
91
|
+
stepErrorMessage = "I NEED TO FIND ERROR"
|
92
|
+
# #failed steps should have an image available:
|
93
|
+
# unless step['embeddings'].nil?
|
94
|
+
# stepFailureImage = step['embeddings'][0]['data']
|
95
|
+
# end
|
96
|
+
end
|
97
|
+
step_data['list'].push(CukeModel::CukeStep.new(step.css('span.keyword').text,step.css('span.val').text,0,0,step.parent.attribute('class').to_s.gsub("step ",""),stepErrorMessage,stepFailureImage))
|
98
|
+
end
|
99
|
+
return step_data
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cuke_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-05-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: builder
|
16
|
-
requirement: &
|
16
|
+
requirement: &25625196 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 2.1.2
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *25625196
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: json
|
27
|
-
requirement: &
|
27
|
+
requirement: &25624848 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.4.6
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *25624848
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake
|
38
|
-
requirement: &
|
38
|
+
requirement: &25624212 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 0.9.2
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *25624212
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
|
-
requirement: &
|
49
|
+
requirement: &25622832 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: 2.11.0
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *25622832
|
58
58
|
description: Library to easily pull out information for tracking your Cukes
|
59
59
|
email: rick.beyer@gmail.com
|
60
60
|
executables: []
|
@@ -66,6 +66,7 @@ files:
|
|
66
66
|
- lib/cuke_model/step.rb
|
67
67
|
- lib/cuke_model/suite.rb
|
68
68
|
- lib/cuke_parser.rb
|
69
|
+
- lib/parse_engine/html_parser.rb
|
69
70
|
- lib/parse_engine/json_parser.rb
|
70
71
|
- lib/parse_engine/parser_utils.rb
|
71
72
|
- test/cuke_parser_test.rb
|
@@ -99,7 +100,7 @@ rubyforge_project:
|
|
99
100
|
rubygems_version: 1.8.16
|
100
101
|
signing_key:
|
101
102
|
specification_version: 3
|
102
|
-
summary: cuke_parser-0.0.
|
103
|
+
summary: cuke_parser-0.0.6
|
103
104
|
test_files:
|
104
105
|
- test/cuke_parser_test.rb
|
105
106
|
- test/json_test.rb
|