testlogger 0.0.2

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.
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: []