gondola 1.1.3 → 1.1.4
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/Rakefile +2 -2
- data/bin/gondola +1 -4
- data/gondola.gemspec +3 -1
- data/lib/gondola/converter.rb +8 -186
- data/lib/gondola/html_converter.rb +206 -0
- data/lib/gondola/legacy_converter.rb +41 -0
- data/lib/gondola/testrunner.rb +9 -6
- data/lib/gondola/version.rb +1 -7
- data/lib/gondola.rb +2 -0
- metadata +4 -2
data/Rakefile
CHANGED
@@ -24,7 +24,7 @@ Jeweler::Tasks.new do |gem|
|
|
24
24
|
}
|
25
25
|
gem.email = "mperry@agoragames.com"
|
26
26
|
gem.authors = ["Matthew Perry"]
|
27
|
-
gem.version = Gondola::
|
27
|
+
gem.version = Gondola::VERSION
|
28
28
|
# Dependencies in GemFile
|
29
29
|
end
|
30
30
|
Jeweler::RubygemsDotOrgTasks.new
|
@@ -53,7 +53,7 @@ task :default => :test
|
|
53
53
|
|
54
54
|
require 'rake/rdoctask'
|
55
55
|
Rake::RDocTask.new do |rdoc|
|
56
|
-
version = File.exist?('VERSION') ? File.read('VERSION') :
|
56
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : Gondola::VERSION
|
57
57
|
|
58
58
|
rdoc.rdoc_dir = 'rdoc'
|
59
59
|
rdoc.title = "gondola #{version}"
|
data/bin/gondola
CHANGED
@@ -16,7 +16,7 @@ require 'gondola'
|
|
16
16
|
# Command parsing stuff
|
17
17
|
cmd = CmdParse::CommandParser.new(true, true)
|
18
18
|
cmd.program_name = "gondola"
|
19
|
-
cmd.program_version = Gondola::
|
19
|
+
cmd.program_version = Gondola::VERSION
|
20
20
|
cmd.add_command(CmdParse::HelpCommand.new)
|
21
21
|
cmd.add_command(CmdParse::VersionCommand.new)
|
22
22
|
|
@@ -34,9 +34,6 @@ class RunCommand < CmdParse::Command
|
|
34
34
|
opt.on('-r', '--recursive', 'Execute all sub suites') do |r|
|
35
35
|
@opts[:recursive] = true
|
36
36
|
end
|
37
|
-
opt.on('-l', '--legacy', 'Allow legacy Gondola suites') do |l|
|
38
|
-
@opts[:legacy] = true
|
39
|
-
end
|
40
37
|
end
|
41
38
|
end
|
42
39
|
|
data/gondola.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{gondola}
|
8
|
-
s.version = "1.1.
|
8
|
+
s.version = "1.1.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Matthew Perry"]
|
@@ -37,6 +37,8 @@ Gem::Specification.new do |s|
|
|
37
37
|
"gondola.gemspec",
|
38
38
|
"lib/gondola.rb",
|
39
39
|
"lib/gondola/converter.rb",
|
40
|
+
"lib/gondola/html_converter.rb",
|
41
|
+
"lib/gondola/legacy_converter.rb",
|
40
42
|
"lib/gondola/tester.rb",
|
41
43
|
"lib/gondola/testrunner.rb",
|
42
44
|
"lib/gondola/version.rb",
|
data/lib/gondola/converter.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
# Gondola - converter.rb:
|
2
|
-
#
|
3
|
-
#
|
2
|
+
# Class definition for turning one format into
|
3
|
+
# another
|
4
4
|
|
5
5
|
module Gondola
|
6
6
|
class Converter
|
7
|
-
# Constructor that opens
|
7
|
+
# Constructor that opens a file
|
8
8
|
def initialize(filename, sel="@sel")
|
9
9
|
File.open(filename, "r") do |f|
|
10
|
-
@
|
10
|
+
@body = f.read
|
11
11
|
end
|
12
12
|
@s_obj = sel
|
13
13
|
ruby()
|
@@ -17,197 +17,19 @@ module Gondola
|
|
17
17
|
# Returns the name of this test case
|
18
18
|
def name
|
19
19
|
unless @name
|
20
|
-
@name =
|
20
|
+
@name = "Abstract Converter"
|
21
21
|
end
|
22
22
|
@name
|
23
23
|
end
|
24
24
|
|
25
25
|
# Function: ruby
|
26
|
-
# This function parses the
|
27
|
-
#
|
28
|
-
# html_to_ruby helper function
|
26
|
+
# This function parses the given file
|
27
|
+
# and returns valid selenium ruby code
|
29
28
|
def ruby
|
30
29
|
unless @ruby
|
31
|
-
@ruby = ""
|
32
|
-
# Get body of commands from flattened html
|
33
|
-
cmd_body = /<tbody>(.*)<\/tbody>/.match(@html.split("\n").join(''))[1]
|
34
|
-
|
35
|
-
# Define some patterns for the individual commands
|
36
|
-
block_rxp = Regexp.new(/<tr>(.*?)<\/tr>/)
|
37
|
-
cmd_rxp = Regexp.new(/<td>(.*?)<\/td>\s*<td>(.*?)<\/td>\s*<td>(.*?)<\/td>/)
|
38
|
-
|
39
|
-
# Loop over all commands
|
40
|
-
cmd_body.scan(block_rxp ) do |cmd_block|
|
41
|
-
cmd_block[0].scan(cmd_rxp ) do |cmd|
|
42
|
-
# Need to make sure arguements are represented
|
43
|
-
# correctly
|
44
|
-
if cmd[1] =~ /\$\{(.*)\}/
|
45
|
-
cmd[1] = $1
|
46
|
-
elsif cmd[1] != ""
|
47
|
-
cmd[1] = cmd[1].inspect
|
48
|
-
end
|
49
|
-
if cmd[2] =~ /\$\{(.*)\}/
|
50
|
-
cmd[2] = $1
|
51
|
-
elsif cmd[2] != ""
|
52
|
-
cmd[2] = cmd[2].inspect
|
53
|
-
end
|
54
|
-
# Append commands to a result string
|
55
|
-
args = [ cmd[1], cmd[2] ]
|
56
|
-
@ruby << html_to_ruby(cmd[0], args)
|
57
|
-
@ruby << "\ncmd_inc\n"
|
58
|
-
end
|
59
|
-
end
|
30
|
+
@ruby = "puts 'This is an abstract converter, do not use this.'"
|
60
31
|
end
|
61
32
|
@ruby
|
62
33
|
end
|
63
|
-
|
64
|
-
private
|
65
|
-
# Function: html_to_ruby
|
66
|
-
# cmd - the name of the command
|
67
|
-
# args - array of arguements to cmd
|
68
|
-
# This function turns a command that has been
|
69
|
-
# extracted from a selenium HTML file into
|
70
|
-
# one that can be used by the ruby-driver for
|
71
|
-
# selenium
|
72
|
-
def html_to_ruby(cmd, args)
|
73
|
-
# Select over various command types
|
74
|
-
case cmd
|
75
|
-
# Assert command
|
76
|
-
when /^(assert|verify)(.*)$/ then
|
77
|
-
# Check to see if this is a negated assertion
|
78
|
-
tester = $1
|
79
|
-
string = $2
|
80
|
-
if $1 =~ /(.*)Not(.*)$/
|
81
|
-
string = $1 + $2
|
82
|
-
tester = tester + "_not"
|
83
|
-
end
|
84
|
-
|
85
|
-
# Check the semantics of the command
|
86
|
-
if semantic_is?(string)
|
87
|
-
retval = "#{tester} #{@s_obj}.is_#{underscore(string)}"
|
88
|
-
if args[0] != ""
|
89
|
-
retval += "(#{args[0]}"
|
90
|
-
end
|
91
|
-
if args[1] != ""
|
92
|
-
retval += ", #{args[1]}"
|
93
|
-
end
|
94
|
-
retval += ")"
|
95
|
-
else
|
96
|
-
var = args[0]
|
97
|
-
extra = ''
|
98
|
-
if args[1] != ""
|
99
|
-
var = args[1]
|
100
|
-
extra = "(#{args[0]})"
|
101
|
-
end
|
102
|
-
retval = "#{tester}_eq #{var}, #{@s_obj}.get_#{underscore(string)}" + extra
|
103
|
-
end
|
104
|
-
|
105
|
-
# All commands return arrays that need to be joined
|
106
|
-
if string =~ /^All/
|
107
|
-
retval += ".join(\",\")"
|
108
|
-
end
|
109
|
-
return retval
|
110
|
-
|
111
|
-
# Wait For command
|
112
|
-
when /^waitFor(.*)$/ then
|
113
|
-
# Special case
|
114
|
-
if $1 == "PageToLoad"
|
115
|
-
return "#{@s_obj}.wait_for_page_to_load \"30000\""
|
116
|
-
end
|
117
|
-
# The expression that is checked against depends on whether
|
118
|
-
# or not the command uses the "is" or the "get" semantic
|
119
|
-
if semantic_is?($1)
|
120
|
-
expression = "#{@s_obj}.is_#{underscore($1)}(#{args[0]}"
|
121
|
-
if args[1] != ""
|
122
|
-
expression += ", #{args[1]}"
|
123
|
-
end
|
124
|
-
expression += ")"
|
125
|
-
else
|
126
|
-
expression = "#{args[1]} == #{@s_obj}.get_#{underscore($1)}(#{args[1]})"
|
127
|
-
end
|
128
|
-
# The waitFor commands loop until something is satisfied
|
129
|
-
return "assert !60.times{ break if(#{expression} rescue false); sleep 1 }"
|
130
|
-
|
131
|
-
# AndWait command POSTFIX
|
132
|
-
when /^(.*)AndWait$/ then
|
133
|
-
# A command with a postfix of AndWait simply adds
|
134
|
-
# a second command which waits a certain time
|
135
|
-
firstPart = html_to_ruby($1, args)
|
136
|
-
secondPart = "\n#{@s_obj}.wait_for_page_to_load \"30000\""
|
137
|
-
return firstPart + secondPart
|
138
|
-
|
139
|
-
# store command
|
140
|
-
when /^store(.*)$/ then
|
141
|
-
string = $1
|
142
|
-
# Store by itself doesnt use any selenium functions
|
143
|
-
# its the same as a regular assignment
|
144
|
-
if $1 == ""
|
145
|
-
# Arguements have quotes by default
|
146
|
-
# they need to be stripped for LHS assignments
|
147
|
-
args[1] = args[1].match(/"(.*)"/)[1]
|
148
|
-
return "#{args[1]} = #{args[0]}"
|
149
|
-
end
|
150
|
-
|
151
|
-
# Otherwise, a store command takes the result of the
|
152
|
-
# cmd and stores it somewhere
|
153
|
-
var = args[0]
|
154
|
-
extra = ""
|
155
|
-
if args[1] != ""
|
156
|
-
var = args[1]
|
157
|
-
extra = "(#{args[0]})"
|
158
|
-
end
|
159
|
-
# Arguements have quotes by default
|
160
|
-
# they need to be stripped for LHS assignments
|
161
|
-
var = var.match(/"(.*)"/)[1]
|
162
|
-
if semantic_is?(string)
|
163
|
-
return "#{var} = #{@s_obj}.is_#{underscore(string)}" + extra
|
164
|
-
else
|
165
|
-
return "#{var} = #{@s_obj}.get_#{underscore(string)}" + extra
|
166
|
-
end
|
167
|
-
|
168
|
-
# Pause is directly translated
|
169
|
-
when /^pause$/ then
|
170
|
-
convert = args[0].to_f * 0.001
|
171
|
-
return "sleep #{convert}"
|
172
|
-
|
173
|
-
# Default case
|
174
|
-
else
|
175
|
-
# Most commands just need to be converted to
|
176
|
-
# underscore_case and have their arguements
|
177
|
-
# appeneded
|
178
|
-
cmd_new = underscore(cmd)
|
179
|
-
add = ""
|
180
|
-
if args[1] != ""
|
181
|
-
add = ", #{args[1]}"
|
182
|
-
end
|
183
|
-
return "#{@s_obj}.#{cmd_new} #{args[0]}" + add
|
184
|
-
end
|
185
|
-
end
|
186
|
-
|
187
|
-
# Function to turn CamelCase into underscore_case
|
188
|
-
def underscore(str)
|
189
|
-
str.gsub(/(.)([A-Z])/,'\1_\2').downcase
|
190
|
-
end
|
191
|
-
|
192
|
-
# Function to weed out 11 special functions that
|
193
|
-
# use an "is" semantic
|
194
|
-
def semantic_is?(str)
|
195
|
-
case str
|
196
|
-
when /Present$/
|
197
|
-
return true
|
198
|
-
when /Checked$/
|
199
|
-
return true
|
200
|
-
when /Editable$/
|
201
|
-
return true
|
202
|
-
when /Ordered$/
|
203
|
-
return true
|
204
|
-
when /Selected$/
|
205
|
-
return true
|
206
|
-
when /Visible$/
|
207
|
-
return true
|
208
|
-
else
|
209
|
-
return false
|
210
|
-
end
|
211
|
-
end
|
212
34
|
end
|
213
35
|
end
|
@@ -0,0 +1,206 @@
|
|
1
|
+
# Gondola - html_converter.rb:
|
2
|
+
# Class definition for turning Selenium HTML into
|
3
|
+
# webdriver ruby code
|
4
|
+
require 'rubygems'
|
5
|
+
require 'gondola'
|
6
|
+
|
7
|
+
module Gondola
|
8
|
+
class HtmlConverter < Converter
|
9
|
+
# Function: name
|
10
|
+
# Returns the name of this test case
|
11
|
+
def name
|
12
|
+
unless @name
|
13
|
+
@name = @body.match(/<title>(.*)<\/title>/m)[1]
|
14
|
+
end
|
15
|
+
@name
|
16
|
+
end
|
17
|
+
|
18
|
+
# Function: ruby
|
19
|
+
# This function parses the selenium
|
20
|
+
# HTML file and sends commands to the
|
21
|
+
# html_to_ruby helper function
|
22
|
+
def ruby
|
23
|
+
unless @ruby
|
24
|
+
@ruby = ""
|
25
|
+
# Get body of commands from flattened html
|
26
|
+
cmd_body = @body.match(/<tbody>(.*)<\/tbody>/m)[1]
|
27
|
+
|
28
|
+
# Define some patterns for the individual commands
|
29
|
+
block_rxp = Regexp.new(/<tr>(.*?)<\/tr>/m)
|
30
|
+
cmd_rxp = Regexp.new(/<td>(.*?)<\/td>\s*<td>(.*?)<\/td>\s*<td>(.*?)<\/td>/m)
|
31
|
+
|
32
|
+
# Loop over all commands
|
33
|
+
cmd_body.scan(block_rxp) do |cmd_block|
|
34
|
+
cmd_block[0].scan(cmd_rxp) do |cmd|
|
35
|
+
# Need to make sure arguements are represented
|
36
|
+
# correctly
|
37
|
+
if cmd[1] =~ /\$\{(.*)\}/
|
38
|
+
cmd[1] = $1
|
39
|
+
elsif cmd[1] != ""
|
40
|
+
cmd[1] = cmd[1].inspect
|
41
|
+
end
|
42
|
+
if cmd[2] =~ /\$\{(.*)\}/
|
43
|
+
cmd[2] = $1
|
44
|
+
elsif cmd[2] != ""
|
45
|
+
cmd[2] = cmd[2].inspect
|
46
|
+
end
|
47
|
+
# Append commands to a result string
|
48
|
+
args = [ cmd[1], cmd[2] ]
|
49
|
+
@ruby << html_to_ruby(cmd[0], args)
|
50
|
+
@ruby << "\ncmd_inc\n"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
@ruby
|
55
|
+
end
|
56
|
+
|
57
|
+
private
|
58
|
+
# Function: html_to_ruby
|
59
|
+
# cmd - the name of the command
|
60
|
+
# args - array of arguements to cmd
|
61
|
+
# This function turns a command that has been
|
62
|
+
# extracted from a selenium HTML file into
|
63
|
+
# one that can be used by the ruby-driver for
|
64
|
+
# selenium
|
65
|
+
def html_to_ruby(cmd, args)
|
66
|
+
# Select over various command types
|
67
|
+
case cmd
|
68
|
+
# Assert command
|
69
|
+
when /^(assert|verify)(.*)$/ then
|
70
|
+
# Check to see if this is a negated assertion
|
71
|
+
tester = $1
|
72
|
+
string = $2
|
73
|
+
if $1 =~ /(.*)Not(.*)$/
|
74
|
+
string = $1 + $2
|
75
|
+
tester = tester + "_not"
|
76
|
+
end
|
77
|
+
|
78
|
+
# Check the semantics of the command
|
79
|
+
if semantic_is?(string)
|
80
|
+
retval = "#{tester} #{@s_obj}.is_#{underscore(string)}"
|
81
|
+
if args[0] != ""
|
82
|
+
retval += "(#{args[0]}"
|
83
|
+
end
|
84
|
+
if args[1] != ""
|
85
|
+
retval += ", #{args[1]}"
|
86
|
+
end
|
87
|
+
retval += ")"
|
88
|
+
else
|
89
|
+
var = args[0]
|
90
|
+
extra = ''
|
91
|
+
if args[1] != ""
|
92
|
+
var = args[1]
|
93
|
+
extra = "(#{args[0]})"
|
94
|
+
end
|
95
|
+
retval = "#{tester}_eq #{var}, #{@s_obj}.get_#{underscore(string)}" + extra
|
96
|
+
end
|
97
|
+
|
98
|
+
# All commands return arrays that need to be joined
|
99
|
+
if string =~ /^All/
|
100
|
+
retval += ".join(\",\")"
|
101
|
+
end
|
102
|
+
return retval
|
103
|
+
|
104
|
+
# Wait For command
|
105
|
+
when /^waitFor(.*)$/ then
|
106
|
+
# Special case
|
107
|
+
if $1 == "PageToLoad"
|
108
|
+
return "#{@s_obj}.wait_for_page_to_load \"30000\""
|
109
|
+
end
|
110
|
+
# The expression that is checked against depends on whether
|
111
|
+
# or not the command uses the "is" or the "get" semantic
|
112
|
+
if semantic_is?($1)
|
113
|
+
expression = "#{@s_obj}.is_#{underscore($1)}(#{args[0]}"
|
114
|
+
if args[1] != ""
|
115
|
+
expression += ", #{args[1]}"
|
116
|
+
end
|
117
|
+
expression += ")"
|
118
|
+
else
|
119
|
+
expression = "#{args[1]} == #{@s_obj}.get_#{underscore($1)}(#{args[1]})"
|
120
|
+
end
|
121
|
+
# The waitFor commands loop until something is satisfied
|
122
|
+
return "assert !60.times{ break if(#{expression} rescue false); sleep 1 }"
|
123
|
+
|
124
|
+
# AndWait command POSTFIX
|
125
|
+
when /^(.*)AndWait$/ then
|
126
|
+
# A command with a postfix of AndWait simply adds
|
127
|
+
# a second command which waits a certain time
|
128
|
+
firstPart = html_to_ruby($1, args)
|
129
|
+
secondPart = "\n#{@s_obj}.wait_for_page_to_load \"30000\""
|
130
|
+
return firstPart + secondPart
|
131
|
+
|
132
|
+
# store command
|
133
|
+
when /^store(.*)$/ then
|
134
|
+
string = $1
|
135
|
+
# Store by itself doesnt use any selenium functions
|
136
|
+
# its the same as a regular assignment
|
137
|
+
if $1 == ""
|
138
|
+
# Arguements have quotes by default
|
139
|
+
# they need to be stripped for LHS assignments
|
140
|
+
args[1] = args[1].match(/"(.*)"/)[1]
|
141
|
+
return "#{args[1]} = #{args[0]}"
|
142
|
+
end
|
143
|
+
|
144
|
+
# Otherwise, a store command takes the result of the
|
145
|
+
# cmd and stores it somewhere
|
146
|
+
var = args[0]
|
147
|
+
extra = ""
|
148
|
+
if args[1] != ""
|
149
|
+
var = args[1]
|
150
|
+
extra = "(#{args[0]})"
|
151
|
+
end
|
152
|
+
# Arguements have quotes by default
|
153
|
+
# they need to be stripped for LHS assignments
|
154
|
+
var = var.match(/"(.*)"/)[1]
|
155
|
+
if semantic_is?(string)
|
156
|
+
return "#{var} = #{@s_obj}.is_#{underscore(string)}" + extra
|
157
|
+
else
|
158
|
+
return "#{var} = #{@s_obj}.get_#{underscore(string)}" + extra
|
159
|
+
end
|
160
|
+
|
161
|
+
# Pause is directly translated
|
162
|
+
when /^pause$/ then
|
163
|
+
convert = args[0].to_f * 0.001
|
164
|
+
return "sleep #{convert}"
|
165
|
+
|
166
|
+
# Default case
|
167
|
+
else
|
168
|
+
# Most commands just need to be converted to
|
169
|
+
# underscore_case and have their arguements
|
170
|
+
# appeneded
|
171
|
+
cmd_new = underscore(cmd)
|
172
|
+
add = ""
|
173
|
+
if args[1] != ""
|
174
|
+
add = ", #{args[1]}"
|
175
|
+
end
|
176
|
+
return "#{@s_obj}.#{cmd_new} #{args[0]}" + add
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
# Function to turn CamelCase into underscore_case
|
181
|
+
def underscore(str)
|
182
|
+
str.gsub(/(.)([A-Z])/,'\1_\2').downcase
|
183
|
+
end
|
184
|
+
|
185
|
+
# Function to weed out 11 special functions that
|
186
|
+
# use an "is" semantic
|
187
|
+
def semantic_is?(str)
|
188
|
+
case str
|
189
|
+
when /Present$/
|
190
|
+
return true
|
191
|
+
when /Checked$/
|
192
|
+
return true
|
193
|
+
when /Editable$/
|
194
|
+
return true
|
195
|
+
when /Ordered$/
|
196
|
+
return true
|
197
|
+
when /Selected$/
|
198
|
+
return true
|
199
|
+
when /Visible$/
|
200
|
+
return true
|
201
|
+
else
|
202
|
+
return false
|
203
|
+
end
|
204
|
+
end
|
205
|
+
end
|
206
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# Gondola - legacy_converter.rb
|
2
|
+
# Class definition for turning old selenium-test
|
3
|
+
# files into new ruby code for gondola
|
4
|
+
require 'rubygems'
|
5
|
+
require 'gondola'
|
6
|
+
|
7
|
+
module Gondola
|
8
|
+
class LegacyConverter < Converter
|
9
|
+
# Function: name
|
10
|
+
# Returns the name of this test case
|
11
|
+
def name
|
12
|
+
unless @name
|
13
|
+
@name = @body.match(/class(.*?)</m)[1].strip
|
14
|
+
end
|
15
|
+
@name
|
16
|
+
end
|
17
|
+
|
18
|
+
# Function: ruby
|
19
|
+
# This function parses the given legacy
|
20
|
+
# test case file and parses it into the
|
21
|
+
# new streamlined form
|
22
|
+
def ruby
|
23
|
+
unless @ruby
|
24
|
+
@ruby = ""
|
25
|
+
|
26
|
+
# Only search through relevent portions
|
27
|
+
cmd_body = @body.match(/def test_case.*end/m)
|
28
|
+
# Define a pattern for commands
|
29
|
+
cmd_rxp = Regexp.new(/^.*?@selenium.*?$/)
|
30
|
+
|
31
|
+
# Loop over all lines
|
32
|
+
cmd_body[0].scan(cmd_rxp) do |cmd|
|
33
|
+
@ruby << cmd.strip.sub(/@selenium/, "@sel")
|
34
|
+
@ruby << "\ncmd_inc\n"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
@ruby
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
data/lib/gondola/testrunner.rb
CHANGED
@@ -32,16 +32,14 @@ module Gondola
|
|
32
32
|
prepend = "**/"
|
33
33
|
end
|
34
34
|
files = Dir.glob(prepend + "*.html")
|
35
|
-
|
36
|
-
files.concat(Dir.glob(prepend + "*.rb"))
|
37
|
-
end
|
35
|
+
files.concat(Dir.glob(prepend + "*.rb"))
|
38
36
|
files.each do |file|
|
39
37
|
conf = configure(File.expand_path(File.dirname(file)))
|
40
38
|
run_test(file, conf)
|
41
39
|
end
|
42
40
|
else
|
43
41
|
conf = configure(File.expand_path(File.dirname(test)))
|
44
|
-
run_test(
|
42
|
+
run_test(test, conf)
|
45
43
|
end
|
46
44
|
end
|
47
45
|
end
|
@@ -84,8 +82,13 @@ module Gondola
|
|
84
82
|
|
85
83
|
# Function to run and parallelize the given test on the given browsers
|
86
84
|
def run_test(file, conf)
|
87
|
-
# Initialize a converter object
|
88
|
-
converter =
|
85
|
+
# Initialize a converter object based on filetype
|
86
|
+
converter = nil
|
87
|
+
if File.extname(file) == '.html'
|
88
|
+
converter = Gondola::HtmlConverter.new(file)
|
89
|
+
elsif File.extname(file) == '.rb'
|
90
|
+
converter = Gondola::LegacyConverter.new(file)
|
91
|
+
end
|
89
92
|
# Set global information
|
90
93
|
global = {}
|
91
94
|
global[:job_name] = converter.name
|
data/lib/gondola/version.rb
CHANGED
data/lib/gondola.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: gondola
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 1.1.
|
5
|
+
version: 1.1.4
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Matthew Perry
|
@@ -91,6 +91,8 @@ files:
|
|
91
91
|
- gondola.gemspec
|
92
92
|
- lib/gondola.rb
|
93
93
|
- lib/gondola/converter.rb
|
94
|
+
- lib/gondola/html_converter.rb
|
95
|
+
- lib/gondola/legacy_converter.rb
|
94
96
|
- lib/gondola/tester.rb
|
95
97
|
- lib/gondola/testrunner.rb
|
96
98
|
- lib/gondola/version.rb
|
@@ -110,7 +112,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
110
112
|
requirements:
|
111
113
|
- - ">="
|
112
114
|
- !ruby/object:Gem::Version
|
113
|
-
hash: -
|
115
|
+
hash: -286975601
|
114
116
|
segments:
|
115
117
|
- 0
|
116
118
|
version: "0"
|