ruboto-core 0.3.3 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. data/README.md +3 -3
  2. data/Rakefile +75 -0
  3. data/assets/Rakefile +76 -85
  4. data/assets/res/layout/get_ruboto_core.xml +25 -0
  5. data/assets/samples/sample_broadcast_receiver.rb +1 -2
  6. data/assets/src/InheritingActivity.java +181 -5
  7. data/assets/src/InheritingBroadcastReceiver.java +22 -5
  8. data/assets/src/InheritingClass.java +4 -13
  9. data/assets/src/RubotoActivity.java +78 -118
  10. data/assets/src/RubotoBroadcastReceiver.java +31 -50
  11. data/assets/src/RubotoService.java +13 -28
  12. data/assets/src/org/ruboto/Script.java +286 -114
  13. data/assets/src/org/ruboto/test/ActivityTest.java +25 -26
  14. data/assets/src/org/ruboto/test/InstrumentationTestRunner.java +28 -29
  15. data/assets/{assets/scripts → src}/ruboto.rb +13 -8
  16. data/assets/test/assets/scripts/test_helper.rb +8 -4
  17. data/lib/ruboto/commands/base.rb +42 -6
  18. data/lib/ruboto/util/build.rb +25 -18
  19. data/lib/ruboto/util/update.rb +53 -30
  20. data/lib/ruboto/util/xml_element.rb +2 -2
  21. data/lib/ruboto/version.rb +3 -0
  22. data/test/activity/image_button_activity.rb +1 -1
  23. data/test/activity/image_button_and_button_activity.rb +1 -1
  24. data/test/activity/stack_activity.rb +21 -0
  25. data/test/activity/stack_activity_test.rb +24 -0
  26. data/test/app_test_methods.rb +25 -32
  27. data/test/rake_test.rb +15 -17
  28. data/test/ruboto_gen_test.rb +1 -16
  29. data/test/ruboto_gen_with_psych_test.rb +16 -0
  30. data/test/ruboto_update_test.rb +1 -47
  31. data/test/ruboto_update_with_psych_test.rb +18 -0
  32. data/test/service_test.rb +4 -2
  33. data/test/test_helper.rb +32 -22
  34. data/test/update_test_methods.rb +29 -0
  35. metadata +13 -22
@@ -3,45 +3,38 @@ require File.expand_path("test_helper", File.dirname(__FILE__))
3
3
  module AppTestMethods
4
4
  include RubotoTest
5
5
 
6
- if ['android-7', 'android-8'].include? ANDROID_OS
7
- def test_nothing
8
- puts "Skipping instrumentation tests on #{ANDROID_OS} since they don't work."
6
+ def test_activity_tests
7
+ if not ON_JRUBY_JARS_1_5_6
8
+ assert_code 'YamlLoads', "with_large_stack{require 'yaml'}"
9
+ else
10
+ puts "Skipping YAML tests on jruby-jars-1.5.6"
9
11
  end
10
- else
11
- def test_activity_tests
12
- if not ON_JRUBY_JARS_1_5_6
13
- assert_code 'YamlLoads', "with_large_stack{require 'yaml'}"
14
- else
15
- puts "Skipping YAML tests on jruby-jars-1.5.6"
16
- end
17
12
 
18
- assert_code 'ReadSourceFile', "File.read(__FILE__)"
13
+ assert_code 'ReadSourceFile', "File.read(__FILE__)"
19
14
 
20
- Dir[File.expand_path('activity/*_test.rb', File.dirname(__FILE__))].each do |test_src|
21
- snake_name = test_src.chomp('_test.rb')
22
- activity_name = File.basename(snake_name).split('_').map { |s| "#{s[0..0].upcase}#{s[1..-1]}" }.join
23
- Dir.chdir APP_DIR do
24
- system "#{RUBOTO_CMD} gen class Activity --name #{activity_name}"
25
- FileUtils.cp "#{snake_name}.rb", "assets/scripts/"
26
- FileUtils.cp test_src, "test/assets/scripts/"
27
- end
15
+ Dir[File.expand_path('activity/*_test.rb', File.dirname(__FILE__))].each do |test_src|
16
+ snake_name = test_src.chomp('_test.rb')
17
+ activity_name = File.basename(snake_name).split('_').map { |s| "#{s[0..0].upcase}#{s[1..-1]}" }.join
18
+ Dir.chdir APP_DIR do
19
+ system "#{RUBOTO_CMD} gen class Activity --name #{activity_name}"
20
+ FileUtils.cp "#{snake_name}.rb", "src/"
21
+ FileUtils.cp test_src, "test/assets/scripts/"
28
22
  end
29
- run_app_tests
30
23
  end
24
+ run_app_tests
25
+ end
31
26
 
32
- private
27
+ private
33
28
 
34
- def assert_code(activity_name, code)
35
- snake_name = activity_name.scan(/[A-Z]+[a-z]+/).map { |s| s.downcase }.join('_')
36
- filename = "assets/scripts/#{snake_name}_activity.rb"
37
- Dir.chdir APP_DIR do
38
- system "#{RUBOTO_CMD} gen class Activity --name #{activity_name}Activity"
39
- s = File.read(filename)
40
- s.gsub!(/(require 'ruboto')/, "\\1\n#{code}")
41
- File.open(filename, 'w') { |f| f << s }
42
- end
29
+ def assert_code(activity_name, code)
30
+ snake_name = activity_name.scan(/[A-Z]+[a-z]+/).map { |s| s.downcase }.join('_')
31
+ filename = "src/#{snake_name}_activity.rb"
32
+ Dir.chdir APP_DIR do
33
+ system "#{RUBOTO_CMD} gen class Activity --name #{activity_name}Activity"
34
+ s = File.read(filename)
35
+ s.gsub!(/(require 'ruboto')/, "\\1\n#{code}")
36
+ File.open(filename, 'w') { |f| f << s }
43
37
  end
44
-
45
38
  end
46
39
 
47
- end
40
+ end
data/test/rake_test.rb CHANGED
@@ -9,29 +9,27 @@ class RakeTest < Test::Unit::TestCase
9
9
  cleanup_app
10
10
  end
11
11
 
12
- def test_that_update_scripts_task_copies_files_to_sdcard_if_permissions_are_set
13
- manifest = File.read("#{APP_DIR}/AndroidManifest.xml")
14
- manifest.gsub! %r{</manifest>}, %Q{ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />\n</manifest>}
15
- File.open("#{APP_DIR}/AndroidManifest.xml", 'w') { |f| f << manifest }
16
-
17
- Dir.chdir APP_DIR do
18
- system 'rake install:clean start'
19
- assert_equal 0, $?
20
- end
21
-
22
- # wait_for_dir("/mnt/sdcard/Android/data/#{PACKAGE}/files/scripts")
23
- wait_for_dir("/sdcard/Android/data/#{PACKAGE}/files/scripts")
24
- end
25
-
26
12
  if ANDROID_OS == 'android-7'
27
13
  puts "Skipping sdcard test since files on sdcard are not removed on android-7 on app uninstall"
28
14
  else
29
- def test_that_update_scripts_task_copies_files_to_app_directory_when_permissions_are_not_set
15
+ def test_that_update_scripts_task_copies_files_to_sdcard_and_are_read_by_activity
30
16
  Dir.chdir APP_DIR do
31
- system 'rake install:clean start'
17
+ activity_filename = "src/ruboto_test_app_activity.rb"
18
+ s = File.read(activity_filename)
19
+ s.gsub!(/What hath Matz wrought\?/, "This text was changed by script!")
20
+ File.open(activity_filename, 'w') { |f| f << s }
21
+
22
+ test_filename = "test/assets/scripts/ruboto_test_app_activity_test.rb"
23
+ s2 = File.read(test_filename)
24
+ s2.gsub!(/What hath Matz wrought\?/, "This text was changed by script!")
25
+ File.open(test_filename, 'w') { |f| f << s2 }
26
+
27
+ apk_timestamp = File.ctime("bin/#{APP_NAME}-debug.apk")
28
+ system 'rake test:quick'
32
29
  assert_equal 0, $?
30
+ assert_equal apk_timestamp, File.ctime("bin/#{APP_NAME}-debug.apk"), 'APK should not have been rebuilt'
31
+ assert `adb shell ls -d /sdcard/Android/data/#{PACKAGE}/files/scripts`.chomp =~ %r{^/sdcard/Android/data/#{PACKAGE}/files/scripts$}
33
32
  end
34
- wait_for_dir("/data/data/#{PACKAGE}/files/scripts")
35
33
  end
36
34
  end
37
35
 
@@ -23,25 +23,10 @@ class RubotoGenTest < Test::Unit::TestCase
23
23
  system "#{RUBOTO_CMD} gen class activity --name VeryNewActivity"
24
24
  assert_equal 1, $?.exitstatus
25
25
  assert !File.exists?('src/org/ruboto/test_app/VeryNewActivity.java')
26
- assert !File.exists?('assets/scripts/very_new_activity.rb')
26
+ assert !File.exists?('src/very_new_activity.rb')
27
27
  assert !File.exists?('test/assets/scripts/very_new_activity_test.rb')
28
28
  assert File.read('AndroidManifest.xml') !~ /VeryNewActivity/
29
29
  end
30
30
  end
31
31
 
32
32
  end
33
-
34
- if not RubotoTest::ON_JRUBY_JARS_1_5_6
35
- class RubotoGenWithPsychTest < RubotoGenTest
36
- def setup
37
- generate_app :with_psych => true
38
- end
39
-
40
- def test_psych_jar_exists
41
- assert File.exists?("#{APP_DIR}/libs/psych.jar"), "Failed to generate psych jar"
42
- end
43
-
44
- end
45
- else
46
- puts "Skipping Psych tests on jruby-jars-1.5.6"
47
- end
@@ -0,0 +1,16 @@
1
+ require File.expand_path("ruboto_gen_test", File.dirname(__FILE__))
2
+
3
+ if not RubotoTest::ON_JRUBY_JARS_1_5_6
4
+ class RubotoGenWithPsychTest < RubotoGenTest
5
+ def setup
6
+ generate_app :with_psych => true
7
+ end
8
+
9
+ def test_psych_jar_exists
10
+ assert File.exists?("#{APP_DIR}/libs/psych.jar"), "Failed to generate psych jar"
11
+ end
12
+
13
+ end
14
+ else
15
+ puts "Skipping Psych tests on jruby-jars-1.5.6"
16
+ end
@@ -1,51 +1,5 @@
1
- require File.expand_path("test_helper", File.dirname(__FILE__))
2
- require 'test/app_test_methods'
3
-
4
- module UpdateTestMethods
5
- include RubotoTest
6
-
7
- def setup(with_psych = false)
8
- generate_app(:with_psych => with_psych, :update => true)
9
- end
10
-
11
- def teardown
12
- cleanup_app
13
- end
14
-
15
- def test_properties_and_ant_file_has_no_duplicates
16
- Dir.chdir APP_DIR do
17
- assert File.readlines('test/build.properties').grep(/\w/).uniq!.nil?, 'Duplicate lines in build.properties'
18
- assert_equal 1, File.readlines('test/build.xml').grep(/<macrodef name="run-tests-helper">/).size, 'Duplicate macro in build.xml'
19
- end
20
- end
21
-
22
- def test_icons_are_untouched
23
- Dir.chdir APP_DIR do
24
- assert_equal 4100, File.size('res/drawable-hdpi/icon.png')
25
- end
26
- end
27
-
28
- end
1
+ require File.expand_path("update_test_methods", File.dirname(__FILE__))
29
2
 
30
3
  class RubotoUpdateTest < Test::Unit::TestCase
31
4
  include UpdateTestMethods
32
- include AppTestMethods
33
- end
34
-
35
- if not RubotoTest::ON_JRUBY_JARS_1_5_6
36
- class RubotoUpdateWithPsychTest < Test::Unit::TestCase
37
- include UpdateTestMethods
38
- include AppTestMethods
39
-
40
- def setup
41
- super(true)
42
- end
43
-
44
- def test_psych_jar_exists
45
- assert File.exists?("#{APP_DIR}/libs/psych.jar"), "Failed to generate psych jar"
46
- end
47
-
48
- end
49
- else
50
- puts "Skipping Psych tests on jruby-jars-1.5.6"
51
5
  end
@@ -0,0 +1,18 @@
1
+ require File.expand_path("update_test_methods", File.dirname(__FILE__))
2
+
3
+ if not RubotoTest::ON_JRUBY_JARS_1_5_6
4
+ class RubotoUpdateWithPsychTest < Test::Unit::TestCase
5
+ include UpdateTestMethods
6
+
7
+ def setup
8
+ super(true)
9
+ end
10
+
11
+ def test_psych_jar_exists
12
+ assert File.exists?("#{APP_DIR}/libs/psych.jar"), "Failed to generate psych jar"
13
+ end
14
+
15
+ end
16
+ else
17
+ puts "Skipping Psych tests on jruby-jars-1.5.6"
18
+ end
data/test/service_test.rb CHANGED
@@ -2,6 +2,8 @@ require File.expand_path("test_helper", File.dirname(__FILE__))
2
2
  require 'fileutils'
3
3
 
4
4
  class ServiceTest < Test::Unit::TestCase
5
+ SRC_DIR ="#{APP_DIR}/src"
6
+
5
7
  def setup
6
8
  generate_app
7
9
  end
@@ -13,7 +15,7 @@ class ServiceTest < Test::Unit::TestCase
13
15
  def test_service_startup
14
16
  Dir.chdir APP_DIR do
15
17
  system "#{RUBOTO_CMD} gen class Service --name RubotoTestService"
16
- service_filename = "#{APP_DIR}/assets/scripts/ruboto_test_service.rb"
18
+ service_filename = "#{SRC_DIR}/ruboto_test_service.rb"
17
19
  assert File.exists? service_filename
18
20
  File.open(service_filename, 'w'){|f| f << <<EOF}
19
21
  require 'ruboto'
@@ -34,7 +36,7 @@ $service.handle_start_command do
34
36
  end
35
37
  EOF
36
38
 
37
- activity_filename = "#{APP_DIR}/assets/scripts/ruboto_test_app_activity.rb"
39
+ activity_filename = "#{SRC_DIR}/ruboto_test_app_activity.rb"
38
40
  s = File.read(activity_filename)
39
41
  s.gsub!(/^(end)$/, "
40
42
  startService(android.content.Intent.new($activity.application_context, $package.RubotoTestService.java_class))
data/test/test_helper.rb CHANGED
@@ -7,19 +7,24 @@ module RubotoTest
7
7
  PROJECT_DIR = File.expand_path('..', File.dirname(__FILE__))
8
8
  $LOAD_PATH << PROJECT_DIR
9
9
 
10
+ # FIXME(uwe): Simplify when we stop supporting rubygems < 1.8.0
10
11
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.8.0')
11
12
  gem_spec = Gem::Specification.find_by_path 'jruby-jars'
12
13
  else
13
14
  gem_spec = Gem.searcher.find('jruby-jars')
14
15
  end
16
+ # FIXME end
17
+
15
18
  raise StandardError.new("Can't find Gem specification jruby-jars.") unless gem_spec
16
- JRUBY_JARS_VERSION = gem_spec.version
19
+ JRUBY_JARS_VERSION = gem_spec.version
20
+
21
+ # FIXME(uwe): Remove when we stop supporting JRuby 1.5.6
17
22
  ON_JRUBY_JARS_1_5_6 = JRUBY_JARS_VERSION == Gem::Version.new('1.5.6')
18
23
 
19
- PACKAGE = 'org.ruboto.test_app'
20
- APP_NAME = 'RubotoTestApp'
21
- TMP_DIR = File.join PROJECT_DIR, 'tmp'
22
- APP_DIR = File.join TMP_DIR, APP_NAME
24
+ PACKAGE = 'org.ruboto.test_app'
25
+ APP_NAME = 'RubotoTestApp'
26
+ TMP_DIR = File.join PROJECT_DIR, 'tmp'
27
+ APP_DIR = File.join TMP_DIR, APP_NAME
23
28
  ANDROID_TARGET = ENV['ANDROID_TARGET'] || 'android-7'
24
29
 
25
30
  VERSION_TO_API_LEVEL = {
@@ -28,7 +33,7 @@ module RubotoTest
28
33
  '2.3.3' => 'android-10', '2.3.4' => 'android-10',
29
34
  '3.0' => 'android-11', '3.1' => 'android-12', '3.2' => 'android-13'
30
35
  }
31
-
36
+
32
37
  def self.version_from_device
33
38
  puts "Reading OS version from device/emulator"
34
39
  system "adb wait-for-device"
@@ -90,6 +95,17 @@ class Test::Unit::TestCase
90
95
  excluded_stdlibs = options.delete(:excluded_stdlibs)
91
96
  raise "Unknown options: #{options.inspect}" unless options.empty?
92
97
  Dir.mkdir TMP_DIR unless File.exists? TMP_DIR
98
+
99
+ if with_psych || excluded_stdlibs
100
+ system 'rake platform:uninstall'
101
+ else
102
+ system 'rake platform:install'
103
+ end
104
+ if $? != 0
105
+ FileUtils.rm_rf 'tmp/RubotoCore'
106
+ fail 'Error (un)installing RubotoCore'
107
+ end
108
+
93
109
  FileUtils.rm_rf APP_DIR if File.exists? APP_DIR
94
110
  template_dir = "#{APP_DIR}_template_#{$$}#{'_with_psych' if with_psych}#{'_updated' if update}#{"_without_#{excluded_stdlibs.join('_')}" if excluded_stdlibs}"
95
111
  if File.exists?(template_dir)
@@ -106,8 +122,8 @@ class Test::Unit::TestCase
106
122
  android_home = File.dirname(File.dirname(`which adb`))
107
123
  end
108
124
  Dir.chdir APP_DIR do
109
- File.open('local.properties', 'w'){|f| f.puts "sdk.dir=#{android_home}"}
110
- File.open('test/local.properties', 'w'){|f| f.puts "sdk.dir=#{android_home}"}
125
+ File.open('local.properties', 'w') { |f| f.puts "sdk.dir=#{android_home}" }
126
+ File.open('test/local.properties', 'w') { |f| f.puts "sdk.dir=#{android_home}" }
111
127
  FileUtils.touch "libs/psych.jar" if with_psych
112
128
  exclude_stdlibs(excluded_stdlibs) if excluded_stdlibs
113
129
  system "#{RUBOTO_CMD} update app"
@@ -142,25 +158,19 @@ class Test::Unit::TestCase
142
158
  end
143
159
 
144
160
  def run_app_tests
145
- Dir.chdir "#{APP_DIR}/test" do
146
- system 'rake test:quick'
147
- assert_equal 0, $?, "tests failed with return code #$?"
148
- end
149
- end
150
-
151
- def wait_for_dir(dir)
152
- puts "Waiting for app to generate script directory: #{dir}"
153
- start = Time.now
154
- loop do
155
- break if `adb shell ls -d #{dir}`.chomp =~ %r{^#{dir}$}
156
- flunk 'Timeout waiting for scripts directory to appear' if Time.now > start + 120
157
- sleep 1
161
+ if ['android-7', 'android-8'].include? ANDROID_OS
162
+ puts "Skipping instrumentation tests on #{ANDROID_OS} since they don't work."
163
+ else
164
+ Dir.chdir APP_DIR do
165
+ system 'rake test:quick'
166
+ assert_equal 0, $?, "tests failed with return code #$?"
167
+ end
158
168
  end
159
169
  end
160
170
 
161
171
  def exclude_stdlibs(excluded_stdlibs)
162
172
  puts "Adding ruboto.yml: #{excluded_stdlibs.join(' ')}"
163
- File.open('ruboto.yml', 'w'){|f| f << YAML.dump({:excluded_stdlibs => excluded_stdlibs})}
173
+ File.open('ruboto.yml', 'w') { |f| f << YAML.dump({:excluded_stdlibs => excluded_stdlibs}) }
164
174
  end
165
175
 
166
176
  end
@@ -0,0 +1,29 @@
1
+ require File.expand_path("test_helper", File.dirname(__FILE__))
2
+ require 'test/app_test_methods'
3
+
4
+ module UpdateTestMethods
5
+ include RubotoTest
6
+ include AppTestMethods
7
+
8
+ def setup(with_psych = false)
9
+ generate_app(:with_psych => with_psych, :update => true)
10
+ end
11
+
12
+ def teardown
13
+ cleanup_app
14
+ end
15
+
16
+ def test_properties_and_ant_file_has_no_duplicates
17
+ Dir.chdir APP_DIR do
18
+ assert File.readlines('test/build.properties').grep(/\w/).uniq!.nil?, 'Duplicate lines in build.properties'
19
+ assert_equal 1, File.readlines('test/build.xml').grep(/<macrodef name="run-tests-helper">/).size, 'Duplicate macro in build.xml'
20
+ end
21
+ end
22
+
23
+ def test_icons_are_untouched
24
+ Dir.chdir APP_DIR do
25
+ assert_equal 4100, File.size('res/drawable-hdpi/icon.png')
26
+ end
27
+ end
28
+
29
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruboto-core
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 15
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 3
9
- - 3
10
- version: 0.3.3
8
+ - 4
9
+ - 0
10
+ version: 0.4.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Daniel Jackoway
@@ -18,7 +18,7 @@ autorequire:
18
18
  bindir: bin
19
19
  cert_chain: []
20
20
 
21
- date: 2011-08-21 00:00:00 Z
21
+ date: 2011-09-19 00:00:00 Z
22
22
  dependencies:
23
23
  - !ruby/object:Gem::Dependency
24
24
  name: main
@@ -43,22 +43,6 @@ dependencies:
43
43
  version: 4.7.2
44
44
  type: :runtime
45
45
  version_requirements: *id001
46
- - !ruby/object:Gem::Dependency
47
- name: jruby-jars
48
- prerelease: false
49
- requirement: &id002 !ruby/object:Gem::Requirement
50
- none: false
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- hash: 15
55
- segments:
56
- - 1
57
- - 5
58
- - 6
59
- version: 1.5.6
60
- type: :runtime
61
- version_requirements: *id002
62
46
  description: The core components of Ruby on Android
63
47
  email: ruboto@googlegroups.com
64
48
  executables:
@@ -73,11 +57,11 @@ files:
73
57
  - Gemfile.lock
74
58
  - Rakefile
75
59
  - README.md
76
- - assets/assets/scripts/ruboto.rb
77
60
  - assets/Rakefile
78
61
  - assets/res/drawable-hdpi/icon.png
79
62
  - assets/res/drawable-ldpi/icon.png
80
63
  - assets/res/drawable-mdpi/icon.png
64
+ - assets/res/layout/get_ruboto_core.xml
81
65
  - assets/samples/sample_activity.rb
82
66
  - assets/samples/sample_activity_test.rb
83
67
  - assets/samples/sample_broadcast_receiver.rb
@@ -92,6 +76,7 @@ files:
92
76
  - assets/src/org/ruboto/Script.java
93
77
  - assets/src/org/ruboto/test/ActivityTest.java
94
78
  - assets/src/org/ruboto/test/InstrumentationTestRunner.java
79
+ - assets/src/ruboto.rb
95
80
  - assets/src/RubotoActivity.java
96
81
  - assets/src/RubotoBroadcastReceiver.java
97
82
  - assets/src/RubotoService.java
@@ -113,6 +98,7 @@ files:
113
98
  - lib/ruboto/util/update.rb
114
99
  - lib/ruboto/util/verify.rb
115
100
  - lib/ruboto/util/xml_element.rb
101
+ - lib/ruboto/version.rb
116
102
  - lib/ruboto.rb
117
103
  - test/activity/image_button_activity.rb
118
104
  - test/activity/image_button_activity_test.rb
@@ -120,13 +106,18 @@ files:
120
106
  - test/activity/image_button_and_button_activity_test.rb
121
107
  - test/activity/option_menu_activity.rb
122
108
  - test/activity/option_menu_activity_test.rb
109
+ - test/activity/stack_activity.rb
110
+ - test/activity/stack_activity_test.rb
123
111
  - test/app_test_methods.rb
124
112
  - test/minimal_app_test.rb
125
113
  - test/rake_test.rb
126
114
  - test/ruboto_gen_test.rb
115
+ - test/ruboto_gen_with_psych_test.rb
127
116
  - test/ruboto_update_test.rb
117
+ - test/ruboto_update_with_psych_test.rb
128
118
  - test/service_test.rb
129
119
  - test/test_helper.rb
120
+ - test/update_test_methods.rb
130
121
  homepage: http://ruboto.org/
131
122
  licenses: []
132
123