roku_builder 3.3.3 → 3.3.4

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 (42) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +1158 -0
  4. data/.travis.yml +3 -0
  5. data/Gemfile.lock +19 -14
  6. data/README.md +5 -0
  7. data/bin/roku +32 -37
  8. data/config.json.example +2 -2
  9. data/lib/roku_builder/config_manager.rb +83 -118
  10. data/lib/roku_builder/config_parser.rb +192 -0
  11. data/lib/roku_builder/config_validator.rb +125 -0
  12. data/lib/roku_builder/controller.rb +97 -484
  13. data/lib/roku_builder/controller_commands.rb +112 -0
  14. data/lib/roku_builder/error_handler.rb +116 -0
  15. data/lib/roku_builder/inspector.rb +5 -18
  16. data/lib/roku_builder/keyer.rb +3 -11
  17. data/lib/roku_builder/linker.rb +3 -15
  18. data/lib/roku_builder/loader.rb +52 -89
  19. data/lib/roku_builder/manifest_manager.rb +2 -3
  20. data/lib/roku_builder/monitor.rb +15 -12
  21. data/lib/roku_builder/navigator.rb +2 -10
  22. data/lib/roku_builder/packager.rb +1 -7
  23. data/lib/roku_builder/tester.rb +1 -0
  24. data/lib/roku_builder/util.rb +39 -0
  25. data/lib/roku_builder/version.rb +1 -1
  26. data/lib/roku_builder.rb +96 -1
  27. data/roku_builder.gemspec +5 -4
  28. data/tests/roku_builder/config_manager_test.rb +80 -241
  29. data/tests/roku_builder/{controller_config_test.rb → config_parser_test.rb} +5 -5
  30. data/tests/roku_builder/config_validator_test.rb +158 -0
  31. data/tests/roku_builder/controller_commands_test.rb +304 -0
  32. data/tests/roku_builder/controller_test.rb +61 -620
  33. data/tests/roku_builder/error_handler_test.rb +76 -0
  34. data/tests/roku_builder/inspector_test.rb +3 -0
  35. data/tests/roku_builder/keyer_test.rb +3 -2
  36. data/tests/roku_builder/linker_test.rb +2 -1
  37. data/tests/roku_builder/loader_test.rb +2 -0
  38. data/tests/roku_builder/manifest_manager_test.rb +3 -6
  39. data/tests/roku_builder/monitor_test.rb +5 -13
  40. data/tests/roku_builder/navigator_test.rb +2 -0
  41. data/tests/roku_builder/test_helper.rb +38 -0
  42. metadata +34 -11
@@ -0,0 +1,76 @@
1
+ require_relative "test_helper.rb"
2
+
3
+ class RokuBuilder::ErrorHandler
4
+ class << self
5
+ def abort
6
+ #do nothing
7
+ end
8
+ end
9
+ end
10
+
11
+ class ErrorHandlerTest < Minitest::Test
12
+ def test_handle_error_codes
13
+ error_groups = {
14
+ fatal: {
15
+ options_code: [
16
+ RokuBuilder::EXTRA_COMMANDS,
17
+ RokuBuilder::NO_COMMANDS,
18
+ RokuBuilder::EXTRA_SOURCES,
19
+ RokuBuilder::NO_SOURCE,
20
+ RokuBuilder::BAD_CURRENT,
21
+ RokuBuilder::BAD_DEEPLINK,
22
+ RokuBuilder::BAD_IN_FILE
23
+ ],
24
+ configure_code:[
25
+ RokuBuilder::CONFIG_OVERWRITE,
26
+ ],
27
+ device_code: [
28
+ RokuBuilder::BAD_DEVICE,
29
+ RokuBuilder::NO_DEVICES,
30
+ ],
31
+ load_code: [
32
+ RokuBuilder::MISSING_CONFIG,
33
+ RokuBuilder::INVALID_CONFIG,
34
+ RokuBuilder::MISSING_MANIFEST,
35
+ RokuBuilder::UNKNOWN_DEVICE,
36
+ RokuBuilder::UNKNOWN_PROJECT,
37
+ RokuBuilder::UNKNOWN_STAGE,
38
+ ],
39
+ command_code: [
40
+ RokuBuilder::FAILED_SIDELOAD,
41
+ RokuBuilder::FAILED_SIGNING,
42
+ RokuBuilder::FAILED_DEEPLINKING,
43
+ RokuBuilder::FAILED_NAVIGATING,
44
+ RokuBuilder::FAILED_SCREENCAPTURE
45
+ ]
46
+ },
47
+ info: {
48
+ device_code: [
49
+ RokuBuilder::CHANGED_DEVICE
50
+ ],
51
+ configure_code:[
52
+ RokuBuilder::SUCCESS
53
+ ]
54
+ },
55
+ warn: {
56
+ load_code: [
57
+ RokuBuilder::DEPRICATED_CONFIG
58
+ ]
59
+ }
60
+ }
61
+ error_groups.each_pair do |type,errors|
62
+ errors.each_pair do |key,value|
63
+ value.each do |code|
64
+ logger = Minitest::Mock.new
65
+ options = {logger: logger}
66
+ options[:options] = {} if key == :load_code
67
+ options[key] = code
68
+ logger.expect(type, nil) {|string| string.class == String}
69
+ method = "handle_#{key}s"
70
+ RokuBuilder::ErrorHandler.send(method.to_sym, **options)
71
+ logger.verify
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
@@ -55,6 +55,7 @@ class InspectorTest < Minitest::Test
55
55
  assert_equal payload[:password], arg2[:passwd]
56
56
  assert payload[:archive] === arg2[:archive]
57
57
  end
58
+ faraday.expect(:headers, {})
58
59
  faraday.expect(:request, nil, [:digest, device_config[:user], device_config[:password]])
59
60
  faraday.expect(:request, nil, [:multipart])
60
61
  faraday.expect(:request, nil, [:url_encoded])
@@ -131,6 +132,7 @@ class InspectorTest < Minitest::Test
131
132
  assert_equal payload[:password], arg2[:passwd]
132
133
  assert payload[:archive] === arg2[:archive]
133
134
  end
135
+ faraday.expect(:headers, {})
134
136
  faraday.expect(:request, nil, [:digest, device_config[:user], device_config[:password]])
135
137
  faraday.expect(:request, nil, [:multipart])
136
138
  faraday.expect(:request, nil, [:url_encoded])
@@ -190,6 +192,7 @@ class InspectorTest < Minitest::Test
190
192
  assert_equal payload[:password], arg2[:passwd]
191
193
  assert payload[:archive] === arg2[:archive]
192
194
  end
195
+ faraday.expect(:headers, {})
193
196
  faraday.expect(:request, nil, [:digest, device_config[:user], device_config[:password]])
194
197
  faraday.expect(:request, nil, [:multipart])
195
198
  faraday.expect(:request, nil, [:url_encoded])
@@ -22,7 +22,6 @@ class KeyerTest < Minitest::Test
22
22
  response.expect(:body, body)
23
23
 
24
24
 
25
- package_info = {}
26
25
  dev_id = nil
27
26
  keyer = RokuBuilder::Keyer.new(**device_config)
28
27
  Faraday.stub(:new, connection, faraday) do
@@ -55,7 +54,6 @@ class KeyerTest < Minitest::Test
55
54
  response.expect(:body, body)
56
55
 
57
56
 
58
- package_info = {}
59
57
  dev_id = nil
60
58
  keyer = RokuBuilder::Keyer.new(**device_config)
61
59
  Faraday.stub(:new, connection, faraday) do
@@ -95,11 +93,14 @@ class KeyerTest < Minitest::Test
95
93
  assert_equal payload[:password], arg2[:passwd]
96
94
  assert payload[:archive] === arg2[:archive]
97
95
  end
96
+ faraday.expect(:headers, {})
98
97
  faraday.expect(:request, nil, [:digest, device_config[:user], device_config[:password]])
99
98
  faraday.expect(:request, nil, [:multipart])
100
99
  faraday.expect(:request, nil, [:url_encoded])
101
100
  faraday.expect(:adapter, nil, [Faraday.default_adapter])
102
101
 
102
+ # This test fails with SEED=21894 due to the random number generator
103
+ # spitting out the same number twice
103
104
  dev_id = Proc.new { Random.rand(100) }
104
105
  keyer = RokuBuilder::Keyer.new(**device_config)
105
106
  key_changed = nil
@@ -12,10 +12,11 @@ class LinkerTest < Minitest::Test
12
12
  password: "password",
13
13
  logger: Logger.new("/dev/null")
14
14
  }
15
- path = "/launch/dev?a=A&b=B:C&d=a%5Cb"
15
+ path = "/launch/dev?a=A&b=B%3AC&d=a%5Cb"
16
16
  options = 'a:A, b:B:C, d:a\b'
17
17
 
18
18
  connection.expect(:post, response, [path])
19
+ faraday.expect(:headers, {})
19
20
  faraday.expect(:request, nil, [:digest, device_config[:user], device_config[:password]])
20
21
  faraday.expect(:request, nil, [:multipart])
21
22
  faraday.expect(:request, nil, [:url_encoded])
@@ -25,6 +25,7 @@ class LoaderTest < Minitest::Test
25
25
  }
26
26
  path = "/plugin_install"
27
27
 
28
+ faraday.expect(:headers, {})
28
29
  faraday.expect(:request, nil, [:digest, device_config[:user], device_config[:password]])
29
30
  faraday.expect(:request, nil, [:multipart])
30
31
  faraday.expect(:request, nil, [:url_encoded])
@@ -83,6 +84,7 @@ class LoaderTest < Minitest::Test
83
84
  }
84
85
  path = "/plugin_install"
85
86
 
87
+ faraday.expect(:headers, {})
86
88
  faraday.expect(:request, nil, [:digest, device_config[:user], device_config[:password]])
87
89
  faraday.expect(:request, nil, [:multipart])
88
90
  faraday.expect(:request, nil, [:url_encoded])
@@ -2,35 +2,32 @@ require_relative "test_helper.rb"
2
2
 
3
3
  class ManifestManagerTest < Minitest::Test
4
4
  def test_manifest_manager_update
5
- logger = Logger.new('/dev/null')
6
5
  root_dir = File.join(File.dirname(__FILE__), "test_files", "manifest_manager_test")
7
6
  FileUtils.cp(File.join(root_dir, "manifest_template"), File.join(root_dir, "manifest"))
8
7
  build_version = nil
9
8
  Time.stub(:now, Time.new(2001, 02, 01)) do
10
- build_version = RokuBuilder::ManifestManager.update_build(root_dir: root_dir, logger: logger)
9
+ build_version = RokuBuilder::ManifestManager.update_build(root_dir: root_dir)
11
10
  end
12
11
  assert_equal "020101.2", build_version
13
12
  FileUtils.rm(File.join(root_dir, "manifest"))
14
13
  end
15
14
 
16
15
  def test_manifest_manager_update_missing_build_number
17
- logger = Logger.new('/dev/null')
18
16
  root_dir = File.join(File.dirname(__FILE__), "test_files", "manifest_manager_test")
19
17
  FileUtils.cp(File.join(root_dir, "manifest_template_2"), File.join(root_dir, "manifest"))
20
18
  build_version = nil
21
19
  Time.stub(:now, Time.new(2001, 02, 01)) do
22
- build_version = RokuBuilder::ManifestManager.update_build(root_dir: root_dir, logger: logger)
20
+ build_version = RokuBuilder::ManifestManager.update_build(root_dir: root_dir)
23
21
  end
24
22
  assert_equal "020101.1", build_version
25
23
  FileUtils.rm(File.join(root_dir, "manifest"))
26
24
  end
27
25
 
28
26
  def test_manifest_manager_build_version
29
- logger = Logger.new('/dev/null')
30
27
  root_dir = File.join(File.dirname(__FILE__), "test_files", "manifest_manager_test")
31
28
  FileUtils.cp(File.join(root_dir, "manifest_template"), File.join(root_dir, "manifest"))
32
29
  build_version = nil
33
- build_version = RokuBuilder::ManifestManager.build_version(root_dir: root_dir, logger: logger)
30
+ build_version = RokuBuilder::ManifestManager.build_version(root_dir: root_dir)
34
31
  assert_equal "010101.1", build_version
35
32
  FileUtils.rm(File.join(root_dir, "manifest"))
36
33
  end
@@ -9,15 +9,11 @@ class MonitorTest < Minitest::Test
9
9
  password: "password",
10
10
  logger: Logger.new("/dev/null")
11
11
  }
12
- monitor_config = {
13
- 'Host' => device_config[:ip],
14
- 'Post' => 8085
15
- }
16
12
  monitor = RokuBuilder::Monitor.new(**device_config)
17
13
 
18
14
  connection.expect(:waitfor, nil) do |config|
19
- assert_equal /./, config['Match']
20
- assert_equal false, config['Timeout']
15
+ assert_equal(/./, config['Match'])
16
+ assert_equal(false, config['Timeout'])
21
17
  end
22
18
 
23
19
  def monitor.gets
@@ -40,20 +36,16 @@ class MonitorTest < Minitest::Test
40
36
  password: "password",
41
37
  logger: Logger.new("/dev/null")
42
38
  }
43
- monitor_config = {
44
- 'Host' => device_config[:ip],
45
- 'Post' => 8085
46
- }
47
39
  monitor = RokuBuilder::Monitor.new(**device_config)
48
40
 
49
41
  connection.expect(:waitfor, nil) do |config|
50
- assert_equal /./, config['Match']
51
- assert_equal false, config['Timeout']
42
+ assert_equal(/./, config['Match'])
43
+ assert_equal(false, config['Timeout'])
52
44
  end
53
45
  connection.expect(:puts, nil, ["text"])
54
46
 
55
47
  def monitor.gets
56
- @count = 0 unless @count
48
+ @count ||= 0
57
49
  sleep(0.1)
58
50
  case @count
59
51
  when 0
@@ -54,6 +54,8 @@ class NavigatorTest < Minitest::Test
54
54
  response.expect(:success?, true)
55
55
  end
56
56
  end
57
+ faraday.expect(:headers, {})
58
+ faraday.expect(:request, nil, [:digest, device_config[:user], device_config[:password]])
57
59
  faraday.expect(:request, nil, [:multipart])
58
60
  faraday.expect(:request, nil, [:url_encoded])
59
61
  faraday.expect(:adapter, nil, [Faraday.default_adapter])
@@ -1,6 +1,44 @@
1
1
  require "simplecov"
2
+ require "coveralls"
3
+
4
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter::new([
5
+ SimpleCov::Formatter::HTMLFormatter,
6
+ Coveralls::SimpleCov::Formatter
7
+ ])
2
8
  SimpleCov.start
3
9
 
4
10
  require "byebug"
5
11
  require "roku_builder"
6
12
  require "minitest/autorun"
13
+
14
+
15
+ def good_config
16
+ {
17
+ devices: {
18
+ default: :roku,
19
+ roku: {
20
+ ip: "192.168.0.100",
21
+ user: "user",
22
+ password: "password"
23
+ }
24
+ },
25
+ projects: {
26
+ default: :project1,
27
+ project1: {
28
+ directory: "/dev/null",
29
+ folders: ["resources","source"],
30
+ files: ["manifest"],
31
+ app_name: "<app name>",
32
+ stages:{
33
+ production: {
34
+ branch: "production",
35
+ key: {
36
+ keyed_pkg: "/dev/null",
37
+ password: "<password for pkg>"
38
+ }
39
+ }
40
+ }
41
+ }
42
+ }
43
+ }
44
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roku_builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.3
4
+ version: 3.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - greeneca
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-14 00:00:00.000000000 Z
11
+ date: 2016-04-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.1'
19
+ version: '1.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.1'
26
+ version: '1.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: faraday
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 1.2.9
61
+ version: '1.3'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 1.2.9
68
+ version: '1.3'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: net-ping
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -100,28 +100,28 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '10.0'
103
+ version: '11.1'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '10.0'
110
+ version: '11.1'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: byebug
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '3.5'
117
+ version: '8.2'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '3.5'
124
+ version: '8.2'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: minitest
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -178,6 +178,20 @@ dependencies:
178
178
  - - "~>"
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0.11'
181
+ - !ruby/object:Gem::Dependency
182
+ name: coveralls
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: '0.8'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: '0.8'
181
195
  - !ruby/object:Gem::Dependency
182
196
  name: yard
183
197
  requirement: !ruby/object:Gem::Requirement
@@ -215,6 +229,8 @@ extensions: []
215
229
  extra_rdoc_files: []
216
230
  files:
217
231
  - ".gitignore"
232
+ - ".rubocop.yml"
233
+ - ".travis.yml"
218
234
  - Gemfile
219
235
  - Gemfile.lock
220
236
  - Guardfile
@@ -224,7 +240,11 @@ files:
224
240
  - config.json.example
225
241
  - lib/roku_builder.rb
226
242
  - lib/roku_builder/config_manager.rb
243
+ - lib/roku_builder/config_parser.rb
244
+ - lib/roku_builder/config_validator.rb
227
245
  - lib/roku_builder/controller.rb
246
+ - lib/roku_builder/controller_commands.rb
247
+ - lib/roku_builder/error_handler.rb
228
248
  - lib/roku_builder/inspector.rb
229
249
  - lib/roku_builder/keyer.rb
230
250
  - lib/roku_builder/linker.rb
@@ -239,8 +259,11 @@ files:
239
259
  - rakefile
240
260
  - roku_builder.gemspec
241
261
  - tests/roku_builder/config_manager_test.rb
242
- - tests/roku_builder/controller_config_test.rb
262
+ - tests/roku_builder/config_parser_test.rb
263
+ - tests/roku_builder/config_validator_test.rb
264
+ - tests/roku_builder/controller_commands_test.rb
243
265
  - tests/roku_builder/controller_test.rb
266
+ - tests/roku_builder/error_handler_test.rb
244
267
  - tests/roku_builder/inspector_test.rb
245
268
  - tests/roku_builder/keyer_test.rb
246
269
  - tests/roku_builder/linker_test.rb