ruboto 1.0.3 → 1.1.0
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 +4 -4
- data/Gemfile.lock +2 -2
- data/README.md +1 -0
- data/RELEASE_CANDICATE_DOC.md +21 -8
- data/RELEASE_DOC.md +71 -27
- data/Rakefile +27 -25
- data/assets/rakelib/ruboto.rake +137 -21
- data/assets/rakelib/{stdlib.rake → ruboto.stdlib.rake} +80 -29
- data/assets/rakelib/{stdlib_dependencies.rb → ruboto.stdlib.rb} +18 -24
- data/assets/rakelib/{stdlib.yml → ruboto.stdlib.yml} +0 -0
- data/assets/ruboto.yml +28 -18
- data/assets/src/org/ruboto/DexDex.java +329 -0
- data/assets/src/org/ruboto/FrameworkHack.java +177 -0
- data/assets/src/org/ruboto/JRubyAdapter.java +28 -4
- data/assets/src/org/ruboto/ScriptLoader.java +1 -1
- data/assets/src/org/ruboto/SplashActivity.java +1 -2
- data/assets/src/ruboto/activity/reload.rb +1 -0
- data/assets/src/ruboto/activity.rb +11 -5
- data/assets/src/ruboto/util/toast.rb +2 -2
- data/lib/ruboto/commands/base.rb +85 -37
- data/lib/ruboto/util/emulator.rb +32 -14
- data/lib/ruboto/util/setup.rb +34 -12
- data/lib/ruboto/util/update.rb +70 -40
- data/lib/ruboto/version.rb +1 -1
- data/test/activity/navigation_activity_test.rb +2 -0
- data/test/activity/ssl_activity.rb +26 -9
- data/test/activity/ssl_activity_test.rb +14 -6
- data/test/app_test_methods.rb +8 -3
- data/test/ruboto_gen_test.rb +13 -7
- data/test/ruboto_setup_test.rb +21 -0
- data/test/ruboto_update_test.rb +26 -28
- data/test/test_helper.rb +25 -21
- metadata +10 -7
data/lib/ruboto/util/update.rb
CHANGED
@@ -10,33 +10,46 @@ module Ruboto
|
|
10
10
|
include Ruboto::SdkVersions
|
11
11
|
include Ruboto::SdkLocations
|
12
12
|
|
13
|
+
TARGET_VERSION_REGEXP = /^(target=android-)(\d+)$/
|
14
|
+
|
13
15
|
###########################################################################
|
14
16
|
#
|
15
17
|
# Updating components
|
16
18
|
#
|
17
|
-
|
19
|
+
|
20
|
+
def update_android(target_level = nil)
|
18
21
|
root = Dir.getwd
|
19
22
|
build_xml_file = "#{root}/build.xml"
|
20
23
|
if File.exists? build_xml_file
|
21
|
-
|
24
|
+
ant_script = File.read(build_xml_file)
|
25
|
+
name = REXML::Document.new(ant_script).root.attributes['name']
|
22
26
|
else
|
23
27
|
name = File.basename(root)
|
24
28
|
end
|
29
|
+
update_project_properties_target_level("#{root}/project.properties", target_level)
|
30
|
+
system "android update project -p #{root} -n #{name} --subprojects"
|
31
|
+
raise "android update project failed with return code #{$?}" unless $? == 0
|
32
|
+
end
|
25
33
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
if
|
30
|
-
|
31
|
-
|
34
|
+
def update_project_properties_target_level(prop_file, target_level)
|
35
|
+
if (project_property_file = File.read(prop_file)) =~ TARGET_VERSION_REGEXP
|
36
|
+
min_sdk = $2.to_i
|
37
|
+
if target_level
|
38
|
+
unless target_level == min_sdk
|
39
|
+
puts "Changing project target from #{min_sdk} to #{MINIMUM_SUPPORTED_SDK_LEVEL}."
|
40
|
+
new_target_level = target_level
|
41
|
+
end
|
42
|
+
elsif min_sdk < MINIMUM_SUPPORTED_SDK_LEVEL
|
43
|
+
puts "Upgrading project target from #{min_sdk} to #{MINIMUM_SUPPORTED_SDK_LEVEL}."
|
44
|
+
new_target_level = MINIMUM_SUPPORTED_SDK_LEVEL
|
45
|
+
end
|
46
|
+
if new_target_level
|
47
|
+
File.open(prop_file, 'w') { |f| f << project_property_file.gsub(TARGET_VERSION_REGEXP, "\\1#{new_target_level}") }
|
32
48
|
end
|
33
49
|
end
|
34
|
-
|
35
|
-
system "android update project -p #{root} -n #{name} --subprojects"
|
36
|
-
raise "android update project failed with return code #{$?}" unless $? == 0
|
37
50
|
end
|
38
51
|
|
39
|
-
def update_test(force = nil)
|
52
|
+
def update_test(force, target_level = nil)
|
40
53
|
root = Dir.getwd
|
41
54
|
if !File.exists?("#{root}/test") || !File.exists?("#{root}/test/AndroidManifest.xml") || !File.exists?("#{root}/test/ant.properties")
|
42
55
|
name = verify_strings.root.elements['string'].text.gsub(' ', '')
|
@@ -47,6 +60,7 @@ module Ruboto
|
|
47
60
|
end
|
48
61
|
|
49
62
|
Dir.chdir File.join(root, 'test') do
|
63
|
+
update_project_properties_target_level('project.properties', target_level)
|
50
64
|
instrumentation_property = "test.runner=org.ruboto.test.InstrumentationTestRunner\n"
|
51
65
|
prop_file = 'ant.properties'
|
52
66
|
prop_lines = (prop_lines_org = File.read(prop_file)).dup
|
@@ -132,21 +146,21 @@ module Ruboto
|
|
132
146
|
end
|
133
147
|
end
|
134
148
|
|
135
|
-
def update_jruby(force
|
149
|
+
def update_jruby(force, version, explicit = false)
|
136
150
|
installed_jruby_core = Dir.glob('libs/jruby-core-*.jar')[0]
|
137
151
|
installed_jruby_stdlib = Dir.glob('libs/jruby-stdlib-*.jar')[0]
|
138
152
|
|
139
|
-
unless force
|
140
|
-
|
141
|
-
|
142
|
-
return false
|
143
|
-
end
|
153
|
+
unless force || (installed_jruby_core && installed_jruby_stdlib)
|
154
|
+
puts "Cannot find existing jruby jars in libs. Make sure you're in the root directory of your app." if explicit
|
155
|
+
return false
|
144
156
|
end
|
145
157
|
|
146
|
-
install_jruby_jars_gem
|
158
|
+
install_jruby_jars_gem(version)
|
147
159
|
begin
|
160
|
+
gem('jruby-jars', version) if version
|
148
161
|
require 'jruby-jars'
|
149
162
|
rescue LoadError
|
163
|
+
puts $!
|
150
164
|
puts "Could not find the jruby-jars gem. You need it to include JRuby in your app. Please install it using\n\n gem install jruby-jars\n\n"
|
151
165
|
return false
|
152
166
|
end
|
@@ -167,7 +181,6 @@ module Ruboto
|
|
167
181
|
log_action("Removing #{installed_jruby_core}") { File.delete *Dir.glob('libs/jruby-core-*.jar') } if installed_jruby_core
|
168
182
|
log_action("Removing #{installed_jruby_stdlib}") { File.delete *Dir.glob('libs/jruby-stdlib-*.jar') } if installed_jruby_stdlib
|
169
183
|
log_action("Copying #{JRubyJars::core_jar_path} to libs") { FileUtils.cp JRubyJars::core_jar_path, "libs/jruby-core-#{new_jruby_version}.jar" }
|
170
|
-
log_action("Copying #{JRubyJars::stdlib_jar_path} to libs") { FileUtils.cp JRubyJars::stdlib_jar_path, "libs/jruby-stdlib-#{new_jruby_version}.jar" }
|
171
184
|
|
172
185
|
unless File.read('project.properties') =~ /^dex.force.jumbo=/
|
173
186
|
log_action('Setting JUMBO dex file format') do
|
@@ -185,14 +198,14 @@ module Ruboto
|
|
185
198
|
true
|
186
199
|
end
|
187
200
|
|
188
|
-
def install_jruby_jars_gem
|
189
|
-
if
|
190
|
-
version_requirement = " -v #{
|
201
|
+
def install_jruby_jars_gem(jruby_jars_version = ENV['JRUBY_JARS_VERSION'])
|
202
|
+
if jruby_jars_version
|
203
|
+
version_requirement = " -v #{jruby_jars_version}"
|
191
204
|
end
|
192
205
|
`gem query -i -n jruby-jars#{version_requirement}`
|
193
206
|
unless $? == 0
|
194
207
|
local_gem_dir = ENV['LOCAL_GEM_DIR'] || Dir.getwd
|
195
|
-
local_gem_file = "#{local_gem_dir}/jruby-jars-#{
|
208
|
+
local_gem_file = "#{local_gem_dir}/jruby-jars-#{jruby_jars_version}.gem"
|
196
209
|
if File.exists?(local_gem_file)
|
197
210
|
system "gem install -l #{local_gem_file} --no-ri --no-rdoc"
|
198
211
|
else
|
@@ -200,14 +213,6 @@ module Ruboto
|
|
200
213
|
end
|
201
214
|
end
|
202
215
|
raise "install of jruby-jars failed with return code #$?" unless $? == 0
|
203
|
-
if jars_version_from_env
|
204
|
-
exclusion_clause = %Q{-v "!=#{jars_version_from_env}"}
|
205
|
-
`gem query -i -n jruby-jars #{exclusion_clause}`
|
206
|
-
if $? == 0
|
207
|
-
system %Q{gem uninstall jruby-jars --all #{exclusion_clause}}
|
208
|
-
raise "Uninstall of jruby-jars failed with return code #$?" unless $? == 0
|
209
|
-
end
|
210
|
-
end
|
211
216
|
Gem.refresh
|
212
217
|
end
|
213
218
|
|
@@ -234,6 +239,12 @@ module Ruboto
|
|
234
239
|
weak_copier = Ruboto::Util::AssetCopier.new Ruboto::ASSETS, '.', false
|
235
240
|
%w{.gitignore Rakefile ruboto.yml}.each { |f| log_action(f) { weak_copier.copy f } }
|
236
241
|
|
242
|
+
# FIXME(uwe): Only present in Ruboto 1.0.3. Remove when we stop supporting updating from Ruboto 1.0.3
|
243
|
+
FileUtils.mv('rakelib/stdlib.rake', 'rakelib/ruboto.stdlib.rake') if File.exists?('rakelib/stdlib.rake')
|
244
|
+
FileUtils.mv('rakelib/stdlib.yml', 'rakelib/ruboto.stdlib.yml') if File.exists?('rakelib/stdlib.yml')
|
245
|
+
FileUtils.mv('rakelib/stdlib_dependencies.rb', 'ruboto.stdlib.rb') if File.exists?('rakelib/stdlib_dependencies.rb')
|
246
|
+
# EMXIF
|
247
|
+
|
237
248
|
copier = Ruboto::Util::AssetCopier.new Ruboto::ASSETS, '.'
|
238
249
|
%w{assets rakelib res/layout test}.each do |f|
|
239
250
|
log_action(f) { copier.copy f }
|
@@ -324,10 +335,12 @@ module Ruboto
|
|
324
335
|
app_element = verify_manifest.elements['application']
|
325
336
|
app_element.attributes['android:icon'] ||= '@drawable/ic_launcher'
|
326
337
|
|
338
|
+
# FIXME(uwe): Simplify when we stop supporting Android 2.3.x
|
327
339
|
if min_sdk.to_i >= 11
|
328
340
|
app_element.attributes['android:hardwareAccelerated'] ||= 'true'
|
329
341
|
app_element.attributes['android:largeHeap'] ||= 'true'
|
330
342
|
end
|
343
|
+
# EMXIF
|
331
344
|
|
332
345
|
unless app_element.elements["activity[@android:name='org.ruboto.RubotoActivity']"]
|
333
346
|
app_element.add_element 'activity', {'android:name' => 'org.ruboto.RubotoActivity', 'android:exported' => 'false'}
|
@@ -360,7 +373,7 @@ module Ruboto
|
|
360
373
|
if File.exists?('ruboto.yml')
|
361
374
|
sleep 1
|
362
375
|
FileUtils.touch 'ruboto.yml'
|
363
|
-
system 'rake jruby_adapter'
|
376
|
+
system 'rake build_xml jruby_adapter'
|
364
377
|
end
|
365
378
|
end
|
366
379
|
|
@@ -397,14 +410,15 @@ module Ruboto
|
|
397
410
|
end
|
398
411
|
end
|
399
412
|
|
400
|
-
def reconfigure_jruby_libs(
|
401
|
-
reconfigure_jruby_core(
|
402
|
-
reconfigure_jruby_stdlib
|
413
|
+
def reconfigure_jruby_libs(jruby_version)
|
414
|
+
reconfigure_jruby_core(jruby_version)
|
415
|
+
reconfigure_jruby_stdlib(jruby_version)
|
403
416
|
reconfigure_dx_jar
|
404
417
|
end
|
405
418
|
|
406
419
|
# - Removes unneeded code from jruby-core
|
407
420
|
# - Split into smaller jars that can be used separately
|
421
|
+
# FIXME(uwe): Refactor to take a Gem::Version as the parameter.
|
408
422
|
def reconfigure_jruby_core(jruby_core_version)
|
409
423
|
Dir.chdir 'libs' do
|
410
424
|
jruby_core = Dir['jruby-core-*.jar'][-1]
|
@@ -416,7 +430,7 @@ module Ruboto
|
|
416
430
|
`jar -xf #{jruby_core}`
|
417
431
|
raise "Unpacking jruby-core jar failed: #$?" unless $? == 0
|
418
432
|
File.delete jruby_core
|
419
|
-
gem_version = Gem::Version.new(jruby_core_version.tr('-', '.'))
|
433
|
+
gem_version = Gem::Version.new(jruby_core_version.to_s.tr('-', '.'))
|
420
434
|
if gem_version >= Gem::Version.new('9000.dev')
|
421
435
|
#noinspection RubyLiteralArrayInspection
|
422
436
|
excluded_core_packages = [
|
@@ -432,12 +446,14 @@ module Ruboto
|
|
432
446
|
'com/kenai/jffi',
|
433
447
|
'com/kenai/jnr/x86asm',
|
434
448
|
'com/martiansoftware',
|
449
|
+
'com/oracle/truffle',
|
435
450
|
'jni',
|
436
451
|
'jnr/constants/platform/darwin',
|
437
452
|
'jnr/constants/platform/fake',
|
438
453
|
'jnr/constants/platform/freebsd',
|
439
454
|
'jnr/constants/platform/openbsd',
|
440
455
|
'jnr/constants/platform/sunos',
|
456
|
+
'jnr/enxio',
|
441
457
|
'jnr/ffi/annotations',
|
442
458
|
'jnr/ffi/byref',
|
443
459
|
'jnr/ffi/mapper',
|
@@ -445,6 +461,7 @@ module Ruboto
|
|
445
461
|
'jnr/ffi/util',
|
446
462
|
'jnr/ffi/Struct$*',
|
447
463
|
'jnr/ffi/types',
|
464
|
+
# 'jnr/netdb',
|
448
465
|
'jnr/posix/Aix*',
|
449
466
|
'jnr/posix/FreeBSD*',
|
450
467
|
'jnr/posix/MacOS*',
|
@@ -459,6 +476,7 @@ module Ruboto
|
|
459
476
|
'org/jruby/embed/bsf',
|
460
477
|
'org/jruby/embed/jsr223',
|
461
478
|
'org/jruby/embed/osgi',
|
479
|
+
'org/jruby/ext/ffi/Enums*',
|
462
480
|
# 'org/jruby/ext/tracepoint',
|
463
481
|
'org/jruby/javasupport/bsf',
|
464
482
|
# 'org/jruby/management', # should be excluded
|
@@ -467,18 +485,24 @@ module Ruboto
|
|
467
485
|
# 'org/jruby/runtime/opto/OptoFactory*', # What is this?
|
468
486
|
'org/jruby/truffle',
|
469
487
|
'org/yecht',
|
488
|
+
'yaml.rb', # This looks like 1.8 stdlib...
|
470
489
|
]
|
471
490
|
elsif gem_version >= Gem::Version.new('1.7.12')
|
472
|
-
excluded_core_packages = %w(**/*Darwin* **/*Solaris* **/*windows* **/*Windows* META-INF com/kenai/constantine com/kenai/jffi com/kenai/jnr/x86asm com/martiansoftware jni jnr/constants/platform/darwin jnr/constants/platform/fake jnr/constants/platform/freebsd jnr/constants/platform/openbsd jnr/constants/platform/sunos jnr/ffi/annotations jnr/ffi/byref jnr/ffi/mapper jnr/ffi/provider jnr/ffi/util jnr/ffi/Struct$* jnr/ffi/types jnr/posix/Aix* jnr/posix/FreeBSD* jnr/posix/MacOS* jnr/posix/OpenBSD* jnr/x86asm org/jruby/ant org/jruby/cext org/jruby/compiler/impl/BaseBodyCompiler* org/jruby/compiler/util org/jruby/demo org/jruby/embed/bsf org/jruby/embed/jsr223 org/jruby/embed/osgi org/jruby/ext/ffi/AbstractMemory* org/jruby/ext/ffi/io org/jruby/ext/ffi/jffi org/jruby/ext/tracepoint org/jruby/javasupport/bsf org/yecht)
|
491
|
+
excluded_core_packages = %w(**/*Darwin* **/*Solaris* **/*windows* **/*Windows* META-INF com/headius/invokebinder com/headius/options/example com/kenai/constantine com/kenai/jffi com/kenai/jnr/x86asm com/martiansoftware jni jnr/constants/platform/darwin jnr/constants/platform/fake jnr/constants/platform/freebsd jnr/constants/platform/openbsd jnr/constants/platform/sunos jnr/enxio jnr/ffi/annotations jnr/ffi/byref jnr/ffi/mapper jnr/ffi/provider jnr/ffi/util jnr/ffi/Struct$* jnr/ffi/types jnr/posix/Aix* jnr/posix/FreeBSD* jnr/posix/MacOS* jnr/posix/OpenBSD* jnr/x86asm org/jruby/ant org/jruby/cext org/jruby/compiler/impl/BaseBodyCompiler* org/jruby/compiler/util org/jruby/demo org/jruby/embed/bsf org/jruby/embed/jsr223 org/jruby/embed/osgi org/jruby/ext/ffi/AbstractMemory* org/jruby/ext/ffi/Enums* org/jruby/ext/ffi/io org/jruby/ext/ffi/jffi org/jruby/ext/tracepoint org/jruby/javasupport/bsf org/yecht yaml.rb)
|
473
492
|
elsif gem_version >= Gem::Version.new('1.7.5')
|
493
|
+
# TODO(uwe): Remove when we stop supporting jruby-jars 1.7.5
|
474
494
|
excluded_core_packages = %w(**/*Darwin* **/*Solaris* **/*windows* **/*Windows* META-INF com/headius com/kenai/constantine com/kenai/jffi com/kenai/jnr/x86asm com/martiansoftware jni jnr/constants/platform/darwin jnr/constants/platform/fake jnr/constants/platform/freebsd jnr/constants/platform/openbsd jnr/constants/platform/sunos jnr/ffi/annotations jnr/ffi/byref jnr/ffi/mapper jnr/ffi/provider jnr/ffi/util jnr/ffi/Struct$* jnr/ffi/types jnr/posix/Aix* jnr/posix/FreeBSD* jnr/posix/MacOS* jnr/posix/OpenBSD* jnr/x86asm org/jruby/ant org/jruby/cext org/jruby/compiler/impl/BaseBodyCompiler* org/jruby/compiler/util org/jruby/demo org/jruby/embed/bsf org/jruby/embed/jsr223 org/jruby/embed/osgi org/jruby/ext/ffi/AbstractMemory* org/jruby/ext/ffi/io org/jruby/ext/ffi/jffi org/jruby/ext/tracepoint org/jruby/javasupport/bsf org/yecht)
|
475
495
|
elsif gem_version >= Gem::Version.new('1.7.4')
|
496
|
+
# TODO(uwe): Remove when we stop supporting jruby-jars 1.7.4
|
476
497
|
excluded_core_packages = %w(**/*Darwin* **/*Solaris* **/*windows* **/*Windows* META-INF com/headius com/kenai/constantine com/kenai/jffi com/kenai/jnr/x86asm com/martiansoftware jline jni jnr/constants/platform/darwin jnr/constants/platform/fake jnr/constants/platform/freebsd jnr/constants/platform/openbsd jnr/constants/platform/sunos jnr/ffi/annotations jnr/ffi/byref jnr/ffi/mapper jnr/ffi/provider jnr/ffi/util jnr/ffi/Struct$* jnr/ffi/types jnr/posix/Aix* jnr/posix/FreeBSD* jnr/posix/MacOS* jnr/posix/OpenBSD* jnr/x86asm org/apache org/fusesource org/jruby/ant org/jruby/cext org/jruby/compiler/impl/BaseBodyCompiler* org/jruby/compiler/util org/jruby/demo org/jruby/embed/bsf org/jruby/embed/jsr223 org/jruby/embed/osgi org/jruby/ext/ffi/AbstractMemory* org/jruby/ext/ffi/io org/jruby/ext/ffi/jffi org/jruby/ext/ripper org/jruby/ext/tracepoint org/jruby/javasupport/bsf org/yecht)
|
477
498
|
elsif gem_version >= Gem::Version.new('1.7.3')
|
499
|
+
# TODO(uwe): Remove when we stop supporting jruby-jars 1.7.3
|
478
500
|
excluded_core_packages = %w(**/*Darwin* **/*Solaris* **/*windows* **/*Windows* META-INF com/headius com/kenai/constantine com/kenai/jffi com/kenai/jnr/x86asm com/martiansoftware jline jni jnr/constants/platform/darwin jnr/constants/platform/fake jnr/constants/platform/freebsd jnr/constants/platform/openbsd jnr/constants/platform/sunos jnr/ffi/annotations jnr/ffi/byref jnr/ffi/provider jnr/ffi/util jnr/ffi/Struct$* jnr/ffi/types jnr/posix/FreeBSD* jnr/posix/MacOS* jnr/posix/OpenBSD* jnr/x86asm org/apache org/fusesource org/jruby/ant org/jruby/cext org/jruby/compiler/impl/BaseBodyCompiler* org/jruby/compiler/util org/jruby/demo org/jruby/embed/bsf org/jruby/embed/jsr223 org/jruby/embed/osgi org/jruby/ext/ffi/AbstractMemory* org/jruby/ext/ffi/io org/jruby/ext/ffi/jffi org/jruby/javasupport/bsf org/yecht)
|
479
501
|
elsif gem_version >= Gem::Version.new('1.7.2')
|
502
|
+
# TODO(uwe): Remove when we stop supporting jruby-jars 1.7.2
|
480
503
|
excluded_core_packages = %w(**/*Darwin* **/*Ruby20* **/*Solaris* **/*windows* **/*Windows* META-INF com/headius com/kenai/constantine com/kenai/jffi com/martiansoftware jline jni jnr/constants/platform/darwin jnr/constants/platform/fake jnr/constants/platform/freebsd jnr/constants/platform/openbsd jnr/constants/platform/sunos jnr/ffi/annotations jnr/ffi/byref jnr/ffi/provider jnr/ffi/util jnr/ffi/Struct$* jnr/ffi/types jnr/posix/MacOS* jnr/posix/OpenBSD* org/apache org/fusesource org/jruby/ant org/jruby/cext org/jruby/compiler/util org/jruby/demo org/jruby/embed/bsf org/jruby/embed/jsr223 org/jruby/embed/osgi org/jruby/ext/ffi/io org/jruby/ext/ffi/jffi org/jruby/javasupport/bsf)
|
481
504
|
elsif gem_version >= Gem::Version.new('1.7.1')
|
505
|
+
# TODO(uwe): Remove when we stop supporting jruby-jars 1.7.1
|
482
506
|
excluded_core_packages = %w(**/*Darwin* **/*Ruby20* **/*Solaris* **/*windows* **/*Windows* META-INF com/headius com/kenai/constantine com/kenai/jffi com/martiansoftware jline jni jnr/constants/platform/darwin jnr/constants/platform/fake jnr/constants/platform/freebsd jnr/constants/platform/openbsd jnr/constants/platform/sunos jnr/ffi/annotations jnr/ffi/byref jnr/ffi/provider jnr/ffi/util jnr/ffi/Struct$* jnr/ffi/types jnr/posix/MacOS* jnr/posix/OpenBSD* org/apache org/fusesource org/jruby/ant org/jruby/cext org/jruby/compiler/util org/jruby/demo org/jruby/embed/bsf org/jruby/embed/jsr223 org/jruby/embed/osgi org/jruby/ext/ffi/io org/jruby/ext/ffi/jffi org/jruby/ext/openssl org/jruby/javasupport/bsf org/jruby/org/bouncycastle)
|
483
507
|
elsif gem_version >= Gem::Version.new('1.7.0')
|
484
508
|
# TODO(uwe): Remove when we stop supporting jruby-jars 1.7.0
|
@@ -545,8 +569,14 @@ module Ruboto
|
|
545
569
|
end
|
546
570
|
|
547
571
|
# - Moves ruby stdlib to the root of the jruby-stdlib jar
|
548
|
-
def reconfigure_jruby_stdlib
|
549
|
-
|
572
|
+
def reconfigure_jruby_stdlib(jruby_version)
|
573
|
+
# FIXME(uwe): Introduced in Ruboto 1.0.3. Remove when we stop supporting upgrading from Ruboto 1.0.3.
|
574
|
+
unless File.exists?('rakelib/ruboto.stdlib.rake') || File.exists?('rakelib/stdlib.rake')
|
575
|
+
abort 'cannot find rakelib/ruboto.stdlib.rake; make sure you update your app (ruboto update app)'
|
576
|
+
end
|
577
|
+
# EMXIF
|
578
|
+
|
579
|
+
ENV['JRUBY_JARS_VERSION'] = jruby_version
|
550
580
|
system 'rake libs:reconfigure_stdlib'
|
551
581
|
end
|
552
582
|
|
data/lib/ruboto/version.rb
CHANGED
@@ -87,7 +87,9 @@ def start_activity_by_button(activity, button_id, activity_class_name = 'org.rub
|
|
87
87
|
btn.request_focus
|
88
88
|
btn.perform_click
|
89
89
|
end
|
90
|
+
puts 'waitForIdleSync'
|
90
91
|
waitForIdleSync
|
92
|
+
puts 'wait_for_monitor_with_timeout'
|
91
93
|
current_activity = wait_for_monitor_with_timeout(monitor, 10000)
|
92
94
|
ensure
|
93
95
|
removeMonitor(monitor)
|
@@ -8,24 +8,41 @@ class SslActivity
|
|
8
8
|
super
|
9
9
|
puts 'start thread'
|
10
10
|
@thread = Thread.with_large_stack { require 'net/https' }
|
11
|
+
@open_uri_thread = Thread.with_large_stack { require 'open-uri' }
|
11
12
|
puts 'thread started'
|
12
13
|
set_title File.basename(__FILE__).chomp('_activity.rb').split('_').map { |s| "#{s[0..0].upcase}#{s[1..-1]}" }.join(' ')
|
13
14
|
self.content_view =
|
14
15
|
linear_layout :orientation => LinearLayout::VERTICAL, :gravity => android.view.Gravity::CENTER do
|
15
|
-
@text_view = text_view :
|
16
|
-
|
16
|
+
@text_view = text_view text: 'net/https loading...',
|
17
|
+
text_size: 48.0, gravity: :center, id: 42
|
18
|
+
@response_view = text_view text: 'net/https loading...',
|
19
|
+
text_size: 48.0, gravity: :center, id: 43
|
17
20
|
end
|
18
21
|
end
|
19
22
|
|
20
23
|
def onResume
|
21
24
|
super
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
25
|
+
Thread.with_large_stack do
|
26
|
+
begin
|
27
|
+
@thread.join
|
28
|
+
run_on_ui_thread { @text_view.text = 'net/https loaded OK!' }
|
29
|
+
@open_uri_thread.join
|
30
|
+
run_on_ui_thread { @response_view.text = 'open-uri loaded OK!' }
|
31
|
+
puts 'before open'
|
32
|
+
ENV['TMPDIR'] = files_dir.absolute_path
|
33
|
+
open('https://google.com/', ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE) do |f|
|
34
|
+
puts 'inside open'
|
35
|
+
body = f.read
|
36
|
+
puts 'body'
|
37
|
+
puts body
|
38
|
+
heading = body[%r{<title>.*?</title>}]
|
39
|
+
puts heading.inspect
|
40
|
+
run_on_ui_thread { @response_view.text = heading }
|
41
|
+
end
|
42
|
+
rescue Exception
|
43
|
+
puts "Exception resdum: #{$!.class} #{$!.message}"
|
44
|
+
run_on_ui_thread { @response_view.text = $!.to_s }
|
45
|
+
end
|
29
46
|
end
|
30
47
|
end
|
31
48
|
end
|
@@ -4,19 +4,27 @@ setup do |activity|
|
|
4
4
|
start = Time.now
|
5
5
|
loop do
|
6
6
|
@text_view = activity.findViewById(42)
|
7
|
-
|
7
|
+
@response_view = activity.findViewById(43)
|
8
|
+
break if (@text_view && @response_view)|| (Time.now - start > 60)
|
8
9
|
sleep 1
|
9
10
|
end
|
10
|
-
assert @text_view
|
11
|
+
assert @text_view && @response_view
|
11
12
|
end
|
12
13
|
|
13
14
|
test('load net/https', :ui => false) do |activity|
|
14
15
|
start = Time.now
|
15
|
-
expected = 'net/https loaded OK'
|
16
|
+
expected = 'net/https loaded OK!'
|
17
|
+
response_expected = '<title>Google</title>'
|
18
|
+
result = response = nil
|
16
19
|
loop do
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
+
activity.run_on_ui_thread do
|
21
|
+
result = @text_view.text.to_s
|
22
|
+
response = @response_view.text.to_s
|
23
|
+
end
|
24
|
+
break if (result == expected && response == response_expected) ||
|
25
|
+
(Time.now - start > 60)
|
26
|
+
sleep 0.5
|
20
27
|
end
|
21
28
|
assert_equal expected, result
|
29
|
+
assert_equal response_expected, response
|
22
30
|
end
|
data/test/app_test_methods.rb
CHANGED
@@ -16,6 +16,7 @@ module AppTestMethods
|
|
16
16
|
assert_code 'YamlLoads', "require 'yaml'"
|
17
17
|
|
18
18
|
assert_code 'ReadSourceFile', 'File.read(__FILE__)'
|
19
|
+
# noinspection RubyExpressionInStringInspection
|
19
20
|
assert_code 'DirListsFilesInApk', 'Dir["#{File.dirname(__FILE__)}/*"].each{|f| raise "File #{f.inspect} not found" unless File.exists?(f)}'
|
20
21
|
assert_code 'RepeatRubotoImportWidget', 'ruboto_import_widget :TextView ; ruboto_import_widget :TextView'
|
21
22
|
end
|
@@ -37,8 +38,12 @@ module AppTestMethods
|
|
37
38
|
|
38
39
|
def run_activity_tests(activity_dir)
|
39
40
|
Dir[File.expand_path("#{activity_dir}/*", File.dirname(__FILE__))].each do |file|
|
40
|
-
# FIXME(uwe): Remove when we
|
41
|
-
|
41
|
+
# FIXME(uwe): Remove when we stop testing api level < 16
|
42
|
+
# FIXME(uwe): Remove when we release RubotoCore with SSL included
|
43
|
+
next if file =~ /ssl/ && (ANDROID_OS < 16 ||
|
44
|
+
RUBOTO_PLATFORM == 'CURRENT' || RUBOTO_PLATFORM == 'FROM_GEM' ||
|
45
|
+
JRUBY_JARS_VERSION < Gem::Version.new('1.7.13') ||
|
46
|
+
JRUBY_JARS_VERSION < Gem::Version.new('9000')) # FIXME(uwe): JRuby 9K should contain the SSLSocket fix.
|
42
47
|
# EMXIF
|
43
48
|
|
44
49
|
# FIXME(uwe): Remove when we stop testing JRuby < 1.7.4.dev
|
@@ -61,7 +66,7 @@ module AppTestMethods
|
|
61
66
|
end
|
62
67
|
elsif !File.exists? "#{file.chomp('.rb')}'_test.rb'"
|
63
68
|
Dir.chdir APP_DIR do
|
64
|
-
FileUtils.cp file,
|
69
|
+
FileUtils.cp file, 'src/'
|
65
70
|
end
|
66
71
|
end
|
67
72
|
end
|
data/test/ruboto_gen_test.rb
CHANGED
@@ -52,7 +52,9 @@ class RubotoGenTest < Test::Unit::TestCase
|
|
52
52
|
# APK was 59.6KB. PLATFORM: CURRENT, ANDROID_TARGET: 10
|
53
53
|
# APK was 60.2KB. PLATFORM: CURRENT, ANDROID_TARGET: 15
|
54
54
|
# APK was 74.9KB. PLATFORM: CURRENT, ANDROID_TARGET: 16
|
55
|
-
# APK was
|
55
|
+
# APK was 80.4KB. PLATFORM: CURRENT, ANDROID_TARGET: 19
|
56
|
+
# APK was 65.0KB. PLATFORM: FROM_GEM, ANDROID_TARGET: 10
|
57
|
+
# APK was 80.2KB. PLATFORM: FROM_GEM, ANDROID_TARGET: 17
|
56
58
|
# APK was 8428.4KB. PLATFORM: STANDALONE, ANDROID_TARGET: 10, JRuby: 1.7.4
|
57
59
|
# APK was 7405.8KB. PLATFORM: STANDALONE, ANDROID_TARGET: 15, JRuby: 1.7.4
|
58
60
|
# APK was 7420.9KB. PLATFORM: STANDALONE, ANDROID_TARGET: 16, JRuby: 1.7.4
|
@@ -64,10 +66,12 @@ class RubotoGenTest < Test::Unit::TestCase
|
|
64
66
|
# APK was 8791.2KB. PLATFORM: STANDALONE, ANDROID_TARGET: 16, JRuby: 1.7.10
|
65
67
|
# APK was 8575.0KB. PLATFORM: STANDALONE, ANDROID_TARGET: 10, JRuby: 1.7.11
|
66
68
|
# APK was 8793.4KB. PLATFORM: STANDALONE, ANDROID_TARGET: 16, JRuby: 1.7.11
|
67
|
-
# APK was
|
69
|
+
# APK was 9743.3KB. PLATFORM: STANDALONE, ANDROID_TARGET: 16, JRuby: 1.7.12
|
70
|
+
# APK was 9123.8KB. PLATFORM: STANDALONE, ANDROID_TARGET: 19, JRuby: 1.7.12
|
68
71
|
# APK was 6689.5KB. PLATFORM: STANDALONE, ANDROID_TARGET: 10, JRuby: 9000.dev
|
69
72
|
# APK was 7012.2KB. PLATFORM: STANDALONE, ANDROID_TARGET: 16, JRuby: 9000.dev
|
70
|
-
# APK was
|
73
|
+
# APK was 8015.9KB. PLATFORM: STANDALONE, ANDROID_TARGET: 17, JRuby: 9000.dev
|
74
|
+
# APK was 7386.1KB. PLATFORM: STANDALONE, ANDROID_TARGET: 19, JRuby: 9000.dev
|
71
75
|
def test_new_apk_size_is_within_limits
|
72
76
|
apk_size = BigDecimal(File.size("#{APP_DIR}/bin/RubotoTestApp-debug.apk").to_s) / 1024
|
73
77
|
version = " PLATFORM: #{RUBOTO_PLATFORM}"
|
@@ -81,15 +85,17 @@ class RubotoGenTest < Test::Unit::TestCase
|
|
81
85
|
'1.7.9' => 8800.0,
|
82
86
|
'1.7.10' => 8800.0,
|
83
87
|
'1.7.11' => 8800.0,
|
84
|
-
'1.7.12' =>
|
85
|
-
'9000.dev' =>
|
88
|
+
'1.7.12' => 9800.0,
|
89
|
+
'9000.dev' => 8100.0,
|
86
90
|
}[JRUBY_JARS_VERSION.to_s] || 0.0
|
87
91
|
version << ", JRuby: #{JRUBY_JARS_VERSION.to_s}"
|
88
92
|
else
|
89
93
|
upper_limit = {
|
90
|
-
10 =>
|
94
|
+
10 => 66.0,
|
91
95
|
15 => 62.0,
|
92
96
|
16 => 75.0,
|
97
|
+
17 => 81.0,
|
98
|
+
19 => 81.0,
|
93
99
|
}[ANDROID_TARGET] || 75.0
|
94
100
|
end
|
95
101
|
lower_limit = upper_limit * 0.7
|
@@ -274,7 +280,7 @@ EOF
|
|
274
280
|
if RUBOTO_PLATFORM == 'FROM_GEM'
|
275
281
|
def test_gen_jruby
|
276
282
|
Dir.chdir APP_DIR do
|
277
|
-
system "#{RUBOTO_CMD} gen jruby"
|
283
|
+
system "#{RUBOTO_CMD} gen jruby #{JRUBY_JARS_VERSION}"
|
278
284
|
assert_equal 0, $?.exitstatus
|
279
285
|
assert_equal %W(libs/jruby-core-#{JRUBY_JARS_VERSION.to_s.downcase}.jar), Dir['libs/jruby-core-*.jar'].map(&:downcase)
|
280
286
|
assert_equal %W(libs/jruby-stdlib-#{JRUBY_JARS_VERSION.to_s.downcase}.jar), Dir['libs/jruby-stdlib-*.jar'].map(&:downcase)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require File.expand_path('test_helper', File.dirname(__FILE__))
|
2
|
+
require 'net/http'
|
3
|
+
|
4
|
+
class SetupTest < Test::Unit::TestCase
|
5
|
+
SDK_DOWNLOAD_PAGE = 'http://developer.android.com/sdk/index.html?hl=sk'
|
6
|
+
|
7
|
+
def test_if_page_still_exists
|
8
|
+
uri = URI.parse(SDK_DOWNLOAD_PAGE)
|
9
|
+
res = Net::HTTP.get_response(uri)
|
10
|
+
|
11
|
+
assert_equal 200, res.code.to_i
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_if_regex_still_applies_to_sdk
|
15
|
+
regex = '(\>installer_.*.exe)'
|
16
|
+
page_content = Net::HTTP.get(URI.parse(SDK_DOWNLOAD_PAGE))
|
17
|
+
link = page_content.scan(/#{regex}/).to_s
|
18
|
+
assert_match /(\d+).(\d+).(\d+)/, link
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
data/test/ruboto_update_test.rb
CHANGED
@@ -13,36 +13,34 @@ Dir.chdir "#{RubotoTest::PROJECT_DIR}/examples/" do
|
|
13
13
|
example_archives = Dir["#{RubotoTest::APP_NAME}_*_tools_r*.tgz"]
|
14
14
|
example_archives = example_archives.sort_by { |a| Gem::Version.new(a[RubotoTest::APP_NAME.size + 1..-1].slice(/(.*)(?=_tools_)/).gsub('_', '.')) }
|
15
15
|
example_archives = example_archives.last(example_limit) if example_limit
|
16
|
-
|
17
|
-
# TODO(gf): Track APIs compatible with update examples
|
18
|
-
EXAMPLE_COMPATIBLE_APIS = {(Gem::Version.new('0.7.0')..Gem::Version.new('0.10.99')) => [8],
|
19
|
-
(Gem::Version.new('0.11.0')..Gem::Version.new('0.13.0')) => [10, 11, 12, 13, 14, 15, 16, 17]}
|
20
|
-
|
21
|
-
installed_apis = `android list target --compact`.lines.grep(/^android-/) { |s| s.match(/\d+/).to_s.to_i }
|
22
16
|
examples = example_archives.collect { |f| f.match /^#{RubotoTest::APP_NAME}_(?<ruboto_version>.*)_tools_r(?<tools_version>.*)\.tgz$/ }.compact
|
23
17
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
18
|
+
# TODO(gf): Track APIs compatible with update examples
|
19
|
+
# EXAMPLE_COMPATIBLE_APIS = {(Gem::Version.new('0.7.0')..Gem::Version.new('0.10.99')) => [8],
|
20
|
+
# (Gem::Version.new('0.11.0')..Gem::Version.new('0.13.0')) => [10, 11, 12, 13, 14, 15, 16, 17]}
|
21
|
+
# installed_apis = `android list target --compact`.lines.grep(/^android-/) { |s| s.match(/\d+/).to_s.to_i }
|
22
|
+
# missing_apis = false
|
23
|
+
# puts "Backward compatibility update tests: #{examples.size}"
|
24
|
+
# examples.each_with_index do |m, i|
|
25
|
+
# example_gem_version = Gem::Version.new m[:ruboto_version]
|
26
|
+
# compatible_apis = EXAMPLE_COMPATIBLE_APIS[EXAMPLE_COMPATIBLE_APIS.keys.detect { |gem_range| gem_range.cover? example_gem_version }]
|
27
|
+
# if compatible_apis
|
28
|
+
# if (installed_apis & compatible_apis).empty?
|
29
|
+
# puts "Update test #{example_archives[i]} needs a missing compatible API: #{compatible_apis.join(',')}"
|
30
|
+
# # missing_apis = true
|
31
|
+
# end
|
32
|
+
# end
|
33
|
+
# end
|
34
|
+
#
|
35
|
+
# if missing_apis
|
36
|
+
# puts '----------------------------------------------------------------------------------------------------'
|
37
|
+
# puts 'Required android APIs are missing, resolution options are:'
|
38
|
+
# puts '* Install a needed android API with "android update sdk --no-ui --all --filter android-XX"'
|
39
|
+
# puts '* Skip all backward compatibility update tests with "SKIP_RUBOTO_UPDATE_TEST=DEFINED rake test"'
|
40
|
+
# puts '* Limit number of backward compatibility update tests to N with "RUBOTO_UPDATE_EXAMPLES=N rake test"'
|
41
|
+
# puts 'Quitting...'
|
42
|
+
# exit false
|
43
|
+
# end
|
46
44
|
|
47
45
|
examples.each do |m|
|
48
46
|
ruboto_version = m[:ruboto_version]
|