w3c-validator-to-rally 0.1.0
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/w3c-validator-to-rally.rb +150 -0
- data/w3c-validator-to-rally.gemspec +11 -0
- metadata +95 -0
@@ -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: " + 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:
|