monkey_master 1.0.0 → 1.1.0

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.
@@ -1,3 +1,3 @@
1
1
  module MonkeyMaster
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0"
3
3
  end
@@ -15,9 +15,12 @@ Gem::Specification.new do |spec|
15
15
 
16
16
  spec.files = `git ls-files`.split($/)
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
+ spec.test_files = spec.files.grep(%r{^(spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.3"
22
- spec.add_development_dependency "rake"
21
+ spec.add_runtime_dependency 'docopt', '~> 0.5'
22
+ spec.add_development_dependency 'rspec', '~> 3.0'
23
+ spec.add_development_dependency 'pry', '~> 0.10'
24
+ spec.add_development_dependency 'rake', '~> 10.3'
25
+ spec.add_development_dependency 'bundler', '~> 1.3'
23
26
  end
@@ -0,0 +1,106 @@
1
+ require 'spec_helper'
2
+
3
+ describe MonkeyMaster::MonkeyCommander do
4
+ let(:device_stubs) { %w(80123 34555) }
5
+ let(:default_args) { '-v 80000 --throttle 200 --ignore-timeouts --pct-majornav 20 --pct-appswitch 0 --kill-process-after-error' }
6
+
7
+ before do
8
+ allow(MonkeyMaster::ADB).to receive(:monkey_run) { 0 }
9
+ allow(MonkeyMaster::ADB).to receive(:monkey_stop) { `echo 'testing'` }
10
+ allow(MonkeyMaster::ADB).to receive(:detect_devices) { %w(42 43) }
11
+ allow(MonkeyMaster::ADB).to receive(:kill_monkeys) { %w(42 43) }
12
+ allow(MonkeyMaster::ADB).to receive(:start_logging) { nil }
13
+ allow(MonkeyMaster::ADB).to receive(:end_logging) { nil }
14
+ end
15
+
16
+ context 'killing monkeys' do
17
+ let(:commander) { MonkeyMaster::MonkeyCommander.new('com.test.Example') }
18
+
19
+ describe 'invalid device ids are given' do
20
+ before { commander.device_list = device_stubs }
21
+
22
+ it 'should be able to call the kill command' do
23
+ expect { commander.kill_monkeys }.not_to raise_error
24
+ end
25
+ end
26
+
27
+ describe 'when no devices are configured' do
28
+ it 'should be able to call the kill command' do
29
+ expect { commander.kill_monkeys }.not_to raise_error
30
+ end
31
+ end
32
+ end
33
+
34
+ context 'commanding monkeys' do
35
+ describe '+ positive' do
36
+ let(:app_id) { 'com.test.Example' }
37
+ let(:commander) do
38
+ commander = MonkeyMaster::MonkeyCommander.new(app_id)
39
+ commander.instance_variable_set(:@device_list, device_stubs)
40
+ commander
41
+ end
42
+
43
+ describe 'regular run' do
44
+ before do
45
+ allow(commander).to receive(:archive_and_clean_log) { nil }
46
+ end
47
+
48
+ it 'should start and stop adb monkeys' do
49
+ device_stubs.each do |device_stub|
50
+ expect(MonkeyMaster::ADB).to receive(:monkey_run).with(app_id, device_stub, default_args)
51
+ expect(MonkeyMaster::ADB).to receive(:monkey_stop).with(app_id, device_stub)
52
+ end
53
+ commander.command_monkeys
54
+ end
55
+
56
+ it 'should accept arguments for adb monkeys' do
57
+ adb_args = "--throttle 3000"
58
+ expect(MonkeyMaster::ADB).to receive(:monkey_run).with(app_id, device_stubs.first, adb_args)
59
+ commander.command_monkeys(adb_args)
60
+ end
61
+
62
+ it 'should make a log for each iteration of each device' do
63
+ commander.instance_variable_set(:@iterations, 2)
64
+ # two devices, two iterations => 4 runs
65
+ expect(commander).to receive(:archive_and_clean_log).exactly(4).times
66
+ expect(MonkeyMaster::ADB).to receive(:end_logging).once
67
+ commander.command_monkeys
68
+ end
69
+
70
+ it 'should kill the monkeys after running' do
71
+ expect(MonkeyMaster::ADB).to receive(:kill_monkeys).with(device_stubs)
72
+ commander.command_monkeys
73
+ end
74
+ end
75
+ end
76
+
77
+ describe '- negative' do
78
+ describe 'with an invalid app id' do
79
+ before do
80
+ allow_any_instance_of(MonkeyMaster::MonkeyCommander).to receive(:archive_and_clean_log) { true }
81
+ allow_any_instance_of(MonkeyMaster::MonkeyCommander).to receive(:log_for_device) { true }
82
+ end
83
+ it 'should raise an error' do
84
+ commander = MonkeyMaster::MonkeyCommander.new(nil)
85
+ commander.device_list = device_stubs
86
+ expect { commander.command_monkeys }.to raise_error(ArgumentError)
87
+ end
88
+ end
89
+
90
+ describe 'with invalid devices' do
91
+ before do
92
+ allow_any_instance_of(MonkeyMaster::MonkeyCommander).to receive(:archive_and_clean_log) { true }
93
+ allow_any_instance_of(MonkeyMaster::MonkeyCommander).to receive(:log_for_device) {
94
+ raise ArgumentError, 'It doesn’t seem like there are ready, connected devices.'
95
+ }
96
+ end
97
+ it 'should raise an error' do
98
+ commander = MonkeyMaster::MonkeyCommander.new('com.test.Example')
99
+ commander.device_list = device_stubs
100
+ # invalid devices, should raise an exception
101
+ expect { commander.command_monkeys }.to raise_error(ArgumentError)
102
+ end
103
+ end
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,7 @@
1
+ require 'bundler/setup'
2
+ Bundler.setup
3
+
4
+ require 'monkey_master'
5
+
6
+ RSpec.configure do |config|
7
+ end
metadata CHANGED
@@ -1,80 +1,133 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: monkey_master
3
- version: !ruby/object:Gem::Version
4
- version: 1.0.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.0
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - Lukas Nagl
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
-
12
- date: 2013-08-18 00:00:00 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: bundler
11
+ date: 2015-07-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: docopt
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.5'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.0'
34
+ type: :development
16
35
  prerelease: false
17
- requirement: &id001 !ruby/object:Gem::Requirement
18
- requirements:
19
- - - ~>
20
- - !ruby/object:Gem::Version
21
- version: "1.3"
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.10'
22
48
  type: :development
23
- version_requirements: *id001
24
- - !ruby/object:Gem::Dependency
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.10'
55
+ - !ruby/object:Gem::Dependency
25
56
  name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '10.3'
62
+ type: :development
26
63
  prerelease: false
27
- requirement: &id002 !ruby/object:Gem::Requirement
28
- requirements:
29
- - &id003
30
- - ">="
31
- - !ruby/object:Gem::Version
32
- version: "0"
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '10.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: bundler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.3'
33
76
  type: :development
34
- version_requirements: *id002
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.3'
35
83
  description: A tool for conveniently employing Android adb monkeys.
36
- email:
84
+ email:
37
85
  - lukas.nagl@innovaptor.com
38
- executables:
86
+ executables:
39
87
  - monkey_master
40
88
  extensions: []
41
-
42
89
  extra_rdoc_files: []
43
-
44
- files:
45
- - .gitignore
90
+ files:
91
+ - ".gitignore"
92
+ - ".rubocop.yml"
93
+ - ".travis.yml"
46
94
  - Gemfile
47
95
  - LICENSE.txt
48
96
  - README.md
49
97
  - Rakefile
50
98
  - bin/monkey_master
51
99
  - lib/monkey_master.rb
100
+ - lib/monkey_master/adb.rb
52
101
  - lib/monkey_master/monkey_commander.rb
53
102
  - lib/monkey_master/version.rb
54
103
  - monkey_master.gemspec
55
- - test/test_monkey_master.rb
104
+ - spec/monkey_master_spec.rb
105
+ - spec/spec_helper.rb
56
106
  homepage: https://github.com/j4zz/monkey_master.git
57
- licenses:
107
+ licenses:
58
108
  - MIT
59
109
  metadata: {}
60
-
61
110
  post_install_message:
62
111
  rdoc_options: []
63
-
64
- require_paths:
112
+ require_paths:
65
113
  - lib
66
- required_ruby_version: !ruby/object:Gem::Requirement
67
- requirements:
68
- - *id003
69
- required_rubygems_version: !ruby/object:Gem::Requirement
70
- requirements:
71
- - *id003
114
+ required_ruby_version: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ required_rubygems_version: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
72
124
  requirements: []
73
-
74
125
  rubyforge_project:
75
- rubygems_version: 2.0.3
126
+ rubygems_version: 2.4.3
76
127
  signing_key:
77
128
  specification_version: 4
78
129
  summary: A tool for conveniently employing Android adb monkeys.
79
- test_files:
80
- - test/test_monkey_master.rb
130
+ test_files:
131
+ - spec/monkey_master_spec.rb
132
+ - spec/spec_helper.rb
133
+ has_rdoc:
@@ -1,50 +0,0 @@
1
- require 'test/unit'
2
- require 'monkey_master'
3
-
4
- class MonkeyCommanderTest < Test::Unit::TestCase
5
- # Test the kill option in case no devices are connected
6
- def test_kill_no_devices
7
- assert_nothing_raised do
8
- commander = MonkeyMaster::MonkeyCommander.new("com.test.Example")
9
- commander.kill_monkeys
10
- end
11
- end
12
-
13
- # Test the kill option with a list of invalid devices
14
- def test_kill_invalid_devices
15
- assert_nothing_raised do
16
- commander = MonkeyMaster::MonkeyCommander.new("com.test.Example")
17
- commander.device_list = ["80123","34555"]
18
- commander.kill_monkeys
19
- end
20
- end
21
-
22
- # Test trying regular execution in case no devices are connected
23
- def test_command_no_devices
24
- assert_raise ArgumentError do
25
- commander = MonkeyMaster::MonkeyCommander.new("com.test.Example")
26
- # no devices
27
- commander.command_monkeys
28
- end
29
- end
30
-
31
- # Test trying regular execution with an invalid app id
32
- def test_command_no_app_id
33
- assert_raise ArgumentError do
34
- commander = MonkeyMaster::MonkeyCommander.new(nil)
35
- commander.device_list = ["80123","34555"]
36
- # no app id
37
- commander.command_monkeys
38
- end
39
- end
40
-
41
- # Test trying regular execution when invalid devices are given
42
- def test_command_invalid_devices
43
- assert_raise ArgumentError do
44
- commander = MonkeyMaster::MonkeyCommander.new("com.test.Example")
45
- commander.device_list = ["80123","34555"]
46
- # invalid devices, should raise an exception
47
- commander.command_monkeys
48
- end
49
- end
50
- end