acouchi 0.0.1 → 0.0.2
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/README.md +24 -0
- data/acouchi.gemspec +1 -1
- data/acouchi.jpg +0 -0
- data/lib/acouchi.rb +2 -0
- data/lib/acouchi/process_launcher.rb +21 -0
- data/lib/acouchi/project_builder.rb +4 -5
- data/lib/acouchi/version.rb +1 -1
- metadata +5 -3
data/README.md
CHANGED
@@ -1,12 +1,36 @@
|
|
1
1
|
Acouchi
|
2
2
|
=======
|
3
3
|
|
4
|
+
WARNING
|
5
|
+
-------
|
6
|
+
|
7
|
+
This gem was initially a spike, and has since then become rather useful. It is very much not unit tested. For this I apologise, and offer up this picture of an [Acouchi](http://en.wikipedia.org/wiki/Acouchi):
|
8
|
+
|
9
|
+

|
10
|
+
|
4
11
|
Requirements
|
5
12
|
------------
|
6
13
|
|
7
14
|
* [Android SDK](http://developer.android.com/sdk/installing/index.html) (Make sure to add SDK/tools and SDK/platform-tools to your PATH)
|
8
15
|
* [apktool](http://code.google.com/p/android-apktool/)
|
9
16
|
|
17
|
+
The Build Process
|
18
|
+
-----------------
|
19
|
+
|
20
|
+
Acouchi needs to make some tweaks to your APK to allow functional testing. This is roughly the process:
|
21
|
+
|
22
|
+
* Temporarily add some source files, and the Robotium jar file to your project
|
23
|
+
* Build your project in debug mode with ant
|
24
|
+
* Hack the APK file and inject some need elements in your AndroidManifest.xml
|
25
|
+
|
26
|
+
Please note that the build only has to happen again if your java code for the application under test changes.
|
27
|
+
|
28
|
+
How It Works
|
29
|
+
------------
|
30
|
+
|
31
|
+
Acouchi builds Robotium and a HTTP server into your Android application. Robotium is an API that has some amazing functionality for functional testing on Android.
|
32
|
+
In the Ruby API we post method calls via HTTP to the server on your device, which in turn returns meaningful data.
|
33
|
+
|
10
34
|
Cucumber
|
11
35
|
--------
|
12
36
|
|
data/acouchi.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |gem|
|
|
10
10
|
gem.email = ["andrew.vos@gmail.com"]
|
11
11
|
gem.description = %q{}
|
12
12
|
gem.summary = %q{}
|
13
|
-
gem.homepage = ""
|
13
|
+
gem.homepage = "https://github.com/AndrewVos/acouchi"
|
14
14
|
|
15
15
|
gem.files = `git ls-files`.split($/)
|
16
16
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
data/acouchi.jpg
ADDED
Binary file
|
data/lib/acouchi.rb
CHANGED
@@ -0,0 +1,21 @@
|
|
1
|
+
module Acouchi
|
2
|
+
class ProcessLauncher
|
3
|
+
def initialize(*arguments)
|
4
|
+
@arguments = arguments
|
5
|
+
@process = ChildProcess.build(*@arguments)
|
6
|
+
@process.io.inherit!
|
7
|
+
end
|
8
|
+
|
9
|
+
def start
|
10
|
+
@process.start
|
11
|
+
@process.wait
|
12
|
+
end
|
13
|
+
|
14
|
+
def start_and_crash_if_process_fails
|
15
|
+
start
|
16
|
+
if @process.crashed?
|
17
|
+
raise "A process exited with a non-zero exit code.\nThe command executed was \"#{@arguments.join(" ")}\""
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
require "acouchi/apk_modifier"
|
2
1
|
require "fileutils"
|
2
|
+
require "childprocess"
|
3
3
|
|
4
4
|
module Acouchi
|
5
5
|
JARS_PATH = File.expand_path(File.join(File.dirname(__FILE__), "../../jars"))
|
@@ -78,14 +78,13 @@ module Acouchi
|
|
78
78
|
|
79
79
|
def build_apk
|
80
80
|
Dir.chdir configuration.project_path do
|
81
|
-
|
82
|
-
system "ant debug"
|
81
|
+
ProcessLauncher.new("ant", "clean", "debug").start_and_crash_if_process_fails
|
83
82
|
end
|
84
83
|
end
|
85
84
|
|
86
85
|
def install_apk apk_path
|
87
|
-
|
88
|
-
|
86
|
+
ProcessLauncher.new("adb", "uninstall", configuration.target_package).start
|
87
|
+
ProcessLauncher.new("adb", "install", apk_path).start_and_crash_if_process_fails
|
89
88
|
end
|
90
89
|
end
|
91
90
|
end
|
data/lib/acouchi/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acouchi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httparty
|
@@ -56,6 +56,7 @@ files:
|
|
56
56
|
- README.md
|
57
57
|
- Rakefile
|
58
58
|
- acouchi.gemspec
|
59
|
+
- acouchi.jpg
|
59
60
|
- examples/AcouchiSample/AndroidManifest.xml
|
60
61
|
- examples/AcouchiSample/Rakefile
|
61
62
|
- examples/AcouchiSample/acouchi_configuration.json
|
@@ -77,6 +78,7 @@ files:
|
|
77
78
|
- lib/acouchi/apk_modifier.rb
|
78
79
|
- lib/acouchi/configuration.rb
|
79
80
|
- lib/acouchi/cucumber.rb
|
81
|
+
- lib/acouchi/process_launcher.rb
|
80
82
|
- lib/acouchi/project_builder.rb
|
81
83
|
- lib/acouchi/solo.rb
|
82
84
|
- lib/acouchi/test_runner.rb
|
@@ -85,7 +87,7 @@ files:
|
|
85
87
|
- src/com/acouchi/Acouchi.java
|
86
88
|
- src/com/acouchi/NanoHTTPD.java
|
87
89
|
- src/com/acouchi/TestCase.java
|
88
|
-
homepage:
|
90
|
+
homepage: https://github.com/AndrewVos/acouchi
|
89
91
|
licenses: []
|
90
92
|
post_install_message:
|
91
93
|
rdoc_options: []
|