roku_builder 3.6.0 → 3.6.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 878733ac2055fcbfa7fb162abf1f36a3d8e200c7
4
- data.tar.gz: ee4a6a97eb48e0befd1e9dd5ec8e542396411f9b
3
+ metadata.gz: 5fd419ef8714c1ee725684939cff69165e1daac9
4
+ data.tar.gz: 6fc59c0b8453ee8ea26f765b493892044faacf68
5
5
  SHA512:
6
- metadata.gz: bb15a8cdf99cdf04716c9ca95c8b531a492f1eff3632f7a663d0e061f34dcc5e5951b10d182bca3fe0cec130201010f0dc32f7a8fbbbb13890666ba9c3918fbb
7
- data.tar.gz: 5894aeed3e103c46480cce8061b3b2fbd1a469c3f2391d6e72420a6d4f8531485d4ef15692b158959a30fd3529ecf8479129e558d4a0f03700e09ae26feb0d17
6
+ metadata.gz: 601f919047c348e2511456e37c5a5810df71f273fbc9005671cd1af815e251546ff4939334473e7a1010c84e2d23fce68ad4f0c7c5936584d15a95816e37772a
7
+ data.tar.gz: a015de3a94792cfa7d8051f305834cb3c99f1139f2be004ce519cdd6213e870cf51525233a99005cca4a1edf8026fb8bcb712cb1f47bb827a75ccb5d7c40eaff
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- roku_builder (3.6.0)
4
+ roku_builder (3.6.1)
5
5
  faraday (~> 0.9)
6
6
  faraday-digestauth (~> 0.2)
7
7
  git (~> 1.3)
data/bin/roku CHANGED
@@ -133,6 +133,10 @@ OptionParser.new do |opts|
133
133
  options[:in] = i
134
134
  end
135
135
 
136
+ opts.on("-x", "--exclude", "Apply exclude config to sideload") do
137
+ options[:exclude] = true
138
+ end
139
+
136
140
  opts.on("-V", "--verbose", "Print Info message") do
137
141
  options[:verbose] = true
138
142
  end
@@ -145,7 +145,7 @@ module RokuBuilder
145
145
  files: configs[:project_config][:files],
146
146
  }
147
147
  all_commands = options.keys & Controller.commands
148
- if Controller.exclude_commands.include?(all_commands.first)
148
+ if options[:exclude] or Controller.exclude_commands.include?(all_commands.first)
149
149
  content[:excludes] = configs[:project_config][:excludes]
150
150
  end
151
151
 
@@ -122,8 +122,6 @@ module RokuBuilder
122
122
  case key
123
123
  when :options
124
124
  args[:options] = options
125
- when :config
126
- args[:config] = config
127
125
  when :configs
128
126
  args[:configs] = configs
129
127
  when :logger
@@ -1,4 +1,4 @@
1
1
  module RokuBuilder
2
2
  # Version of the RokuBuilder Gem
3
- VERSION = "3.6.0"
3
+ VERSION = "3.6.1"
4
4
  end
@@ -49,6 +49,20 @@ class ConfigManagerTest < Minitest::Test
49
49
  assert_nil config
50
50
  assert_nil configs
51
51
 
52
+ # Test Unknown Device
53
+ options = {validate: true, device: :bad, config: target_config}
54
+ code, config, configs = RokuBuilder::ConfigManager.load_config(options: options, logger: logger)
55
+ assert_equal RokuBuilder::UNKNOWN_DEVICE, code
56
+ assert_nil config
57
+ assert_nil configs
58
+
59
+ # Test Unknown Project
60
+ options = {validate: true, project: :bad, config: target_config}
61
+ code, config, configs = RokuBuilder::ConfigManager.load_config(options: options, logger: logger)
62
+ assert_equal RokuBuilder::UNKNOWN_PROJECT, code
63
+ assert_nil config
64
+ assert_nil configs
65
+
52
66
  # Test Depricated Config
53
67
  options = {validate: true, stage: 'production', config: target_config}
54
68
  RokuBuilder::ConfigValidator.stub(:validate_config, [-1]) do
@@ -78,6 +92,8 @@ class ConfigManagerTest < Minitest::Test
78
92
  assert_equal Hash, config.class
79
93
  assert_equal Hash, configs.class
80
94
 
95
+
96
+
81
97
  File.delete(target_config) if File.exist?(target_config)
82
98
  end
83
99
 
@@ -17,6 +17,41 @@ class ConfigParserTest < Minitest::Test
17
17
  assert_equal "/dev/null", configs[:manifest_config][:root_dir]
18
18
  end
19
19
 
20
+ def test_setup_project_config_current
21
+ args = {
22
+ config: {},
23
+ options: {current: true }
24
+ }
25
+ project = {}
26
+ File.stub(:exist?, true) do
27
+ project = RokuBuilder::ConfigParser.send(:setup_project_config, **args)
28
+ end
29
+ assert_equal Pathname.pwd.to_s, project[:directory]
30
+ assert_equal :current, project[:stage_method]
31
+ assert_nil project[:folders]
32
+ assert_nil project[:files]
33
+ end
34
+
35
+ def test_setup_stage_config_script
36
+ args = {
37
+ configs: {project_config: {directory: "/tmp", stage_method: :script, stages: {production: {script: "script"}}}},
38
+ options: {stage: "production"},
39
+ logger: Logger.new("/dev/null")
40
+ }
41
+ config, stage = RokuBuilder::ConfigParser.send(:setup_stage_config, **args)
42
+ assert_equal args[:configs][:project_config][:stages][:production][:script], config[:key]
43
+ end
44
+
45
+ def test_setup_stage_config_git_ref
46
+ args = {
47
+ configs: {project_config: {directory: "/tmp", stage_method: :git, }},
48
+ options: {stage: "production", ref: "git-ref"},
49
+ logger: Logger.new("/dev/null")
50
+ }
51
+ config, stage = RokuBuilder::ConfigParser.send(:setup_stage_config, **args)
52
+ assert_equal args[:options][:ref], config[:key]
53
+ end
54
+
20
55
  def test_manifest_config_project_select
21
56
  logger = Logger.new("/dev/null")
22
57
  options = {
@@ -38,4 +73,52 @@ class ConfigParserTest < Minitest::Test
38
73
  assert_equal Hash, config.class
39
74
  assert_equal "/dev/nuller", configs[:project_config][:directory]
40
75
  end
76
+
77
+ def test_setup_sideload_config
78
+ args = {
79
+ configs: {project_config: {directory: "/tmp", folders: ["a", "b"], files: ["c", "d"], excludes: []}, init_params: {}},
80
+ options: {sideload: true}
81
+ }
82
+ RokuBuilder::ConfigParser.send(:setup_sideload_config, **args)
83
+
84
+ refute_nil args[:configs][:sideload_config]
85
+ refute_nil args[:configs][:sideload_config][:content]
86
+ refute_nil args[:configs][:build_config]
87
+ refute_nil args[:configs][:build_config][:content]
88
+ refute_nil args[:configs][:init_params][:loader]
89
+ refute_nil args[:configs][:init_params][:loader][:root_dir]
90
+
91
+ assert_nil args[:configs][:sideload_config][:content][:excludes]
92
+ assert_nil args[:configs][:sideload_config][:update_manifest]
93
+ assert_nil args[:configs][:sideload_config][:infile]
94
+ end
95
+ def test_setup_sideload_config_exclude
96
+ args = {
97
+ configs: {project_config: {directory: "/tmp", folders: ["a", "b"], files: ["c", "d"], excludes: []}, init_params: {}},
98
+ options: {sideload: true}
99
+ }
100
+ RokuBuilder::ConfigParser.send(:setup_sideload_config, **args)
101
+ assert_nil args[:configs][:sideload_config][:content][:excludes]
102
+
103
+ args = {
104
+ configs: {project_config: {directory: "/tmp", folders: ["a", "b"], files: ["c", "d"], excludes: []}, init_params: {}},
105
+ options: {build: true}
106
+ }
107
+ RokuBuilder::ConfigParser.send(:setup_sideload_config, **args)
108
+ refute_nil args[:configs][:sideload_config][:content][:excludes]
109
+
110
+ args = {
111
+ configs: {project_config: {directory: "/tmp", folders: ["a", "b"], files: ["c", "d"], excludes: []}, init_params: {}},
112
+ options: {package: true}
113
+ }
114
+ RokuBuilder::ConfigParser.send(:setup_sideload_config, **args)
115
+ refute_nil args[:configs][:sideload_config][:content][:excludes]
116
+
117
+ args = {
118
+ configs: {project_config: {directory: "/tmp", folders: ["a", "b"], files: ["c", "d"], excludes: []}, init_params: {}},
119
+ options: {sideload: true, exclude: true}
120
+ }
121
+ RokuBuilder::ConfigParser.send(:setup_sideload_config, **args)
122
+ refute_nil args[:configs][:sideload_config][:content][:excludes]
123
+ end
41
124
  end
@@ -2,6 +2,13 @@ require_relative "test_helper.rb"
2
2
 
3
3
  class ControllerCommandsTest < Minitest::Test
4
4
 
5
+ def test_controller_commands_validate
6
+ logger = Minitest::Mock.new
7
+ logger.expect(:info, nil, ["Config validated"])
8
+ code = RokuBuilder::ControllerCommands.validate(logger: logger)
9
+ assert_equal RokuBuilder::SUCCESS, code
10
+ logger.verify
11
+ end
5
12
  def test_controller_commands_sideload
6
13
  logger = Logger.new("/dev/null")
7
14
  loader = Minitest::Mock.new
@@ -189,6 +196,43 @@ class ControllerCommandsTest < Minitest::Test
189
196
  mock.verify
190
197
  assert_equal RokuBuilder::SUCCESS, code
191
198
  end
199
+ def test_controller_commands_deeplink_sideload
200
+ logger = Logger.new("/dev/null")
201
+ mock = Minitest::Mock.new
202
+
203
+ ran_sideload = false
204
+
205
+ sideload = Proc.new {|a, b, c| ran_sideload = true}
206
+
207
+ code = nil
208
+ options = {deeplink: true, set_stage: true, stage: 'production', deeplink_options: "a:b", config: "~/.roku_config.json"}
209
+ config = good_config
210
+ code, configs = RokuBuilder::ConfigParser.parse_config(options: options, config: config, logger: logger)
211
+ mock.expect(:link, "true", [configs[:deeplink_config]])
212
+ RokuBuilder::Linker.stub(:new, mock) do
213
+ RokuBuilder::ControllerCommands.stub(:sideload, sideload) do
214
+ code = RokuBuilder::Controller.send(:execute_commands, {options: options, config: config, configs: configs, logger: logger})
215
+ end
216
+ end
217
+ mock.verify
218
+ assert_equal RokuBuilder::SUCCESS, code
219
+ assert ran_sideload
220
+ end
221
+ def test_controller_commands_deeplink_fail
222
+ logger = Logger.new("/dev/null")
223
+ mock = Minitest::Mock.new
224
+
225
+ code = nil
226
+ options = {deeplink: true, stage: 'production', deeplink_options: "a:b", config: "~/.roku_config.json"}
227
+ config = good_config
228
+ code, configs = RokuBuilder::ConfigParser.parse_config(options: options, config: config, logger: logger)
229
+ mock.expect(:link, false, [configs[:deeplink_config]])
230
+ RokuBuilder::Linker.stub(:new, mock) do
231
+ code = RokuBuilder::Controller.send(:execute_commands, {options: options, config: config, configs: configs, logger: logger})
232
+ end
233
+ mock.verify
234
+ assert_equal RokuBuilder::FAILED_DEEPLINKING, code
235
+ end
192
236
  def test_controller_commands_delete
193
237
  logger = Logger.new("/dev/null")
194
238
  loader = Minitest::Mock.new
@@ -29,6 +29,11 @@ class ControllerTest < Minitest::Test
29
29
  current: true
30
30
  }
31
31
  assert_equal RokuBuilder::BAD_CURRENT, RokuBuilder::Controller.send(:validate_options, {options: options})
32
+ options = {
33
+ package: true,
34
+ in: true
35
+ }
36
+ assert_equal RokuBuilder::BAD_IN_FILE, RokuBuilder::Controller.send(:validate_options, {options: options})
32
37
  options = {
33
38
  deeplink: "a:b c:d",
34
39
  deeplink_depricated: true
@@ -66,6 +66,65 @@ class LoaderTest < Minitest::Test
66
66
  io.verify
67
67
  response.verify
68
68
  end
69
+ def test_loader_sideload_infile
70
+ connection = Minitest::Mock.new
71
+ faraday = Minitest::Mock.new
72
+ io = Minitest::Mock.new
73
+ response = Minitest::Mock.new
74
+
75
+ infile = File.join(File.dirname(__FILE__), "test_files", "loader_test", "infile_test.zip")
76
+ logger = Logger.new("/dev/null")
77
+ device_config = {
78
+ ip: "111.222.333",
79
+ user: "user",
80
+ password: "password",
81
+ logger: logger,
82
+ }
83
+ loader_config = {
84
+ infile: infile
85
+ }
86
+ payload = {
87
+ mysubmit: "Replace",
88
+ archive: io,
89
+ }
90
+ path = "/plugin_install"
91
+
92
+ faraday.expect(:headers, {})
93
+ faraday.expect(:request, nil, [:digest, device_config[:user], device_config[:password]])
94
+ faraday.expect(:request, nil, [:multipart])
95
+ faraday.expect(:request, nil, [:url_encoded])
96
+ faraday.expect(:adapter, nil, [Faraday.default_adapter])
97
+ connection.expect(:post, response) do |arg1, arg2|
98
+ assert_equal path, arg1
99
+ assert_equal payload[:mysubmit], arg2[:mysubmit]
100
+ assert payload[:archive] === arg2[:archive]
101
+ end
102
+ response.expect(:status, 200)
103
+ response.expect(:body, "Install Success")
104
+ response.expect(:status, 200)
105
+ response.expect(:body, "Install Success")
106
+
107
+ loader = RokuBuilder::Loader.new(**device_config)
108
+ result = nil
109
+ build_version = nil
110
+ RokuBuilder::ManifestManager.stub(:build_version, "build_version") do
111
+ Faraday.stub(:new, connection, faraday) do
112
+ Faraday::UploadIO.stub(:new, io) do
113
+ File.stub(:delete, nil) do
114
+ result, build_version = loader.sideload(**loader_config)
115
+ end
116
+ end
117
+ end
118
+ end
119
+
120
+ assert_equal "build_version", build_version
121
+ assert_equal RokuBuilder::SUCCESS, result
122
+
123
+ connection.verify
124
+ faraday.verify
125
+ io.verify
126
+ response.verify
127
+ end
69
128
  def test_loader_sideload_update
70
129
  connection = Minitest::Mock.new
71
130
  faraday = Minitest::Mock.new
@@ -32,6 +32,13 @@ class ManifestManagerTest < Minitest::Test
32
32
  FileUtils.rm(File.join(root_dir, "manifest"))
33
33
  end
34
34
 
35
+ def test_manifest_manager_build_version_zip
36
+ root_dir = File.join(File.dirname(__FILE__), "test_files", "manifest_manager_test", "test.zip")
37
+ build_version = nil
38
+ build_version = RokuBuilder::ManifestManager.build_version(root_dir: root_dir)
39
+ assert_equal "010101.1", build_version
40
+ end
41
+
35
42
  def test_manifest_manager_update_manifest
36
43
  root_dir = File.join(File.dirname(__FILE__), "test_files", "manifest_manager_test")
37
44
  FileUtils.cp(File.join(root_dir, "manifest_template"), File.join(root_dir, "manifest"))
@@ -62,4 +69,22 @@ class ManifestManagerTest < Minitest::Test
62
69
  assert FileUtils.compare_file(File.join(root_dir, "manifest"), File.join(root_dir, "updated_title_manifest"))
63
70
  FileUtils.rm(File.join(root_dir, "manifest"))
64
71
  end
72
+ def test_manifest_manager_update_manifest_partial
73
+ root_dir = File.join(File.dirname(__FILE__), "test_files", "manifest_manager_test")
74
+ attrs = {
75
+ title: "New Title",
76
+ major_version: 2,
77
+ minor_version: 2,
78
+ build_version: "020202.0002",
79
+ mm_icon_focus_hd: "pkg:/images/focus1.png",
80
+ mm_icon_focus_sd: "pkg:/images/focus2.png"
81
+ }
82
+ RokuBuilder::ManifestManager.update_manifest(root_dir: root_dir, attributes: attrs)
83
+ attrs = {
84
+ title: "New Title",
85
+ }
86
+ RokuBuilder::ManifestManager.update_manifest(root_dir: root_dir, attributes: attrs)
87
+ assert FileUtils.compare_file(File.join(root_dir, "manifest"), File.join(root_dir, "updated_title_manifest"))
88
+ FileUtils.rm(File.join(root_dir, "manifest"))
89
+ end
65
90
  end
@@ -28,6 +28,37 @@ class MonitorTest < Minitest::Test
28
28
  connection.verify
29
29
  end
30
30
 
31
+ def test_monitor_monit_and_manage
32
+ connection = Minitest::Mock.new
33
+ device_config = {
34
+ ip: "111.222.333",
35
+ user: "user",
36
+ password: "password",
37
+ logger: Logger.new("/dev/null")
38
+ }
39
+ monitor = RokuBuilder::Monitor.new(**device_config)
40
+
41
+ connection.expect(:waitfor, nil) do |config, &blk|
42
+ assert_equal(/./, config['Match'])
43
+ assert_equal(false, config['Timeout'])
44
+ txt = "Fake Text"
45
+ blk.call(txt) == ""
46
+ end
47
+
48
+ def monitor.gets
49
+ sleep(0.1)
50
+ "q"
51
+ end
52
+
53
+ Net::Telnet.stub(:new, connection) do
54
+ monitor.stub(:manage_text, "") do
55
+ monitor.monitor(type: :main)
56
+ end
57
+ end
58
+
59
+ connection.verify
60
+ end
61
+
31
62
  def test_monitor_monit_input
32
63
  connection = Minitest::Mock.new
33
64
  device_config = {
@@ -1,6 +1,18 @@
1
1
  require_relative "test_helper.rb"
2
2
 
3
3
  class StagerTest < Minitest::Test
4
+
5
+ def test_stager_method
6
+ root_dir = File.join(File.dirname(__FILE__), "test_files", "stager_test")
7
+ stager_config = {
8
+ method: :working,
9
+ root_dir: root_dir,
10
+ logger: nil
11
+ }
12
+ stager = RokuBuilder::Stager.new(**stager_config)
13
+ assert_equal stager_config[:method], stager.method
14
+ end
15
+
4
16
  def test_stager_stage_working
5
17
  root_dir = File.join(File.dirname(__FILE__), "test_files", "stager_test")
6
18
  stager_config = {
@@ -31,6 +31,43 @@ class TesterTest < Minitest::Test
31
31
  connection.verify
32
32
  end
33
33
 
34
+ def test_tester_runtests_and_handle
35
+ waitfor = Proc.new do |end_reg, &blk|
36
+ assert_equal /\*\*\*\*\* ENDING TESTS \*\*\*\*\*/, end_reg
37
+ txt = "Fake Text"
38
+ blk.call(txt) == false
39
+ end
40
+ connection = Minitest::Mock.new
41
+ loader = Minitest::Mock.new
42
+ device_config = {
43
+ ip: "111.222.333",
44
+ user: "user",
45
+ password: "password",
46
+ logger: Logger.new("/dev/null")
47
+ }
48
+ loader_config = {
49
+ root_dir: "root/dir/path",
50
+ branch: "branch",
51
+ folders: ["source"],
52
+ files: ["manifest"]
53
+ }
54
+ tester = RokuBuilder::Tester.new(**device_config)
55
+
56
+ loader.expect(:sideload, nil, [loader_config])
57
+ connection.expect(:waitfor, nil, &waitfor)
58
+ connection.expect(:puts, nil, ["cont\n"])
59
+
60
+ RokuBuilder::Loader.stub(:new, loader) do
61
+ Net::Telnet.stub(:new, connection) do
62
+ tester.stub(:handle_text, false) do
63
+ tester.run_tests(sideload_config: loader_config)
64
+ end
65
+ end
66
+ end
67
+
68
+ connection.verify
69
+ end
70
+
34
71
  def test_tester_handle_text_no_text
35
72
  logger = Minitest::Mock.new
36
73
  device_config = {
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.6.0
4
+ version: 3.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - greeneca
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-20 00:00:00.000000000 Z
11
+ date: 2016-05-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -297,6 +297,7 @@ files:
297
297
  - tests/roku_builder/test_files/loader_test/source/c/d
298
298
  - tests/roku_builder/test_files/manifest_manager_test/manifest_template
299
299
  - tests/roku_builder/test_files/manifest_manager_test/manifest_template_2
300
+ - tests/roku_builder/test_files/manifest_manager_test/test.zip
300
301
  - tests/roku_builder/test_files/manifest_manager_test/updated_title_manifest
301
302
  - tests/roku_builder/test_files/stager_test/a
302
303
  - tests/roku_builder/test_files/stager_test/manifest