flaky 0.0.16 → 0.0.17

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1e85d81f9e7ad261be0cff5ab059fa1b5c2492d6
4
- data.tar.gz: 287c4adf9b939e1a767583c9ae5aaf003a4aa9f0
3
+ metadata.gz: 114eb59e36a70bf9654f2ff5b456325bdff0ab70
4
+ data.tar.gz: 3e201be6fc05c9d2786067aa7971d9dfe48b432b
5
5
  SHA512:
6
- metadata.gz: 8e544470b5663a3f3ac816d0fc945b512c2ae443353e598ed9581b48be0bd7b4652605e365948b69df850a94c4ce8d506548ce3d202befb31268468e202b5866
7
- data.tar.gz: 7d695c71580ab151b30da17274498b3dd143724d3a58cb895626bed521e1d11229f24f5b31b27ed75c5b14a8e6e82bb5c6fff0a64935e3aba38e659f438a84ef
6
+ metadata.gz: 13e0202fd081788b1c49d3ce80454ecf606e2408711b113f86f7215d96526991ddaa5ee3b052e4b9ee1e4b863b2a16ac3f0fab0086c77623ff6f04071f611f47
7
+ data.tar.gz: 1a123780cacd99a3f9af0da8ea64b303558336c0629e793b76d5e59b7c8c0529967cf0e628c0cd8f899f7c2282784b3d5f78bfe3cc56912736d1302fceef5f67
data/flaky.gemspec CHANGED
@@ -25,7 +25,6 @@ Gem::Specification.new do |s|
25
25
  s.require_paths = %w(lib)
26
26
 
27
27
  s.add_runtime_dependency 'chronic_duration', '~> 0.10.2'
28
- s.add_runtime_dependency 'escape_utils', '~> 1.0.0'
29
28
  s.add_runtime_dependency 'posix-spawn', '~> 0.3.6'
30
29
 
31
30
  s.add_development_dependency 'rake', '~> 10.1.0'
data/lib/flaky.rb CHANGED
@@ -1,16 +1,16 @@
1
1
  # encoding: utf-8
2
2
  require 'fileutils' # system requires
3
3
  require 'open3'
4
+ require 'timeout' # to timeout long running color runs
4
5
 
5
6
  require 'rubygems' # gem requires
6
7
  require 'chronic_duration'
7
- require 'escape_utils'
8
8
  require 'posix/spawn' # http://rubygems.org/gems/posix-spawn
9
9
  require 'digest/md5'
10
10
 
11
11
  module Flaky
12
- VERSION = '0.0.16' unless defined? ::Flaky::VERSION
13
- DATE = '2013-12-09' unless defined? ::Flaky::DATE
12
+ VERSION = '0.0.17' unless defined? ::Flaky::VERSION
13
+ DATE = '2013-12-10' unless defined? ::Flaky::DATE
14
14
 
15
15
  # https://github.com/appium/ruby_lib/blob/0e203d76610abd519ba9d2fe9c14b50c94df5bbd/lib/appium_lib.rb#L24
16
16
  def self.add_to_path file, path=false
@@ -26,7 +26,6 @@ module Flaky
26
26
  # require internal files
27
27
  require 'flaky/appium'
28
28
  require 'flaky/applescript'
29
- require 'flaky/log'
30
29
  require 'flaky/run'
31
30
 
32
31
  require 'flaky/run/all_tests'
data/lib/flaky/appium.rb CHANGED
@@ -23,7 +23,7 @@ module Flaky
23
23
  class Appium
24
24
  include POSIX::Spawn
25
25
  # logcat is read & stopped by run.execute
26
- attr_reader :ready, :pid, :in, :out, :err, :log, :logcat
26
+ attr_reader :ready, :pid, :in, :out, :err, :log, :logcat, :ios, :android
27
27
  @@thread = nil
28
28
 
29
29
  def self.remove_ios_apps
@@ -61,6 +61,7 @@ module Flaky
61
61
  @droid = Flaky::Android.new
62
62
  @logcat = Flaky::Logcat.new
63
63
  end
64
+ @ios = ! @android
64
65
  end
65
66
 
66
67
  def start
@@ -101,7 +102,7 @@ module Flaky
101
102
  def flush_buffer
102
103
  return if @buffer.nil? || @buffer.empty?
103
104
  File.open(@log, 'a') do |f|
104
- f.write EscapeUtils.escape_html @buffer
105
+ f.write @buffer
105
106
  end
106
107
  @buffer = ''
107
108
  @log
data/lib/flaky/run.rb CHANGED
@@ -126,8 +126,13 @@ module Flaky
126
126
 
127
127
  log_file = LogArtifact.new result_dir: result_dir, pass_str: pass_str, test_name: test_name
128
128
 
129
+ # File.open 'w' will not create folders. Use mkdir_p before.
130
+ test_file_path = log_file.name("#{postfix}.html")
131
+ FileUtils.mkdir_p File.dirname(test_file_path)
129
132
  # html Ruby test log
130
- Flaky.write log_file.name("#{postfix}.html"), log
133
+ File.open(test_file_path, 'w') do |f|
134
+ f.write log
135
+ end
131
136
 
132
137
  # TODO: Get iOS simulator system log from appium
133
138
  # File.open(log_file.name("#{postfix}.server.log.txt"), 'w') do |f|
@@ -136,21 +141,45 @@ module Flaky
136
141
 
137
142
  # adb logcat log
138
143
  logcat = appium.logcat ? appium.logcat.stop : nil
139
- File.open(log_file.name("#{postfix}.logcat.txt"), 'w') do |f|
144
+ logcat_file_path = log_file.name("#{postfix}.logcat.txt")
145
+ FileUtils.mkdir_p File.dirname(logcat_file_path)
146
+ File.open(logcat_file_path, 'w') do |f|
140
147
  f.write logcat
141
148
  end if logcat
142
149
 
143
150
  # appium server log
144
- Flaky.write log_file.name("#{postfix}.appium.html"), nil, appium.flush_buffer
151
+ appium_server_path = log_file.name("#{postfix}.appium.html")
152
+ FileUtils.mkdir_p File.dirname(appium_server_path)
153
+ File.open(appium_server_path, 'w') do |f|
154
+ # this may return nil
155
+ tmp_file = appium.flush_buffer
156
+
157
+ if !tmp_file.nil? && !tmp_file.empty?
158
+ f.write File.read tmp_file
159
+ File.delete tmp_file
160
+ end
161
+ end
145
162
 
146
163
  passed
147
164
  end
148
165
 
166
+ def collect_crashes array
167
+ Dir.glob(File.join(Dir.home, '/Library/Logs/DiagnosticReports/*.crash')) do |crash|
168
+ array << crash
169
+ end
170
+ array
171
+ end
172
+
149
173
  def execute opts={}
150
174
  run_cmd = opts[:run_cmd]
151
175
  test_name = opts[:test_name]
152
176
  appium = opts[:appium]
153
177
 
178
+ old_crash_files = []
179
+ if appium.ios
180
+ collect_crashes old_crash_files
181
+ end
182
+
154
183
  raise 'must pass :run_cmd' unless run_cmd
155
184
  raise 'must pass :test_name' unless test_name
156
185
  raise 'must pass :appium' unless appium
@@ -165,6 +194,21 @@ module Flaky
165
194
 
166
195
  print passed ? green(' ✓') : red(' ✖')
167
196
 
197
+ if appium.ios
198
+ new_crash_files = []
199
+ collect_crashes new_crash_files
200
+
201
+ new_crash_files = new_crash_files - old_crash_files
202
+ if new_crash_files.length > 0
203
+ File.open('/tmp/flaky/crashes.txt', 'a') do |f|
204
+ f.puts '--'
205
+ f.puts "Test: #{test_name} crashed on iOS:"
206
+ new_crash_files.each { |crash| f.puts crash }
207
+ f.puts '--'
208
+ end
209
+ end
210
+ end
211
+
168
212
  @last_test = test_name
169
213
  passed
170
214
  end
data/release_notes.md CHANGED
@@ -1,3 +1,10 @@
1
+ #### v0.0.16 2013-12-09
2
+
3
+ - [fed719a](https://github.com/appium/flaky/commit/fed719af184a6f38a4d29b3c65f1906d6917c1fb) Release 0.0.16
4
+ - [4aa7711](https://github.com/appium/flaky/commit/4aa7711b206a71338fc8d771c5ef49ec036f1ab8) Fix file exists error. Write current test to current.txt
5
+ - [1b0589c](https://github.com/appium/flaky/commit/1b0589c232219b5c535432976056a6d5c30ed073) Update todo.md
6
+
7
+
1
8
  #### v0.0.15 2013-12-05
2
9
 
3
10
  - [5397189](https://github.com/appium/flaky/commit/539718980a1c1578da63c30f773e5c249415b2b9) Release 0.0.15
data/test/all_tests.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  # encoding: utf-8
2
- require File.expand_path '../lib/flaky/log', __FILE__
3
2
  require File.expand_path '../lib/flaky/run', __FILE__
4
3
  require File.expand_path '../mock_execute', __FILE__
5
4
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flaky
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.16
4
+ version: 0.0.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - code@bootstraponline.com
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-09 00:00:00.000000000 Z
11
+ date: 2013-12-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chronic_duration
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.10.2
27
- - !ruby/object:Gem::Dependency
28
- name: escape_utils
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: 1.0.0
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: 1.0.0
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: posix-spawn
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -84,7 +70,6 @@ files:
84
70
  - lib/flaky.rb
85
71
  - lib/flaky/appium.rb
86
72
  - lib/flaky/applescript.rb
87
- - lib/flaky/log.rb
88
73
  - lib/flaky/logcat.rb
89
74
  - lib/flaky/reset_android.rb
90
75
  - lib/flaky/run.rb
data/lib/flaky/log.rb DELETED
@@ -1,106 +0,0 @@
1
- # encoding: utf-8
2
- module Flaky
3
- class << self
4
- # Monaco 18 pt
5
- # ANSI colors
6
- #
7
- # [36m = 00eee9 = cyan
8
- # [32m = 00e800 = green
9
- # [0m = f4f4f4 = reset
10
- def html_before
11
- <<-'HTML'
12
- <html>
13
- <head>
14
- <style>
15
- * {
16
- padding: 0;
17
- margin: 0;
18
- border: 0;
19
- width: 0;
20
- height: 0;
21
- }
22
- div { display: inline; }
23
- body { background-color: #262626; }
24
- #terminal {
25
- display: inherit;
26
- white-space: pre;
27
- font-family: "Monaco";
28
- font-size: 14px;
29
- color: #f4f4f4;
30
- padding-left: 18px;
31
- }
32
- div.cyan { color: #00eee9; }
33
- div.green { color: #00e800; }
34
- div.grey { color: #666666; }
35
- </style>
36
- </head>
37
- <body>
38
- <div id="terminal">
39
- HTML
40
- end
41
-
42
- def html_after
43
- <<-'HTML'
44
- </div>
45
- </body>
46
- </html>
47
- HTML
48
- end
49
-
50
- def write log_file, log, file_path=nil
51
- # directory must exist
52
- FileUtils.mkdir_p File.dirname log_file
53
- # Pry & Awesome Print use the ruby objects to insert term colors.
54
- # this can't be done with the raw text output.
55
-
56
- # escape_html will error if called when log is nil
57
- # must escape for rendering HTML in the browser
58
- log = EscapeUtils.escape_html log || '' unless file_path
59
- # POST /wd/hub/session 303 6877ms - 9
60
-
61
- scan = StringScanner.new log || File.read(file_path)
62
- File.delete(file_path) if file_path # delete tmp buffer file
63
-
64
- new_log = '<div>'
65
-
66
- color_rgx = /\[(\d+)m/
67
- while !scan.eos?
68
- match = scan.scan_until color_rgx
69
- match_size = scan.matched_size
70
-
71
- # no more color codes
72
- if match_size.nil?
73
- new_log += scan.rest
74
- new_log += '</div>'
75
- break
76
- end
77
-
78
- # save before the color code, excluding the color code
79
- new_log += match[0..-1 - match_size]
80
- new_log += '</div>'
81
-
82
- found_number = match.match(color_rgx).to_a.last.gsub(/[^\d]/, '').to_i
83
-
84
- # now make a new colored div
85
- color = case (found_number)
86
- when 39, 0 # white text
87
- '<div>'
88
- when 90 # grey
89
- '<div class="grey">'
90
- when 36
91
- '<div class="cyan">'
92
- when 32
93
- '<div class="green">'
94
- else
95
- '<div>' # Unknown color code
96
- end
97
-
98
- new_log += color
99
- end
100
-
101
- File.open(log_file, 'w') do |f|
102
- f.write html_before + new_log + html_after
103
- end
104
- end
105
- end # class << self
106
- end # module Flaky