w3c-validator-to-rally 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,150 @@
1
+ $VERBOSE = nil
2
+
3
+ require 'rubygems'
4
+ require 'active_resource'
5
+ require 'logger'
6
+ require 'rally_rest_api'
7
+ require 'date'
8
+ require 'time'
9
+ require 'fileutils'
10
+ require 'mechanize'
11
+ require 'htmlentities'
12
+
13
+ module W3CValidatorToRally
14
+ class W3CValidator
15
+ def defineURI(uri)
16
+ $URI = uri
17
+ end
18
+
19
+ def showURI
20
+ puts $URI
21
+ end
22
+
23
+ def getURI
24
+ return $URI
25
+ end
26
+
27
+ def startValidation(agentMechanize="Windows Mozilla")
28
+ mechanize = Mechanize.new { |agent| agent.user_agent_alias = agentMechanize }
29
+ mechanize.get("http://validator.w3.org")
30
+ forms = mechanize.page.forms.first
31
+ forms['uri'] = $URI
32
+ forms.submit
33
+
34
+ results = mechanize.page.search(".msg_err")
35
+
36
+ puts "#{results.length} error(s) found!\n"
37
+
38
+ errors = Array.new results.length
39
+
40
+ index = 0
41
+
42
+ testFirstError = results.first.elements[1].text.gsub("\n","").gsub("\t","").gsub(" ","")
43
+
44
+ if ((results.length == 1) and (testFirstError.start_with?(" Sorry")))
45
+ begin
46
+ encodeError = results.first.elements[2].text.gsub("\n","").gsub("\t","").gsub(" ","")
47
+ errors[index] = encodeError, "Encode error found"
48
+ end
49
+
50
+ else
51
+ begin
52
+ results.each do |mountDefect|
53
+
54
+ teste = mountDefect.elements[1].to_s
55
+ teste = teste.gsub(/<\/?[^>]*>/, "").gsub("\n","").gsub(" ","")
56
+
57
+ name = mountDefect.elements[2].to_s
58
+ name = name.gsub('<span class="msg">',"").gsub('</span>',"")
59
+ name = name.slice(0,255)
60
+
61
+ completeName = teste + " : " + name
62
+
63
+ #decode = HTMLEntities.new
64
+ description = mountDefect.elements[3].to_s
65
+ description = description.gsub(/<\/?[^>]*>/, "").gsub("\t","")
66
+ #description = decode.decode(description)
67
+
68
+ errors[index] = completeName,description
69
+ index = index + 1
70
+ end
71
+ end
72
+ end
73
+
74
+ return errors
75
+
76
+ end
77
+ end
78
+
79
+ class Rally
80
+ def connect(login,pass)
81
+ begin
82
+ print "Conecting with Rally...\n"
83
+ rally_logger = Logger.new STDOUT
84
+ rally_logger.level = Logger::INFO
85
+ @rally = RallyRestAPI.new(:username => login, :password => pass, :api_version => "1.29", :logger => rally_logger)
86
+ rescue
87
+ print "Error on connect. Try again...\n"
88
+ else
89
+ print "Logged with success!\n"
90
+ end
91
+ end
92
+
93
+
94
+ def createDefects(project,errors)
95
+
96
+ if errors.length > 0
97
+ begin
98
+ puts "Checking defects"
99
+
100
+ totals = errors.length - 1
101
+
102
+ uri = W3CValidatorToRally::W3CValidator.new
103
+
104
+ for index in (0..totals)
105
+
106
+ name = errors[index].first
107
+ description = errors[index].last + "<br /><br />URL:&nbsp;&nbsp;" + uri.getURI
108
+
109
+ findDefect(nil,project,name,description,index)
110
+
111
+ end
112
+ end
113
+ else
114
+ puts "No errors to create"
115
+ end
116
+ end
117
+
118
+ private
119
+ def findDefect(workspace,project,name,description,index)
120
+
121
+ proj = "https://rally1.rallydev.com/slm/webservice/1.17/project/" + project
122
+
123
+ query_result = @rally.find(:defect,:project => ref=proj){equal :name, name}
124
+
125
+ if query_result.total_result_count > 0
126
+ puts "Defect #{index + 1} already exists"
127
+ else
128
+ begin
129
+ puts "Defect not found. Creating defect number #{index + 1}"
130
+ createDefect(project,name,description,index)
131
+ end
132
+ end
133
+ end
134
+
135
+ def createDefect(project,name,description,index)
136
+ begin
137
+ proj = "https://rally1.rallydev.com/slm/webservice/1.17/project/" + project
138
+ params = {:project => ref=proj, :name => name, :severity => "Major Problem", :state => "Submitted", :description => description, :target_date => Date.today + 15}
139
+ @rally.create(:defect,params)
140
+ rescue
141
+ puts "Error on create defect number #{index + 1}"
142
+ else
143
+ puts "Defect #{index + 1} created with success!"
144
+ end
145
+ end
146
+
147
+
148
+ end
149
+
150
+ end
@@ -0,0 +1,11 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = "w3c-validator-to-rally"
3
+ s.version = "0.1.0"
4
+ s.description = "A gem to import W3C errors to Rally"
5
+ s.summary = "Version 0.1.0"
6
+ s.author = "Pablo Menezes"
7
+ s.add_dependency 'mechanize', '>= 2.3'
8
+ s.add_dependency 'rally_rest_api','>= 1.0.3'
9
+ s.add_dependency 'logger','>= 1.2.8'
10
+ s.files = Dir["{lib/**/*.rb,README.rdoc,test/**/*.rb,Rakefile,*.gemspec}"]
11
+ end
metadata ADDED
@@ -0,0 +1,95 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: w3c-validator-to-rally
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Pablo Menezes
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-04-16 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: mechanize
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '2.3'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '2.3'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rally_rest_api
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: 1.0.3
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 1.0.3
46
+ - !ruby/object:Gem::Dependency
47
+ name: logger
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: 1.2.8
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.2.8
62
+ description: A gem to import W3C errors to Rally
63
+ email:
64
+ executables: []
65
+ extensions: []
66
+ extra_rdoc_files: []
67
+ files:
68
+ - lib/w3c-validator-to-rally.rb
69
+ - w3c-validator-to-rally.gemspec
70
+ homepage:
71
+ licenses: []
72
+ post_install_message:
73
+ rdoc_options: []
74
+ require_paths:
75
+ - lib
76
+ required_ruby_version: !ruby/object:Gem::Requirement
77
+ none: false
78
+ requirements:
79
+ - - ! '>='
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ required_rubygems_version: !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ requirements: []
89
+ rubyforge_project:
90
+ rubygems_version: 1.8.21
91
+ signing_key:
92
+ specification_version: 3
93
+ summary: Version 0.1.0
94
+ test_files: []
95
+ has_rdoc: