rubotium 0.0.4 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -0
  3. data/bin/rubotium +4 -2
  4. data/lib/rubotium/adb/commands/command.rb +55 -0
  5. data/lib/rubotium/adb/commands/install_command.rb +19 -0
  6. data/lib/rubotium/adb/commands/instrument_command.rb +27 -0
  7. data/lib/rubotium/adb/commands/memory_command.rb +19 -0
  8. data/lib/rubotium/adb/commands/pull_command.rb +19 -0
  9. data/lib/rubotium/adb/commands/shell_command.rb +21 -0
  10. data/lib/rubotium/adb/commands/uninstall_command.rb +19 -0
  11. data/lib/rubotium/adb/commands.rb +7 -0
  12. data/lib/rubotium/adb/devices.rb +15 -6
  13. data/lib/rubotium/adb/parsers/procrank.rb +51 -0
  14. data/lib/rubotium/adb/parsers/single_test_result_parser.rb +61 -0
  15. data/lib/rubotium/adb/parsers/test_results_parser.rb +69 -0
  16. data/lib/rubotium/adb/parsers.rb +3 -0
  17. data/lib/rubotium/adb/test_result_parser.rb +5 -4
  18. data/lib/rubotium/adb.rb +3 -5
  19. data/lib/rubotium/apk/android_apk.rb +102 -0
  20. data/lib/rubotium/apk.rb +2 -2
  21. data/lib/rubotium/cmd.rb +1 -1
  22. data/lib/rubotium/device.rb +19 -33
  23. data/lib/rubotium/devices.rb +27 -14
  24. data/lib/rubotium/formatters/junit_formatter.rb +10 -11
  25. data/lib/rubotium/memory/data_point.rb +63 -0
  26. data/lib/rubotium/memory/monitor.rb +65 -0
  27. data/lib/rubotium/memory.rb +8 -0
  28. data/lib/rubotium/package.rb +7 -4
  29. data/lib/rubotium/runnable_test.rb +13 -0
  30. data/lib/rubotium/test_cases_reader.rb +32 -0
  31. data/lib/rubotium/test_result.rb +52 -0
  32. data/lib/rubotium/test_results.rb +18 -0
  33. data/lib/rubotium/test_runners/instrumentation_test_runner.rb +24 -0
  34. data/lib/rubotium/tests_runner.rb +80 -0
  35. data/lib/rubotium/version.rb +1 -1
  36. data/lib/rubotium.rb +54 -41
  37. data/rubotium.gemspec +0 -1
  38. data/spec/fixtures/adb_raw_result.rb +138 -0
  39. data/spec/fixtures/adb_raw_results.rb +153 -0
  40. data/spec/fixtures/adb_results.rb +4 -0
  41. data/spec/lib/rubotium/adb/adb_devices_spec.rb +43 -12
  42. data/spec/lib/rubotium/adb/adb_result_parser_spec.rb +22 -7
  43. data/spec/lib/rubotium/adb/adb_shell_spec.rb +11 -6
  44. data/spec/lib/rubotium/adb/parsers/procrank_spec.rb +61 -0
  45. data/spec/lib/rubotium/adb/parsers/single_test_result_parser_spec.rb +116 -0
  46. data/spec/lib/rubotium/adb/parsers/test_results_parser_spec.rb +108 -0
  47. data/spec/lib/rubotium/apk/android_apk_spec.rb +37 -0
  48. data/spec/lib/rubotium/apk/mock/BarcodeScanner4.2.apk +0 -0
  49. data/spec/lib/rubotium/apk/mock/UECExpress.apk +0 -0
  50. data/spec/lib/rubotium/apk/mock/dummy.apk +1 -0
  51. data/spec/lib/rubotium/apk/mock/sample.apk +0 -0
  52. data/spec/lib/rubotium/device_spec.rb +38 -0
  53. data/spec/lib/rubotium/devices_spec.rb +41 -24
  54. data/spec/lib/rubotium/memory/data_point_spec.rb +42 -0
  55. data/spec/lib/rubotium/memory/monitor_spec.rb +6 -0
  56. data/spec/lib/rubotium/tests_runner_spec.rb +47 -0
  57. data/spec/spec_helper.rb +2 -0
  58. data/test.rb +11 -0
  59. metadata +62 -41
  60. data/lib/rubotium/adb/command.rb +0 -21
  61. data/lib/rubotium/adb/install_command.rb +0 -17
  62. data/lib/rubotium/adb/instrumentation.rb +0 -36
  63. data/lib/rubotium/adb/uninstall_command.rb +0 -17
  64. data/lib/rubotium/apk/converter.rb +0 -22
  65. data/lib/rubotium/grouper.rb +0 -40
  66. data/lib/rubotium/jar_reader.rb +0 -70
  67. data/lib/rubotium/runable_test.rb +0 -11
  68. data/lib/rubotium/test_case.rb +0 -6
  69. data/lib/rubotium/test_suite.rb +0 -12
  70. data/spec/lib/rubotium/adb/adb_instrumentation_spec.rb +0 -32
  71. data/spec/lib/rubotium/grouper_spec.rb +0 -56
  72. data/spec/lib/rubotium/jar_reader_spec.rb +0 -58
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubotium
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Slawomir Smiechura
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-19 00:00:00.000000000 Z
11
+ date: 2014-10-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.5'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.5'
27
27
  - !ruby/object:Gem::Dependency
@@ -70,28 +70,28 @@ dependencies:
70
70
  name: rspec-mocks
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - '>='
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rake
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - '>='
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
@@ -150,20 +150,6 @@ dependencies:
150
150
  - - '='
151
151
  - !ruby/object:Gem::Version
152
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
153
  description: This gem allows to run Robotium tests in parallel on multiple devices
168
154
  email:
169
155
  - ssmiech@gmail.com
@@ -172,7 +158,7 @@ executables:
172
158
  extensions: []
173
159
  extra_rdoc_files: []
174
160
  files:
175
- - ".gitignore"
161
+ - .gitignore
176
162
  - Gemfile
177
163
  - LICENSE.txt
178
164
  - README.md
@@ -180,41 +166,65 @@ files:
180
166
  - bin/rubotium
181
167
  - lib/rubotium.rb
182
168
  - lib/rubotium/adb.rb
183
- - lib/rubotium/adb/command.rb
169
+ - lib/rubotium/adb/commands.rb
170
+ - lib/rubotium/adb/commands/command.rb
171
+ - lib/rubotium/adb/commands/install_command.rb
172
+ - lib/rubotium/adb/commands/instrument_command.rb
173
+ - lib/rubotium/adb/commands/memory_command.rb
174
+ - lib/rubotium/adb/commands/pull_command.rb
175
+ - lib/rubotium/adb/commands/shell_command.rb
176
+ - lib/rubotium/adb/commands/uninstall_command.rb
184
177
  - lib/rubotium/adb/devices.rb
185
- - lib/rubotium/adb/install_command.rb
186
- - lib/rubotium/adb/instrumentation.rb
178
+ - lib/rubotium/adb/parsers.rb
179
+ - lib/rubotium/adb/parsers/procrank.rb
180
+ - lib/rubotium/adb/parsers/single_test_result_parser.rb
181
+ - lib/rubotium/adb/parsers/test_results_parser.rb
187
182
  - lib/rubotium/adb/shell.rb
188
183
  - lib/rubotium/adb/test_result_parser.rb
189
- - lib/rubotium/adb/uninstall_command.rb
190
184
  - lib/rubotium/apk.rb
191
- - lib/rubotium/apk/converter.rb
185
+ - lib/rubotium/apk/android_apk.rb
192
186
  - lib/rubotium/cmd.rb
193
187
  - lib/rubotium/device.rb
194
188
  - lib/rubotium/devices.rb
195
189
  - lib/rubotium/formatters/junit_formatter.rb
196
- - lib/rubotium/grouper.rb
197
- - lib/rubotium/jar_reader.rb
190
+ - lib/rubotium/memory.rb
191
+ - lib/rubotium/memory/data_point.rb
192
+ - lib/rubotium/memory/monitor.rb
198
193
  - lib/rubotium/package.rb
199
- - lib/rubotium/runable_test.rb
200
- - lib/rubotium/test_case.rb
201
- - lib/rubotium/test_suite.rb
194
+ - lib/rubotium/runnable_test.rb
195
+ - lib/rubotium/test_cases_reader.rb
196
+ - lib/rubotium/test_result.rb
197
+ - lib/rubotium/test_results.rb
198
+ - lib/rubotium/test_runners/instrumentation_test_runner.rb
199
+ - lib/rubotium/tests_runner.rb
202
200
  - lib/rubotium/version.rb
203
201
  - rubotium.gemspec
204
202
  - spec/fixtures/adb_devices_results.rb
203
+ - spec/fixtures/adb_raw_result.rb
204
+ - spec/fixtures/adb_raw_results.rb
205
205
  - spec/fixtures/adb_results.rb
206
206
  - spec/fixtures/jar_contents.rb
207
207
  - spec/fixtures/javap_classes.rb
208
208
  - spec/lib/rubotium/adb/adb_devices_spec.rb
209
- - spec/lib/rubotium/adb/adb_instrumentation_spec.rb
210
209
  - spec/lib/rubotium/adb/adb_result_parser_spec.rb
211
210
  - spec/lib/rubotium/adb/adb_shell_spec.rb
211
+ - spec/lib/rubotium/adb/parsers/procrank_spec.rb
212
+ - spec/lib/rubotium/adb/parsers/single_test_result_parser_spec.rb
213
+ - spec/lib/rubotium/adb/parsers/test_results_parser_spec.rb
214
+ - spec/lib/rubotium/apk/android_apk_spec.rb
215
+ - spec/lib/rubotium/apk/mock/BarcodeScanner4.2.apk
216
+ - spec/lib/rubotium/apk/mock/UECExpress.apk
217
+ - spec/lib/rubotium/apk/mock/dummy.apk
218
+ - spec/lib/rubotium/apk/mock/sample.apk
219
+ - spec/lib/rubotium/device_spec.rb
212
220
  - spec/lib/rubotium/devices_spec.rb
213
221
  - spec/lib/rubotium/formatters/junit_formatter_spec.rb
214
- - spec/lib/rubotium/grouper_spec.rb
215
- - spec/lib/rubotium/jar_reader_spec.rb
222
+ - spec/lib/rubotium/memory/data_point_spec.rb
223
+ - spec/lib/rubotium/memory/monitor_spec.rb
224
+ - spec/lib/rubotium/tests_runner_spec.rb
216
225
  - spec/lib/rubotium_spec.rb
217
226
  - spec/spec_helper.rb
227
+ - test.rb
218
228
  homepage: ''
219
229
  licenses:
220
230
  - MIT
@@ -225,12 +235,12 @@ require_paths:
225
235
  - lib
226
236
  required_ruby_version: !ruby/object:Gem::Requirement
227
237
  requirements:
228
- - - ">="
238
+ - - '>='
229
239
  - !ruby/object:Gem::Version
230
240
  version: '0'
231
241
  required_rubygems_version: !ruby/object:Gem::Requirement
232
242
  requirements:
233
- - - ">="
243
+ - - '>='
234
244
  - !ruby/object:Gem::Version
235
245
  version: '0'
236
246
  requirements: []
@@ -241,16 +251,27 @@ specification_version: 4
241
251
  summary: Run your Robotium tests with ease
242
252
  test_files:
243
253
  - spec/fixtures/adb_devices_results.rb
254
+ - spec/fixtures/adb_raw_result.rb
255
+ - spec/fixtures/adb_raw_results.rb
244
256
  - spec/fixtures/adb_results.rb
245
257
  - spec/fixtures/jar_contents.rb
246
258
  - spec/fixtures/javap_classes.rb
247
259
  - spec/lib/rubotium/adb/adb_devices_spec.rb
248
- - spec/lib/rubotium/adb/adb_instrumentation_spec.rb
249
260
  - spec/lib/rubotium/adb/adb_result_parser_spec.rb
250
261
  - spec/lib/rubotium/adb/adb_shell_spec.rb
262
+ - spec/lib/rubotium/adb/parsers/procrank_spec.rb
263
+ - spec/lib/rubotium/adb/parsers/single_test_result_parser_spec.rb
264
+ - spec/lib/rubotium/adb/parsers/test_results_parser_spec.rb
265
+ - spec/lib/rubotium/apk/android_apk_spec.rb
266
+ - spec/lib/rubotium/apk/mock/BarcodeScanner4.2.apk
267
+ - spec/lib/rubotium/apk/mock/UECExpress.apk
268
+ - spec/lib/rubotium/apk/mock/dummy.apk
269
+ - spec/lib/rubotium/apk/mock/sample.apk
270
+ - spec/lib/rubotium/device_spec.rb
251
271
  - spec/lib/rubotium/devices_spec.rb
252
272
  - spec/lib/rubotium/formatters/junit_formatter_spec.rb
253
- - spec/lib/rubotium/grouper_spec.rb
254
- - spec/lib/rubotium/jar_reader_spec.rb
273
+ - spec/lib/rubotium/memory/data_point_spec.rb
274
+ - spec/lib/rubotium/memory/monitor_spec.rb
275
+ - spec/lib/rubotium/tests_runner_spec.rb
255
276
  - spec/lib/rubotium_spec.rb
256
277
  - spec/spec_helper.rb
@@ -1,21 +0,0 @@
1
- module Rubotium
2
- module Adb
3
- class Command
4
- def initialize(device_serial)
5
- @device_serial = device_serial
6
- end
7
-
8
- def execute(command_to_run)
9
- puts "EXECUTING_COMMAND: #{adb_command} #{command_to_run.executable_command}"
10
- CMD.run_command(adb_command + " " + command_to_run.executable_command)
11
- end
12
-
13
- private
14
- attr_reader :device_serial
15
-
16
- def adb_command
17
- "adb -s #{device_serial} "
18
- end
19
- end
20
- end
21
- end
@@ -1,17 +0,0 @@
1
- module Rubotium
2
- module Adb
3
- class InstallCommand
4
- COMMAND = 'install'
5
- def initialize(apk_path)
6
- @apk_path = apk_path
7
- end
8
-
9
- def executable_command
10
- "#{COMMAND} #{apk_path}"
11
- end
12
-
13
- private
14
- attr_reader :apk_path
15
- end
16
- end
17
- end
@@ -1,36 +0,0 @@
1
- module Rubotium
2
- module Adb
3
- class NoTestRunnerError < StandardError; end
4
- class NoTestPackageError < StandardError; end
5
-
6
- class Instrumentation
7
- attr_accessor :test_package_name, :test_runner
8
- attr_reader :adb_shell
9
-
10
- def initialize(device)
11
- @adb_shell = Rubotium::Adb::Shell.new(device)
12
- end
13
-
14
- def run_test(runable_test)
15
- check_packages
16
- result = adb_shell.run_command(instrument_command(runable_test.package_name, runable_test.test_name))
17
- TestResultParser.new(result, runable_test.package_name, runable_test.test_name)
18
- end
19
-
20
- private
21
- def instrument_command package_name, test_name
22
- "am instrument -w -e class #{class_test(package_name, test_name)} #{test_package_name}/#{test_runner}"
23
- end
24
-
25
- def class_test package_name, test_name
26
- "#{package_name}##{test_name}"
27
- end
28
-
29
- def check_packages
30
- raise NoTestRunnerError if !test_runner
31
- raise NoTestPackageError if !test_package_name
32
- end
33
-
34
- end
35
- end
36
- end
@@ -1,17 +0,0 @@
1
- module Rubotium
2
- module Adb
3
- class UninstallCommand
4
- COMMAND = 'uninstall'
5
- def initialize(package_name)
6
- @package_name = package_name
7
- end
8
-
9
- def executable_command
10
- "#{COMMAND} #{package_name}"
11
- end
12
-
13
- private
14
- attr_reader :package_name
15
- end
16
- end
17
- end
@@ -1,22 +0,0 @@
1
- require 'dex2jar'
2
- module Rubotium
3
- module Apk
4
- class Converter
5
- def initialize(apk_path, output_path)
6
- @apk_path = apk_path
7
- @output_path = output_path
8
- end
9
-
10
- def convert_to_jar
11
- Dex2jar.execute("-f -o #{output_path}", [apk_path])
12
- end
13
-
14
- private
15
- attr_reader :apk_path, :output_path
16
-
17
- def file_exists?
18
- File.exist? apk_path
19
- end
20
- end
21
- end
22
- end
@@ -1,40 +0,0 @@
1
- module Rubotium
2
- class Grouper
3
- def initialize(test_suites, num_of_groups)
4
- @test_suites = test_suites
5
- @num_of_groups = num_of_groups
6
- end
7
-
8
- def create_groups
9
- runnable_tests.each{|runnable|
10
- next_bucket.push(runnable)
11
- }
12
- buckets
13
- end
14
-
15
- def runnable_tests
16
- test_suites.map {|test_suite|
17
- test_suite.test_cases.map{|test|
18
- RunableTest.new(test_suite.name, test.name)
19
- }
20
- }.flatten
21
- end
22
-
23
- def next_bucket
24
- buckets_enum.next
25
- end
26
-
27
- def buckets_enum
28
- @buckets_enum ||= buckets.cycle
29
- end
30
-
31
-
32
- def buckets
33
- @buckets ||= Array.new(num_of_groups) { [] }
34
- end
35
-
36
- private
37
- attr_reader :test_suites, :num_of_groups
38
-
39
- end
40
- end
@@ -1,70 +0,0 @@
1
- require 'set'
2
- module Rubotium
3
- class JarReader
4
- TEST_PATTERN = Regexp.new('public void (test.*)\(')
5
- attr_reader :path_to_jar
6
-
7
- def initialize(jar_path)
8
- @path_to_jar = jar_path
9
- end
10
-
11
- def test_suites
12
- Converter.new(classes_in_jar).convert
13
- end
14
-
15
- def get_tests
16
- parse
17
- end
18
-
19
- private
20
- def classes_in_jar
21
- CMD.run_command("jar -tf #{path_to_jar} | grep '.class'")
22
- end
23
-
24
- def tests_in_class(suite_name)
25
- CMD.run_command "javap -classpath #{path_to_jar} #{suite_name}"
26
- end
27
-
28
- def parse
29
- test_suites.map{|test_suite|
30
- tests_in_class(test_suite.name).scan(TEST_PATTERN).flatten.each{|test|
31
- test_suite.add_test_case(TestCase.new(test))
32
- }
33
- test_suite
34
- }.delete_if{|test_suite| test_suite.test_cases.empty?}
35
- end
36
-
37
-
38
- class Converter
39
- attr_reader :list
40
- def initialize(list_of_classes)
41
- @list = list_of_classes.split
42
- end
43
-
44
- def convert
45
- deduplicated_test_suites
46
- end
47
-
48
- private
49
- def test_suites
50
- converted_class_names.map{|class_name|
51
- TestSuite.new(class_name)
52
- }
53
- end
54
-
55
- def converted_class_names
56
- list.map{|class_name|
57
- class_name.gsub("/", ".")
58
- .gsub(".class", "")
59
- .gsub(/\$.*/, "")
60
- }
61
- end
62
-
63
- def deduplicated_test_suites
64
- test_suites.uniq{|test_suite|
65
- test_suite.name
66
- }
67
- end
68
- end
69
- end
70
- end
@@ -1,11 +0,0 @@
1
- class RunableTest
2
- attr_reader :package_name, :test_name
3
- def initialize(package_name, test_name)
4
- @package_name = package_name
5
- @test_name = test_name
6
- end
7
-
8
- def name
9
- "#{package_name}##{test_name}"
10
- end
11
- end
@@ -1,6 +0,0 @@
1
- class TestCase
2
- attr_reader :name
3
- def initialize(name)
4
- @name = name
5
- end
6
- end
@@ -1,12 +0,0 @@
1
- class TestSuite
2
- attr_reader :name, :test_cases
3
-
4
- def initialize(name)
5
- @name = name
6
- @test_cases = []
7
- end
8
-
9
- def add_test_case(test_case)
10
- test_cases.push(test_case)
11
- end
12
- end
@@ -1,32 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Rubotium::Adb::Instrumentation do
4
- let (:instr) { described_class }
5
- let(:runable_test) {double(RunableTest)}
6
-
7
- context 'running tests' do
8
- let (:inst) { instr.new(" ") }
9
- it 'should raise error if test runner name is not set' do
10
- inst.test_package_name = "test_package"
11
- expect { inst.run_test(runable_test) }.to raise_error (Rubotium::Adb::NoTestRunnerError)
12
- end
13
-
14
- it 'should raise error if test package name is not set' do
15
- inst.test_runner = "runner"
16
- expect { inst.run_test(runable_test) }.to raise_error (Rubotium::Adb::NoTestPackageError)
17
- end
18
-
19
- it 'runs correct test' do
20
- runable_test.stub(:package_name).and_return("package")
21
- runable_test.stub(:test_name).and_return("test")
22
- inst.test_package_name = "package_name"
23
- inst.test_runner = "TestRunner"
24
-
25
- command = "am instrument -w -e class package#test package_name/TestRunner"
26
- Rubotium::Adb::Shell.any_instance.should_receive(:run_command).with(command)
27
- Rubotium::Adb::Shell.any_instance.stub(:run_command).and_return(Fixtures::Adb.test_success)
28
- inst.run_test(runable_test)
29
- end
30
-
31
- end
32
- end
@@ -1,56 +0,0 @@
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
@@ -1,58 +0,0 @@
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