roku_builder 3.6.0 → 3.6.1

Sign up to get free protection for your applications and to get access to all the features.
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