soda 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/Soda.rb +12 -0
- data/lib/SodaLogReporter.rb +17 -0
- data/lib/SodaReporter.rb +14 -0
- data/lib/SodaScreenShot.rb +174 -0
- metadata +5 -4
data/lib/Soda.rb
CHANGED
@@ -46,6 +46,7 @@ require "SodaCSV"
|
|
46
46
|
require "SodaXML"
|
47
47
|
require 'SodaFireFox'
|
48
48
|
require 'SodaTestCheck'
|
49
|
+
require 'SodaScreenShot'
|
49
50
|
require "utils/sodalookups"
|
50
51
|
require "fields/SodaField"
|
51
52
|
require "fields/TextField"
|
@@ -2667,6 +2668,17 @@ JSCode
|
|
2667
2668
|
@rep.ReportFailure(msg)
|
2668
2669
|
PrintDebug("Global Time was: #{$global_time}\n")
|
2669
2670
|
PrintDebug("Timeout Time was: #{time_check}\n")
|
2671
|
+
|
2672
|
+
begin
|
2673
|
+
result_dir = @rep.GetResultDir()
|
2674
|
+
shooter = SodaScreenShot.new(result_dir)
|
2675
|
+
image_file = shooter.GetOutputFile()
|
2676
|
+
@rep.log("ScreenShot taken: #{image_file}\n")
|
2677
|
+
rescue Excaption => e
|
2678
|
+
@rep.ReportException(e, false, false)
|
2679
|
+
ensure
|
2680
|
+
end
|
2681
|
+
|
2670
2682
|
result = -1
|
2671
2683
|
thread_soda.exit()
|
2672
2684
|
break
|
data/lib/SodaLogReporter.rb
CHANGED
@@ -614,6 +614,21 @@ HTML
|
|
614
614
|
return row_data
|
615
615
|
end
|
616
616
|
|
617
|
+
def FormatScreenShot(line)
|
618
|
+
row_data = Hash.new()
|
619
|
+
line =~ /\[(\d+\/\d+\/\d+-\d+:\d+:\d+)\](\(.\))(.*)/
|
620
|
+
row_data['date'] = "#{$1}"
|
621
|
+
row_data['msg_type'] = "#{$2}"
|
622
|
+
msg = "#{$3}"
|
623
|
+
row_html = ""
|
624
|
+
|
625
|
+
data = msg.split(/:/)
|
626
|
+
msg = "<b>#{data[0]}:</b> <a href=\"file://#{data[1]}\">#{data[1]}</a>"
|
627
|
+
row_data['msg'] = msg
|
628
|
+
|
629
|
+
return row_data
|
630
|
+
end
|
631
|
+
|
617
632
|
###############################################################################
|
618
633
|
# FormatReplacingString -- Method
|
619
634
|
# This method finds the replace string message and reformats it a little.
|
@@ -725,6 +740,8 @@ HTML
|
|
725
740
|
row_data = FormatClickingElement(line)
|
726
741
|
when /element:/i
|
727
742
|
row_data = FormatClickingElement(line)
|
743
|
+
when /screenshot\staken/i
|
744
|
+
row_data = FormatScreenShot(line)
|
728
745
|
else
|
729
746
|
line =~ /\[(\d+\/\d+\/\d+-\d+:\d+:\d+)\](\(.\))(.*)/
|
730
747
|
row_data['date'] = "#{$1}"
|
data/lib/SodaReporter.rb
CHANGED
@@ -113,6 +113,20 @@ class SodaReporter
|
|
113
113
|
log("Saving HTML files => #{@saveHtmlFiles.to_s()}.\n")
|
114
114
|
end
|
115
115
|
|
116
|
+
###############################################################################
|
117
|
+
# GetResultDir -- Method
|
118
|
+
# This method returns the current result dir.
|
119
|
+
#
|
120
|
+
# Input:
|
121
|
+
# None.
|
122
|
+
#
|
123
|
+
# Output:
|
124
|
+
# returns the current result directory.
|
125
|
+
#
|
126
|
+
###############################################################################
|
127
|
+
def GetResultDir()
|
128
|
+
return @ResultsDir
|
129
|
+
end
|
116
130
|
|
117
131
|
###############################################################################
|
118
132
|
# IncSkippedTest -- Method
|
@@ -0,0 +1,174 @@
|
|
1
|
+
###############################################################################
|
2
|
+
# Copyright (c) 2010, SugarCRM, Inc.
|
3
|
+
# All rights reserved.
|
4
|
+
#
|
5
|
+
# Redistribution and use in source and binary forms, with or without
|
6
|
+
# modification, are permitted provided that the following conditions are met:
|
7
|
+
# * Redistributions of source code must retain the above copyright
|
8
|
+
# notice, this list of conditions and the following disclaimer.
|
9
|
+
# * Redistributions in binary form must reproduce the above copyright
|
10
|
+
# notice, this list of conditions and the following disclaimer in the
|
11
|
+
# documentation and/or other materials provided with the distribution.
|
12
|
+
# * Neither the name of SugarCRM, Inc. nor the
|
13
|
+
# names of its contributors may be used to endorse or promote products
|
14
|
+
# derived from this software without specific prior written permission.
|
15
|
+
#
|
16
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
17
|
+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
18
|
+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
19
|
+
# ARE DISCLAIMED. IN NO EVENT SHALL SugarCRM, Inc. BE LIABLE FOR ANY
|
20
|
+
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
21
|
+
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
22
|
+
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
23
|
+
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
24
|
+
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
25
|
+
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
26
|
+
###############################################################################
|
27
|
+
|
28
|
+
require 'SodaUtils'
|
29
|
+
|
30
|
+
###############################################################################
|
31
|
+
# SodaScreenShot -- Class
|
32
|
+
# This class is for taking desktop screen shots of the current running os.
|
33
|
+
# Currently only Winows & Linux are supported. Really any unix platform
|
34
|
+
# running X11 is supported, they just have to be added to the case.
|
35
|
+
#
|
36
|
+
# Input:
|
37
|
+
# dir: This is the directory to store the snapshots in.
|
38
|
+
#
|
39
|
+
###############################################################################
|
40
|
+
class SodaScreenShot
|
41
|
+
|
42
|
+
LINUX_XWD_BIN = "xwd"
|
43
|
+
LINUX_CONVERT_BIN = "convert"
|
44
|
+
OUTPUT_FILE = "screenshot-"
|
45
|
+
|
46
|
+
def initialize(dir)
|
47
|
+
os = nil
|
48
|
+
err = nil
|
49
|
+
time = Time.now()
|
50
|
+
time = time.to_i()
|
51
|
+
hostname = "#{ENV['HOSTNAME']}"
|
52
|
+
@outputfile = nil
|
53
|
+
|
54
|
+
if (!File.exist?(dir))
|
55
|
+
raise "Failed to find needed diectory: '#{dir}!'\n"
|
56
|
+
end
|
57
|
+
|
58
|
+
if ( (hostname.empty?) || (hostname.length < 5) )
|
59
|
+
hostname = `hostname`
|
60
|
+
hostname = hostname.chomp()
|
61
|
+
end
|
62
|
+
|
63
|
+
os = SodaUtils.GetOsType()
|
64
|
+
case (os)
|
65
|
+
when /linux/i
|
66
|
+
xwd = FindLinuxXwd()
|
67
|
+
if (xwd == nil)
|
68
|
+
raise "Failed to find needed program: 'xwd'!\n"
|
69
|
+
end
|
70
|
+
|
71
|
+
@outputfile = "#{dir}/#{OUTPUT_FILE}#{time}-#{hostname}.xwd"
|
72
|
+
cmd = "#{xwd} -root -out #{@outputfile}"
|
73
|
+
err = Kernel.system(cmd)
|
74
|
+
if (!err)
|
75
|
+
raise "Failed trying to take screenshot!\n"
|
76
|
+
end
|
77
|
+
|
78
|
+
convert = FindLinuxConvert()
|
79
|
+
if (convert != nil)
|
80
|
+
old_outfile = @outputfile
|
81
|
+
ext = File.extname(old_outfile)
|
82
|
+
@outputfile = @outputfile.gsub(/#{ext}$/, "")
|
83
|
+
@outputfile << ".png"
|
84
|
+
cmd = "#{convert} #{old_outfile} #{@outputfile}"
|
85
|
+
err = Kernel.system(cmd)
|
86
|
+
if (!err)
|
87
|
+
@outputfile = old_outfile
|
88
|
+
else
|
89
|
+
File.unlink(old_outfile)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
when /windows/i
|
93
|
+
require 'Win32/screenshot'
|
94
|
+
@outputfile = "#{dir}/#{OUTPUT_FILE}#{time}-#{hostname}.bmp"
|
95
|
+
Win32::Screenshot.desktop do |width, height, bmp|
|
96
|
+
fd = File.new(@outputfile, "w+")
|
97
|
+
fd.write(bmp)
|
98
|
+
fd.close()
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
###############################################################################
|
104
|
+
# GetOutputFile -- Method
|
105
|
+
# This is a getter for getting the newly created snapshot file.
|
106
|
+
#
|
107
|
+
# Input:
|
108
|
+
# None.
|
109
|
+
#
|
110
|
+
# Output:
|
111
|
+
# retutns a string with the full path and filename to the new file.
|
112
|
+
#
|
113
|
+
###############################################################################
|
114
|
+
def GetOutputFile()
|
115
|
+
return @outputfile
|
116
|
+
end
|
117
|
+
|
118
|
+
###############################################################################
|
119
|
+
# FindLinuxXwd -- Method
|
120
|
+
# This method trys to find the xwd X11 util in you current path.
|
121
|
+
#
|
122
|
+
# Input:
|
123
|
+
# None.
|
124
|
+
#
|
125
|
+
# Output:
|
126
|
+
# Returns the full path and exe name on success or nil on failure.
|
127
|
+
#
|
128
|
+
###############################################################################
|
129
|
+
def FindLinuxXwd()
|
130
|
+
tmp = nil
|
131
|
+
found = nil
|
132
|
+
|
133
|
+
tmp = ENV['PATH'].split(/:/)
|
134
|
+
tmp.each do |p|
|
135
|
+
path = "#{p}/#{LINUX_XWD_BIN}"
|
136
|
+
if (File.exist?(path))
|
137
|
+
found = path
|
138
|
+
break
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
return found
|
143
|
+
end
|
144
|
+
private :FindLinuxXwd
|
145
|
+
|
146
|
+
###############################################################################
|
147
|
+
# FindLinuxConvert -- Method
|
148
|
+
# This method trys to find the linux convert util in you current path.
|
149
|
+
#
|
150
|
+
# Input:
|
151
|
+
# None.
|
152
|
+
#
|
153
|
+
# Output:
|
154
|
+
# Returns the full path and exe name on success or nil on failure.
|
155
|
+
#
|
156
|
+
###############################################################################
|
157
|
+
def FindLinuxConvert()
|
158
|
+
tmp = nil
|
159
|
+
found = nil
|
160
|
+
|
161
|
+
tmp = ENV['PATH'].split(/:/)
|
162
|
+
tmp.each do |p|
|
163
|
+
path = "#{p}/#{LINUX_CONVERT_BIN}"
|
164
|
+
if (File.exist?(path))
|
165
|
+
found = path
|
166
|
+
break
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
return found
|
171
|
+
end
|
172
|
+
private :FindLinuxConvert
|
173
|
+
|
174
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: soda
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 6
|
10
|
+
version: 0.0.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Trampus Richmond
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-11-
|
18
|
+
date: 2010-11-10 00:00:00 -08:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -59,6 +59,7 @@ extra_rdoc_files: []
|
|
59
59
|
files:
|
60
60
|
- lib/SodaReportSummery.rb
|
61
61
|
- lib/SodaCSV.rb
|
62
|
+
- lib/SodaScreenShot.rb
|
62
63
|
- lib/soda.rb
|
63
64
|
- lib/SodaXML.rb
|
64
65
|
- lib/SodaUtils.rb
|