testlogger 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +15 -0
  2. data/conf.rb +7 -0
  3. data/lib/testlogger.rb +298 -0
  4. metadata +61 -0
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MWYxNDJhYTgyZmY1YzhkZGE5Yzc5OWI4NGUwZTAyMjBkNzc1MDhlYg==
5
+ data.tar.gz: !binary |-
6
+ ZjQ4NWJlMjNjZTNjZjkxOTFjN2Q1NDdiNTMzODZjNGQ1NzY1MGJiNg==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ ZWQwNjI2MjZhNTBjNzQyNGIwNGU0MmJkYjY4OTIyNDQ3ZjIwNTcwZDkxOWFh
10
+ NGY0ODY3MzkyZDk3OTllMjY1ZmZiMTE1Y2NhOWM5YzVmYjI2ZjM0YzAwZWQ0
11
+ Y2UwMTg5YjQ0OWFhY2Q4MTY5OTVkOTg0MDkzNGNkNjNiM2Q2YzU=
12
+ data.tar.gz: !binary |-
13
+ ZTczYzdlZGI2ZWM5OTViNmJiNDY0MzY1YTNkZDE2YTVmYWQ3MDJkOGMxNDkw
14
+ NDczZTFjMWEyMzQ2NmFkZWU2MzYwMzk3MjhhYzBiNWU1YzNlYTQyOTE1Zjk0
15
+ MjAwNmVjYzY4Y2Q0ZTA4YzM5Nzc0MjQwODlkNzkyNWIzMDAyYzI=
data/conf.rb ADDED
@@ -0,0 +1,7 @@
1
+ def getLogConfiguration()
2
+ hash = Hash.new()
3
+ hash = {
4
+ :resultFileLocation => 'C:/Results/MyResults',
5
+ }
6
+ return hash
7
+ end
@@ -0,0 +1,298 @@
1
+ require 'nokogiri'
2
+ require 'fileutils'
3
+ require 'time'
4
+
5
+ class Log
6
+
7
+ @nodeCursor='log'
8
+ @Resultslocation = "C:/Results"
9
+ @logFileName = @Resultslocation+"TestResults_"+(Time.new.strftime "%H_%M_%S")+".xml"
10
+
11
+ #FileUtils.mkdir_p(File.dirname(@logFileName))
12
+ def self.getResultLocation()
13
+ puts "Find results at: "+@logFileName
14
+ end
15
+
16
+ def self.configure(location = nil)
17
+ if location.nil?
18
+ location = File.expand_path(File.dirname(__FILE__)+"/../conf.rb")
19
+ require location
20
+ configValues = getLogConfiguration()
21
+ puts configValues[:resultFileLocation]
22
+ @logFileName = configValues[:resultFileLocation]+"/TestResults_"+(Time.new.strftime "%H_%M_%S")+".xml"
23
+ puts "Loading results location from default 'config.rb'"
24
+ Log.getResultLocation
25
+ else
26
+ require location
27
+ configValues = getLogConfiguration()
28
+ @logFileName = configValues[:resultFileLocation]+"/TestResults_"+(Time.new.strftime "%H_%M_%S")+".xml"
29
+ puts "Updataed results location from '#{location}'"
30
+ Log.getResultLocation
31
+ end
32
+ end
33
+
34
+ def self.createFileIfDoesnotExist()
35
+ unless File.exists?(@logFileName)
36
+ FileUtils.mkdir_p(File.dirname(@logFileName))
37
+ f = File.new(@logFileName, "w")
38
+ f.write("<log></log>")
39
+ f.close
40
+ end
41
+ if File.zero?(@logFileName)
42
+ f = File.new(@logFileName, "w")
43
+ f.write("<log></log>")
44
+ f.close
45
+ end
46
+
47
+ end
48
+ def self.getCurrentNode
49
+ cursor_local = ''
50
+ @nodeCursor.split("|").each do |i|
51
+ cursor_local = cursor_local+"/"+i+"[last()]"
52
+ end
53
+ return cursor_local
54
+ end
55
+
56
+ def self.test_script(scriptValue = 'NA')
57
+ Log.createFileIfDoesnotExist()
58
+ if @nodeCursor.include? "test-script"
59
+ @nodeCursor = 'log'
60
+ end
61
+ f1 = File.open(@logFileName)
62
+ doc = Nokogiri::XML(f1)
63
+ log = doc.at_xpath(Log.getCurrentNode)
64
+ test_scriptNode = Nokogiri::XML::Node.new("test-script", doc)
65
+ test_scriptNode['name'] = (scriptValue)
66
+ test_scriptNode['start_time'] = Time.now.iso8601(3)
67
+ f2 = File.open(@logFileName,"w")
68
+ log.add_child(test_scriptNode)
69
+ rescue Exception => e
70
+ Log.error e
71
+ ensure
72
+ f2.write(doc)
73
+ f1.close()
74
+ f2.close()
75
+ @nodeCursor = @nodeCursor+"|test-script"
76
+ end
77
+
78
+ def self.close_test_script()
79
+ @nodeCursor = "log|test-script"
80
+ f1 = File.open(@logFileName)
81
+ doc = Nokogiri::XML(f1)
82
+ log = doc.at_xpath(Log.getCurrentNode)
83
+ log['end_time'] = Time.now.iso8601(3)
84
+ f2 = File.open(@logFileName,"w")
85
+ rescue Exception => e
86
+ Log.error e
87
+ ensure
88
+ f2.write(doc)
89
+ f1.close()
90
+ f2.close()
91
+ @nodeCursor = "log"
92
+ end
93
+
94
+ def self.test_case(idValue = 'NA',nameValue = 'NA')
95
+
96
+ Log.createFileIfDoesnotExist()
97
+ if @nodeCursor.include? "test-case"
98
+ @nodeCursor = 'log|test-script'
99
+ end
100
+
101
+ f1 = File.open(@logFileName)
102
+ doc = Nokogiri::XML(f1)
103
+ log = doc.at_xpath(Log.getCurrentNode)
104
+ testCaseNode = Nokogiri::XML::Node.new("test-case", doc)
105
+ testCaseNode['id'] = (idValue)
106
+ testCaseNode['name'] = (nameValue)
107
+ testCaseNode['start_time'] = Time.now.iso8601(3)
108
+ f2 = File.open(@logFileName,"w")
109
+ log.add_child(testCaseNode)
110
+ rescue Exception => e
111
+ Log.error e
112
+ ensure
113
+ f2.write(doc)
114
+ f1.close()
115
+ f2.close()
116
+ @nodeCursor = @nodeCursor+"|test-case"
117
+
118
+ end
119
+
120
+ def self.close_test_case()
121
+ @nodeCursor = "log|test-script|test-case"
122
+ f1 = File.open(@logFileName)
123
+ doc = Nokogiri::XML(f1)
124
+ log = doc.at_xpath(Log.getCurrentNode)
125
+ log['end_time'] = Time.now.iso8601(3)
126
+ f2 = File.open(@logFileName,"w")
127
+ rescue Exception => e
128
+ Log.error e
129
+ ensure
130
+ f2.write(doc)
131
+ f1.close()
132
+ f2.close()
133
+ @nodeCursor = "log|test-script"
134
+ end
135
+
136
+ def self.test_step(idValue = 'NA',nameValue = 'NA')
137
+ Log.createFileIfDoesnotExist()
138
+ if @nodeCursor.include? "test-step"
139
+ @nodeCursor = 'log|test-script|test-case'
140
+ end
141
+ f1 = File.open(@logFileName)
142
+ doc = Nokogiri::XML(f1)
143
+ log = doc.at_xpath(Log.getCurrentNode)
144
+ testStepNode = Nokogiri::XML::Node.new("test-step", doc)
145
+ testStepNode['id'] = (idValue)
146
+ testStepNode['name'] = (nameValue)
147
+ testStepNode['start_time'] = Time.now.iso8601(3)
148
+
149
+ f2 = File.open(@logFileName,"w")
150
+ log.add_child(testStepNode)
151
+ rescue Exception => e
152
+ Log.error e
153
+ ensure
154
+ f2.write(doc)
155
+ f1.close()
156
+ f2.close()
157
+ @nodeCursor = @nodeCursor+"|test-step"
158
+ end
159
+
160
+ def self.close_test_step()
161
+ @nodeCursor = "log|test-script|test-case|test-step"
162
+ f1 = File.open(@logFileName)
163
+ doc = Nokogiri::XML(f1)
164
+ log = doc.at_xpath(Log.getCurrentNode)
165
+ log['end_time'] = Time.now.iso8601(3)
166
+ f2 = File.open(@logFileName,"w")
167
+ rescue Exception => e
168
+ Log.error e
169
+ ensure
170
+ f2.write(doc)
171
+ f1.close()
172
+ f2.close()
173
+ @nodeCursor = "log|test-script|test-case"
174
+ end
175
+
176
+ def self.message(details= 'NA',picture = 'NA')
177
+ Log.createFileIfDoesnotExist
178
+ f1 = File.open(@logFileName)
179
+ doc = Nokogiri::XML(f1)
180
+ log = doc.at_xpath(Log.getCurrentNode)
181
+ message = Nokogiri::XML::Node.new("message", doc)
182
+ log.add_child(message)
183
+ log = doc.at_xpath(Log.getCurrentNode+"/message[last()]")
184
+
185
+ timeN = Nokogiri::XML::Node.new("time", doc)
186
+ timeN.content=Time.now.iso8601(3)
187
+ log.add_child(timeN)
188
+
189
+ detailsmessage = Nokogiri::XML::Node.new("details", doc)
190
+ detailsmessage.content=details
191
+ log.add_child(detailsmessage)
192
+
193
+ pictureLocation = Nokogiri::XML::Node.new("picture", doc)
194
+ pictureLocation.content=picture
195
+ log.add_child(pictureLocation)
196
+
197
+ f2 = File.open(@logFileName,"w")
198
+ rescue Exception => e
199
+ Log.error e
200
+ ensure
201
+ f2.write(doc)
202
+ f1.close()
203
+ f2.close()
204
+ end
205
+
206
+ def self.error(details = 'NA',picture = 'NA')
207
+ Log.createFileIfDoesnotExist
208
+ f1 = File.open(@logFileName)
209
+ doc = Nokogiri::XML(f1)
210
+ log = doc.at_xpath(Log.getCurrentNode)
211
+ error = Nokogiri::XML::Node.new("error", doc)
212
+ log.add_child(error)
213
+ log = doc.at_xpath(Log.getCurrentNode+"/error[last()]")
214
+
215
+ timeN = Nokogiri::XML::Node.new("Time", doc)
216
+ timeN.content=Time.now.iso8601(3)
217
+ log.add_child(timeN)
218
+
219
+ detailsmessage = Nokogiri::XML::Node.new("details", doc)
220
+ detailsmessage.content=details
221
+ log.add_child(detailsmessage)
222
+
223
+ additionaldetailsmessage = Nokogiri::XML::Node.new("additional_details", doc)
224
+ additionaldetailsmessage.content=caller.inspect
225
+ log.add_child(additionaldetailsmessage)
226
+
227
+ pictureLocation = Nokogiri::XML::Node.new("picture", doc)
228
+ pictureLocation.content=picture
229
+ log.add_child(pictureLocation)
230
+ rescue Exception => e
231
+ return false
232
+ ensure
233
+ #$global_return = false
234
+ f2 = File.open(@logFileName,"w")
235
+ f2.write(doc)
236
+ f1.close()
237
+ f2.close()
238
+ end
239
+
240
+ def self.warning(details='NA',picture = 'NA')
241
+ Log.createFileIfDoesnotExist
242
+ f1 = File.open(@logFileName)
243
+ doc = Nokogiri::XML(f1)
244
+ log = doc.at_xpath(Log.getCurrentNode)
245
+ warning = Nokogiri::XML::Node.new("warning", doc)
246
+ log.add_child(warning)
247
+ log = doc.at_xpath(Log.getCurrentNode+"/warning[last()]")
248
+
249
+ timeN = Nokogiri::XML::Node.new("time", doc)
250
+ timeN.content=Time.now.iso8601(3)
251
+ log.add_child(timeN)
252
+
253
+ detailsmessage = Nokogiri::XML::Node.new("details", doc)
254
+ detailsmessage.content=details
255
+ log.add_child(detailsmessage)
256
+
257
+ pictureLocation = Nokogiri::XML::Node.new("picture", doc)
258
+ pictureLocation.content= picture
259
+ log.add_child(pictureLocation)
260
+ rescue Exception => e
261
+ Log.error e
262
+ ensure
263
+ f2 = File.open(@logFileName,"w")
264
+ f2.write(doc)
265
+ f1.close()
266
+ f2.close()
267
+ end
268
+
269
+ def self.utility(message = 'NA')
270
+ Log.createFileIfDoesnotExist()
271
+
272
+ f1 = File.open(@logFileName)
273
+ doc = Nokogiri::XML(f1)
274
+ log = doc.at_xpath(Log.getCurrentNode)
275
+ utilityNode = Nokogiri::XML::Node.new("utility", doc)
276
+ utilityNode['name'] = (message)
277
+ f2 = File.open(@logFileName,"w")
278
+ log.add_child(utilityNode)
279
+ rescue Exception => e
280
+ Log.error e
281
+ ensure
282
+ f2.write(doc)
283
+ f1.close()
284
+ f2.close()
285
+ @nodeCursor = @nodeCursor+"|utility"
286
+ end
287
+
288
+ def self.close_utility()
289
+
290
+ index = @nodeCursor.rindex('|utility')
291
+ @nodeCursor = @nodeCursor.slice(0...index)
292
+
293
+ end
294
+
295
+ #Default configure
296
+ Log.configure()
297
+ end
298
+
metadata ADDED
@@ -0,0 +1,61 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: testlogger
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Shiva Krishna Imminni
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-09-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: nokogiri
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: log your test results into an xml file using testlogger. Special support
28
+ for nodes like test-script test-case test-step for QA Automation.
29
+ email:
30
+ - shivausum@gmail.org
31
+ executables: []
32
+ extensions: []
33
+ extra_rdoc_files: []
34
+ files:
35
+ - lib/testlogger.rb
36
+ - conf.rb
37
+ homepage: http://questionselenium.com/
38
+ licenses:
39
+ - MIT
40
+ metadata: {}
41
+ post_install_message:
42
+ rdoc_options: []
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ! '>='
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ required_rubygems_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ requirements: []
56
+ rubyforge_project:
57
+ rubygems_version: 2.1.10
58
+ signing_key:
59
+ specification_version: 4
60
+ summary: log your test results into an xml file using testlogger.
61
+ test_files: []