calabash-android 0.5.9.pre2.intenthook1 → 0.5.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGES.txt +9 -0
- data/Rakefile +1 -1
- data/bin/calabash-android-build.rb +1 -1
- data/lib/calabash-android/lib/TestServer.apk +0 -0
- data/lib/calabash-android/operations.rb +14 -95
- data/lib/calabash-android/version.rb +1 -1
- data/lib/calabash-android/wait_helpers.rb +6 -7
- data/test-server/AndroidManifest.xml +2 -15
- metadata +4 -7
- data/lib/calabash-android/android_component.rb +0 -23
- data/lib/calabash-android/android_intent.rb +0 -60
- data/lib/calabash-android/intent_hook.rb +0 -106
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3765a162f326008fc737619e6d8f149c0fe8a4fd
|
4
|
+
data.tar.gz: f2fce1b20c9c6e69a85e328a74eb886afbd397bd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 990a188d46509fec9345ee313cfc9d182b6f0fcaaf8e586cf2c6fea96c0a3ada74363837bbe81f6bc7423bda37d852080eb7e4d533e9a579d047f42cc3d883c2
|
7
|
+
data.tar.gz: 1be5b0c4f6aaf841b522623e9899c115fe28c8ebae9ea7f47a8ba764f9be4da755b64e637884198ada3903f061b427b3078292be0312269d21b1673ab6955261
|
data/CHANGES.txt
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
0.5.9
|
2
|
+
Fix crosswalk queries giving wrong coordinates.
|
3
|
+
|
4
|
+
Fix client rescuing `Exceptions`
|
5
|
+
|
6
|
+
Support signing with DSA certificates
|
7
|
+
|
8
|
+
Support indexes in css/xpath queries.
|
9
|
+
|
1
10
|
0.5.8
|
2
11
|
Handle `embed` if Calabash Android was 'included' instead of added
|
3
12
|
to the Cucumber World
|
data/Rakefile
CHANGED
Binary file
|
@@ -14,9 +14,6 @@ require 'calabash-android/touch_helpers'
|
|
14
14
|
require 'calabash-android/wait_helpers'
|
15
15
|
require 'calabash-android/version'
|
16
16
|
require 'calabash-android/env'
|
17
|
-
require 'calabash-android/android_intent'
|
18
|
-
require 'calabash-android/android_component'
|
19
|
-
require 'calabash-android/intent_hook'
|
20
17
|
require 'retriable'
|
21
18
|
require 'cucumber'
|
22
19
|
require 'date'
|
@@ -59,14 +56,11 @@ module Calabash module Android
|
|
59
56
|
end
|
60
57
|
|
61
58
|
def default_device
|
62
|
-
|
63
|
-
@default_device = Device.new(self, ENV["ADB_DEVICE_ARG"], ENV["TEST_SERVER_PORT"], ENV["APP_PATH"], ENV["TEST_APP_PATH"])
|
64
|
-
end
|
65
|
-
@default_device
|
59
|
+
@@default_device ||= Device.new(self, ENV["ADB_DEVICE_ARG"], ENV["TEST_SERVER_PORT"], ENV["APP_PATH"], ENV["TEST_APP_PATH"])
|
66
60
|
end
|
67
61
|
|
68
62
|
def set_default_device(device)
|
69
|
-
|
63
|
+
@@default_device = device
|
70
64
|
end
|
71
65
|
|
72
66
|
def performAction(action, *arguments)
|
@@ -281,17 +275,15 @@ module Calabash module Android
|
|
281
275
|
class Device
|
282
276
|
attr_reader :app_path, :test_server_path, :serial, :server_port, :test_server_port
|
283
277
|
|
284
|
-
def initialize(cucumber_world, serial, server_port, app_path,
|
285
|
-
|
278
|
+
def initialize(cucumber_world, serial, server_port, app_path, test_server_path, test_server_port = 7102)
|
279
|
+
|
286
280
|
@cucumber_world = cucumber_world
|
287
281
|
@serial = serial || default_serial
|
288
282
|
@server_port = server_port || default_server_port
|
289
283
|
@app_path = app_path
|
290
284
|
@test_server_path = test_server_path
|
291
285
|
@test_server_port = test_server_port
|
292
|
-
end
|
293
286
|
|
294
|
-
def forward_port
|
295
287
|
forward_cmd = "#{adb_command} forward tcp:#{@server_port} tcp:#{@test_server_port}"
|
296
288
|
log forward_cmd
|
297
289
|
log `#{forward_cmd}`
|
@@ -370,7 +362,7 @@ module Calabash module Android
|
|
370
362
|
Timeout.timeout(300) do
|
371
363
|
begin
|
372
364
|
result = http("/", params, {:read_timeout => 350})
|
373
|
-
rescue
|
365
|
+
rescue => e
|
374
366
|
log "Error communicating with test server: #{e}"
|
375
367
|
raise e
|
376
368
|
end
|
@@ -383,7 +375,7 @@ module Calabash module Android
|
|
383
375
|
result
|
384
376
|
end
|
385
377
|
rescue Timeout::Error
|
386
|
-
raise
|
378
|
+
raise "Step timed out"
|
387
379
|
end
|
388
380
|
|
389
381
|
def http(path, data = {}, options = {})
|
@@ -405,25 +397,6 @@ module Calabash module Android
|
|
405
397
|
end
|
406
398
|
end
|
407
399
|
|
408
|
-
def http_put(path, data = {}, options = {})
|
409
|
-
begin
|
410
|
-
|
411
|
-
configure_http(@http, options)
|
412
|
-
make_http_request(
|
413
|
-
:method => :put,
|
414
|
-
:body => data,
|
415
|
-
:uri => url_for(path),
|
416
|
-
:header => {"Content-Type" => "application/octet-stream"})
|
417
|
-
|
418
|
-
rescue HTTPClient::TimeoutError,
|
419
|
-
HTTPClient::KeepAliveDisconnected,
|
420
|
-
Errno::ECONNREFUSED, Errno::ECONNRESET, Errno::ECONNABORTED,
|
421
|
-
Errno::ETIMEDOUT => e
|
422
|
-
log "It looks like your app is no longer running. \nIt could be because of a crash or because your test script shut it down."
|
423
|
-
raise e
|
424
|
-
end
|
425
|
-
end
|
426
|
-
|
427
400
|
def set_http(http)
|
428
401
|
@http = http
|
429
402
|
end
|
@@ -448,18 +421,18 @@ module Calabash module Android
|
|
448
421
|
@http = init_request(options)
|
449
422
|
end
|
450
423
|
header = options[:header] || {}
|
451
|
-
header["Content-Type"]
|
424
|
+
header["Content-Type"] = "application/json;charset=utf-8"
|
425
|
+
options[:header] = header
|
426
|
+
|
452
427
|
|
453
428
|
response = if options[:method] == :post
|
454
429
|
@http.post(options[:uri], options)
|
455
|
-
elsif options[:method] == :put
|
456
|
-
@http.put(options[:uri], options)
|
457
430
|
else
|
458
431
|
@http.get(options[:uri], options)
|
459
432
|
end
|
460
433
|
raise Errno::ECONNREFUSED if response.status_code == 502
|
461
434
|
response.body
|
462
|
-
rescue
|
435
|
+
rescue => e
|
463
436
|
if @http
|
464
437
|
@http.reset_all
|
465
438
|
@http=nil
|
@@ -617,8 +590,6 @@ module Calabash module Android
|
|
617
590
|
wake_up
|
618
591
|
end
|
619
592
|
|
620
|
-
forward_port
|
621
|
-
|
622
593
|
env_options = options
|
623
594
|
|
624
595
|
env_options[:target_package] ||= package_name(@app_path)
|
@@ -659,7 +630,7 @@ module Calabash module Android
|
|
659
630
|
log "Instrumentation backend is ready!"
|
660
631
|
end
|
661
632
|
end
|
662
|
-
rescue
|
633
|
+
rescue => e
|
663
634
|
|
664
635
|
msg = "Unable to make connection to Calabash Test Server at http://127.0.0.1:#{@server_port}/\n"
|
665
636
|
msg << "Please check the logcat output for more info about what happened\n"
|
@@ -714,7 +685,7 @@ module Calabash module Android
|
|
714
685
|
def set_gps_coordinates_from_location(location)
|
715
686
|
require 'geocoder'
|
716
687
|
results = Geocoder.search(location)
|
717
|
-
raise
|
688
|
+
raise "Got no results for #{location}" if results.empty?
|
718
689
|
|
719
690
|
best_result = results.first
|
720
691
|
set_gps_coordinates(best_result.latitude, best_result.longitude)
|
@@ -838,13 +809,13 @@ module Calabash module Android
|
|
838
809
|
ni
|
839
810
|
end
|
840
811
|
|
841
|
-
def screenshot_and_raise(
|
812
|
+
def screenshot_and_raise(e, options = nil)
|
842
813
|
if options
|
843
814
|
screenshot_embed options
|
844
815
|
else
|
845
816
|
screenshot_embed
|
846
817
|
end
|
847
|
-
raise
|
818
|
+
raise e
|
848
819
|
end
|
849
820
|
|
850
821
|
def hide_soft_keyboard
|
@@ -874,10 +845,6 @@ module Calabash module Android
|
|
874
845
|
default_device.http(path, data, options)
|
875
846
|
end
|
876
847
|
|
877
|
-
def http_put(path, data = {}, options = {})
|
878
|
-
default_device.http_put(path, data, options)
|
879
|
-
end
|
880
|
-
|
881
848
|
def html(q)
|
882
849
|
query(q).map {|e| e['html']}
|
883
850
|
end
|
@@ -1212,54 +1179,6 @@ module Calabash module Android
|
|
1212
1179
|
result['result']
|
1213
1180
|
end
|
1214
1181
|
|
1215
|
-
def last_broadcast_intent
|
1216
|
-
result = JSON.parse(http("/last-broadcast-intent"))
|
1217
|
-
|
1218
|
-
unless result['outcome'] == 'SUCCESS'
|
1219
|
-
raise "/last-broadcast-intent failed because: #{result['reason']}\n#{result['detail']}"
|
1220
|
-
end
|
1221
|
-
|
1222
|
-
json = JSON.parse(result['result'])
|
1223
|
-
|
1224
|
-
if json.nil?
|
1225
|
-
nil
|
1226
|
-
else
|
1227
|
-
AndroidIntent.from_json(json)
|
1228
|
-
end
|
1229
|
-
end
|
1230
|
-
|
1231
|
-
def add_file(path_or_file)
|
1232
|
-
file = File.new(path_or_file)
|
1233
|
-
|
1234
|
-
http_put('/add-file', File.binread(file))
|
1235
|
-
end
|
1236
|
-
|
1237
|
-
def add_intent_hook(intent_hook)
|
1238
|
-
result = JSON.parse(http('/intent-hook', intent_hook))
|
1239
|
-
|
1240
|
-
if result['outcome'] && result['outcome'] != 'SUCCESS'
|
1241
|
-
raise "/intent-hook failed because: #{result['reason']}\n#{result['detail']}"
|
1242
|
-
end
|
1243
|
-
end
|
1244
|
-
|
1245
|
-
def fake_camera_with_image(path_or_file, usage_count=1)
|
1246
|
-
file = File.new(path_or_file)
|
1247
|
-
|
1248
|
-
extension = File.extname(path_or_file)
|
1249
|
-
|
1250
|
-
if extension != '.jpg' && extension != '.jpeg'
|
1251
|
-
raise ArgumentError, "Supplied image file must be a .jpg or .jpeg, not '#{extension}'"
|
1252
|
-
end
|
1253
|
-
|
1254
|
-
file_on_device = add_file(file)
|
1255
|
-
|
1256
|
-
intent = Calabash::Android::AndroidIntent.with_action('android.media.action.IMAGE_CAPTURE')
|
1257
|
-
filter = Calabash::Android::IntentHook::Filter.new(intent)
|
1258
|
-
reaction = Calabash::Android::IntentHook::Reaction.take_picture(file_on_device)
|
1259
|
-
|
1260
|
-
add_intent_hook(Calabash::Android::IntentHook.new(reaction, filter, usage_count))
|
1261
|
-
end
|
1262
|
-
|
1263
1182
|
def map(query, method_name, *method_args)
|
1264
1183
|
operation_map = {
|
1265
1184
|
:method_name => method_name,
|
@@ -48,7 +48,7 @@ module Calabash
|
|
48
48
|
else
|
49
49
|
raise wait_error(msg)
|
50
50
|
end
|
51
|
-
rescue
|
51
|
+
rescue => e
|
52
52
|
handle_error_with_options(e, nil, screenshot_on_error)
|
53
53
|
end
|
54
54
|
end
|
@@ -116,14 +116,13 @@ module Calabash
|
|
116
116
|
end
|
117
117
|
|
118
118
|
def handle_error_with_options(ex, timeout_message, screenshot_on_error)
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
end
|
119
|
+
error_class = (ex && ex.class) || RuntimeError
|
120
|
+
error = error_class.new(timeout_message || ex.message)
|
121
|
+
|
123
122
|
if screenshot_on_error
|
124
|
-
screenshot_and_raise
|
123
|
+
screenshot_and_raise error
|
125
124
|
else
|
126
|
-
raise
|
125
|
+
raise error
|
127
126
|
end
|
128
127
|
end
|
129
128
|
|
@@ -3,9 +3,7 @@
|
|
3
3
|
package="#testPackage#"
|
4
4
|
android:versionCode="3"
|
5
5
|
android:versionName="0.3.0">
|
6
|
-
<application android:label="instrumentation_backend"
|
7
|
-
android:largeHeap="true">
|
8
|
-
|
6
|
+
<application android:label="instrumentation_backend">
|
9
7
|
<uses-library android:name="android.test.runner" />
|
10
8
|
<uses-library android:name="com.google.android.maps" android:required="false" />
|
11
9
|
<activity
|
@@ -17,18 +15,8 @@
|
|
17
15
|
android:stateNotNeeded="true"
|
18
16
|
android:noHistory="false"
|
19
17
|
android:excludeFromRecents="true"/>
|
20
|
-
<activity
|
21
|
-
android:name="sh.calaba.instrumentationbackend.FakeCameraActivity"
|
22
|
-
android:label="FakeCameraActivity"
|
23
|
-
android:exported="true"
|
24
|
-
android:finishOnTaskLaunch="true"
|
25
|
-
android:stateNotNeeded="true"
|
26
|
-
android:noHistory="true"
|
27
|
-
android:excludeFromRecents="true"
|
28
|
-
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>
|
29
18
|
</application>
|
30
|
-
<uses-sdk android:minSdkVersion="4"
|
31
|
-
android:targetSdkVersion="21"/>
|
19
|
+
<uses-sdk android:minSdkVersion="4" />
|
32
20
|
<instrumentation android:targetPackage="#targetPackage#" android:name="sh.calaba.instrumentationbackend.CalabashInstrumentationTestRunner" />
|
33
21
|
<instrumentation android:targetPackage="#targetPackage#" android:name="sh.calaba.instrumentationbackend.ClearAppData" />
|
34
22
|
<instrumentation android:targetPackage="#targetPackage#" android:name="sh.calaba.instrumentationbackend.ClearPreferences" />
|
@@ -40,6 +28,5 @@
|
|
40
28
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
41
29
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
42
30
|
<uses-permission android:name="android.permission.INTERNET" />
|
43
|
-
<uses-permission android:name="android.permission.CAMERA" />
|
44
31
|
|
45
32
|
</manifest>
|
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.9
|
4
|
+
version: 0.5.9
|
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-05-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cucumber
|
@@ -210,8 +210,6 @@ files:
|
|
210
210
|
- irbrc
|
211
211
|
- lib/calabash-android.rb
|
212
212
|
- lib/calabash-android/abase.rb
|
213
|
-
- lib/calabash-android/android_component.rb
|
214
|
-
- lib/calabash-android/android_intent.rb
|
215
213
|
- lib/calabash-android/calabash_steps.rb
|
216
214
|
- lib/calabash-android/canned_steps.md
|
217
215
|
- lib/calabash-android/color_helper.rb
|
@@ -222,7 +220,6 @@ files:
|
|
222
220
|
- lib/calabash-android/environment_helpers.rb
|
223
221
|
- lib/calabash-android/gestures.rb
|
224
222
|
- lib/calabash-android/helpers.rb
|
225
|
-
- lib/calabash-android/intent_hook.rb
|
226
223
|
- lib/calabash-android/java_keystore.rb
|
227
224
|
- lib/calabash-android/lib/AXMLPrinter2.jar
|
228
225
|
- lib/calabash-android/lib/manifest_extractor.jar
|
@@ -269,9 +266,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
269
266
|
version: '0'
|
270
267
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
271
268
|
requirements:
|
272
|
-
- - '
|
269
|
+
- - '>='
|
273
270
|
- !ruby/object:Gem::Version
|
274
|
-
version:
|
271
|
+
version: '0'
|
275
272
|
requirements: []
|
276
273
|
rubyforge_project:
|
277
274
|
rubygems_version: 2.0.2
|
@@ -1,23 +0,0 @@
|
|
1
|
-
module Calabash
|
2
|
-
module Android
|
3
|
-
class AndroidComponent
|
4
|
-
attr_reader :package_name, :class_name
|
5
|
-
|
6
|
-
def initialize(package_name, class_name)
|
7
|
-
@package_name = package_name
|
8
|
-
@class_name = class_name
|
9
|
-
end
|
10
|
-
|
11
|
-
def self.from_json(json)
|
12
|
-
self.new(json['packageName'], json['className'])
|
13
|
-
end
|
14
|
-
|
15
|
-
def to_json(*a)
|
16
|
-
{
|
17
|
-
'className' => class_name,
|
18
|
-
'packageName' => package_name
|
19
|
-
}.to_json
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,60 +0,0 @@
|
|
1
|
-
module Calabash
|
2
|
-
module Android
|
3
|
-
class AndroidIntent
|
4
|
-
attr_reader :action, :data, :flags, :package, :type, :component, :extras
|
5
|
-
attr_reader :clip_data, :intent_index
|
6
|
-
|
7
|
-
def self.with_action(action)
|
8
|
-
android_intent = AndroidIntent.new
|
9
|
-
|
10
|
-
android_intent.instance_eval do
|
11
|
-
@action = action
|
12
|
-
end
|
13
|
-
|
14
|
-
android_intent
|
15
|
-
end
|
16
|
-
|
17
|
-
def self.from_json(json)
|
18
|
-
android_intent = AndroidIntent.new
|
19
|
-
|
20
|
-
intent_json = json['intent']
|
21
|
-
index = json['index']
|
22
|
-
|
23
|
-
android_intent.instance_eval do
|
24
|
-
unless intent_json.nil?
|
25
|
-
@action = intent_json['action']
|
26
|
-
@data = intent_json['data'] && URI.parse(intent_json['data'])
|
27
|
-
@flags = intent_json['flags']
|
28
|
-
@package = intent_json['package']
|
29
|
-
@type = intent_json['type']
|
30
|
-
@component =
|
31
|
-
intent_json['component'] && AndroidComponent.from_json(intent_json['component'])
|
32
|
-
@clip_data = intent_json['clipData']
|
33
|
-
|
34
|
-
@extras = intent_json['extras']
|
35
|
-
end
|
36
|
-
|
37
|
-
@intent_index = index
|
38
|
-
end
|
39
|
-
|
40
|
-
android_intent
|
41
|
-
end
|
42
|
-
|
43
|
-
def to_json(*a)
|
44
|
-
{
|
45
|
-
'index' => intent_index,
|
46
|
-
'intent' => {
|
47
|
-
'action' => action,
|
48
|
-
'data' => data,
|
49
|
-
'flags' => flags,
|
50
|
-
'package' => package,
|
51
|
-
'type' => type,
|
52
|
-
'component' => component,
|
53
|
-
'clipData' => clip_data,
|
54
|
-
'extras' => extras
|
55
|
-
}
|
56
|
-
}.to_json
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
@@ -1,106 +0,0 @@
|
|
1
|
-
module Calabash
|
2
|
-
module Android
|
3
|
-
class IntentHook
|
4
|
-
USAGE_COUNT_INFINITE = -1
|
5
|
-
|
6
|
-
attr_reader :reaction, :filter, :usage_count
|
7
|
-
|
8
|
-
def initialize(reaction, filter, usage_count=USAGE_COUNT_INFINITE)
|
9
|
-
@reaction = reaction
|
10
|
-
@filter = filter
|
11
|
-
@usage_count = usage_count.to_i
|
12
|
-
end
|
13
|
-
|
14
|
-
def to_json(*a)
|
15
|
-
{
|
16
|
-
'usageCount' => usage_count,
|
17
|
-
'type' => reaction.type.to_s,
|
18
|
-
'data' => reaction.data_as_hash,
|
19
|
-
'intentFilterData' => filter
|
20
|
-
}.to_json
|
21
|
-
end
|
22
|
-
|
23
|
-
class Filter
|
24
|
-
attr_reader :intent
|
25
|
-
|
26
|
-
def initialize(intent)
|
27
|
-
@intent = intent
|
28
|
-
end
|
29
|
-
|
30
|
-
def to_json(*a)
|
31
|
-
{
|
32
|
-
'action' => intent.action,
|
33
|
-
'component' => intent.component
|
34
|
-
}.to_json
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
class Reaction
|
39
|
-
attr_reader :type, :data
|
40
|
-
|
41
|
-
def data_as_hash
|
42
|
-
@data_hash_method.call
|
43
|
-
end
|
44
|
-
|
45
|
-
def self.do_nothing
|
46
|
-
reaction = Reaction.new
|
47
|
-
|
48
|
-
reaction.instance_eval do
|
49
|
-
@type = :'do-nothing'
|
50
|
-
end
|
51
|
-
|
52
|
-
reaction
|
53
|
-
end
|
54
|
-
|
55
|
-
def self.take_picture(path_on_device)
|
56
|
-
reaction = Reaction.new
|
57
|
-
data = {image_file: path_on_device}
|
58
|
-
|
59
|
-
reaction.instance_eval do
|
60
|
-
@type = :'take-picture'
|
61
|
-
@data = data
|
62
|
-
@data_hash_method = lambda do
|
63
|
-
{
|
64
|
-
'imageFile' => @data[:image_file],
|
65
|
-
}
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
reaction
|
70
|
-
end
|
71
|
-
|
72
|
-
def self.instrumentation(data)
|
73
|
-
param_data = data.dup
|
74
|
-
|
75
|
-
if param_data[:test_server_port].nil? ||
|
76
|
-
param_data[:target_package].nil?
|
77
|
-
raise 'Must provide :test_server_port and :target_package'
|
78
|
-
end
|
79
|
-
|
80
|
-
param_data[:class] ||= 'sh.calaba.instrumentationbackend.InstrumentationBackend'
|
81
|
-
|
82
|
-
param_data[:component] ||=
|
83
|
-
AndroidComponent.new("#{param_data[:target_package]}.test",
|
84
|
-
'sh.calaba.instrumentationbackend.CalabashInstrumentationTestRunner')
|
85
|
-
|
86
|
-
reaction = Reaction.new
|
87
|
-
|
88
|
-
reaction.instance_eval do
|
89
|
-
@type = :instrumentation
|
90
|
-
@data = param_data
|
91
|
-
@data_hash_method = lambda do
|
92
|
-
{
|
93
|
-
'testServerPort' => @data[:test_server_port],
|
94
|
-
'targetPackage' => @data[:target_package],
|
95
|
-
'class' => @data[:class],
|
96
|
-
'mainActivity' => @data[:main_activity],
|
97
|
-
}
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
reaction
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|