ruboto 0.13.0 → 0.14.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -3
- data/RELEASE_CANDICATE_DOC +4 -5
- data/RELEASE_DOC +49 -45
- data/Rakefile +20 -9
- data/assets/rakelib/ruboto.rake +32 -39
- data/assets/res/drawable/get_ruboto_core.png +0 -0
- data/assets/res/drawable-hdpi/ic_launcher.png +0 -0
- data/assets/res/drawable-ldpi/ic_launcher.png +0 -0
- data/assets/res/drawable-mdpi/ic_launcher.png +0 -0
- data/assets/src/RubotoActivity.java +3 -14
- data/assets/src/org/ruboto/EntryPointActivity.java +28 -374
- data/assets/src/org/ruboto/JRubyAdapter.java +1 -0
- data/assets/src/org/ruboto/Script.java +0 -51
- data/assets/src/org/ruboto/SplashActivity.java +394 -0
- data/assets/src/ruboto/activity.rb +22 -3
- data/lib/ruboto/commands/base.rb +7 -5
- data/lib/ruboto/util/emulator.rb +9 -6
- data/lib/ruboto/util/setup.rb +17 -19
- data/lib/ruboto/util/update.rb +38 -29
- data/lib/ruboto/version.rb +1 -1
- data/test/activity/navigation_activity.rb +1 -0
- data/test/activity/navigation_activity_test.rb +4 -0
- data/test/activity/ruby_file_activity.rb +2 -1
- data/test/minimal_app_test.rb +11 -31
- data/test/ruboto_gen_test.rb +9 -7
- data/test/ruboto_update_test.rb +38 -7
- data/test/splash_test.rb +50 -0
- data/test/test_helper.rb +8 -2
- data/test/uppercase_package_name_test.rb +16 -0
- metadata +5 -2
data/lib/ruboto/util/update.rb
CHANGED
@@ -128,11 +128,11 @@ module Ruboto
|
|
128
128
|
end
|
129
129
|
|
130
130
|
def update_jruby(force=nil, explicit = false)
|
131
|
-
|
132
|
-
|
131
|
+
installed_jruby_core = Dir.glob('libs/jruby-core-*.jar')[0]
|
132
|
+
installed_jruby_stdlib = Dir.glob('libs/jruby-stdlib-*.jar')[0]
|
133
133
|
|
134
134
|
unless force
|
135
|
-
if !
|
135
|
+
if !installed_jruby_core || !installed_jruby_stdlib
|
136
136
|
puts "Cannot find existing jruby jars in libs. Make sure you're in the root directory of your app." if explicit
|
137
137
|
return false
|
138
138
|
end
|
@@ -147,7 +147,7 @@ module Ruboto
|
|
147
147
|
new_jruby_version = JRubyJars::VERSION
|
148
148
|
|
149
149
|
unless force
|
150
|
-
current_jruby_version =
|
150
|
+
current_jruby_version = installed_jruby_core ? installed_jruby_core[16..-5] : 'None'
|
151
151
|
if current_jruby_version == new_jruby_version
|
152
152
|
puts "JRuby is up to date at version #{new_jruby_version}. Make sure you 'gem update jruby-jars' if there is a new version."
|
153
153
|
return false
|
@@ -158,10 +158,10 @@ module Ruboto
|
|
158
158
|
end
|
159
159
|
|
160
160
|
copier = AssetCopier.new Ruboto::ASSETS, File.expand_path('.')
|
161
|
-
log_action("Removing #{
|
162
|
-
log_action("Removing #{
|
163
|
-
log_action("Copying #{JRubyJars::core_jar_path} to libs") {
|
164
|
-
log_action("Copying #{JRubyJars::stdlib_jar_path} to libs") {
|
161
|
+
log_action("Removing #{installed_jruby_core}") { File.delete *Dir.glob('libs/jruby-core-*.jar') } if installed_jruby_core
|
162
|
+
log_action("Removing #{installed_jruby_stdlib}") { File.delete *Dir.glob('libs/jruby-stdlib-*.jar') } if installed_jruby_stdlib
|
163
|
+
log_action("Copying #{JRubyJars::core_jar_path} to libs") { FileUtils.cp JRubyJars::core_jar_path, "libs/jruby-core-#{new_jruby_version}.jar" }
|
164
|
+
log_action("Copying #{JRubyJars::stdlib_jar_path} to libs") { FileUtils.cp JRubyJars::stdlib_jar_path, "libs/jruby-stdlib-#{new_jruby_version}.jar" }
|
165
165
|
|
166
166
|
unless File.read('project.properties') =~ /^dex.force.jumbo=/
|
167
167
|
log_action('Setting JUMBO dex file format') do
|
@@ -301,6 +301,10 @@ module Ruboto
|
|
301
301
|
app_element.add_element 'activity', {'android:name' => 'org.ruboto.RubotoActivity', 'android:exported' => 'false'}
|
302
302
|
end
|
303
303
|
|
304
|
+
unless app_element.elements["activity[@android:name='org.ruboto.SplashActivity']"]
|
305
|
+
app_element.add_element 'activity', {'android:name' => 'org.ruboto.SplashActivity', 'android:exported' => 'false', 'android:configChanges' => (target.to_i >= 13 ? 'orientation|screenSize' : 'orientation')}
|
306
|
+
end
|
307
|
+
|
304
308
|
unless app_element.elements["activity[@android:name='org.ruboto.RubotoDialog']"]
|
305
309
|
app_element.add_element 'activity', {'android:name' => 'org.ruboto.RubotoDialog', 'android:exported' => 'false', 'android:theme' => '@android:style/Theme.Dialog'}
|
306
310
|
end
|
@@ -329,6 +333,18 @@ module Ruboto
|
|
329
333
|
end
|
330
334
|
|
331
335
|
def update_ruboto(force=nil)
|
336
|
+
source_files_pattern = 'ruboto{.rb,/**/*}'
|
337
|
+
new_sources_dir = Ruboto::GEM_ROOT + "/assets/#{SCRIPTS_DIR}"
|
338
|
+
new_sources = Dir.chdir(new_sources_dir) { Dir[source_files_pattern] }.
|
339
|
+
select { |f| !(File.directory?("#{new_sources_dir}/#{f}") || File.basename(f) == '.' || File.basename(f) == '..') }
|
340
|
+
old_sources = Dir.chdir("#{SCRIPTS_DIR}") { Dir[source_files_pattern] }.
|
341
|
+
select { |f| !(File.directory?("#{SCRIPTS_DIR}/#{f}") || File.basename(f) == '.' || File.basename(f) == '..') }
|
342
|
+
obsolete_sources = old_sources - new_sources - %w(ruboto/version.rb)
|
343
|
+
obsolete_sources.each do |f|
|
344
|
+
log_action("Deleting obsolete script #{f}") do
|
345
|
+
FileUtils.rm_f f
|
346
|
+
end
|
347
|
+
end
|
332
348
|
log_action('Copying ruboto/version.rb') do
|
333
349
|
from = File.expand_path(Ruboto::GEM_ROOT + '/lib/ruboto/version.rb')
|
334
350
|
to = File.expand_path("./#{SCRIPTS_DIR}/ruboto/version.rb")
|
@@ -336,10 +352,10 @@ module Ruboto
|
|
336
352
|
FileUtils.cp from, to
|
337
353
|
end
|
338
354
|
log_action('Copying additional ruboto script components') do
|
339
|
-
|
340
|
-
to = File.expand_path(
|
355
|
+
new_sources.each do |from|
|
356
|
+
to = File.expand_path(from, SCRIPTS_DIR)
|
341
357
|
FileUtils.mkdir_p File.dirname(to)
|
342
|
-
FileUtils.cp from, to
|
358
|
+
FileUtils.cp "#{new_sources_dir}/#{from}", to
|
343
359
|
end
|
344
360
|
end
|
345
361
|
end
|
@@ -353,8 +369,8 @@ module Ruboto
|
|
353
369
|
# - Removes unneeded code from jruby-core
|
354
370
|
# - Split into smaller jars that can be used separately
|
355
371
|
def reconfigure_jruby_core(jruby_core_version)
|
356
|
-
jruby_core = JRubyJars::core_jar_path.split('/')[-1]
|
357
372
|
Dir.chdir 'libs' do
|
373
|
+
jruby_core = Dir['jruby-core-*.jar'][-1]
|
358
374
|
log_action("Removing unneeded classes from #{jruby_core}") do
|
359
375
|
FileUtils.rm_rf 'tmp'
|
360
376
|
Dir.mkdir 'tmp'
|
@@ -363,7 +379,7 @@ module Ruboto
|
|
363
379
|
`jar -xf #{jruby_core}`
|
364
380
|
raise "Unpacking jruby-core jar failed: #$?" unless $? == 0
|
365
381
|
File.delete jruby_core
|
366
|
-
if Gem::Version.new(jruby_core_version) >= Gem::Version.new('1.7.
|
382
|
+
if Gem::Version.new(jruby_core_version) >= Gem::Version.new('1.7.5.dev')
|
367
383
|
#noinspection RubyLiteralArrayInspection
|
368
384
|
excluded_core_packages = [
|
369
385
|
'**/*Darwin*',
|
@@ -376,7 +392,7 @@ module Ruboto
|
|
376
392
|
'com/kenai/jffi',
|
377
393
|
'com/kenai/jnr/x86asm',
|
378
394
|
'com/martiansoftware',
|
379
|
-
'
|
395
|
+
'jni',
|
380
396
|
'jnr/constants/platform/darwin',
|
381
397
|
'jnr/constants/platform/fake',
|
382
398
|
'jnr/constants/platform/freebsd',
|
@@ -394,8 +410,6 @@ module Ruboto
|
|
394
410
|
'jnr/posix/MacOS*',
|
395
411
|
'jnr/posix/OpenBSD*',
|
396
412
|
'jnr/x86asm',
|
397
|
-
'org/apache',
|
398
|
-
'org/fusesource',
|
399
413
|
'org/jruby/ant',
|
400
414
|
'org/jruby/cext',
|
401
415
|
# 'org/jruby/compiler', # Needed for initialization, but should not be necessary
|
@@ -410,20 +424,16 @@ module Ruboto
|
|
410
424
|
'org/jruby/ext/ffi/AbstractMemory*',
|
411
425
|
'org/jruby/ext/ffi/io',
|
412
426
|
'org/jruby/ext/ffi/jffi',
|
413
|
-
'org/jruby/ext/ripper',
|
414
427
|
'org/jruby/ext/tracepoint',
|
415
|
-
#'org/jruby/ir/dataflow',
|
416
|
-
#'org/jruby/ir/dataflow/analyses',
|
417
|
-
#'org/jruby/ir/representations',
|
418
|
-
#'org/jruby/ir/runtime',
|
419
|
-
#'org/jruby/ir/targets',
|
420
|
-
#'org/jruby/ir/transformations',
|
421
|
-
#'org/jruby/ir/util',
|
422
428
|
'org/jruby/javasupport/bsf',
|
423
429
|
# 'org/jruby/management', # should be excluded
|
424
430
|
# 'org/jruby/runtime/invokedynamic', # Should be excluded
|
431
|
+
# 'org/jruby/runtime/opto', # What is this?
|
432
|
+
# 'org/jruby/runtime/opto/OptoFactory*', # What is this?
|
425
433
|
'org/yecht',
|
426
434
|
]
|
435
|
+
elsif Gem::Version.new(jruby_core_version) >= Gem::Version.new('1.7.4')
|
436
|
+
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)
|
427
437
|
elsif Gem::Version.new(jruby_core_version) >= Gem::Version.new('1.7.3')
|
428
438
|
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)
|
429
439
|
elsif Gem::Version.new(jruby_core_version) >= Gem::Version.new('1.7.2')
|
@@ -469,7 +479,7 @@ module Ruboto
|
|
469
479
|
#end
|
470
480
|
|
471
481
|
# Add our proxy class factory
|
472
|
-
android_jar = Dir["#{ANDROID_HOME}/platforms/*/android.jar"][0]
|
482
|
+
android_jar = Dir["#{ANDROID_HOME.gsub("\\", "/")}/platforms/*/android.jar"][0]
|
473
483
|
unless android_jar
|
474
484
|
puts
|
475
485
|
puts '*' * 80
|
@@ -500,7 +510,7 @@ module Ruboto
|
|
500
510
|
included_stdlibs = verify_ruboto_config[:included_stdlibs]
|
501
511
|
excluded_stdlibs = [*verify_ruboto_config[:excluded_stdlibs]].compact
|
502
512
|
Dir.chdir 'libs' do
|
503
|
-
jruby_stdlib =
|
513
|
+
jruby_stdlib = Dir['jruby-stdlib-*.jar'][-1]
|
504
514
|
log_action("Reformatting #{jruby_stdlib}") do
|
505
515
|
FileUtils.mkdir_p 'tmp'
|
506
516
|
Dir.chdir 'tmp' do
|
@@ -513,8 +523,7 @@ module Ruboto
|
|
513
523
|
FileUtils.move 'old/META-INF/jruby.home/lib', 'new/jruby.home/lib'
|
514
524
|
FileUtils.rm_rf 'new/jruby.home/lib/ruby/gems'
|
515
525
|
|
516
|
-
|
517
|
-
jruby_stdlib_version = Gem::Version.new($1)
|
526
|
+
jruby_stdlib_version = Gem::Version.new(JRubyJars::VERSION)
|
518
527
|
|
519
528
|
if included_stdlibs
|
520
529
|
lib_dirs = %w(1.8 1.9 2.0 shared)
|
@@ -576,7 +585,7 @@ module Ruboto
|
|
576
585
|
# EMXIF
|
577
586
|
|
578
587
|
# FIXME(uwe): These should be included but break the 64K method count limit
|
579
|
-
if j =~ /bcpkix-jdk15on-
|
588
|
+
if j =~ /bcpkix-jdk15on-1\.?47|bcprov-jdk15on-1\.?47|jopenssl|kryptcore|kryptproviderjdk/
|
580
589
|
FileUtils.rm j
|
581
590
|
next
|
582
591
|
end
|
data/lib/ruboto/version.rb
CHANGED
@@ -23,6 +23,7 @@ class NavigationActivity
|
|
23
23
|
button :text => 'Ruby file activity', :width => :match_parent, :id => 49, :on_click_listener => proc { start_ruby_file_activity }
|
24
24
|
button :text => 'RubotoActivity no config', :width => :match_parent, :id => 50, :on_click_listener => proc { start_ruboto_activity_no_config }
|
25
25
|
button :text => 'RubotoActivity', :width => :match_parent, :id => 51, :on_click_listener => proc { start_ruboto_activity('RubyFileActivity') }
|
26
|
+
button :text => 'RubotoActivity with Extras', :width => :match_parent, :id => 52, :on_click_listener => proc { start_ruboto_activity('RubyFileActivity', :extras => {:extra_string => 'Started with string extra.'}) }
|
26
27
|
end
|
27
28
|
end
|
28
29
|
end
|
@@ -75,6 +75,10 @@ test('start ruboto activity with class name', :ui => false) do |activity|
|
|
75
75
|
button_activity_text 51, activity, 42, 'This is a Ruby file activity.'
|
76
76
|
end
|
77
77
|
|
78
|
+
test('start ruboto activity with extras', :ui => false) do |activity|
|
79
|
+
button_activity_text 52, activity, 42, 'Started with string extra.'
|
80
|
+
end
|
81
|
+
|
78
82
|
def start_activity_by_button(activity, button_id, activity_class_name = 'org.ruboto.RubotoActivity')
|
79
83
|
monitor = add_monitor(activity_class_name, nil, false)
|
80
84
|
begin
|
@@ -2,10 +2,11 @@ class RubyFileActivity
|
|
2
2
|
def onCreate(bundle)
|
3
3
|
super
|
4
4
|
set_title 'Ruby file Activity'
|
5
|
+
display_text = intent.get_extra('extra_string') || 'This is a Ruby file activity.'
|
5
6
|
|
6
7
|
self.content_view =
|
7
8
|
linear_layout :orientation => :vertical, :gravity => :center_horizontal do
|
8
|
-
text_view :text =>
|
9
|
+
text_view :text => display_text, :id => 42, :width => :match_parent,
|
9
10
|
:gravity => :center, :text_size => 48.0
|
10
11
|
end
|
11
12
|
end
|
data/test/minimal_app_test.rb
CHANGED
@@ -12,12 +12,15 @@ if RubotoTest::RUBOTO_PLATFORM == 'STANDALONE'
|
|
12
12
|
cleanup_app
|
13
13
|
end
|
14
14
|
|
15
|
-
# APK was 4.7MB. JRuby: 1.7.0,
|
16
|
-
# APK was 4.5MB. JRuby: 1.7.2,
|
17
|
-
# APK was 4.5MB. JRuby: 1.7.2,
|
18
|
-
# APK was 4.3MB. JRuby: 1.7.3,
|
19
|
-
# APK was 4.2MB. JRuby: 1.7.3,
|
20
|
-
# APK was 4.4MB. JRuby: 1.7.4
|
15
|
+
# APK was 4.7MB. JRuby: 1.7.0, ANDROID_TARGET: 15
|
16
|
+
# APK was 4.5MB. JRuby: 1.7.2, ANDROID_TARGET: 10
|
17
|
+
# APK was 4.5MB. JRuby: 1.7.2, ANDROID_TARGET: 15
|
18
|
+
# APK was 4.3MB. JRuby: 1.7.3, ANDROID_TARGET: 10
|
19
|
+
# APK was 4.2MB. JRuby: 1.7.3, ANDROID_TARGET: 15
|
20
|
+
# APK was 4.4MB. JRuby: 1.7.4, ANDROID_TARGET: 10
|
21
|
+
# APK was 4.3MB. JRuby: 1.7.5.dev, ANDROID_TARGET: 10
|
22
|
+
# APK was 4.2MB. JRuby: 1.7.5.dev, ANDROID_TARGET: 15
|
23
|
+
# APK was 4.3MB. JRuby: 1.7.5.dev, ANDROID_TARGET: 16
|
21
24
|
def test_minimal_apk_is_within_limits
|
22
25
|
apk_size = BigDecimal(File.size("#{APP_DIR}/bin/RubotoTestApp-debug.apk").to_s) / (1024 * 1024)
|
23
26
|
upper_limit = {
|
@@ -25,7 +28,8 @@ if RubotoTest::RUBOTO_PLATFORM == 'STANDALONE'
|
|
25
28
|
'1.7.1' => ANDROID_TARGET < 15 ? 4.7 : 4.9,
|
26
29
|
'1.7.2' => ANDROID_TARGET < 15 ? 4.6 : 4.9,
|
27
30
|
'1.7.3' => ANDROID_TARGET < 15 ? 4.3 : 4.4,
|
28
|
-
|
31
|
+
'1.7.4' => 4.4,
|
32
|
+
}[JRUBY_JARS_VERSION.to_s] || {10 => 4.3, 16 => 4.3}[ANDROID_TARGET] || 4.3
|
29
33
|
lower_limit = upper_limit * 0.9
|
30
34
|
version_message ="JRuby: #{JRUBY_JARS_VERSION}, ANDROID_TARGET: #{ANDROID_TARGET}"
|
31
35
|
assert apk_size <= upper_limit, "APK was larger than #{'%.1f' % upper_limit}MB: #{'%.1f' % apk_size.ceil(1)}MB. #{version_message}"
|
@@ -36,29 +40,5 @@ if RubotoTest::RUBOTO_PLATFORM == 'STANDALONE'
|
|
36
40
|
run_app_tests
|
37
41
|
end
|
38
42
|
|
39
|
-
# APK was 4.7MB. JRuby: 1.7.0, ANDROID_TARGET: 15.
|
40
|
-
# APK was 4.5MB. JRuby: 1.7.2, ANDROID_TARGET: 10.
|
41
|
-
# APK was 4.5MB. JRuby: 1.7.2, ANDROID_TARGET: 15.
|
42
|
-
# APK was 4.5MB. JRuby: 1.7.3, ANDROID_TARGET: 10
|
43
|
-
# APK was 4.6MB. JRuby: 1.7.3.dev, ANDROID_TARGET: 10.
|
44
|
-
# APK was 4.5MB. JRuby: 1.7.3.dev, ANDROID_TARGET: 15.
|
45
|
-
# APK was 5.0MB. JRuby: 1.7.4.dev, ANDROID_TARGET: 10
|
46
|
-
# FIXME(uwe): Remove when we remove the exclude feature
|
47
|
-
def test_minimal_apk_with_excludes_is_less_than_5_mb
|
48
|
-
generate_app :excluded_stdlibs => %w{ant cgi digest dl drb ffi irb net optparse racc rbconfig rdoc rexml rinda rss
|
49
|
-
rubygems runit shell soap test uri webrick win32 wsdl xmlrpc xsd ../1.9}
|
50
|
-
apk_size = BigDecimal(File.size("#{APP_DIR}/bin/RubotoTestApp-debug.apk").to_s) / (1024 * 1024)
|
51
|
-
upper_limit = {
|
52
|
-
'1.7.0' => ANDROID_TARGET < 15 ? 4.7 : 4.9,
|
53
|
-
'1.7.1' => ANDROID_TARGET < 15 ? 4.7 : 4.9,
|
54
|
-
'1.7.2' => ANDROID_TARGET < 15 ? 4.6 : 4.9,
|
55
|
-
'1.7.3' => ANDROID_TARGET < 15 ? 4.6 : 4.9,
|
56
|
-
}[JRUBY_JARS_VERSION.to_s] || 5.0
|
57
|
-
lower_limit = upper_limit * 0.9
|
58
|
-
version_message ="JRuby: #{JRUBY_JARS_VERSION}, ANDROID_TARGET: #{ANDROID_TARGET}"
|
59
|
-
assert apk_size <= upper_limit, "APK was larger than #{'%.1f' % upper_limit}MB: #{'%.1f' % apk_size.ceil(1)}MB. #{version_message}"
|
60
|
-
assert apk_size >= lower_limit, "APK was smaller than #{'%.1f' % lower_limit}MB: #{'%.1f' % apk_size.floor(1)}MB. You should lower the limit. #{version_message}"
|
61
|
-
end
|
62
|
-
|
63
43
|
end
|
64
44
|
end
|
data/test/ruboto_gen_test.rb
CHANGED
@@ -21,9 +21,9 @@ class RubotoGenTest < Test::Unit::TestCase
|
|
21
21
|
|
22
22
|
def test_icons_are_updated
|
23
23
|
Dir.chdir APP_DIR do
|
24
|
-
assert_equal
|
25
|
-
assert_equal
|
26
|
-
assert_equal
|
24
|
+
assert_equal 3834, File.size('res/drawable-hdpi/ic_launcher.png')
|
25
|
+
assert_equal 2513, File.size('res/drawable-mdpi/ic_launcher.png')
|
26
|
+
assert_equal 1689, File.size('res/drawable-ldpi/ic_launcher.png')
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
@@ -61,6 +61,7 @@ class RubotoGenTest < Test::Unit::TestCase
|
|
61
61
|
# APK was 8428.4KB. PLATFORM: STANDALONE, ANDROID_TARGET: 10, JRuby: 1.7.4.dev
|
62
62
|
# APK was 7405.8KB. PLATFORM: STANDALONE, ANDROID_TARGET: 15, JRuby: 1.7.4.dev
|
63
63
|
# APK was 7420.9KB. PLATFORM: STANDALONE, ANDROID_TARGET: 16, JRuby: 1.7.4.dev
|
64
|
+
# APK was 8512.7KB. PLATFORM: STANDALONE, ANDROID_TARGET: 16, JRuby: 1.7.5.dev
|
64
65
|
def test_new_apk_size_is_within_limits
|
65
66
|
apk_size = BigDecimal(File.size("#{APP_DIR}/bin/RubotoTestApp-debug.apk").to_s) / 1024
|
66
67
|
version = " PLATFORM: #{RUBOTO_PLATFORM}"
|
@@ -71,14 +72,15 @@ class RubotoGenTest < Test::Unit::TestCase
|
|
71
72
|
'1.7.1' => ANDROID_TARGET < 15 ? 7400.0 : 7600.0,
|
72
73
|
'1.7.2' => 7400.0,
|
73
74
|
'1.7.3' => 7400.0,
|
74
|
-
|
75
|
+
'1.7.4' => 8500.0,
|
76
|
+
}[JRUBY_JARS_VERSION.to_s] || 8600.0
|
75
77
|
version << ", JRuby: #{JRUBY_JARS_VERSION.to_s}"
|
76
78
|
else
|
77
79
|
upper_limit = {
|
78
80
|
10 => 58.0,
|
79
|
-
15 => 59.
|
80
|
-
16 => 74.
|
81
|
-
}[ANDROID_TARGET] || 74.
|
81
|
+
15 => 59.1,
|
82
|
+
16 => 74.2,
|
83
|
+
}[ANDROID_TARGET] || 74.2
|
82
84
|
end
|
83
85
|
lower_limit = upper_limit * 0.9
|
84
86
|
assert apk_size <= upper_limit, "APK was larger than #{'%.1f' % upper_limit}KB: #{'%.1f' % apk_size.ceil(1)}KB.#{version}"
|
data/test/ruboto_update_test.rb
CHANGED
@@ -9,24 +9,54 @@ require File.expand_path('updated_example_test_methods', File.dirname(__FILE__))
|
|
9
9
|
require File.expand_path('update_test_methods', File.dirname(__FILE__))
|
10
10
|
|
11
11
|
# TODO(uwe): Delete obsolete examples when we stop supporting updating from them.
|
12
|
-
|
13
12
|
Dir.chdir "#{RubotoTest::PROJECT_DIR}/examples/" do
|
14
13
|
example_archives = Dir["#{RubotoTest::APP_NAME}_*_tools_r*.tgz"]
|
15
14
|
example_archives = example_archives.sort_by{|a| Gem::Version.new a[RubotoTest::APP_NAME.size + 1..-1].slice(/(.*)(?=_tools_)/)}
|
16
15
|
example_archives = example_archives.last(example_limit) if example_limit
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
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
|
+
examples = example_archives.collect { |f| f.match /^#{RubotoTest::APP_NAME}_(?<ruboto_version>.*)_tools_r(?<tools_version>.*)\.tgz$/ }.compact
|
23
|
+
|
24
|
+
missing_apis = false
|
25
|
+
puts "Backward compatibility update tests: #{examples.size}"
|
26
|
+
examples.each_with_index do |m,i|
|
27
|
+
example_gem_version = Gem::Version.new m[:ruboto_version]
|
28
|
+
compatible_apis = EXAMPLE_COMPATIBLE_APIS[ EXAMPLE_COMPATIBLE_APIS.keys.detect { |gem_range| gem_range.cover? example_gem_version } ]
|
29
|
+
if compatible_apis
|
30
|
+
if ( installed_apis & compatible_apis ).empty?
|
31
|
+
puts "Update test #{examples[i]} needs a missing compatible API: #{compatible_apis.join(',')}"
|
32
|
+
missing_apis = true
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
if missing_apis
|
38
|
+
puts '----------------------------------------------------------------------------------------------------'
|
39
|
+
puts 'Required android APIs are missing, resolution options are:'
|
40
|
+
puts '* Install a needed android API with "android update sdk --no-ui --all --filter android-XX"'
|
41
|
+
puts '* Skip all backward compatibility update tests with "SKIP_RUBOTO_UPDATE_TEST=DEFINED rake test"'
|
42
|
+
puts '* Limit number of backward compatibility update tests to N with "RUBOTO_UPDATE_EXAMPLES=N rake test"'
|
43
|
+
puts 'Quitting...'
|
44
|
+
exit false
|
45
|
+
end
|
46
|
+
|
47
|
+
examples.each do |m|
|
48
|
+
ruboto_version = m[:ruboto_version]
|
49
|
+
tools_version = m[:tools_version]
|
50
|
+
ruboto_version_no_dots = ruboto_version.gsub('.', '_')
|
21
51
|
self.class.class_eval <<EOF
|
22
|
-
class RubotoUpdatedExample#{
|
52
|
+
class RubotoUpdatedExample#{ruboto_version_no_dots}Tools#{tools_version}Test < Test::Unit::TestCase
|
23
53
|
include UpdatedExampleTestMethods
|
24
54
|
def setup
|
25
55
|
super('#{ruboto_version}', '#{tools_version}')
|
26
56
|
end
|
27
57
|
end
|
28
58
|
|
29
|
-
class RubotoUpdate#{
|
59
|
+
class RubotoUpdate#{ruboto_version_no_dots}Tools#{tools_version}Test < Test::Unit::TestCase
|
30
60
|
include UpdateTestMethods
|
31
61
|
def setup
|
32
62
|
super('#{ruboto_version}', '#{tools_version}')
|
@@ -34,4 +64,5 @@ class RubotoUpdate#{ruboto_version.gsub('.', '_')}Tools#{tools_version}Test < Te
|
|
34
64
|
end
|
35
65
|
EOF
|
36
66
|
end
|
67
|
+
|
37
68
|
end
|
data/test/splash_test.rb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
require File.expand_path('test_helper', File.dirname(__FILE__))
|
2
|
+
|
3
|
+
require 'bigdecimal'
|
4
|
+
require 'test/app_test_methods'
|
5
|
+
|
6
|
+
class SplashTest < Test::Unit::TestCase
|
7
|
+
def setup
|
8
|
+
generate_app
|
9
|
+
end
|
10
|
+
|
11
|
+
def teardown
|
12
|
+
cleanup_app
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_splash
|
16
|
+
Dir.chdir APP_DIR do
|
17
|
+
File.open('res/layout/splash.xml', 'w'){|f| f << <<EOF}
|
18
|
+
<?xml version="1.0" encoding="utf-8"?>
|
19
|
+
<LinearLayout
|
20
|
+
xmlns:android="http://schemas.android.com/apk/res/android"
|
21
|
+
android:layout_width="fill_parent"
|
22
|
+
android:layout_height="fill_parent"
|
23
|
+
android:orientation="vertical"
|
24
|
+
android:gravity="center_horizontal|center_vertical"
|
25
|
+
android:background="#30587c"
|
26
|
+
>
|
27
|
+
<!--Specify your splash image here-->
|
28
|
+
<ImageView
|
29
|
+
android:layout_width="fill_parent"
|
30
|
+
android:layout_height="fill_parent"
|
31
|
+
android:src="@drawable/logo"
|
32
|
+
android:scaleType="fitCenter"
|
33
|
+
android:layout_weight="1"
|
34
|
+
/>
|
35
|
+
<TextView android:id="@+id/text"
|
36
|
+
android:layout_width="wrap_content"
|
37
|
+
android:layout_height="wrap_content"
|
38
|
+
android:text="Please wait..."
|
39
|
+
android:color="#000000"
|
40
|
+
/>
|
41
|
+
</LinearLayout>
|
42
|
+
EOF
|
43
|
+
|
44
|
+
FileUtils.cp '../../icons/ruboto-logo_512x512.png', 'res/drawable/logo.png'
|
45
|
+
end
|
46
|
+
|
47
|
+
run_app_tests
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -164,6 +164,7 @@ class Test::Unit::TestCase
|
|
164
164
|
end
|
165
165
|
|
166
166
|
def generate_app(options = {})
|
167
|
+
package = options.delete(:package) || PACKAGE
|
167
168
|
example = options.delete(:example) || false
|
168
169
|
update = options.delete(:update) || false
|
169
170
|
# FIXME(uwe): Remove exclusion feature
|
@@ -176,6 +177,7 @@ class Test::Unit::TestCase
|
|
176
177
|
|
177
178
|
FileUtils.rm_rf APP_DIR if File.exists? APP_DIR
|
178
179
|
template_dir = "#{APP_DIR}_template_#{$$}"
|
180
|
+
template_dir << "_package_#{package}" if package != PACKAGE
|
179
181
|
template_dir << "_example_#{example}" if example
|
180
182
|
template_dir << "_bundle_#{[*bundle].join('_')}" if bundle
|
181
183
|
template_dir << '_updated' if update
|
@@ -207,7 +209,7 @@ class Test::Unit::TestCase
|
|
207
209
|
else
|
208
210
|
uninstall_jruby_jars_gem unless standalone
|
209
211
|
puts "Generating app #{APP_DIR}"
|
210
|
-
system "#{RUBOTO_CMD} gen app --package #{
|
212
|
+
system "#{RUBOTO_CMD} gen app --package #{package} --path #{APP_DIR} --name #{APP_NAME} --target android-#{ANDROID_TARGET}"
|
211
213
|
if $? != 0
|
212
214
|
FileUtils.rm_rf APP_DIR
|
213
215
|
raise "gen app failed with return code #$?"
|
@@ -235,8 +237,12 @@ class Test::Unit::TestCase
|
|
235
237
|
|
236
238
|
unless example && !update
|
237
239
|
Dir.chdir APP_DIR do
|
238
|
-
system 'rake
|
240
|
+
system 'rake patch_dex' # Ensure dx heap space is sufficient.
|
239
241
|
assert_equal 0, $?
|
242
|
+
Dir.chdir 'test' do
|
243
|
+
system 'ant instrument' # This will also build the main project.
|
244
|
+
assert_equal 0, $?
|
245
|
+
end
|
240
246
|
end
|
241
247
|
end
|
242
248
|
puts "Storing app as template #{template_dir}"
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require File.expand_path('test_helper', File.dirname(__FILE__))
|
2
|
+
|
3
|
+
class UppercasePackageNameTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
generate_app :package => 'org.ruboto.TestApp'
|
7
|
+
end
|
8
|
+
|
9
|
+
def teardown
|
10
|
+
cleanup_app
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_gen_package_with_uppercase_name
|
14
|
+
run_app_tests
|
15
|
+
end
|
16
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruboto
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Jackoway
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2013-
|
14
|
+
date: 2013-08-31 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: main
|
@@ -108,6 +108,7 @@ files:
|
|
108
108
|
- assets/src/org/ruboto/Script.java
|
109
109
|
- assets/src/org/ruboto/ScriptInfo.java
|
110
110
|
- assets/src/org/ruboto/ScriptLoader.java
|
111
|
+
- assets/src/org/ruboto/SplashActivity.java
|
111
112
|
- assets/src/org/ruboto/test/ActivityTest.java
|
112
113
|
- assets/src/org/ruboto/test/InstrumentationTestRunner.java
|
113
114
|
- assets/src/ruboto/activity.rb
|
@@ -188,10 +189,12 @@ files:
|
|
188
189
|
- test/ruboto_gen_test.rb
|
189
190
|
- test/ruboto_update_test.rb
|
190
191
|
- test/service_test.rb
|
192
|
+
- test/splash_test.rb
|
191
193
|
- test/sqldroid_test.rb
|
192
194
|
- test/test_helper.rb
|
193
195
|
- test/update_test_methods.rb
|
194
196
|
- test/updated_example_test_methods.rb
|
197
|
+
- test/uppercase_package_name_test.rb
|
195
198
|
homepage: http://ruboto.org/
|
196
199
|
licenses:
|
197
200
|
- MIT
|