rubotium 0.0.1

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.
Files changed (45) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +24 -0
  6. data/Rakefile +1 -0
  7. data/bin/rubotium +26 -0
  8. data/lib/rubotium/adb/command.rb +21 -0
  9. data/lib/rubotium/adb/devices.rb +25 -0
  10. data/lib/rubotium/adb/install_command.rb +17 -0
  11. data/lib/rubotium/adb/instrumentation.rb +36 -0
  12. data/lib/rubotium/adb/shell.rb +30 -0
  13. data/lib/rubotium/adb/test_result_parser.rb +87 -0
  14. data/lib/rubotium/adb/uninstall_command.rb +17 -0
  15. data/lib/rubotium/adb.rb +13 -0
  16. data/lib/rubotium/apk/converter.rb +22 -0
  17. data/lib/rubotium/apk.rb +7 -0
  18. data/lib/rubotium/cmd.rb +17 -0
  19. data/lib/rubotium/device.rb +49 -0
  20. data/lib/rubotium/devices.rb +25 -0
  21. data/lib/rubotium/formatters/junit_formatter.rb +82 -0
  22. data/lib/rubotium/grouper.rb +40 -0
  23. data/lib/rubotium/jar_reader.rb +70 -0
  24. data/lib/rubotium/package.rb +36 -0
  25. data/lib/rubotium/runable_test.rb +11 -0
  26. data/lib/rubotium/test_case.rb +6 -0
  27. data/lib/rubotium/test_suite.rb +12 -0
  28. data/lib/rubotium/version.rb +3 -0
  29. data/lib/rubotium.rb +85 -0
  30. data/rubotium.gemspec +33 -0
  31. data/spec/fixtures/adb_devices_results.rb +23 -0
  32. data/spec/fixtures/adb_results.rb +60 -0
  33. data/spec/fixtures/jar_contents.rb +28 -0
  34. data/spec/fixtures/javap_classes.rb +52 -0
  35. data/spec/lib/rubotium/adb/adb_devices_spec.rb +25 -0
  36. data/spec/lib/rubotium/adb/adb_instrumentation_spec.rb +32 -0
  37. data/spec/lib/rubotium/adb/adb_result_parser_spec.rb +132 -0
  38. data/spec/lib/rubotium/adb/adb_shell_spec.rb +23 -0
  39. data/spec/lib/rubotium/devices_spec.rb +45 -0
  40. data/spec/lib/rubotium/formatters/junit_formatter_spec.rb +7 -0
  41. data/spec/lib/rubotium/grouper_spec.rb +56 -0
  42. data/spec/lib/rubotium/jar_reader_spec.rb +58 -0
  43. data/spec/lib/rubotium_spec.rb +13 -0
  44. data/spec/spec_helper.rb +20 -0
  45. metadata +256 -0
@@ -0,0 +1,56 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rubotium::Grouper do
4
+ let(:grouper) { described_class }
5
+ let(:testsuite1) {TestSuite.new('test_package1')}
6
+ let(:testsuite2) {TestSuite.new('test_package2')}
7
+
8
+ before do
9
+ RunableTest.should_receive(:new){|arg1, arg2|
10
+ "#{arg1}, #{arg2}"
11
+ }.at_least(:once)
12
+ end
13
+
14
+ def add_test_cases_to_testsuite(testsuite, test_case_names)
15
+ test_case_names.each{|name|
16
+ testsuite.add_test_case(TestCase.new(name))
17
+ }
18
+ end
19
+
20
+ it 'should create two equal groups' do
21
+ add_test_cases_to_testsuite(testsuite1, ['name1', 'name2', 'name3', 'name4'])
22
+ tests = [ testsuite1 ]
23
+
24
+ result = [
25
+ ["test_package1, name1", "test_package1, name3"],
26
+ ["test_package1, name2", "test_package1, name4"]
27
+ ]
28
+
29
+ grouper.new(tests, 2).create_groups.should == result
30
+ end
31
+
32
+ it 'should create three equal groups' do
33
+ add_test_cases_to_testsuite(testsuite1, ['name1', 'name2', 'name4'])
34
+ add_test_cases_to_testsuite(testsuite2, ['name3'])
35
+ tests = [ testsuite1, testsuite2 ]
36
+
37
+ result = [
38
+ ["test_package1, name1", "test_package2, name3"],
39
+ ["test_package1, name2"],
40
+ ["test_package1, name4"]
41
+ ]
42
+
43
+ grouper.new(tests, 3).create_groups.should == result
44
+ end
45
+
46
+ it 'should create one group' do
47
+ add_test_cases_to_testsuite(testsuite1, ['name1', 'name2', 'name3', 'name4'])
48
+ tests = [ testsuite1 ]
49
+
50
+ grouper.new(tests, 1).create_groups.should have(1).items
51
+ grouper.new(tests, 1).create_groups.should == [
52
+ ["test_package1, name1", "test_package1, name2", "test_package1, name3", "test_package1, name4"]
53
+ ]
54
+
55
+ end
56
+ end
@@ -0,0 +1,58 @@
1
+ require 'spec_helper'
2
+ describe Rubotium::JarReader do
3
+ let(:jar_reader) {described_class.new("path")}
4
+
5
+ context "Given there are no classes in jar" do
6
+ before do
7
+ Rubotium::CMD.stub(:run_command).and_return("")
8
+ end
9
+ it 'should return empty array' do
10
+ jar_reader.test_suites.should be_kind_of Array
11
+ jar_reader.test_suites.should be_empty
12
+ end
13
+ end
14
+
15
+ context "Given there are classes in jar" do
16
+ before do
17
+ Rubotium::CMD.stub(:run_command).with("jar -tf path | grep '.class'").and_return(Fixtures::JarContents.multiple_classes)
18
+ Rubotium::CMD.stub(:run_command).with("javap -classpath path com.android.screens.HomeScreen").and_return(
19
+ Fixtures::JavaPClasses.class_with_no_tests
20
+ )
21
+
22
+ Rubotium::CMD.stub(:run_command).with("javap -classpath path com.android.auth.login.LoginFlowTest").and_return(
23
+ Fixtures::JavaPClasses.class_with_tests
24
+ )
25
+ end
26
+
27
+ it 'should return an array with classes' do
28
+ jar_reader.test_suites.should be_kind_of Array
29
+ jar_reader.test_suites.should_not be_empty
30
+ end
31
+
32
+ it 'should convert class names to valid format' do
33
+ jar_reader.test_suites.first.name.should eql "com.android.screens.HomeScreen"
34
+ end
35
+
36
+ it 'should get the pacakges with tests' do
37
+ tests = jar_reader.get_tests
38
+ tests.should have(1).item
39
+ end
40
+
41
+ it 'should know the tests per package' do
42
+ tests = jar_reader.get_tests
43
+ tests.first.test_cases.count.should == 8
44
+ end
45
+
46
+ end
47
+
48
+
49
+ context "Given there are duplicated classes in jar" do
50
+ before do
51
+ Rubotium::CMD.stub(:run_command).and_return(Fixtures::JarContents.duplicated_classes)
52
+ end
53
+ it 'deduplicates classess' do
54
+ jar_reader.test_suites.count.should == 1
55
+ end
56
+ end
57
+
58
+ end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rubotium do
4
+ let(:rubotium) { described_class }
5
+ before do
6
+ Rubotium::CMD.stub(:run_command).and_return ""
7
+ end
8
+
9
+ it 'validates that the application apk exists' do
10
+ expect{rubotium.new({})}.to raise_error(RuntimeError, "Empty configuration")
11
+ end
12
+
13
+ end
@@ -0,0 +1,20 @@
1
+ require 'simplecov'
2
+ require 'coveralls'
3
+ require 'fixtures/javap_classes'
4
+ require 'fixtures/jar_contents'
5
+ require 'fixtures/adb_results'
6
+ require 'fixtures/adb_devices_results'
7
+ require 'rspec/mocks'
8
+
9
+ SimpleCov.formatter = Coveralls::SimpleCov::Formatter
10
+
11
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
12
+ SimpleCov::Formatter::HTMLFormatter,
13
+ Coveralls::SimpleCov::Formatter
14
+ ]
15
+
16
+ SimpleCov.start do
17
+ add_filter "/spec/"
18
+ end
19
+
20
+ require 'rubotium'
metadata ADDED
@@ -0,0 +1,256 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rubotium
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Slawomir Smiechura
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-08-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.5'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: simplecov
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 0.8.2
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 0.8.2
41
+ - !ruby/object:Gem::Dependency
42
+ name: coveralls
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 0.7.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 0.7.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 2.14.1
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: 2.14.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec-mocks
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: builder
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '='
102
+ - !ruby/object:Gem::Version
103
+ version: 3.2.2
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '='
109
+ - !ruby/object:Gem::Version
110
+ version: 3.2.2
111
+ - !ruby/object:Gem::Dependency
112
+ name: trollop
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '='
116
+ - !ruby/object:Gem::Version
117
+ version: '2.0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '='
123
+ - !ruby/object:Gem::Version
124
+ version: '2.0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: parallel
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '='
130
+ - !ruby/object:Gem::Version
131
+ version: 0.9.2
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '='
137
+ - !ruby/object:Gem::Version
138
+ version: 0.9.2
139
+ - !ruby/object:Gem::Dependency
140
+ name: dex2jar
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '='
144
+ - !ruby/object:Gem::Version
145
+ version: 0.0.6
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '='
151
+ - !ruby/object:Gem::Version
152
+ version: 0.0.6
153
+ - !ruby/object:Gem::Dependency
154
+ name: android_apk
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - '='
158
+ - !ruby/object:Gem::Version
159
+ version: 0.7.0
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - '='
165
+ - !ruby/object:Gem::Version
166
+ version: 0.7.0
167
+ description: This gem allows to run Robotium tests in parallel on multiple devices
168
+ email:
169
+ - ssmiech@gmail.com
170
+ executables:
171
+ - rubotium
172
+ extensions: []
173
+ extra_rdoc_files: []
174
+ files:
175
+ - ".gitignore"
176
+ - Gemfile
177
+ - LICENSE.txt
178
+ - README.md
179
+ - Rakefile
180
+ - bin/rubotium
181
+ - lib/rubotium.rb
182
+ - lib/rubotium/adb.rb
183
+ - lib/rubotium/adb/command.rb
184
+ - lib/rubotium/adb/devices.rb
185
+ - lib/rubotium/adb/install_command.rb
186
+ - lib/rubotium/adb/instrumentation.rb
187
+ - lib/rubotium/adb/shell.rb
188
+ - lib/rubotium/adb/test_result_parser.rb
189
+ - lib/rubotium/adb/uninstall_command.rb
190
+ - lib/rubotium/apk.rb
191
+ - lib/rubotium/apk/converter.rb
192
+ - lib/rubotium/cmd.rb
193
+ - lib/rubotium/device.rb
194
+ - lib/rubotium/devices.rb
195
+ - lib/rubotium/formatters/junit_formatter.rb
196
+ - lib/rubotium/grouper.rb
197
+ - lib/rubotium/jar_reader.rb
198
+ - lib/rubotium/package.rb
199
+ - lib/rubotium/runable_test.rb
200
+ - lib/rubotium/test_case.rb
201
+ - lib/rubotium/test_suite.rb
202
+ - lib/rubotium/version.rb
203
+ - rubotium.gemspec
204
+ - spec/fixtures/adb_devices_results.rb
205
+ - spec/fixtures/adb_results.rb
206
+ - spec/fixtures/jar_contents.rb
207
+ - spec/fixtures/javap_classes.rb
208
+ - spec/lib/rubotium/adb/adb_devices_spec.rb
209
+ - spec/lib/rubotium/adb/adb_instrumentation_spec.rb
210
+ - spec/lib/rubotium/adb/adb_result_parser_spec.rb
211
+ - spec/lib/rubotium/adb/adb_shell_spec.rb
212
+ - spec/lib/rubotium/devices_spec.rb
213
+ - spec/lib/rubotium/formatters/junit_formatter_spec.rb
214
+ - spec/lib/rubotium/grouper_spec.rb
215
+ - spec/lib/rubotium/jar_reader_spec.rb
216
+ - spec/lib/rubotium_spec.rb
217
+ - spec/spec_helper.rb
218
+ homepage: ''
219
+ licenses:
220
+ - MIT
221
+ metadata: {}
222
+ post_install_message:
223
+ rdoc_options: []
224
+ require_paths:
225
+ - lib
226
+ required_ruby_version: !ruby/object:Gem::Requirement
227
+ requirements:
228
+ - - ">="
229
+ - !ruby/object:Gem::Version
230
+ version: '0'
231
+ required_rubygems_version: !ruby/object:Gem::Requirement
232
+ requirements:
233
+ - - ">="
234
+ - !ruby/object:Gem::Version
235
+ version: '0'
236
+ requirements: []
237
+ rubyforge_project:
238
+ rubygems_version: 2.2.2
239
+ signing_key:
240
+ specification_version: 4
241
+ summary: Run your Robotium tests with ease
242
+ test_files:
243
+ - spec/fixtures/adb_devices_results.rb
244
+ - spec/fixtures/adb_results.rb
245
+ - spec/fixtures/jar_contents.rb
246
+ - spec/fixtures/javap_classes.rb
247
+ - spec/lib/rubotium/adb/adb_devices_spec.rb
248
+ - spec/lib/rubotium/adb/adb_instrumentation_spec.rb
249
+ - spec/lib/rubotium/adb/adb_result_parser_spec.rb
250
+ - spec/lib/rubotium/adb/adb_shell_spec.rb
251
+ - spec/lib/rubotium/devices_spec.rb
252
+ - spec/lib/rubotium/formatters/junit_formatter_spec.rb
253
+ - spec/lib/rubotium/grouper_spec.rb
254
+ - spec/lib/rubotium/jar_reader_spec.rb
255
+ - spec/lib/rubotium_spec.rb
256
+ - spec/spec_helper.rb