testautoa 0.4.4 → 0.4.5

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.
@@ -126,7 +126,10 @@ def run(option)
126
126
  serial_number = @settings["device_serialno"].to_s.strip
127
127
  STDOUT.sync = true
128
128
  arguments = ARGV
129
+
129
130
  cmd = "calabash-android #{option} #{app_package} #{arguments.join(" ")}"
131
+ apk_info = get_apk_info(app_package)
132
+
130
133
  env = {}
131
134
  if test_server_port != ''
132
135
  env["TEST_SERVER_PORT"] = test_server_port
@@ -134,6 +137,20 @@ def run(option)
134
137
  if serial_number != ''
135
138
  env["ADB_DEVICE_ARG"] = serial_number
136
139
  end
140
+ env["DEVICE_ID"] = serial_number
141
+ env["DEVICE_CLASS"] = ""
142
+ env["DEVICE_TYPE"] = ""
143
+ env["DEVICE_SN"] = adb_shell("getprop ro.boot.serialno").strip
144
+ env["DEVICE_MFG"] = adb_shell("getprop ro.product.manufacturer").strip
145
+ env["DEVICE_MODEL"] = adb_shell("getprop ro.product.model").strip
146
+ env["DEVICE_VERSION"] = adb_shell("getprop ro.product.version").strip
147
+ env["DEVICE_ANDROID_VERSION"] = adb_shell("getprop ro.build.version.release").strip
148
+ env["DEVICE_ANDROID_SDK"] = adb_shell("getprop ro.build.version.sdk").strip
149
+ env["APP_NAME"] = "#{apk_info['label']} (#{apk_info['name']})"
150
+ env["APP_VERSION"] = "#{apk_info['version_name']} (#{apk_info['version_code']})"
151
+ if File.exists?(File.join(FileUtils.pwd, "build_drop_dir.txt"))
152
+ env["BUILD_DROP_DIR"] = IO.read(File.join(FileUtils.pwd, "build_drop_dir.txt"))
153
+ end
137
154
  result = system(env, cmd)
138
155
  sleep(1)
139
156
  result
@@ -285,21 +302,44 @@ def get_build
285
302
  end
286
303
  end
287
304
  else
305
+ home_path = ENV['HOME'] || ENV['HOMEPATH']
288
306
  if ARGV.first == 'trunk'
289
307
  # copy the trunk build
290
308
  release_path = File.join(mount_node, @settings["build_drop_trunk_dir"])
309
+ cache_path = File.join(home_path, "build_drop_cache", @settings["build_drop_trunk_dir"])
291
310
  else
292
311
  # copy the version build
293
312
  release_path = File.join(mount_node, @settings["build_drop_branch_dir"], "Android#{ARGV.first}/Release")
313
+ cache_path = File.join(home_path, "build_drop_cache", @settings["build_drop_branch_dir"], "Android#{ARGV.first}/Release")
294
314
  end
295
315
  raise "No builds found in #{release_path}" unless File.directory?(release_path)
296
- build_dir = Dir.entries(release_path).reject{|d|d.start_with?('.')}.sort_by{|c| File.stat(File.join(release_path,c)).ctime}.last
297
- raise "No builds found in #{release_path}" if build_dir == nil
298
- apk_file = "ConcurMobile.apk"
299
- source = File.join(release_path, build_dir, apk_file)
316
+
317
+ build_dirs = Dir.entries(release_path).reject{|d|d.start_with?('.')}.sort_by{|c| File.stat(File.join(release_path,c)).ctime}
318
+
319
+ apk_file = @settings["app_package"]
320
+
321
+ # directory could be empty
322
+ build_dir = nil
323
+ begin
324
+ raise "No builds found in #{release_path}" if build_dirs.size == 0
325
+ if File.exists?(File.join(release_path, build_dirs.last, apk_file))
326
+ build_dir = build_dirs.last
327
+ else
328
+ build_dirs.pop
329
+ end
330
+ end while build_dir == nil
331
+
332
+ source = File.join(cache_path, build_dir, apk_file)
333
+ if not File.exists?(source)
334
+ release_source = File.join(release_path, build_dir, apk_file)
335
+ FileUtils.mkdir_p(File.dirname(source))
336
+ FileUtils.copy(release_source, source)
337
+ puts "Copy the build from #{release_source} to #{source}"
338
+ end
300
339
  raise "the file '#{source}' does not exist" if not File.exists?(source)
301
340
  FileUtils.copy(source, File.join(FileUtils.pwd, apk_file))
302
- puts "Copy the build from #{source}"
341
+ puts "Copy the build from #{source}"
342
+ File.open(File.join(FileUtils.pwd, "build_drop_dir.txt"), 'w') {|f| f.write(build_dir) }
303
343
  end
304
344
 
305
345
  smb_disconnect(mount_node)
@@ -326,6 +366,11 @@ def get_script
326
366
  end
327
367
  end
328
368
 
369
+ def aapt_path
370
+ raise_if_android_home_not_set
371
+ File.join(ENV['ANDROID_HOME'], 'platform-tools', 'aapt')
372
+ end
373
+
329
374
  def adb_path
330
375
  raise_if_android_home_not_set
331
376
  File.join(ENV['ANDROID_HOME'], 'platform-tools', 'adb')
@@ -339,7 +384,7 @@ def adb_path_w_sn
339
384
  end
340
385
 
341
386
  def adb_shell(command)
342
- system("#{adb_path_w_sn} shell #{command}")
387
+ `#{adb_path_w_sn} shell #{command}`
343
388
  end
344
389
 
345
390
  def android_path
@@ -373,6 +418,20 @@ def list_avd
373
418
  puts `#{android_path} list avd`
374
419
  end
375
420
 
421
+ def get_apk_info(apk_path)
422
+ apk_info = {}
423
+ output = `#{aapt_path} d --values badging #{apk_path}`
424
+ if output =~ /^package: name='(.*)' versionCode='(.*)' versionName='(.*)'$/
425
+ apk_info['name'] = $1
426
+ apk_info['version_code'] = $2
427
+ apk_info['version_name'] = $3
428
+ end
429
+ if output =~ /^application-label:'(.*)'$/
430
+ apk_info['label'] = $1
431
+ end
432
+ apk_info
433
+ end
434
+
376
435
  def create_avd
377
436
  android_targets = get_target_names.find_all{ |t| t =~ /android-(\d*)/ }
378
437
  google_targets = get_target_names.find_all{ |t| t =~ /Google Inc.:Google APIs:(\d*)/ }
@@ -1,5 +1,5 @@
1
1
  module Calabash
2
2
  module Android
3
- VERSION = "0.4.4"
3
+ VERSION = "0.4.5"
4
4
  end
5
5
  end
@@ -0,0 +1,26 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "calabash-android/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "testautoa"
7
+ s.version = Calabash::Android::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["jimtsay"]
10
+ s.summary = %q{Summary}
11
+ s.description = %q{Description}
12
+ s.files = `git ls-files`.split("\n") + Dir["test-server/calabash-js/src/*.js"] + ["lib/calabash-android/lib/TestServer.apk"]
13
+ s.executables = ["calabash-android","testautoa"]
14
+ s.default_executable = "calabash-android"
15
+ s.require_paths = ["lib"]
16
+
17
+ s.add_dependency( "cucumber" )
18
+ s.add_dependency( "json" )
19
+ s.add_dependency( "retriable" )
20
+ s.add_dependency( "slowhandcuke" )
21
+ s.add_dependency( "rubyzip" )
22
+ s.add_dependency( "awesome_print" )
23
+ s.add_dependency( "rest-client" )
24
+ s.add_dependency( "nokogiri" )
25
+
26
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: testautoa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.4.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-29 00:00:00.000000000 Z
12
+ date: 2013-08-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cucumber
@@ -864,6 +864,7 @@ files:
864
864
  - test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/TokenBuffer.java
865
865
  - test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/VersionUtil.java
866
866
  - test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/package-info.java
867
+ - testautoa.gemspecx
867
868
  - test-server/calabash-js/src/calabash.js
868
869
  - test-server/calabash-js/src/set_text.js
869
870
  - lib/calabash-android/lib/TestServer.apk