roku_builder 3.3.2 → 3.3.3
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 +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +3 -1
- data/bin/roku +4 -0
- data/lib/roku_builder/controller.rb +19 -9
- data/lib/roku_builder/inspector.rb +1 -1
- data/lib/roku_builder/loader.rb +2 -1
- data/lib/roku_builder/monitor.rb +19 -8
- data/lib/roku_builder/tester.rb +22 -7
- data/lib/roku_builder/version.rb +1 -1
- data/roku_builder.gemspec +2 -0
- data/tests/roku_builder/config_manager_test.rb +13 -0
- data/tests/roku_builder/controller_config_test.rb +19 -0
- data/tests/roku_builder/controller_test.rb +488 -9
- data/tests/roku_builder/inspector_test.rb +75 -0
- data/tests/roku_builder/keyer_test.rb +33 -0
- data/tests/roku_builder/linker_test.rb +15 -0
- data/tests/roku_builder/loader_test.rb +105 -5
- data/tests/roku_builder/manifest_manager_test.rb +12 -0
- data/tests/roku_builder/monitor_test.rb +69 -0
- data/tests/roku_builder/navigator_test.rb +75 -15
- data/tests/roku_builder/test_files/controller_config_test/valid_config.json +28 -0
- data/tests/roku_builder/test_files/loader_test/{source/a → a} +0 -0
- data/tests/roku_builder/test_files/loader_test/{c → source/c/d} +0 -0
- data/tests/roku_builder/test_files/manifest_manager_test/manifest_template_2 +2 -0
- data/tests/roku_builder/tester_test.rb +61 -0
- metadata +9 -6
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 57d35cf7d34cc1a61441de8f49007204e480238b
         | 
| 4 | 
            +
              data.tar.gz: 25124d6fee986c47d3a58cdf0b23c023482c99cb
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 4efb6c2af95286dbadf4ef3f769752908516bdc200785194dc59f35739a2f4bd6b5b70d6f50915ae343dc5ab971711c43ef344a1e910d529129f697ae7c4abda
         | 
| 7 | 
            +
              data.tar.gz: 0a431ada9ec91e6bedcf12ceb14ccca7eb70bd841614741b5ce46e41bcc158b881ed3b221f502eebe841687bf71da6673d38cce507b8928f1750083cc5b93fa8
         | 
    
        data/Gemfile.lock
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -1,5 +1,7 @@ | |
| 1 1 | 
             
            # RokuBuilder
         | 
| 2 2 |  | 
| 3 | 
            +
            [](https://badge.fury.io/rb/roku_builder)
         | 
| 4 | 
            +
             | 
| 3 5 | 
             
            A tool to help with Roku Development. Assists with the following roku
         | 
| 4 6 | 
             
            development tasks:
         | 
| 5 7 |  | 
| @@ -267,8 +269,8 @@ directory: | |
| 267 269 |  | 
| 268 270 | 
             
            ## Improvements
         | 
| 269 271 |  | 
| 272 | 
            +
             * Account for missing folders or files
         | 
| 270 273 | 
             
             * Increase testing
         | 
| 271 | 
            -
               * More Unit Tests
         | 
| 272 274 | 
             
               * Intergration Tests
         | 
| 273 275 | 
             
             * Move RokuBuilder::Controller to RokuBuilder?
         | 
| 274 276 | 
             
             * Allow start and end delimiter for tests to be configured
         | 
    
        data/bin/roku
    CHANGED
    
    | @@ -130,6 +130,10 @@ OptionParser.new do |opts| | |
| 130 130 | 
             
                options[:out] = o
         | 
| 131 131 | 
             
              end
         | 
| 132 132 |  | 
| 133 | 
            +
              opts.on("-I", "--in PATH", "Input file for sideloading") do |i|
         | 
| 134 | 
            +
                options[:in] = i
         | 
| 135 | 
            +
              end
         | 
| 136 | 
            +
             | 
| 133 137 | 
             
              opts.on("-V", "--verbose", "Print Info message") do |v|
         | 
| 134 138 | 
             
                options[:verbose] = v
         | 
| 135 139 | 
             
              end
         | 
| @@ -28,6 +28,9 @@ module RokuBuilder | |
| 28 28 | 
             
                # No deeplink options supplied for deeplink
         | 
| 29 29 | 
             
                BAD_DEEPLINK    = 6
         | 
| 30 30 |  | 
| 31 | 
            +
                # Incorrect use of the in option
         | 
| 32 | 
            +
                BAD_IN_FILE     = 7
         | 
| 33 | 
            +
             | 
| 31 34 |  | 
| 32 35 |  | 
| 33 36 | 
             
                ### Device Codes ###
         | 
| @@ -36,7 +39,7 @@ module RokuBuilder | |
| 36 39 | 
             
                CHANGED_DEVICE = -1
         | 
| 37 40 |  | 
| 38 41 | 
             
                # Device is online
         | 
| 39 | 
            -
                 | 
| 42 | 
            +
                GOOD_DEVICE = 0
         | 
| 40 43 |  | 
| 41 44 | 
             
                # User defined device was not online
         | 
| 42 45 | 
             
                BAD_DEVICE = 1
         | 
| @@ -108,11 +111,11 @@ module RokuBuilder | |
| 108 111 |  | 
| 109 112 | 
             
                  options_code = self.validate_options(options: options, logger: logger)
         | 
| 110 113 |  | 
| 111 | 
            -
                  self.handle_error_codes(options_code: options_code, logger: logger)
         | 
| 114 | 
            +
                  self.handle_error_codes(options: options, options_code: options_code, logger: logger)
         | 
| 112 115 |  | 
| 113 116 | 
             
                  handle_code = self.handle_options(options: options, logger: logger)
         | 
| 114 117 |  | 
| 115 | 
            -
                  self.handle_error_codes(handle_code: handle_code, logger: logger)
         | 
| 118 | 
            +
                  self.handle_error_codes(options: options, handle_code: handle_code, logger: logger)
         | 
| 116 119 | 
             
                end
         | 
| 117 120 |  | 
| 118 121 | 
             
                protected
         | 
| @@ -133,6 +136,9 @@ module RokuBuilder | |
| 133 136 | 
             
                  if sources.include?(:current)
         | 
| 134 137 | 
             
                    return BAD_CURRENT unless options[:build] or options[:sideload]
         | 
| 135 138 | 
             
                  end
         | 
| 139 | 
            +
                  if options[:in]
         | 
| 140 | 
            +
                    return BAD_IN_FILE unless options[:sideload]
         | 
| 141 | 
            +
                  end
         | 
| 136 142 | 
             
                  if options[:deeplink]
         | 
| 137 143 | 
             
                    return BAD_DEEPLINK if !options[:deeplink_options] or options[:deeplink_options].chomp == ""
         | 
| 138 144 | 
             
                  end
         | 
| @@ -152,7 +158,7 @@ module RokuBuilder | |
| 152 158 |  | 
| 153 159 | 
             
                  # Check devices
         | 
| 154 160 | 
             
                  device_code, configs = self.check_devices(options: options, config: config, configs: configs, logger: logger)
         | 
| 155 | 
            -
                  self.handle_error_codes(device_code: device_code, logger: logger)
         | 
| 161 | 
            +
                  self.handle_error_codes(options: options, device_code: device_code, logger: logger)
         | 
| 156 162 |  | 
| 157 163 | 
             
                  command = (self.commands & options.keys).first
         | 
| 158 164 | 
             
                  case command
         | 
| @@ -193,7 +199,7 @@ module RokuBuilder | |
| 193 199 | 
             
                  when :build
         | 
| 194 200 | 
             
                    ### Build ###
         | 
| 195 201 | 
             
                    loader = Loader.new(**configs[:device_config])
         | 
| 196 | 
            -
                    build_version = ManifestManager.build_version(**configs[:manifest_config] | 
| 202 | 
            +
                    build_version = ManifestManager.build_version(**configs[:manifest_config])
         | 
| 197 203 | 
             
                    options[:build_version] = build_version
         | 
| 198 204 | 
             
                    configs = self.update_configs(configs: configs, options: options)
         | 
| 199 205 | 
             
                    outfile = loader.build(**configs[:build_config])
         | 
| @@ -245,7 +251,7 @@ module RokuBuilder | |
| 245 251 | 
             
                def self.check_devices(options:, config:, configs:, logger:)
         | 
| 246 252 | 
             
                  ping = Net::Ping::External.new
         | 
| 247 253 | 
             
                  host = configs[:device_config][:ip]
         | 
| 248 | 
            -
                  return [ | 
| 254 | 
            +
                  return [GOOD_DEVICE, configs] if ping.ping? host, 1, 0.2, 1
         | 
| 249 255 | 
             
                  return [BAD_DEVICE, nil] if options[:device_given]
         | 
| 250 256 | 
             
                  config[:devices].each_pair {|key, value|
         | 
| 251 257 | 
             
                    unless key == :default
         | 
| @@ -284,7 +290,7 @@ module RokuBuilder | |
| 284 290 | 
             
                # @param options_code [Integer] the error code returned by validate_options
         | 
| 285 291 | 
             
                # @param handle_code [Integer] the error code returned by handle_options
         | 
| 286 292 | 
             
                # @param logger [Logger] system logger
         | 
| 287 | 
            -
                def self.handle_error_codes(options_code: nil, device_code: nil, handle_code: nil, logger:)
         | 
| 293 | 
            +
                def self.handle_error_codes(options:, options_code: nil, device_code: nil, handle_code: nil, logger:)
         | 
| 288 294 | 
             
                  if options_code
         | 
| 289 295 | 
             
                    case options_code
         | 
| 290 296 | 
             
                    when EXTRA_COMMANDS
         | 
| @@ -305,6 +311,9 @@ module RokuBuilder | |
| 305 311 | 
             
                    when BAD_DEEPLINK
         | 
| 306 312 | 
             
                      logger.fatal "Must supply deeplinking options when deeplinking"
         | 
| 307 313 | 
             
                      abort
         | 
| 314 | 
            +
                    when BAD_IN_FILE
         | 
| 315 | 
            +
                      logger.fatal "Can only supply in file for building"
         | 
| 316 | 
            +
                      abort
         | 
| 308 317 | 
             
                    end
         | 
| 309 318 | 
             
                  elsif device_code
         | 
| 310 319 | 
             
                    case device_code
         | 
| @@ -497,7 +506,7 @@ module RokuBuilder | |
| 497 506 | 
             
                      password: configs[:key][:password],
         | 
| 498 507 | 
             
                      app_name_version: "#{project_config[:app_name]} - #{stage}"
         | 
| 499 508 | 
             
                    }
         | 
| 500 | 
            -
                    if options[: | 
| 509 | 
            +
                    if options[:out_file]
         | 
| 501 510 | 
             
                      configs[:package_config][:out_file] = File.join(options[:out_folder], options[:out_file])
         | 
| 502 511 | 
             
                    end
         | 
| 503 512 | 
             
                    # Create Inspector Config
         | 
| @@ -516,7 +525,8 @@ module RokuBuilder | |
| 516 525 | 
             
                  }
         | 
| 517 526 | 
             
                  # Create Manifest Config
         | 
| 518 527 | 
             
                  configs[:manifest_config] = {
         | 
| 519 | 
            -
                    root_dir: project_config[:directory]
         | 
| 528 | 
            +
                    root_dir: project_config[:directory],
         | 
| 529 | 
            +
                    logger: logger
         | 
| 520 530 | 
             
                  }
         | 
| 521 531 | 
             
                  # Create Deeplink Config
         | 
| 522 532 | 
             
                  configs[:deeplink_config] ={
         | 
| @@ -35,7 +35,7 @@ module RokuBuilder | |
| 35 35 | 
             
                  if app_name
         | 
| 36 36 | 
             
                    app_name = app_name[1]
         | 
| 37 37 | 
             
                    dev_id = /Dev ID:\s*<\/td>\s*<td>\s*<font[^>]*>([^<]*)<\/font>\s*<\/td>/.match(response.body)[1]
         | 
| 38 | 
            -
                    creation_date = / | 
| 38 | 
            +
                    creation_date = /new Date\(([^)]*)\)/.match(response.body.gsub("\n", ''))[1]
         | 
| 39 39 | 
             
                    dev_zip = /dev.zip:\s*<\/td>\s*<td>\s*<font[^>]*>([^<]*)<\/font>\s*<\/td>/.match(response.body)[1]
         | 
| 40 40 | 
             
                  else
         | 
| 41 41 | 
             
                    app_name = /App Name:[^<]*<div[^>]*>([^<]*)<\/div>/.match(response.body)[1]
         | 
    
        data/lib/roku_builder/loader.rb
    CHANGED
    
    | @@ -10,8 +10,9 @@ module RokuBuilder | |
| 10 10 | 
             
                # @param fetch [Boolean] Flag to fetch all remotes before sideloading. Default: false
         | 
| 11 11 | 
             
                # @param folders [Array<String>] Array of folders to be sideloaded. Pass nil to send all folders. Default: nil
         | 
| 12 12 | 
             
                # @param files [Array<String>] Array of files to be sideloaded. Pass nil to send all files. Default: nil
         | 
| 13 | 
            +
                # @param infile [String] 
         | 
| 13 14 | 
             
                # @return [String] Build version on success, nil otherwise
         | 
| 14 | 
            -
                def sideload(root_dir:, branch: nil, update_manifest: false, fetch: false, folders: nil, files: nil)
         | 
| 15 | 
            +
                def sideload(root_dir:, branch: nil, update_manifest: false, fetch: false, folders: nil, files: nil, infile: nil)
         | 
| 15 16 | 
             
                  @root_dir = root_dir
         | 
| 16 17 | 
             
                  result = nil
         | 
| 17 18 | 
             
                  stash = nil
         | 
    
        data/lib/roku_builder/monitor.rb
    CHANGED
    
    | @@ -35,14 +35,7 @@ module RokuBuilder | |
| 35 35 | 
             
                    all_text = ""
         | 
| 36 36 | 
             
                    while true
         | 
| 37 37 | 
             
                      connection.waitfor(waitfor_config) do |txt|
         | 
| 38 | 
            -
                        all_text  | 
| 39 | 
            -
                        while line = all_text.slice!(/^.*\n/) do
         | 
| 40 | 
            -
                          puts line
         | 
| 41 | 
            -
                        end
         | 
| 42 | 
            -
                        if all_text == "BrightScript Debugger> "
         | 
| 43 | 
            -
                          print all_text
         | 
| 44 | 
            -
                          all_text = ""
         | 
| 45 | 
            -
                        end
         | 
| 38 | 
            +
                        all_text = manage_text(all_text: all_text, txt: txt)
         | 
| 46 39 | 
             
                      end
         | 
| 47 40 | 
             
                    end
         | 
| 48 41 | 
             
                  }
         | 
| @@ -58,5 +51,23 @@ module RokuBuilder | |
| 58 51 | 
             
                    end
         | 
| 59 52 | 
             
                  end
         | 
| 60 53 | 
             
                end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                private
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                # Handel text from telnet
         | 
| 58 | 
            +
                #  @param all_text [String] remaining partial line text
         | 
| 59 | 
            +
                #  @param txt [String] current string from telnet
         | 
| 60 | 
            +
                #  @return [String] remaining partial line text
         | 
| 61 | 
            +
                def manage_text(all_text:, txt:)
         | 
| 62 | 
            +
                  all_text += txt
         | 
| 63 | 
            +
                  while line = all_text.slice!(/^.*\n/) do
         | 
| 64 | 
            +
                    puts line
         | 
| 65 | 
            +
                  end
         | 
| 66 | 
            +
                  if all_text == "BrightScript Debugger> "
         | 
| 67 | 
            +
                    print all_text
         | 
| 68 | 
            +
                    all_text = ""
         | 
| 69 | 
            +
                  end
         | 
| 70 | 
            +
                  all_text
         | 
| 71 | 
            +
                end
         | 
| 61 72 | 
             
              end
         | 
| 62 73 | 
             
            end
         | 
    
        data/lib/roku_builder/tester.rb
    CHANGED
    
    | @@ -5,6 +5,11 @@ module RokuBuilder | |
| 5 5 | 
             
              # with other testing libraries
         | 
| 6 6 | 
             
              class Tester < Util
         | 
| 7 7 |  | 
| 8 | 
            +
                def init()
         | 
| 9 | 
            +
                  @end_reg = /\*\*\*\*\* ENDING TESTS \*\*\*\*\*/
         | 
| 10 | 
            +
                  @start_reg = /\*\*\*\*\* STARTING TESTS \*\*\*\*\*/
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 8 13 | 
             
                # Run tests and report results
         | 
| 9 14 | 
             
                # @param sideload_config [Hash] The config for sideloading the app
         | 
| 10 15 | 
             
                def run_tests(sideload_config:)
         | 
| @@ -18,15 +23,25 @@ module RokuBuilder | |
| 18 23 | 
             
                  loader.sideload(**sideload_config)
         | 
| 19 24 |  | 
| 20 25 | 
             
                  in_tests = false
         | 
| 21 | 
            -
                  end_reg  | 
| 22 | 
            -
             | 
| 23 | 
            -
                    txt.split("\n").each do |line|
         | 
| 24 | 
            -
                      in_tests = false if line =~ end_reg
         | 
| 25 | 
            -
                      @logger.unknown line if in_tests
         | 
| 26 | 
            -
                      in_tests = true if line =~ /\*\*\*\*\* STARTING TESTS \*\*\*\*\*/
         | 
| 27 | 
            -
                    end
         | 
| 26 | 
            +
                  connection.waitfor(@end_reg) do |txt|
         | 
| 27 | 
            +
                    in_tests = handle_text(txt: txt, in_tests: in_tests)
         | 
| 28 28 | 
             
                  end
         | 
| 29 29 | 
             
                  connection.puts("cont\n")
         | 
| 30 30 | 
             
                end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                private
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                # Handel testing text
         | 
| 35 | 
            +
                # @param txt [String] current text from telnet
         | 
| 36 | 
            +
                # @param in_tests [Boolean] currently parsing test text
         | 
| 37 | 
            +
                # @return [Boolean] currently parsing test text
         | 
| 38 | 
            +
                def handle_text(txt:, in_tests:)
         | 
| 39 | 
            +
                  txt.split("\n").each do |line|
         | 
| 40 | 
            +
                    in_tests = false if line =~ @end_reg
         | 
| 41 | 
            +
                    @logger.unknown line if in_tests
         | 
| 42 | 
            +
                    in_tests = true if line =~ @start_reg
         | 
| 43 | 
            +
                  end
         | 
| 44 | 
            +
                  in_tests
         | 
| 45 | 
            +
                end
         | 
| 31 46 | 
             
              end
         | 
| 32 47 | 
             
            end
         | 
    
        data/lib/roku_builder/version.rb
    CHANGED
    
    
    
        data/roku_builder.gemspec
    CHANGED
    
    | @@ -18,6 +18,8 @@ Gem::Specification.new do |spec| | |
| 18 18 | 
             
              spec.test_files    = spec.files.grep(%r{^(test|spec|features)/})
         | 
| 19 19 | 
             
              spec.require_paths = ["lib"]
         | 
| 20 20 |  | 
| 21 | 
            +
              spec.required_ruby_version = "~> 2.2"
         | 
| 22 | 
            +
             | 
| 21 23 | 
             
              spec.add_dependency "rubyzip",             "~> 1.1"
         | 
| 22 24 | 
             
              spec.add_dependency "faraday",             "~> 0.9"
         | 
| 23 25 | 
             
              spec.add_dependency "faraday-digestauth",  "~> 0.2"
         | 
| @@ -16,6 +16,19 @@ class ConfigManagerTest < Minitest::Test | |
| 16 16 | 
             
                assert_equal :project1, config[:projects][:default], :project1
         | 
| 17 17 | 
             
              end
         | 
| 18 18 |  | 
| 19 | 
            +
              def test_config_manager_read_invalid_config
         | 
| 20 | 
            +
                logger = Logger.new("/dev/null")
         | 
| 21 | 
            +
                config_path = "config/file/path"
         | 
| 22 | 
            +
                io = Minitest::Mock.new
         | 
| 23 | 
            +
                io.expect(:read, good_config.to_json+"}}}}}")
         | 
| 24 | 
            +
                config = nil
         | 
| 25 | 
            +
                File.stub(:open, io) do
         | 
| 26 | 
            +
                  config = RokuBuilder::ConfigManager.get_config(config: config_path, logger: logger)
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
                io.verify
         | 
| 29 | 
            +
                assert_nil config
         | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
             | 
| 19 32 | 
             
              def test_config_manager_validate_devices
         | 
| 20 33 | 
             
                logger = Logger.new("/dev/null")
         | 
| 21 34 | 
             
                config = good_config
         | 
| @@ -0,0 +1,19 @@ | |
| 1 | 
            +
            require_relative "test_helper.rb"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class ControllerConfigTest < Minitest::Test
         | 
| 4 | 
            +
              def test_manifest_config
         | 
| 5 | 
            +
                logger = Logger.new("/dev/null")
         | 
| 6 | 
            +
                options = {
         | 
| 7 | 
            +
                  config: File.expand_path(File.join(File.dirname(__FILE__), "test_files", "controller_config_test", "valid_config.json")),
         | 
| 8 | 
            +
                  stage: 'production',
         | 
| 9 | 
            +
                  update_manifest: false,
         | 
| 10 | 
            +
                  fetch: false,
         | 
| 11 | 
            +
                }
         | 
| 12 | 
            +
                code, config, configs = RokuBuilder::Controller.load_config(options: options, logger: logger)
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                assert_equal "/dev/null", configs[:manifest_config][:root_dir]
         | 
| 15 | 
            +
                assert_equal logger, configs[:manifest_config][:logger]
         | 
| 16 | 
            +
             | 
| 17 | 
            +
             | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
            end
         | 
| @@ -1,5 +1,13 @@ | |
| 1 1 | 
             
            require_relative "test_helper.rb"
         | 
| 2 2 |  | 
| 3 | 
            +
            class RokuBuilder::Controller
         | 
| 4 | 
            +
              class << self
         | 
| 5 | 
            +
                def abort
         | 
| 6 | 
            +
                  #do nothing
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
            end
         | 
| 10 | 
            +
             | 
| 3 11 | 
             
            class ControllerTest < Minitest::Test
         | 
| 4 12 | 
             
              def test_controller_validate_options
         | 
| 5 13 | 
             
                logger = Logger.new("/dev/null")
         | 
| @@ -7,38 +15,50 @@ class ControllerTest < Minitest::Test | |
| 7 15 | 
             
                  sideload: true,
         | 
| 8 16 | 
             
                  package: true
         | 
| 9 17 | 
             
                }
         | 
| 10 | 
            -
                assert_equal  | 
| 18 | 
            +
                assert_equal RokuBuilder::Controller::EXTRA_COMMANDS, RokuBuilder::Controller.validate_options(options: options, logger: logger)
         | 
| 11 19 | 
             
                options = {}
         | 
| 12 | 
            -
                assert_equal  | 
| 20 | 
            +
                assert_equal RokuBuilder::Controller::NO_COMMANDS,  RokuBuilder::Controller.validate_options(options: options, logger: logger)
         | 
| 13 21 | 
             
                options = {
         | 
| 14 22 | 
             
                  sideload: true,
         | 
| 15 23 | 
             
                  working: true,
         | 
| 16 24 | 
             
                  current: true
         | 
| 17 25 | 
             
                }
         | 
| 18 | 
            -
                assert_equal  | 
| 26 | 
            +
                assert_equal RokuBuilder::Controller::EXTRA_SOURCES, RokuBuilder::Controller.validate_options(options: options, logger: logger)
         | 
| 19 27 | 
             
                options = {
         | 
| 20 28 | 
             
                  sideload: true,
         | 
| 21 29 | 
             
                  working: true
         | 
| 22 30 | 
             
                }
         | 
| 23 | 
            -
                assert_equal  | 
| 31 | 
            +
                assert_equal RokuBuilder::Controller::VALID, RokuBuilder::Controller.validate_options(options: options, logger: logger)
         | 
| 24 32 | 
             
                options = {
         | 
| 25 33 | 
             
                  package: true
         | 
| 26 34 | 
             
                }
         | 
| 27 | 
            -
                assert_equal  | 
| 35 | 
            +
                assert_equal RokuBuilder::Controller::NO_SOURCE, RokuBuilder::Controller.validate_options(options: options, logger: logger)
         | 
| 28 36 | 
             
                options = {
         | 
| 29 37 | 
             
                  package: true,
         | 
| 30 38 | 
             
                  current: true
         | 
| 31 39 | 
             
                }
         | 
| 32 | 
            -
                assert_equal  | 
| 40 | 
            +
                assert_equal RokuBuilder::Controller::BAD_CURRENT, RokuBuilder::Controller.validate_options(options: options, logger: logger)
         | 
| 33 41 | 
             
                options = {
         | 
| 34 42 | 
             
                  deeplink: true
         | 
| 35 43 | 
             
                }
         | 
| 36 | 
            -
                assert_equal  | 
| 44 | 
            +
                assert_equal RokuBuilder::Controller::BAD_DEEPLINK, RokuBuilder::Controller.validate_options(options: options, logger: logger)
         | 
| 37 45 | 
             
                options = {
         | 
| 38 46 | 
             
                  deeplink: true,
         | 
| 39 47 | 
             
                  deeplink_options: ""
         | 
| 40 48 | 
             
                }
         | 
| 41 | 
            -
                assert_equal  | 
| 49 | 
            +
                assert_equal RokuBuilder::Controller::BAD_DEEPLINK, RokuBuilder::Controller.validate_options(options: options, logger: logger)
         | 
| 50 | 
            +
                options = {
         | 
| 51 | 
            +
                  sideload: true,
         | 
| 52 | 
            +
                  in: "",
         | 
| 53 | 
            +
                  current: true
         | 
| 54 | 
            +
                }
         | 
| 55 | 
            +
                assert_equal RokuBuilder::Controller::VALID, RokuBuilder::Controller.validate_options(options: options, logger: logger)
         | 
| 56 | 
            +
                options = {
         | 
| 57 | 
            +
                  package: true,
         | 
| 58 | 
            +
                  in: "",
         | 
| 59 | 
            +
                  set_stage: true
         | 
| 60 | 
            +
                }
         | 
| 61 | 
            +
                assert_equal RokuBuilder::Controller::BAD_IN_FILE, RokuBuilder::Controller.validate_options(options: options, logger: logger)
         | 
| 42 62 | 
             
              end
         | 
| 43 63 | 
             
              def test_controller_configure
         | 
| 44 64 | 
             
                logger = Logger.new("/dev/null")
         | 
| @@ -66,6 +86,16 @@ class ControllerTest < Minitest::Test | |
| 66 86 | 
             
                assert File.exists?(target_config)
         | 
| 67 87 | 
             
                config = RokuBuilder::ConfigManager.get_config(config: target_config, logger: logger)
         | 
| 68 88 | 
             
                assert_equal "111.222.333.444", config[:devices][:roku][:ip]
         | 
| 89 | 
            +
             | 
| 90 | 
            +
                options = {
         | 
| 91 | 
            +
                  configure: true,
         | 
| 92 | 
            +
                  config: target_config
         | 
| 93 | 
            +
                }
         | 
| 94 | 
            +
             | 
| 95 | 
            +
                code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
         | 
| 96 | 
            +
             | 
| 97 | 
            +
                assert_equal RokuBuilder::Controller::CONFIG_OVERWRITE, code
         | 
| 98 | 
            +
             | 
| 69 99 | 
             
                File.delete(target_config) if File.exists?(target_config)
         | 
| 70 100 | 
             
              end
         | 
| 71 101 |  | 
| @@ -169,8 +199,99 @@ class ControllerTest < Minitest::Test | |
| 169 199 | 
             
                target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
         | 
| 170 200 | 
             
                File.delete(target_config) if File.exists?(target_config)
         | 
| 171 201 | 
             
                FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
         | 
| 202 | 
            +
                keyer = Minitest::Mock.new
         | 
| 172 203 | 
             
                loader = Minitest::Mock.new
         | 
| 173 | 
            -
                 | 
| 204 | 
            +
                packager = Minitest::Mock.new
         | 
| 205 | 
            +
                inspector = Minitest::Mock.new
         | 
| 206 | 
            +
             | 
| 207 | 
            +
                options = {package: true, inspect: true, stage: 'production', out_folder: "/tmp", config: target_config}
         | 
| 208 | 
            +
                configs = {
         | 
| 209 | 
            +
                  device_config: {},
         | 
| 210 | 
            +
                  sideload_config: {},
         | 
| 211 | 
            +
                  key: {},
         | 
| 212 | 
            +
                  package_config: {
         | 
| 213 | 
            +
                    app_name_version: "app - production - build_version",
         | 
| 214 | 
            +
                    out_file: "/tmp/app_production_build_version.pkg"
         | 
| 215 | 
            +
                  },
         | 
| 216 | 
            +
                  project_config: {app_name: "app"},
         | 
| 217 | 
            +
                  inspect_config: {}
         | 
| 218 | 
            +
                }
         | 
| 219 | 
            +
                info = {app_name: "app", dev_id: "id", creation_date: "date", dev_zip: ""}
         | 
| 220 | 
            +
             | 
| 221 | 
            +
                loader.expect(:sideload, "build_version", [configs[:sideload_config]])
         | 
| 222 | 
            +
                keyer.expect(:rekey, true, [configs[:key]])
         | 
| 223 | 
            +
                packager.expect(:package, true, [configs[:package_config]])
         | 
| 224 | 
            +
                inspector.expect(:inspect, info, [configs[:inspect_config]])
         | 
| 225 | 
            +
             | 
| 226 | 
            +
                code = nil
         | 
| 227 | 
            +
                RokuBuilder::Keyer.stub(:new, keyer) do
         | 
| 228 | 
            +
                  RokuBuilder::Loader.stub(:new, loader) do
         | 
| 229 | 
            +
                    RokuBuilder::Packager.stub(:new, packager) do
         | 
| 230 | 
            +
                      RokuBuilder::Inspector.stub(:new, inspector) do
         | 
| 231 | 
            +
                        RokuBuilder::Controller.stub(:check_devices, [0, configs]) do
         | 
| 232 | 
            +
                          code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
         | 
| 233 | 
            +
                        end
         | 
| 234 | 
            +
                      end
         | 
| 235 | 
            +
                    end
         | 
| 236 | 
            +
                  end
         | 
| 237 | 
            +
                end
         | 
| 238 | 
            +
                assert_equal RokuBuilder::Controller::SUCCESS, code
         | 
| 239 | 
            +
             | 
| 240 | 
            +
                keyer.verify
         | 
| 241 | 
            +
                loader.verify
         | 
| 242 | 
            +
                packager.verify
         | 
| 243 | 
            +
                inspector.verify
         | 
| 244 | 
            +
                File.delete(target_config) if File.exists?(target_config)
         | 
| 245 | 
            +
              end
         | 
| 246 | 
            +
             | 
| 247 | 
            +
              def test_controller_package_outfile
         | 
| 248 | 
            +
                logger = Logger.new("/dev/null")
         | 
| 249 | 
            +
                target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
         | 
| 250 | 
            +
                File.delete(target_config) if File.exists?(target_config)
         | 
| 251 | 
            +
                FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
         | 
| 252 | 
            +
                keyer = Minitest::Mock.new
         | 
| 253 | 
            +
                loader = Minitest::Mock.new
         | 
| 254 | 
            +
                packager = Minitest::Mock.new
         | 
| 255 | 
            +
                inspector = Minitest::Mock.new
         | 
| 256 | 
            +
             | 
| 257 | 
            +
                options = {package: true, inspect: true, stage: 'production', out: "/tmp/out.pkg", config: target_config}
         | 
| 258 | 
            +
                configs = {
         | 
| 259 | 
            +
                  device_config: {},
         | 
| 260 | 
            +
                  sideload_config: {},
         | 
| 261 | 
            +
                  key: {},
         | 
| 262 | 
            +
                  package_config: {
         | 
| 263 | 
            +
                    app_name_version: "app - production - build_version",
         | 
| 264 | 
            +
                    out_file: "/tmp/out.pkg"
         | 
| 265 | 
            +
                  },
         | 
| 266 | 
            +
                  project_config: {app_name: "app"},
         | 
| 267 | 
            +
                  inspect_config: {}
         | 
| 268 | 
            +
                }
         | 
| 269 | 
            +
                info = {app_name: "app", dev_id: "id", creation_date: "date", dev_zip: ""}
         | 
| 270 | 
            +
             | 
| 271 | 
            +
                loader.expect(:sideload, "build_version", [configs[:sideload_config]])
         | 
| 272 | 
            +
                keyer.expect(:rekey, true, [configs[:key]])
         | 
| 273 | 
            +
                packager.expect(:package, true, [configs[:package_config]])
         | 
| 274 | 
            +
                inspector.expect(:inspect, info, [configs[:inspect_config]])
         | 
| 275 | 
            +
             | 
| 276 | 
            +
                code = nil
         | 
| 277 | 
            +
                RokuBuilder::Keyer.stub(:new, keyer) do
         | 
| 278 | 
            +
                  RokuBuilder::Loader.stub(:new, loader) do
         | 
| 279 | 
            +
                    RokuBuilder::Packager.stub(:new, packager) do
         | 
| 280 | 
            +
                      RokuBuilder::Inspector.stub(:new, inspector) do
         | 
| 281 | 
            +
                        RokuBuilder::Controller.stub(:check_devices, [0, configs]) do
         | 
| 282 | 
            +
                          code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
         | 
| 283 | 
            +
                        end
         | 
| 284 | 
            +
                      end
         | 
| 285 | 
            +
                    end
         | 
| 286 | 
            +
                  end
         | 
| 287 | 
            +
                end
         | 
| 288 | 
            +
                assert_equal RokuBuilder::Controller::SUCCESS, code
         | 
| 289 | 
            +
             | 
| 290 | 
            +
                keyer.verify
         | 
| 291 | 
            +
                loader.verify
         | 
| 292 | 
            +
                packager.verify
         | 
| 293 | 
            +
                inspector.verify
         | 
| 294 | 
            +
                File.delete(target_config) if File.exists?(target_config)
         | 
| 174 295 | 
             
              end
         | 
| 175 296 |  | 
| 176 297 | 
             
              def test_controller_build
         | 
| @@ -199,6 +320,8 @@ class ControllerTest < Minitest::Test | |
| 199 320 | 
             
                  end
         | 
| 200 321 | 
             
                end
         | 
| 201 322 | 
             
                assert_equal RokuBuilder::Controller::SUCCESS, code
         | 
| 323 | 
            +
                loader.verify
         | 
| 324 | 
            +
                File.delete(target_config) if File.exists?(target_config)
         | 
| 202 325 | 
             
              end
         | 
| 203 326 | 
             
              def test_controller_update
         | 
| 204 327 | 
             
                logger = Logger.new("/dev/null")
         | 
| @@ -223,6 +346,7 @@ class ControllerTest < Minitest::Test | |
| 223 346 | 
             
                end
         | 
| 224 347 | 
             
                mock.verify
         | 
| 225 348 | 
             
                assert_equal RokuBuilder::Controller::SUCCESS, code
         | 
| 349 | 
            +
                File.delete(target_config) if File.exists?(target_config)
         | 
| 226 350 | 
             
              end
         | 
| 227 351 |  | 
| 228 352 | 
             
              def test_controller_deeplink
         | 
| @@ -245,6 +369,361 @@ class ControllerTest < Minitest::Test | |
| 245 369 | 
             
                end
         | 
| 246 370 | 
             
                mock.verify
         | 
| 247 371 | 
             
                assert_equal RokuBuilder::Controller::SUCCESS, code
         | 
| 372 | 
            +
                File.delete(target_config) if File.exists?(target_config)
         | 
| 373 | 
            +
              end
         | 
| 374 | 
            +
              def test_controller_delete
         | 
| 375 | 
            +
                logger = Logger.new("/dev/null")
         | 
| 376 | 
            +
                target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
         | 
| 377 | 
            +
                File.delete(target_config) if File.exists?(target_config)
         | 
| 378 | 
            +
                FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
         | 
| 379 | 
            +
                loader = Minitest::Mock.new
         | 
| 380 | 
            +
             | 
| 381 | 
            +
                options = {delete: true, stage: 'production', config: target_config}
         | 
| 382 | 
            +
                loader.expect(:unload, nil)
         | 
| 383 | 
            +
                code = nil
         | 
| 384 | 
            +
                RokuBuilder::Loader.stub(:new, loader) do
         | 
| 385 | 
            +
                  RokuBuilder::ManifestManager.stub(:build_version, "1") do
         | 
| 386 | 
            +
                    RokuBuilder::Controller.stub(:check_devices, [0, {device_config: {}}]) do
         | 
| 387 | 
            +
                      code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
         | 
| 388 | 
            +
                    end
         | 
| 389 | 
            +
                  end
         | 
| 390 | 
            +
                end
         | 
| 391 | 
            +
                assert_equal RokuBuilder::Controller::SUCCESS, code
         | 
| 392 | 
            +
                loader.verify
         | 
| 393 | 
            +
                File.delete(target_config) if File.exists?(target_config)
         | 
| 394 | 
            +
              end
         | 
| 395 | 
            +
              def test_controller_monitor
         | 
| 396 | 
            +
                logger = Logger.new("/dev/null")
         | 
| 397 | 
            +
                target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
         | 
| 398 | 
            +
                File.delete(target_config) if File.exists?(target_config)
         | 
| 399 | 
            +
                FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
         | 
| 400 | 
            +
                monitor = Minitest::Mock.new
         | 
| 401 | 
            +
             | 
| 402 | 
            +
                options = {monitor: "main", stage: 'production', config: target_config}
         | 
| 403 | 
            +
                monitor.expect(:monitor, nil, [{}])
         | 
| 404 | 
            +
                code = nil
         | 
| 405 | 
            +
                RokuBuilder::Monitor.stub(:new, monitor) do
         | 
| 406 | 
            +
                  RokuBuilder::ManifestManager.stub(:build_version, "1") do
         | 
| 407 | 
            +
                    RokuBuilder::Controller.stub(:check_devices, [0, {device_config: {}, monitor_config: {}}]) do
         | 
| 408 | 
            +
                      code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
         | 
| 409 | 
            +
                    end
         | 
| 410 | 
            +
                  end
         | 
| 411 | 
            +
                end
         | 
| 412 | 
            +
                assert_equal RokuBuilder::Controller::SUCCESS, code
         | 
| 413 | 
            +
                monitor.verify
         | 
| 414 | 
            +
                File.delete(target_config) if File.exists?(target_config)
         | 
| 415 | 
            +
              end
         | 
| 416 | 
            +
              def test_controller_navigate
         | 
| 417 | 
            +
                logger = Logger.new("/dev/null")
         | 
| 418 | 
            +
                target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
         | 
| 419 | 
            +
                File.delete(target_config) if File.exists?(target_config)
         | 
| 420 | 
            +
                FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
         | 
| 421 | 
            +
                navigator = Minitest::Mock.new
         | 
| 422 | 
            +
             | 
| 423 | 
            +
                options = {navigate: "up", stage: 'production', config: target_config}
         | 
| 424 | 
            +
                navigator.expect(:nav, true, [{}])
         | 
| 425 | 
            +
                code = nil
         | 
| 426 | 
            +
                RokuBuilder::Navigator.stub(:new, navigator) do
         | 
| 427 | 
            +
                  RokuBuilder::ManifestManager.stub(:build_version, "1") do
         | 
| 428 | 
            +
                    RokuBuilder::Controller.stub(:check_devices, [0, {device_config: {}, navigate_config: {}}]) do
         | 
| 429 | 
            +
                      code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
         | 
| 430 | 
            +
                    end
         | 
| 431 | 
            +
                  end
         | 
| 432 | 
            +
                end
         | 
| 433 | 
            +
                assert_equal RokuBuilder::Controller::SUCCESS, code
         | 
| 434 | 
            +
                navigator.verify
         | 
| 435 | 
            +
                File.delete(target_config) if File.exists?(target_config)
         | 
| 436 | 
            +
              end
         | 
| 437 | 
            +
              def test_controller_navigate_fail
         | 
| 438 | 
            +
                logger = Logger.new("/dev/null")
         | 
| 439 | 
            +
                target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
         | 
| 440 | 
            +
                File.delete(target_config) if File.exists?(target_config)
         | 
| 441 | 
            +
                FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
         | 
| 442 | 
            +
                navigator = Minitest::Mock.new
         | 
| 443 | 
            +
             | 
| 444 | 
            +
                options = {navigate: "up", stage: 'production', config: target_config}
         | 
| 445 | 
            +
                navigator.expect(:nav, nil, [{}])
         | 
| 446 | 
            +
                code = nil
         | 
| 447 | 
            +
                RokuBuilder::Navigator.stub(:new, navigator) do
         | 
| 448 | 
            +
                  RokuBuilder::ManifestManager.stub(:build_version, "1") do
         | 
| 449 | 
            +
                    RokuBuilder::Controller.stub(:check_devices, [0, {device_config: {}, navigate_config: {}}]) do
         | 
| 450 | 
            +
                      code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
         | 
| 451 | 
            +
                    end
         | 
| 452 | 
            +
                  end
         | 
| 453 | 
            +
                end
         | 
| 454 | 
            +
                assert_equal RokuBuilder::Controller::FAILED_NAVIGATING, code
         | 
| 455 | 
            +
                navigator.verify
         | 
| 456 | 
            +
                File.delete(target_config) if File.exists?(target_config)
         | 
| 457 | 
            +
              end
         | 
| 458 | 
            +
              def test_controller_screen
         | 
| 459 | 
            +
                logger = Logger.new("/dev/null")
         | 
| 460 | 
            +
                target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
         | 
| 461 | 
            +
                File.delete(target_config) if File.exists?(target_config)
         | 
| 462 | 
            +
                FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
         | 
| 463 | 
            +
                navigator = Minitest::Mock.new
         | 
| 464 | 
            +
             | 
| 465 | 
            +
                options = {screen: "secret", stage: 'production', config: target_config}
         | 
| 466 | 
            +
                navigator.expect(:screen, true, [{}])
         | 
| 467 | 
            +
                code = nil
         | 
| 468 | 
            +
                RokuBuilder::Navigator.stub(:new, navigator) do
         | 
| 469 | 
            +
                  RokuBuilder::ManifestManager.stub(:build_version, "1") do
         | 
| 470 | 
            +
                    RokuBuilder::Controller.stub(:check_devices, [0, {device_config: {}, screen_config: {}}]) do
         | 
| 471 | 
            +
                      code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
         | 
| 472 | 
            +
                    end
         | 
| 473 | 
            +
                  end
         | 
| 474 | 
            +
                end
         | 
| 475 | 
            +
                assert_equal RokuBuilder::Controller::SUCCESS, code
         | 
| 476 | 
            +
                navigator.verify
         | 
| 477 | 
            +
                File.delete(target_config) if File.exists?(target_config)
         | 
| 478 | 
            +
              end
         | 
| 479 | 
            +
              def test_controller_screens
         | 
| 480 | 
            +
                logger = Logger.new("/dev/null")
         | 
| 481 | 
            +
                target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
         | 
| 482 | 
            +
                File.delete(target_config) if File.exists?(target_config)
         | 
| 483 | 
            +
                FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
         | 
| 484 | 
            +
                navigator = Minitest::Mock.new
         | 
| 485 | 
            +
             | 
| 486 | 
            +
                options = {screens: true, stage: 'production', config: target_config}
         | 
| 487 | 
            +
                navigator.expect(:screens, true)
         | 
| 488 | 
            +
                code = nil
         | 
| 489 | 
            +
                RokuBuilder::Navigator.stub(:new, navigator) do
         | 
| 490 | 
            +
                  RokuBuilder::ManifestManager.stub(:build_version, "1") do
         | 
| 491 | 
            +
                    RokuBuilder::Controller.stub(:check_devices, [0, {device_config: {}}]) do
         | 
| 492 | 
            +
                      code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
         | 
| 493 | 
            +
                    end
         | 
| 494 | 
            +
                  end
         | 
| 495 | 
            +
                end
         | 
| 496 | 
            +
                assert_equal RokuBuilder::Controller::SUCCESS, code
         | 
| 497 | 
            +
                navigator.verify
         | 
| 498 | 
            +
                File.delete(target_config) if File.exists?(target_config)
         | 
| 499 | 
            +
              end
         | 
| 500 | 
            +
              def test_controller_text
         | 
| 501 | 
            +
                logger = Logger.new("/dev/null")
         | 
| 502 | 
            +
                target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
         | 
| 503 | 
            +
                File.delete(target_config) if File.exists?(target_config)
         | 
| 504 | 
            +
                FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
         | 
| 505 | 
            +
                navigator = Minitest::Mock.new
         | 
| 506 | 
            +
             | 
| 507 | 
            +
                options = {text: "text string", stage: 'production', config: target_config}
         | 
| 508 | 
            +
                navigator.expect(:type, true, [{}])
         | 
| 509 | 
            +
                code = nil
         | 
| 510 | 
            +
                RokuBuilder::Navigator.stub(:new, navigator) do
         | 
| 511 | 
            +
                  RokuBuilder::ManifestManager.stub(:build_version, "1") do
         | 
| 512 | 
            +
                    RokuBuilder::Controller.stub(:check_devices, [0, {device_config: {}, text_config: {}}]) do
         | 
| 513 | 
            +
                      code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
         | 
| 514 | 
            +
                    end
         | 
| 515 | 
            +
                  end
         | 
| 516 | 
            +
                end
         | 
| 517 | 
            +
                assert_equal RokuBuilder::Controller::SUCCESS, code
         | 
| 518 | 
            +
                navigator.verify
         | 
| 519 | 
            +
                File.delete(target_config) if File.exists?(target_config)
         | 
| 520 | 
            +
              end
         | 
| 521 | 
            +
              def test_controller_test
         | 
| 522 | 
            +
                logger = Logger.new("/dev/null")
         | 
| 523 | 
            +
                target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
         | 
| 524 | 
            +
                File.delete(target_config) if File.exists?(target_config)
         | 
| 525 | 
            +
                FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
         | 
| 526 | 
            +
                tester = Minitest::Mock.new
         | 
| 527 | 
            +
             | 
| 528 | 
            +
                options = {test: true, stage: 'production', config: target_config}
         | 
| 529 | 
            +
                tester.expect(:run_tests, true, [{}])
         | 
| 530 | 
            +
                code = nil
         | 
| 531 | 
            +
                RokuBuilder::Tester.stub(:new, tester) do
         | 
| 532 | 
            +
                  RokuBuilder::ManifestManager.stub(:build_version, "1") do
         | 
| 533 | 
            +
                    RokuBuilder::Controller.stub(:check_devices, [0, {device_config: {}, test_config: {}}]) do
         | 
| 534 | 
            +
                      code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
         | 
| 535 | 
            +
                    end
         | 
| 536 | 
            +
                  end
         | 
| 537 | 
            +
                end
         | 
| 538 | 
            +
                assert_equal RokuBuilder::Controller::SUCCESS, code
         | 
| 539 | 
            +
                tester.verify
         | 
| 540 | 
            +
                File.delete(target_config) if File.exists?(target_config)
         | 
| 541 | 
            +
              end
         | 
| 542 | 
            +
              def test_controller_screencapture
         | 
| 543 | 
            +
                logger = Logger.new("/dev/null")
         | 
| 544 | 
            +
                target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
         | 
| 545 | 
            +
                File.delete(target_config) if File.exists?(target_config)
         | 
| 546 | 
            +
                FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
         | 
| 547 | 
            +
                inspector = Minitest::Mock.new
         | 
| 548 | 
            +
             | 
| 549 | 
            +
                options = {screencapture: true, stage: 'production', out: "/tmp/capture.jpg", config: target_config}
         | 
| 550 | 
            +
                inspector.expect(:screencapture, true, [{}])
         | 
| 551 | 
            +
                code = nil
         | 
| 552 | 
            +
                RokuBuilder::Inspector.stub(:new, inspector) do
         | 
| 553 | 
            +
                  RokuBuilder::ManifestManager.stub(:build_version, "1") do
         | 
| 554 | 
            +
                    RokuBuilder::Controller.stub(:check_devices, [0, {device_config: {}, screencapture_config: {}}]) do
         | 
| 555 | 
            +
                      code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
         | 
| 556 | 
            +
                    end
         | 
| 557 | 
            +
                  end
         | 
| 558 | 
            +
                end
         | 
| 559 | 
            +
                assert_equal RokuBuilder::Controller::SUCCESS, code
         | 
| 560 | 
            +
                inspector.verify
         | 
| 561 | 
            +
                File.delete(target_config) if File.exists?(target_config)
         | 
| 562 | 
            +
              end
         | 
| 563 | 
            +
              def test_controller_screencapture_fail
         | 
| 564 | 
            +
                logger = Logger.new("/dev/null")
         | 
| 565 | 
            +
                target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
         | 
| 566 | 
            +
                File.delete(target_config) if File.exists?(target_config)
         | 
| 567 | 
            +
                FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
         | 
| 568 | 
            +
                inspector = Minitest::Mock.new
         | 
| 569 | 
            +
             | 
| 570 | 
            +
                options = {screencapture: true, stage: 'production', out: "/tmp", config: target_config}
         | 
| 571 | 
            +
                inspector.expect(:screencapture, false, [{}])
         | 
| 572 | 
            +
                code = nil
         | 
| 573 | 
            +
                RokuBuilder::Inspector.stub(:new, inspector) do
         | 
| 574 | 
            +
                  RokuBuilder::ManifestManager.stub(:build_version, "1") do
         | 
| 575 | 
            +
                    RokuBuilder::Controller.stub(:check_devices, [0, {device_config: {}, screencapture_config: {}}]) do
         | 
| 576 | 
            +
                      code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
         | 
| 577 | 
            +
                    end
         | 
| 578 | 
            +
                  end
         | 
| 579 | 
            +
                end
         | 
| 580 | 
            +
                assert_equal RokuBuilder::Controller::FAILED_SCREENCAPTURE, code
         | 
| 581 | 
            +
                inspector.verify
         | 
| 582 | 
            +
                File.delete(target_config) if File.exists?(target_config)
         | 
| 583 | 
            +
              end
         | 
| 584 | 
            +
             | 
| 585 | 
            +
              def test_controller_handel_error_codes
         | 
| 586 | 
            +
                errors = {
         | 
| 587 | 
            +
                  fatal: {
         | 
| 588 | 
            +
                    options_code: [
         | 
| 589 | 
            +
                      RokuBuilder::Controller::EXTRA_COMMANDS,
         | 
| 590 | 
            +
                      RokuBuilder::Controller::NO_COMMANDS,
         | 
| 591 | 
            +
                      RokuBuilder::Controller::EXTRA_SOURCES,
         | 
| 592 | 
            +
                      RokuBuilder::Controller::NO_SOURCE,
         | 
| 593 | 
            +
                      RokuBuilder::Controller::BAD_CURRENT,
         | 
| 594 | 
            +
                      RokuBuilder::Controller::BAD_DEEPLINK,
         | 
| 595 | 
            +
                      RokuBuilder::Controller::BAD_IN_FILE
         | 
| 596 | 
            +
                    ],
         | 
| 597 | 
            +
                    device_code: [
         | 
| 598 | 
            +
                      RokuBuilder::Controller::BAD_DEVICE,
         | 
| 599 | 
            +
                      RokuBuilder::Controller::NO_DEVICES,
         | 
| 600 | 
            +
                    ],
         | 
| 601 | 
            +
                    handle_code: [
         | 
| 602 | 
            +
                      RokuBuilder::Controller::CONFIG_OVERWRITE,
         | 
| 603 | 
            +
                      RokuBuilder::Controller::MISSING_CONFIG,
         | 
| 604 | 
            +
                      RokuBuilder::Controller::INVALID_CONFIG,
         | 
| 605 | 
            +
                      RokuBuilder::Controller::MISSING_MANIFEST,
         | 
| 606 | 
            +
                      RokuBuilder::Controller::UNKNOWN_DEVICE,
         | 
| 607 | 
            +
                      RokuBuilder::Controller::UNKNOWN_PROJECT,
         | 
| 608 | 
            +
                      RokuBuilder::Controller::UNKNOWN_STAGE,
         | 
| 609 | 
            +
                      RokuBuilder::Controller::FAILED_SIDELOAD,
         | 
| 610 | 
            +
                      RokuBuilder::Controller::FAILED_SIGNING,
         | 
| 611 | 
            +
                      RokuBuilder::Controller::FAILED_DEEPLINKING,
         | 
| 612 | 
            +
                      RokuBuilder::Controller::FAILED_NAVIGATING,
         | 
| 613 | 
            +
                      RokuBuilder::Controller::FAILED_SCREENCAPTURE
         | 
| 614 | 
            +
                    ]
         | 
| 615 | 
            +
                  },
         | 
| 616 | 
            +
                  info: {
         | 
| 617 | 
            +
                    device_code: [
         | 
| 618 | 
            +
                      RokuBuilder::Controller::CHANGED_DEVICE
         | 
| 619 | 
            +
                    ]
         | 
| 620 | 
            +
                  },
         | 
| 621 | 
            +
                  warn: {
         | 
| 622 | 
            +
                    handle_code: [
         | 
| 623 | 
            +
                      RokuBuilder::Controller::DEPRICATED_CONFIG
         | 
| 624 | 
            +
                    ]
         | 
| 625 | 
            +
                  }
         | 
| 626 | 
            +
                }
         | 
| 627 | 
            +
             | 
| 628 | 
            +
                errors.each_pair do |type,errors|
         | 
| 629 | 
            +
                  errors.each_pair do |key,value|
         | 
| 630 | 
            +
                    value.each do |code|
         | 
| 631 | 
            +
                      logger = Minitest::Mock.new
         | 
| 632 | 
            +
                      options = {options: {}, logger: logger}
         | 
| 633 | 
            +
                      options[key] = code
         | 
| 634 | 
            +
                      logger.expect(type, nil)  {|string| string.class == String}
         | 
| 635 | 
            +
                      RokuBuilder::Controller.handle_error_codes(**options)
         | 
| 636 | 
            +
                      logger.verify
         | 
| 637 | 
            +
                    end
         | 
| 638 | 
            +
                  end
         | 
| 639 | 
            +
                end
         | 
| 640 | 
            +
              end
         | 
| 641 | 
            +
             | 
| 642 | 
            +
              def test_controller_check_devices
         | 
| 643 | 
            +
                logger = Logger.new("/dev/null")
         | 
| 644 | 
            +
                ping = Minitest::Mock.new
         | 
| 645 | 
            +
                options = {device_given: false}
         | 
| 646 | 
            +
                config = {}
         | 
| 647 | 
            +
                config[:devices] = {
         | 
| 648 | 
            +
                  a: {ip: "2.2.2.2"},
         | 
| 649 | 
            +
                  b: {ip: "3.3.3.3"}
         | 
| 650 | 
            +
                }
         | 
| 651 | 
            +
                configs = {
         | 
| 652 | 
            +
                  device_config: {ip: "1.1.1.1"}
         | 
| 653 | 
            +
                }
         | 
| 654 | 
            +
             | 
| 655 | 
            +
                Net::Ping::External.stub(:new, ping) do
         | 
| 656 | 
            +
             | 
| 657 | 
            +
                  ping.expect(:ping?, true, [configs[:device_config][:ip], 1, 0.2, 1])
         | 
| 658 | 
            +
                  code, ret = RokuBuilder::Controller.check_devices(options: options, config: config, configs: configs, logger: logger)
         | 
| 659 | 
            +
                  assert_equal RokuBuilder::Controller::GOOD_DEVICE, code
         | 
| 660 | 
            +
             | 
| 661 | 
            +
                  ping.expect(:ping?, false, [configs[:device_config][:ip], 1, 0.2, 1])
         | 
| 662 | 
            +
                  ping.expect(:ping?, false, [config[:devices][:a][:ip], 1, 0.2, 1])
         | 
| 663 | 
            +
                  ping.expect(:ping?, false, [config[:devices][:b][:ip], 1, 0.2, 1])
         | 
| 664 | 
            +
                  code, ret = RokuBuilder::Controller.check_devices(options: options, config: config, configs: configs, logger: logger)
         | 
| 665 | 
            +
                  assert_equal RokuBuilder::Controller::NO_DEVICES, code
         | 
| 666 | 
            +
             | 
| 667 | 
            +
                  ping.expect(:ping?, false, [configs[:device_config][:ip], 1, 0.2, 1])
         | 
| 668 | 
            +
                  ping.expect(:ping?, true, [config[:devices][:a][:ip], 1, 0.2, 1])
         | 
| 669 | 
            +
                  code, ret = RokuBuilder::Controller.check_devices(options: options, config: config, configs: configs, logger: logger)
         | 
| 670 | 
            +
                  assert_equal RokuBuilder::Controller::CHANGED_DEVICE, code
         | 
| 671 | 
            +
                  assert_equal config[:devices][:a][:ip], ret[:device_config][:ip]
         | 
| 672 | 
            +
             | 
| 673 | 
            +
                  options[:device_given] = true
         | 
| 674 | 
            +
                  ping.expect(:ping?, false, [configs[:device_config][:ip], 1, 0.2, 1])
         | 
| 675 | 
            +
                  code, ret = RokuBuilder::Controller.check_devices(options: options, config: config, configs: configs, logger: logger)
         | 
| 676 | 
            +
                  assert_equal RokuBuilder::Controller::BAD_DEVICE, code
         | 
| 677 | 
            +
                end
         | 
| 678 | 
            +
              end
         | 
| 679 | 
            +
             | 
| 680 | 
            +
              def test_controller_run_debug
         | 
| 681 | 
            +
                logger = Minitest::Mock.new
         | 
| 682 | 
            +
                options = {debug: true}
         | 
| 683 | 
            +
             | 
| 684 | 
            +
                logger.expect(:formater=, nil) do |proc_object|
         | 
| 685 | 
            +
                  proc_object.class == PROC and proc_object.arity == 4
         | 
| 686 | 
            +
                end
         | 
| 687 | 
            +
                logger.expect(:level=, nil, [Logger::DEBUG])
         | 
| 688 | 
            +
                RokuBuilder::Controller.stub(:validate_options, nil) do
         | 
| 689 | 
            +
                  RokuBuilder::Controller.stub(:handle_options, nil) do
         | 
| 690 | 
            +
                    RokuBuilder::Controller.stub(:handle_error_codes, nil) do
         | 
| 691 | 
            +
                      RokuBuilder::Controller.run(options: options)
         | 
| 692 | 
            +
                    end
         | 
| 693 | 
            +
                  end
         | 
| 694 | 
            +
                end
         | 
| 695 | 
            +
              end
         | 
| 696 | 
            +
              def test_controller_run_info
         | 
| 697 | 
            +
                logger = Minitest::Mock.new
         | 
| 698 | 
            +
                options = {verbose: true}
         | 
| 699 | 
            +
             | 
| 700 | 
            +
                logger.expect(:formater=, nil) do |proc_object|
         | 
| 701 | 
            +
                  proc_object.class == PROC and proc_object.arity == 4
         | 
| 702 | 
            +
                end
         | 
| 703 | 
            +
                logger.expect(:level=, nil, [Logger::INFO])
         | 
| 704 | 
            +
                RokuBuilder::Controller.stub(:validate_options, nil) do
         | 
| 705 | 
            +
                  RokuBuilder::Controller.stub(:handle_options, nil) do
         | 
| 706 | 
            +
                    RokuBuilder::Controller.stub(:handle_error_codes, nil) do
         | 
| 707 | 
            +
                      RokuBuilder::Controller.run(options: options)
         | 
| 708 | 
            +
                    end
         | 
| 709 | 
            +
                  end
         | 
| 710 | 
            +
                end
         | 
| 711 | 
            +
              end
         | 
| 712 | 
            +
              def test_controller_run_warn
         | 
| 713 | 
            +
                logger = Minitest::Mock.new
         | 
| 714 | 
            +
                options = {}
         | 
| 715 | 
            +
             | 
| 716 | 
            +
                logger.expect(:formater=, nil) do |proc_object|
         | 
| 717 | 
            +
                  proc_object.class == PROC and proc_object.arity == 4
         | 
| 718 | 
            +
                end
         | 
| 719 | 
            +
                logger.expect(:level=, nil, [Logger::WARN])
         | 
| 720 | 
            +
                RokuBuilder::Controller.stub(:validate_options, nil) do
         | 
| 721 | 
            +
                  RokuBuilder::Controller.stub(:handle_options, nil) do
         | 
| 722 | 
            +
                    RokuBuilder::Controller.stub(:handle_error_codes, nil) do
         | 
| 723 | 
            +
                      RokuBuilder::Controller.run(options: options)
         | 
| 724 | 
            +
                    end
         | 
| 725 | 
            +
                  end
         | 
| 726 | 
            +
                end
         | 
| 248 727 | 
             
              end
         | 
| 249 728 | 
             
            end
         | 
| 250 729 |  |