oats 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +6 -0
- data/Gemfile +15 -0
- data/README.txt +165 -0
- data/Rakefile +2 -0
- data/bin/agent +204 -0
- data/bin/oats +10 -0
- data/bin/occ +29 -0
- data/bin/results_cleanup +6 -0
- data/doc/COPYING +55 -0
- data/doc/LICENSE +55 -0
- data/doc/OATS_Framework.doc +0 -0
- data/doc/classes/ApplicationLogs.html +239 -0
- data/doc/classes/Campaign.html +843 -0
- data/doc/classes/CommandlineOptions.html +131 -0
- data/doc/classes/Driver.html +182 -0
- data/doc/classes/Hash.html +137 -0
- data/doc/classes/Ide.html +194 -0
- data/doc/classes/MapSelenium.html +197 -0
- data/doc/classes/Net.html +107 -0
- data/doc/classes/Oats/OatsFilterError.html +119 -0
- data/doc/classes/Oats.html +998 -0
- data/doc/classes/OatsAssertError.html +119 -0
- data/doc/classes/OatsBadInput.html +119 -0
- data/doc/classes/OatsData.html +290 -0
- data/doc/classes/OatsError.html +117 -0
- data/doc/classes/OatsExit.html +117 -0
- data/doc/classes/OatsLock.html +254 -0
- data/doc/classes/OatsMain.html +182 -0
- data/doc/classes/OatsMysqlError.html +113 -0
- data/doc/classes/OatsMysqlMissingInput.html +113 -0
- data/doc/classes/OatsReportError.html +113 -0
- data/doc/classes/OatsSetupError.html +119 -0
- data/doc/classes/OatsTestError.html +119 -0
- data/doc/classes/OatsTestExit.html +119 -0
- data/doc/classes/OatsTestLocateError.html +120 -0
- data/doc/classes/OatsVerifyError.html +119 -0
- data/doc/classes/Ragent.html +397 -0
- data/doc/classes/Rclient.html +236 -0
- data/doc/classes/Report.html +368 -0
- data/doc/classes/Reports.html +244 -0
- data/doc/classes/RestApi.html +333 -0
- data/doc/classes/RhttpClient.html +236 -0
- data/doc/classes/Rimap.html +170 -0
- data/doc/classes/Rmysql.html +176 -0
- data/doc/classes/Roptions.html +131 -0
- data/doc/classes/Rselenium.html +233 -0
- data/doc/classes/Rssh.html +138 -0
- data/doc/classes/Runnable.html +174 -0
- data/doc/classes/SFTriggers.html +206 -0
- data/doc/classes/Selenium/Client/Driver.html +211 -0
- data/doc/classes/Selenium/Client.html +107 -0
- data/doc/classes/Selenium.html +107 -0
- data/doc/classes/SystemCapture.html +304 -0
- data/doc/classes/TestCase.html +418 -0
- data/doc/classes/TestData.html +235 -0
- data/doc/classes/TestList.html +264 -0
- data/doc/classes/Tools.html +244 -0
- data/doc/classes/Util.html +201 -0
- data/doc/classes/Variation.html +206 -0
- data/doc/fr_class_index.html +92 -0
- data/doc/fr_method_index.html +465 -0
- data/doc/index.html +23 -0
- data/doc/oats_httpd.conf +32 -0
- data/doc/oats_user.yml +25 -0
- data/doc/rdoc-style.css +208 -0
- data/lib/deep_merge/.gitignore +2 -0
- data/lib/deep_merge/core.rb +195 -0
- data/lib/deep_merge/deep_merge.rb +1 -0
- data/lib/deep_merge/deep_merge_hash.rb +28 -0
- data/lib/deep_merge/rails_compat.rb +27 -0
- data/lib/oats/application_logs.rb +163 -0
- data/lib/oats/build_id.rb +58 -0
- data/lib/oats/commandline_options.rb +128 -0
- data/lib/oats/diff.rb +278 -0
- data/lib/oats/driver.rb +492 -0
- data/lib/oats/ide.rb +227 -0
- data/lib/oats/keywords.rb +67 -0
- data/lib/oats/log4r_init.rb +14 -0
- data/lib/oats/mysql.rb +97 -0
- data/lib/oats/oats.rb +637 -0
- data/lib/oats/oats_data.rb +400 -0
- data/lib/oats/oats_exceptions.rb +25 -0
- data/lib/oats/oats_lock.rb +261 -0
- data/lib/oats/oats_selenium_api.rb +639 -0
- data/lib/oats/oselenium.rb +189 -0
- data/lib/oats/ossh.rb +36 -0
- data/lib/oats/patches_for_eventmachine_12.10.rb +66 -0
- data/lib/oats/ragent.rb +321 -0
- data/lib/oats/rclient.rb +42 -0
- data/lib/oats/report.rb +207 -0
- data/lib/oats/roptions.rb +88 -0
- data/lib/oats/test_case.rb +510 -0
- data/lib/oats/test_data.rb +98 -0
- data/lib/oats/test_list.rb +141 -0
- data/lib/oats/unixdiff.rb +75 -0
- data/lib/oats/util.rb +125 -0
- data/lib/oats/version.rb +3 -0
- data/lib/oats.rb +36 -0
- data/nbproject/configs/agent.properties +0 -0
- data/nbproject/configs/gr.properties +0 -0
- data/nbproject/project.properties +10 -0
- data/nbproject/project.xml +17 -0
- data/oats.gemspec +42 -0
- data/oats_ini.yml +258 -0
- data/oats_tests/Gemfile +18 -0
- data/oats_tests/aut_ini.yml +30 -0
- data/oats_tests/bin/oats +8 -0
- data/oats_tests/environments/qa.yml +4 -0
- data/oats_tests/environments/qa_chrome.yml +4 -0
- data/oats_tests/examples/core/coreExamples.yml +8 -0
- data/oats_tests/examples/core/expectedException.rb +39 -0
- data/oats_tests/examples/core/ok_verify.rb +2 -0
- data/oats_tests/examples/core/ok_verify.rb_ok/out/myfile.txt +1 -0
- data/oats_tests/examples/core/ok_verify.rb_ok/out/myfile2.txt +1 -0
- data/oats_tests/examples/core/ok_verify.rb_ok/rats_test.log +2 -0
- data/oats_tests/examples/core/unexpectedException.rb +30 -0
- data/oats_tests/examples/examples.yml +13 -0
- data/oats_tests/examples/gui/guiExamples.yml +7 -0
- data/oats_tests/examples/gui/seleniumGoogle.rb +10 -0
- data/oats_tests/examples/gui/webdriverGoogle.rb +9 -0
- data/oats_tests/examples/keywords/SampleXlList-1.xls +0 -0
- data/oats_tests/examples/keywords/SampleXlList-2.xls +0 -0
- data/oats_tests/examples/keywords/SampleXlLists.xls +0 -0
- data/oats_tests/examples/keywords/keywordsDriver.rb +1 -0
- data/oats_tests/examples/keywords/keywordsExamples.yml +8 -0
- data/oats_tests/examples/keywords/keywordsTC1.yml +5 -0
- data/oats_tests/examples/keywords/keywordsTestlist.yml +16 -0
- data/oats_tests/examples/needsWork/addTestDynamically.rb +4 -0
- data/oats_tests/examples/needsWork/emailVerify.rb +34 -0
- data/oats_tests/examples/needsWork/testSql/rtest.sql +6 -0
- data/oats_tests/examples/needsWork/testSql/rtest.yml +11 -0
- data/oats_tests/examples/occTest/occTest.rb +13 -0
- data/oats_tests/examples/occTest/occTest_1.rb +1 -0
- data/oats_tests/examples/occTest/occTest_1_1.rb +1 -0
- data/oats_tests/examples/occTest/occTest_1_2.rb +1 -0
- data/oats_tests/examples/occTest/occTest_1_3.rb +1 -0
- data/oats_tests/examples/occTest/occTest_1_4.rb +1 -0
- data/oats_tests/examples/occTest/occTest_2.rb +1 -0
- data/oats_tests/examples/occTest/occTest_2_1.rb +1 -0
- data/oats_tests/examples/occTest/occTest_2_2.rb +1 -0
- data/oats_tests/examples/occTest/occTest_2_3.rb +1 -0
- data/oats_tests/examples/occTest/occTest_2_4.rb +1 -0
- data/oats_tests/examples/occTest/occTest_3.rb +1 -0
- data/oats_tests/examples/occTest/occTest_3_1.rb +1 -0
- data/oats_tests/examples/occTest/occTest_3_2.rb +1 -0
- data/oats_tests/examples/occTest/occTest_3_3.rb +1 -0
- data/oats_tests/examples/occTest/occTest_3_4.rb +1 -0
- data/oats_tests/examples/occTest/occTest_4.rb +1 -0
- data/oats_tests/examples/occTest/occTestlist.yml +9 -0
- data/oats_tests/examples/occTest/occTestlist_1.yml +9 -0
- data/oats_tests/examples/occTest/occTestlist_2.yml +9 -0
- data/oats_tests/examples/occTest/occTestlist_3.yml +9 -0
- data/oats_tests/examples/occTest/variation1.yml +4 -0
- data/oats_tests/examples/occTest/variation2.yml +4 -0
- data/oats_tests/examples/testFileLocationUnitTests/extn_driver.rb +4 -0
- data/oats_tests/examples/testFileLocationUnitTests/folder/oats.yml +3 -0
- data/oats_tests/examples/testFileLocationUnitTests/folder/t1.rb +2 -0
- data/oats_tests/examples/testFileLocationUnitTests/folder1/t1.yml +2 -0
- data/oats_tests/examples/testFileLocationUnitTests/folder1/t1_1.yml +3 -0
- data/oats_tests/examples/testFileLocationUnitTests/folder2/oats.yml +3 -0
- data/oats_tests/examples/testFileLocationUnitTests/folder2/t1.rb +2 -0
- data/oats_tests/examples/testFileLocationUnitTests/folder2/t1.yml +2 -0
- data/oats_tests/examples/testFileLocationUnitTests/no_yaml.rb +3 -0
- data/oats_tests/examples/testFileLocationUnitTests/post_yaml.rb +1 -0
- data/oats_tests/examples/testFileLocationUnitTests/t1.rb +4 -0
- data/oats_tests/examples/testFileLocationUnitTests/t1.yml +2 -0
- data/oats_tests/examples/testFileLocationUnitTests/t1_1.yml +3 -0
- data/oats_tests/examples/testFileLocationUnitTests/testDir/oats.yml +3 -0
- data/oats_tests/examples/testFileLocationUnitTests/testDir/t1.rb +2 -0
- data/oats_tests/examples/testFileLocationUnitTests/testDir/t1.yml +2 -0
- data/oats_tests/examples/testFileLocationUnitTests/testDir2/t1.rb +2 -0
- data/oats_tests/examples/testFileLocationUnitTests/testDir2/t1.yml +2 -0
- data/oats_tests/examples/testFileLocationUnitTests/unitTestList.yml +36 -0
- data/oats_tests/examples/testFileLocationUnitTests/yml_driver.rb +2 -0
- data/oats_tests/lib/business.rb +28 -0
- data/oats_tests/lib/sample_xl_lists.rb +37 -0
- data/test/common_test_unit_setup.rb +21 -0
- data/test/test_basic.rb +16 -0
- data/test/test_selenium.rb +16 -0
- data/test/test_xl_lists.rb +16 -0
- metadata +291 -0
data/lib/oats/report.rb
ADDED
@@ -0,0 +1,207 @@
|
|
1
|
+
#require 'oats/oselenium' if $oats_execution
|
2
|
+
require 'yaml' # http://www.ruby-doc.org/core/classes/YAML.html http://yaml4r.sourceforge.net/doc
|
3
|
+
require 'oats/test_case'
|
4
|
+
require 'oats/test_list'
|
5
|
+
require 'oats/oats_exceptions'
|
6
|
+
|
7
|
+
class OatsReportError < OatsError ; end
|
8
|
+
|
9
|
+
module Oats
|
10
|
+
|
11
|
+
class Report
|
12
|
+
@@pre_test = nil
|
13
|
+
@@post_test = nil
|
14
|
+
|
15
|
+
def Report.failed_file_name(var)
|
16
|
+
if var.instance_of?(Variation)
|
17
|
+
list_name = var.list_name
|
18
|
+
else
|
19
|
+
list_name = var
|
20
|
+
end
|
21
|
+
return unless list_name
|
22
|
+
return File.basename(list_name) + '.yml' if list_name =~ /-fail$/
|
23
|
+
# File.basename(list_name) + '-ft-' + var.env_name[0,1] + var.env_name[-1,1] + '.yml'
|
24
|
+
File.basename(list_name.sub(/\.yml\z/,'')) + '-fail.yml'
|
25
|
+
end
|
26
|
+
|
27
|
+
def Report.results(list, from_agent = nil) #
|
28
|
+
unless list
|
29
|
+
$log.error "Report.results are requested for a null list. Ignoring request."
|
30
|
+
return nil
|
31
|
+
end
|
32
|
+
vars = list.variations
|
33
|
+
vars.each do |var|
|
34
|
+
tests = []
|
35
|
+
var.tests.each do |tst|
|
36
|
+
if tst.instance_of?(TestList)
|
37
|
+
@@pre_test ||= list.pre_test
|
38
|
+
@@post_test ||= list.post_test
|
39
|
+
Report.results(tst, from_agent)
|
40
|
+
else
|
41
|
+
tests << tst
|
42
|
+
end
|
43
|
+
end
|
44
|
+
unless tests.empty?
|
45
|
+
if var.parent.id
|
46
|
+
list_name = File.basename(var.parent.id,'.*')
|
47
|
+
else
|
48
|
+
list_name = tests.first.id
|
49
|
+
end
|
50
|
+
var.list_name = list_name
|
51
|
+
dir_results = $oats['execution']['dir_results']
|
52
|
+
all_errors = tests.find_all{|i| not i.errors.empty?}
|
53
|
+
var.total = tests.length
|
54
|
+
var.pass = tests.find_all{|i| i.status == 0}.length
|
55
|
+
var.fail = all_errors.length
|
56
|
+
var.skip = tests.find_all{|i| i.status == 2}.length
|
57
|
+
$log.error "Test counts do not add up. Please report this to the OATS administrator." \
|
58
|
+
unless var.total == var.pass + var.fail + var.skip
|
59
|
+
pre_post_summary = ''
|
60
|
+
unless tests.empty? or from_agent
|
61
|
+
if @@pre_test and ! @@pre_test.errors.empty?
|
62
|
+
pre_post_summary += ", PRE_FAILURE"
|
63
|
+
var.fail += 1
|
64
|
+
# var.fail = var.fail ? (var.fail + 1) : 1
|
65
|
+
end
|
66
|
+
if @@post_test and ! @@post_test.errors.empty?
|
67
|
+
pre_post_summary += ", POST_FAILURE"
|
68
|
+
var.fail += 1
|
69
|
+
end
|
70
|
+
$log.info "*** SUMMARY STATISTICS for list:#{list_name} on env:#{var.env_name}" +
|
71
|
+
" Total[#{var.total}], " + "Fail[#{var.fail}], Pass[#{var.pass}], " + "Skip[#{var.skip}]" +
|
72
|
+
pre_post_summary
|
73
|
+
end
|
74
|
+
return true if all_errors.empty? or from_agent
|
75
|
+
# Generate the failed tests lists only for non-agent mode
|
76
|
+
failed_file_name = Report.failed_file_name(var)
|
77
|
+
failed_dir = Oats.result_archive_dir + '/failed'
|
78
|
+
FileUtils.mkdir_p(failed_dir)
|
79
|
+
failed_tests_file = File.join(failed_dir,failed_file_name)
|
80
|
+
File.open( failed_tests_file, 'w' ) do |ftf |
|
81
|
+
ftf.puts("# Failed OATS tests\n---\nexecution: \n test_files: ")
|
82
|
+
tests.each do |test|
|
83
|
+
case test.status
|
84
|
+
when 0
|
85
|
+
$log.error "Unexpected test state for [#{test.id}]. Test status is PASSED but it contains error info. Please report this to the OATS administrator." unless test.errors.empty?
|
86
|
+
when 1
|
87
|
+
$log.warn "- #{test.id}"
|
88
|
+
ftf.puts(" - #{test.id}")
|
89
|
+
if test.errors.empty?
|
90
|
+
$log.error "Unexpected test state. Test status is error but it contains no error info. Please report this to the OATS administrator."
|
91
|
+
else
|
92
|
+
test.errors.each do |ex_arr|
|
93
|
+
if ex_arr[1] =~ /see result file for details: *(.*)/
|
94
|
+
file = $1
|
95
|
+
$log.warn " #{file}"
|
96
|
+
ftf.puts "# #{file}"
|
97
|
+
else
|
98
|
+
exc = "[#{ex_arr[0]}] " + ex_arr[1]
|
99
|
+
$log.warn " #{exc}"
|
100
|
+
ftf.puts "# #{exc}"
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
when 2 then # Just skipped
|
105
|
+
$log.warn "- #{test.id}"
|
106
|
+
$log.warn " [SKIPPED]"
|
107
|
+
else
|
108
|
+
$log.error "Unknown test status for [#{test.id}]. Please report this to the OATS administrator."
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
FileUtils.cp(failed_tests_file,dir_results)
|
113
|
+
FileUtils.cp(failed_tests_file,File.join(failed_dir,'last-fail.yml'))
|
114
|
+
end
|
115
|
+
end
|
116
|
+
return true
|
117
|
+
end
|
118
|
+
|
119
|
+
# Ideally oats_info_store should use locks and be interrupt safe
|
120
|
+
# If dir is nil or oats_info is given dump oats_info, otherwise load and return Report:@@oats_info
|
121
|
+
# Default dir is dir_results, default oats_info is $oats_info
|
122
|
+
def Report.oats_info_store(dir = nil, oats_info = nil)
|
123
|
+
results_file = File.join( dir ? dir : $oats['execution']['dir_results'] , 'results.dump')
|
124
|
+
unless dir.nil? or oats_info
|
125
|
+
@@oats_info = File.exists?(results_file) ? Report.oats_info_retrieve(results_file) : nil
|
126
|
+
return @@oats_info
|
127
|
+
end
|
128
|
+
archive_dir = Oats.result_archive_dir
|
129
|
+
if archive_dir and File.directory?(archive_dir)
|
130
|
+
results_file_tmp = File.join(archive_dir, 'results.dump') +'.tmp'
|
131
|
+
else
|
132
|
+
results_file_tmp = results_file +'.tmp'
|
133
|
+
end
|
134
|
+
oats_info = $oats_info unless oats_info
|
135
|
+
File.open( results_file_tmp , 'w' ) { |out| Marshal.dump(oats_info, out, -1) }
|
136
|
+
begin # Ensure dump is written completely before being replaced
|
137
|
+
rinfo = File.open( results_file_tmp, 'r' ) { |inp| Marshal.load(inp)}
|
138
|
+
rescue Exception => exc
|
139
|
+
$log.error "Error reading back [#{results_file_tmp}]. Skipping saving the intermediate results."
|
140
|
+
$log.error exc
|
141
|
+
return oats_info
|
142
|
+
end
|
143
|
+
begin
|
144
|
+
Ragent.snapshot_oats_info(rinfo) if $oats_execution['agent']
|
145
|
+
FileUtils.mv(results_file_tmp, results_file)
|
146
|
+
rescue
|
147
|
+
$log.error "Error moving [#{results_file_tmp}]. Skipping saving the intermediate results."
|
148
|
+
$log.error exc
|
149
|
+
end
|
150
|
+
return oats_info
|
151
|
+
end
|
152
|
+
|
153
|
+
def Report.oats_info_retrieve(results_file)
|
154
|
+
raise OatsReportError, "Can not locate [#{results_file}]. Skipping report generation for: #{results_file}" \
|
155
|
+
unless File.exist?(results_file)
|
156
|
+
begin
|
157
|
+
return File.open( results_file, 'r' ) { |inp| Marshal.load(inp)}
|
158
|
+
rescue
|
159
|
+
$log.error "Error reading [#{results_file}]. Skipping report generation for: #{results_file}"
|
160
|
+
raise
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
def Report.archive_results(post_run = false)
|
165
|
+
oats_data = $oats
|
166
|
+
dir_res = oats_data['execution']['dir_results']
|
167
|
+
rm_dir_res = post_run ? false : true
|
168
|
+
if File.directory?(dir_res) # Copy current results to archive
|
169
|
+
begin
|
170
|
+
oats_info = Report.oats_info_store(dir_res)
|
171
|
+
unless post_run
|
172
|
+
return unless oats_info
|
173
|
+
unless oats_info['end_time']
|
174
|
+
regenerated = true
|
175
|
+
$log.info "Generating missing results files for the previous run."
|
176
|
+
Report.results(oats_info['test_files'])
|
177
|
+
Report.oats_info_store(nil,oats_info)
|
178
|
+
end
|
179
|
+
end
|
180
|
+
rescue Exception => e
|
181
|
+
if e.instance_of? OatsReportError
|
182
|
+
$log.error 'Encountered: ' + $!.to_s
|
183
|
+
else
|
184
|
+
$log.error $!
|
185
|
+
end
|
186
|
+
end
|
187
|
+
# If the stored execution doesn't have context, default to the current execution ids inside incomplete
|
188
|
+
archive_id = ((oats_info and oats_info['jobid'])||(Oats.context and Oats.context['jobid']))
|
189
|
+
if archive_id
|
190
|
+
archive_dir = File.join( Oats.result_archive_dir, archive_id.to_s)
|
191
|
+
if post_run
|
192
|
+
FileUtils.cp_r(dir_res, archive_dir)
|
193
|
+
elsif regenerated or ! File.directory?(archive_dir)
|
194
|
+
FileUtils.rm_rf archive_dir
|
195
|
+
FileUtils.mv(dir_res, archive_dir)
|
196
|
+
rm_dir_res = false
|
197
|
+
end
|
198
|
+
else
|
199
|
+
$log.error "Removing results without archiving because can not find any jobid."
|
200
|
+
rm_dir_res = true
|
201
|
+
end
|
202
|
+
FileUtils.rm_rf dir_res if rm_dir_res # Cleanup prior to next run
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
end
|
207
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
# Override oats data based on commandline options.
|
2
|
+
#require 'log4r' # http://log4r.sourceforge.net/rdoc/index.html
|
3
|
+
#require 'util'
|
4
|
+
require 'deep_merge/deep_merge'
|
5
|
+
|
6
|
+
module Oats
|
7
|
+
|
8
|
+
module Roptions
|
9
|
+
|
10
|
+
def Roptions.overlay(options)
|
11
|
+
opts_array = options['_:options']
|
12
|
+
if options['_:json']
|
13
|
+
$log.info "Overriding Oats.data with: #{options['_:json']}"
|
14
|
+
$oats.deep_merge!(JSON.parse(options['_:json']))
|
15
|
+
end
|
16
|
+
if opts_array
|
17
|
+
opts_array.each do |opt_valu|
|
18
|
+
|
19
|
+
opt, valu = opt_valu.split(/\s*:\s*/)
|
20
|
+
data_keys = opt.split('.')
|
21
|
+
value = $oats
|
22
|
+
until data_keys.size == 1 do
|
23
|
+
value = value[key=data_keys.shift]
|
24
|
+
Oats.assert value.instance_of?(Hash), "Oats.data #{opt} is not a hash at #{key}"
|
25
|
+
end
|
26
|
+
$log.info "Option #{opt.inspect} specified as: #{valu.inspect} is overriding #{value[data_keys.first].inspect}"
|
27
|
+
value[data_keys.first] = valu
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def Roptions.override(options={})
|
33
|
+
oats_data = $oats
|
34
|
+
oats_lib = Util.expand_path(File.dirname(__FILE__)+'/..')
|
35
|
+
oats_data['_']['oats_lib'] = oats_lib
|
36
|
+
options.each do |key,val|
|
37
|
+
data_keys = key.split(':')
|
38
|
+
v = oats_data
|
39
|
+
key_var = nil
|
40
|
+
loop do
|
41
|
+
key_var = data_keys.shift
|
42
|
+
break if data_keys.empty? or key_var == '_'
|
43
|
+
v = v[key_var]
|
44
|
+
end
|
45
|
+
next if key_var == '_'
|
46
|
+
if val.instance_of?(Array)
|
47
|
+
val_str = val.join(',')
|
48
|
+
else
|
49
|
+
val_str = val.to_s
|
50
|
+
end
|
51
|
+
vval = v[key_var]
|
52
|
+
if vval.instance_of?(Array)
|
53
|
+
vval_str = vval.join(',')
|
54
|
+
else
|
55
|
+
vval_str = vval.to_s
|
56
|
+
end
|
57
|
+
$log.info "Option #{key.inspect} specified as: #{val_str.inspect} is overriding #{vval_str.inspect}"\
|
58
|
+
unless $oats_execution['agent']
|
59
|
+
v[key_var] = val
|
60
|
+
end
|
61
|
+
|
62
|
+
# *** Now verify the options ***
|
63
|
+
# Ensure log_level valid
|
64
|
+
level = Log4r::Log4rConfig::LogLevels.index(oats_data['execution']['log_level'])
|
65
|
+
raise(OatsBadInput, "Unrecognized execution:log_level [#{oats_data['execution']['log_level']}]") unless level
|
66
|
+
$log.level = level = 1 if $log
|
67
|
+
|
68
|
+
raise(OatsBadInput,"Must specify execution:dir_results") unless oats_data['execution']['dir_results']
|
69
|
+
|
70
|
+
# Fix path to vendor, needed to run under java
|
71
|
+
oats_data['_']['vendor'] = Util.expand_path('../vendor',oats_lib)
|
72
|
+
|
73
|
+
# Verify existence of browser to show results
|
74
|
+
oats_data['selenium']['ide']['result_browser'] = oats_data['selenium']['ide']['result_browser']
|
75
|
+
oats_data['selenium']['ide']['show_result'] = 0 unless oats_data['selenium']['ide']['show_result']
|
76
|
+
|
77
|
+
unless oats_data['selenium']['pause_on_exit']
|
78
|
+
if oats_data['execution']['test_files'] and oats_data['execution']['test_files'].first =~ /\.yml/
|
79
|
+
oats_data['selenium']['pause_on_exit'] = 0
|
80
|
+
else
|
81
|
+
oats_data['selenium']['pause_on_exit'] = 1
|
82
|
+
end
|
83
|
+
end
|
84
|
+
return options
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
88
|
+
end
|