ADB 0.4 → 0.5

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.
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ *.swp
data/ChangeLog CHANGED
@@ -1,3 +1,7 @@
1
+ === Release 0.5 / 2012-9-9
2
+ * Enhancements
3
+ * Added instrument method to send an instrumentation request
4
+
1
5
  === Release 0.4 / 2012-9-8
2
6
  * Enhancements
3
7
  * Added ability to pass options to the install command
data/lib/ADB.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'ADB/instrumentation'
1
2
  require 'ADB/version'
2
3
  require 'ADB/errors'
3
4
  require 'childprocess'
@@ -8,6 +9,7 @@ require 'date'
8
9
  # which is a part of the android toolset.
9
10
  #
10
11
  module ADB
12
+ include ADB::Instrumentation
11
13
 
12
14
  attr_reader :last_stdout, :last_stderr
13
15
 
@@ -0,0 +1,51 @@
1
+ require 'ADB/errors'
2
+
3
+ module ADB
4
+ module Instrumentation
5
+ #
6
+ # send instrumentation requests
7
+ #
8
+ # @example
9
+ # instrument "com.example/android.test.InstrumentationTestRunner"
10
+ # # will run all of the tests within the 'com.example' package using the 'android.test.InstrumentationTestRunner'
11
+ #
12
+ # @example
13
+ # instrument "com.example/android.test.InstrumentationTestRunner", :class => "com.example.test.SomeTestClass"
14
+ #
15
+ # # will execute all of the tests within 'com.example.test.SomeTestClass'
16
+ #
17
+ # @param [String] runner indicates the package/runner to instrument
18
+ # @param [Hash] collection of key/value pairs to be sent as arguments to the instrumentation runner
19
+ #
20
+ def instrument(runner, args = {})
21
+ with(the(args) << using_the(runner))
22
+ raise ADBError, last_stdout unless last_stdout.empty?
23
+ end
24
+
25
+ private
26
+ def with(args)
27
+ shell *"am instrument #{args.strip}"
28
+ end
29
+
30
+ def using_the(runner)
31
+ runner.insert(0, "-w ") unless single_test?
32
+ runner
33
+ end
34
+
35
+ def the(args)
36
+ @args = args
37
+ to_args(args).join
38
+ end
39
+
40
+ def to_args(args)
41
+ args.map do |name, value|
42
+ "-e #{name} #{value} "
43
+ end
44
+ end
45
+
46
+ def single_test?
47
+ @args.has_key? :class
48
+ end
49
+
50
+ end
51
+ end
@@ -1,3 +1,3 @@
1
1
  module ADB
2
- VERSION = "0.4"
2
+ VERSION = "0.5"
3
3
  end
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ class InstrumentingClass
4
+ include ADB
5
+ end
6
+
7
+ describe ADB::Instrumentation do
8
+ let(:instrumenter) { InstrumentingClass.new }
9
+ let(:runner) { 'com.example/com.example.TestRunner' }
10
+ let(:base_args) { "am instrument " }
11
+
12
+ before(:each) do
13
+ instrumenter.stub(:shell)
14
+ instrumenter.stub(:last_stdout).and_return('')
15
+ end
16
+
17
+ context "when instrumenting through ADB" do
18
+ it "should be able to run all of the tests" do
19
+ instrumenter.should_receive(:shell).with(*base_args.concat("-w #{runner}"))
20
+ instrumenter.instrument(runner)
21
+ end
22
+
23
+ it "should run tests in a single test class only" do
24
+ instrumenter.should_receive(:shell).with(*base_args.concat("-e class com.example.class #{runner}"))
25
+ instrumenter.instrument(runner, :class => 'com.example.class')
26
+ end
27
+
28
+ it "should be able to take extra arguments" do
29
+ instrumenter.should_receive(:shell).with(*base_args.concat("-e any thing -e should be -e able to -e be passed -w #{runner}"))
30
+ instrumenter.instrument(runner, :any => 'thing', :should => 'be', :able => 'to', :be => 'passed')
31
+ end
32
+
33
+ it "should raise an error if anything is in stderr" do
34
+ instrumenter.stub(:last_stdout).and_return('some problem')
35
+ lambda { instrumenter.instrument(runner) }.should raise_error(exception=ADBError, message="some problem")
36
+ end
37
+ end
38
+
39
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ADB
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.4'
4
+ version: '0.5'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-09-08 00:00:00.000000000 Z
13
+ date: 2012-09-09 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: childprocess
@@ -85,7 +85,9 @@ files:
85
85
  - features/support/env.rb
86
86
  - lib/ADB.rb
87
87
  - lib/ADB/errors.rb
88
+ - lib/ADB/instrumentation.rb
88
89
  - lib/ADB/version.rb
90
+ - spec/lib/ADB/instrumentation_spec.rb
89
91
  - spec/lib/ADB_spec.rb
90
92
  - spec/spec_helper.rb
91
93
  homepage: http://github.com/cheezy/ADB
@@ -102,7 +104,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
102
104
  version: '0'
103
105
  segments:
104
106
  - 0
105
- hash: -3420063598173628702
107
+ hash: 2061536077942189474
106
108
  required_rubygems_version: !ruby/object:Gem::Requirement
107
109
  none: false
108
110
  requirements:
@@ -111,7 +113,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
111
113
  version: '0'
112
114
  segments:
113
115
  - 0
114
- hash: -3420063598173628702
116
+ hash: 2061536077942189474
115
117
  requirements: []
116
118
  rubyforge_project:
117
119
  rubygems_version: 1.8.24
@@ -123,5 +125,6 @@ test_files:
123
125
  - features/step_definitions/adb_steps.rb
124
126
  - features/support/ApiDemos.apk
125
127
  - features/support/env.rb
128
+ - spec/lib/ADB/instrumentation_spec.rb
126
129
  - spec/lib/ADB_spec.rb
127
130
  - spec/spec_helper.rb