calabash-android 0.5.8 → 0.5.9.pre1
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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 091c6d35abaadeb97ab814a723dfdc9baeb69702
|
4
|
+
data.tar.gz: c4d86e7ce7e2b7c101a23c66528346ea39e679bf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c538a2dc7c8a24887e9cb8d2e676ded1ffc7523b564e667590308000095d17d14ad1ba2e38daebe3badc0b3f54c85695f02b4627a97085752f367658bccef7d
|
7
|
+
data.tar.gz: c55e01a414d1ffb8e7390187e898dc1a837d9dfd7d009335c7b413cae58a2ca1988a0c14b87de1cfe63690ab23592f0f51cdcf85eb3489392f82cd110c74de87
|
@@ -1,36 +1,28 @@
|
|
1
1
|
require 'calabash-android/management/app_installation'
|
2
2
|
|
3
3
|
AfterConfiguration do |config|
|
4
|
-
|
4
|
+
FeatureMemory.feature = nil
|
5
5
|
end
|
6
6
|
|
7
7
|
Before do |scenario|
|
8
|
-
|
9
|
-
if @scenario_is_outline
|
10
|
-
scenario = scenario.scenario_outline
|
11
|
-
end
|
8
|
+
scenario = scenario.scenario_outline if scenario.respond_to?(:scenario_outline)
|
12
9
|
|
13
|
-
|
14
|
-
if
|
15
|
-
|
16
|
-
|
17
|
-
log "New scenario - reinstalling apps"
|
10
|
+
feature = scenario.feature
|
11
|
+
if FeatureMemory.feature != feature || ENV['RESET_BETWEEN_SCENARIOS'] == '1'
|
12
|
+
if ENV['RESET_BETWEEN_SCENARIOS'] == '1'
|
13
|
+
log 'New scenario - reinstalling apps'
|
18
14
|
else
|
19
|
-
log
|
15
|
+
log 'First scenario in feature - reinstalling apps'
|
20
16
|
end
|
21
|
-
|
17
|
+
|
22
18
|
uninstall_apps
|
23
|
-
install_app(ENV[
|
24
|
-
install_app(ENV[
|
25
|
-
|
26
|
-
|
19
|
+
install_app(ENV['TEST_APP_PATH'])
|
20
|
+
install_app(ENV['APP_PATH'])
|
21
|
+
FeatureMemory.feature = feature
|
22
|
+
FeatureMemory.invocation = 1
|
27
23
|
else
|
28
|
-
|
24
|
+
FeatureMemory.invocation += 1
|
29
25
|
end
|
30
26
|
end
|
31
27
|
|
32
|
-
|
33
|
-
class << FeatureNameMemory
|
34
|
-
@feature_name = nil
|
35
|
-
attr_accessor :feature_name, :invocation
|
36
|
-
end
|
28
|
+
FeatureMemory = Struct.new(:feature, :invocation).new
|
@@ -146,14 +146,20 @@ def fingerprint_from_apk(app_path)
|
|
146
146
|
FileUtils.cp(app_path, "app.apk")
|
147
147
|
FileUtils.mkdir("META-INF")
|
148
148
|
Zip::File.foreach("app.apk") do |z|
|
149
|
-
z.extract if /^META-INF\/\w+.(
|
149
|
+
z.extract if /^META-INF\/\w+.(rsa|dsa)/i =~ z.name
|
150
150
|
end
|
151
|
-
|
151
|
+
signature_files = Dir["#{tmp_dir}/META-INF/*"]
|
152
152
|
|
153
|
-
|
154
|
-
raise "More than one RSA file found in META-INF. Cannot proceed." if rsa_files.length > 1
|
153
|
+
log 'Signature files:'
|
155
154
|
|
156
|
-
|
155
|
+
signature_files.each do |signature_file|
|
156
|
+
log signature_file
|
157
|
+
end
|
158
|
+
|
159
|
+
raise "No signature files found in META-INF. Cannot proceed." if signature_files.empty?
|
160
|
+
raise "More than one signature file (DSA or RSA) found in META-INF. Cannot proceed." if signature_files.length > 1
|
161
|
+
|
162
|
+
cmd = "#{Env.keytool_path} -v -printcert -J\"-Dfile.encoding=utf-8\" -file \"#{signature_files.first}\""
|
157
163
|
log cmd
|
158
164
|
fingerprints = `#{cmd}`
|
159
165
|
md5_fingerprint = extract_md5_fingerprint(fingerprints)
|
@@ -169,6 +175,12 @@ def extract_md5_fingerprint(fingerprints)
|
|
169
175
|
m.first
|
170
176
|
end
|
171
177
|
|
178
|
+
def extract_signature_algorithm_name(fingerprints)
|
179
|
+
m = fingerprints.scan(/Signature algorithm name: (.*)/).flatten
|
180
|
+
raise "No signature algorithm names found:\n #{fingerprints}" if m.empty?
|
181
|
+
m.first
|
182
|
+
end
|
183
|
+
|
172
184
|
def log(message, error = false)
|
173
185
|
$stdout.puts "#{Time.now.strftime("%Y-%m-%d %H:%M:%S")} - #{message}" if (error or ARGV.include? "-v" or ARGV.include? "--verbose")
|
174
186
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
class JavaKeystore
|
2
2
|
attr_reader :errors, :location, :keystore_alias, :password, :fingerprint
|
3
|
+
attr_reader :signature_algorithm_name
|
3
4
|
|
4
5
|
def initialize(location, keystore_alias, password)
|
5
6
|
raise "No such keystore file '#{location}'" unless File.exists?(File.expand_path(location))
|
@@ -38,13 +39,16 @@ class JavaKeystore
|
|
38
39
|
log "Key store data:"
|
39
40
|
log keystore_data
|
40
41
|
@fingerprint = extract_md5_fingerprint(keystore_data)
|
42
|
+
@signature_algorithm_name = extract_signature_algorithm_name(keystore_data)
|
43
|
+
log "Fingerprint: #{fingerprint}"
|
44
|
+
log "Signature algorithm name: #{signature_algorithm_name}"
|
41
45
|
end
|
42
46
|
|
43
47
|
def sign_apk(apk_path, dest_path)
|
44
48
|
raise "Cannot sign with a miss configured keystore" if errors
|
45
49
|
raise "No such file: #{apk_path}" unless File.exists?(apk_path)
|
46
50
|
|
47
|
-
unless system_with_stdout_on_success(Env.jarsigner_path, '-sigalg',
|
51
|
+
unless system_with_stdout_on_success(Env.jarsigner_path, '-sigalg', signature_algorithm_name, '-digestalg', 'SHA1', '-signedjar', dest_path, '-storepass', password, '-keystore', location, apk_path, keystore_alias)
|
48
52
|
raise "Could not sign app: #{apk_path}"
|
49
53
|
end
|
50
54
|
end
|
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: calabash-android
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.9.pre1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonas Maturana Larsen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-04-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cucumber
|
@@ -266,9 +266,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
266
266
|
version: '0'
|
267
267
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
268
268
|
requirements:
|
269
|
-
- - '
|
269
|
+
- - '>'
|
270
270
|
- !ruby/object:Gem::Version
|
271
|
-
version:
|
271
|
+
version: 1.3.1
|
272
272
|
requirements: []
|
273
273
|
rubyforge_project:
|
274
274
|
rubygems_version: 2.0.2
|