Пример #1
0
 def test_show_player_in_show(self):
     with self.assertRaises(AssertionError) as e:
         super().setUp()
         self.post_event("play_broken_show")
     self.assertEqual(str(e.exception),
                      'Config File Error in show: "broken_show" >> Invalid section "light_player:" '
                      'found. Did you mean "lights:" instead? Context: broken_show '
                      'Error Code: CFE-show-3 ({})'.format(log_url.format("CFE-show-3")))
     self.loop.close()
Пример #2
0
 def __str__(self):
     """Return nice string."""
     error_slug = "CFE-{}-{}".format(self._logger_name, self._error_no)
     error_url = log_url.format(error_slug)
     if self._context:
         return "Config File Error in {}: {} Context: {} Error Code: {} ({})".format(
             self._logger_name,
             super().__str__(), self._context, error_slug, error_url)
     else:
         return "Config File Error in {}: {} Error Code: {} ({})".format(
             self._logger_name,
             super().__str__(), error_slug, error_url)
Пример #3
0
    def test_broken_mode_config(self):
        self.config = 'test_broken_mode_config.yaml'
        with self.assertRaises(AssertionError) as context:
            super(TestModesConfigValidation, self).setUp()

        self.loop.close()

        self.maxDiff = None
        self.assertEqual(
            'Config File Error in ConfigValidator: Your config contains a value for the setting '
            '"mode:invalid_key", but this is not a valid setting name. Error Code: CFE-ConfigValidator-2 '
            '({})'.format(log_url.format("CFE-ConfigValidator-2")),
            str(context.exception))
Пример #4
0
    def format_log_line(self, msg, context, error_no) -> str:
        """Return a formatted log line with log link and context."""
        if error_no:
            error_slug = "Log-{}-{}".format(self.log.name if self.log else "", error_no)
            error_url = log_url.format(error_slug)
        if error_no and context:
            return "{} Context: {} Log Code: {} ({})".format(msg, context, error_slug, error_url)
        if context:
            return "{} Context: {} ".format(msg, context)
        if error_no:
            return "{} Log Code: {} ({})".format(msg, error_slug, error_url)

        return msg
Пример #5
0
    def __str__(self):
        """Return nice string."""
        error_slug = "{}-{}-{}".format(self.get_short_name(),
                                       self._url_name.replace(" ", "_"),
                                       self._error_no)
        error_url = log_url.format(error_slug)
        if self._context:
            return "{} in {}: {} Context: {} Error Code: {} ({})".format(
                self.get_long_name(), self._logger_name,
                super().__str__(), self._context, error_slug, error_url)

        return "{} in {}: {} Error Code: {} ({})".format(
            self.get_long_name(), self._logger_name,
            super().__str__(), error_slug, error_url)
Пример #6
0
    def test_typo(self):
        """Test suggestion on typo."""
        config_file = os.path.join(os.path.dirname(os.path.realpath(__file__)),
                                   "machine_files/config_processor/typo.yaml")
        with self.assertRaises(ConfigFileError) as e:
            config = self.config_processor.load_config_files_with_cache(
                [config_file], "machine")

        self.assertEqual(
            'Config File Error in ConfigProcessor: Found a "light:" section in config '
            'file {config_file}, '
            'but that section name is unknown. Did you mean "lights:" instead?. Context: '
            '{config_file} '
            'Error Code: CFE-ConfigProcessor-3 ({})'.format(
                log_url.format("CFE-ConfigProcessor-3"),
                config_file=config_file), str(e.exception))
Пример #7
0
    def test_config_validator(self):
        validation_failure_info = (("key", "entry"), "subkey")
        # test config spec syntax error
        self.assertRaises(ValueError,
                          self.machine.config_validator.validate_config_item,
                          'single|int'.split("|"), None, None)

        # test default required, source is int
        validation_string = 'single|int|'.split("|")
        results = self.machine.config_validator.validate_config_item(
                validation_string, 'test_failure_info', 0)
        self.assertEqual(results, 0)

        # test default provided, source overrides default
        validation_string = 'single|int|0'.split("|")
        results = self.machine.config_validator.validate_config_item(
                validation_string, 'test_failure_info', 1)
        self.assertEqual(results, 1)

        # test source type is converted to int
        validation_string = 'single|int|0'.split("|")
        results = self.machine.config_validator.validate_config_item(
                validation_string, 'test_failure_info', '1')
        self.assertEqual(results, 1)

        # test default when no source is present
        validation_string = 'single|int|1'.split("|")
        results = self.machine.config_validator.validate_config_item(
                validation_string, 'test_failure_info')  # no item in config
        self.assertEqual(results, 1)

        # test default required with source missing raises error
        validation_string = 'single|int|'.split("|")  # default required
        self.assertRaises(ConfigFileError,
                          self.machine.config_validator.validate_config_item,
                          validation_string, 'test_failure_info')  # no item

        # test broken int
        validation_string = 'single|int|'.split("|")  # default required
        with self.assertRaises(AssertionError) as e:
            results = self.machine.config_validator.validate_config_item(
                validation_string, validation_failure_info, '1s')

        # test int with range
        validation_string = 'single|int(0,10)|'.split("|")

        results = self.machine.config_validator.validate_config_item(
            validation_string, validation_failure_info, '0')
        self.assertEqual(results, 0)

        results = self.machine.config_validator.validate_config_item(
            validation_string, validation_failure_info, '7')
        self.assertEqual(results, 7)

        results = self.machine.config_validator.validate_config_item(
            validation_string, validation_failure_info, '10')
        self.assertEqual(results, 10)

        with self.assertRaises(AssertionError) as e:
            results = self.machine.config_validator.validate_config_item(
                validation_string, validation_failure_info, '-1')

        with self.assertRaises(AssertionError) as e:
            results = self.machine.config_validator.validate_config_item(
                validation_string, validation_failure_info, 11)

        # int with open end
        validation_string = 'single|int(0,NONE)|'.split("|")
        results = self.machine.config_validator.validate_config_item(
            validation_string, validation_failure_info, 999)
        self.assertEqual(results, 999)

        with self.assertRaises(AssertionError) as e:
            results = self.machine.config_validator.validate_config_item(
                validation_string, validation_failure_info, -1)

        # test str validations

        validation_string = 'single|str|'.split("|")
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', 'hello')
        self.assertEqual(results, 'hello')
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', 1)
        self.assertEqual(results, '1')
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', "none")
        self.assertEqual(results, None)

        # test lstr
        validation_string = 'single|lstr|'.split("|")
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', 'HellO')
        self.assertEqual(results, 'hello')
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', 'hello')
        self.assertEqual(results, 'hello')
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', 'H1')
        self.assertEqual(results, 'h1')
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', 'none')
        self.assertEqual(results, None)

        # test float validations

        validation_string = 'single|float|'.split("|")
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', 1)
        self.assertAlmostEqual(results, 1.0, .01)

        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', '1')
        self.assertAlmostEqual(results, 1.0, .01)

        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', 1.0)
        self.assertAlmostEqual(results, 1.0, .01)

        # test num validations

        validation_string = 'single|num|'.split("|")
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', 1.0)
        self.assertAlmostEqual(results, 1.0, .01)
        self.assertEqual(type(results), float)
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', '1.0')
        self.assertAlmostEqual(results, 1.0, .01)
        self.assertEqual(type(results), float)
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', 1)
        self.assertEqual(results, 1)
        self.assertIs(type(results), int)
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', '1')
        self.assertEqual(results, 1)
        self.assertIs(type(results), int)

        # test int_from_hex
        validation_string = 'single|int_from_hex|ff'.split("|")
        results = self.machine.config_validator.validate_config_item(
                validation_string, 'test_failure_info')  # no item in config
        self.assertEqual(results, 255)

        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', '0a')
        self.assertEqual(results, 10)

        with self.assertRaises(AssertionError):
            self.machine.config_validator.validate_config_item(
                validation_string, validation_failure_info, 'white')

        # test bool validations
        validation_string = 'single|bool|'.split("|")
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', 'f')
        self.assertFalse(results)

        validation_string = 'single|boolean|'.split("|")
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', 'f')
        self.assertFalse(results)

        validation_string = 'single|bool|'.split("|")
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', 'false')
        self.assertFalse(results)

        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', False)
        self.assertFalse(results)

        # test bool_int validations
        validation_string = 'single|bool_int|'.split("|")
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', 'f')
        self.assertEqual(0, results)
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', 't')
        self.assertEqual(1, results)
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', 'false')
        self.assertEqual(0, results)
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', False)
        self.assertEqual(0, results)
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', "True")
        self.assertEqual(1, results)

        # test ms conversions
        validation_string = 'single|ms|'.split("|")
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', 100)
        self.assertEqual(results, 100)

        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', 100.0)
        self.assertEqual(results, 100)

        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', '100')
        self.assertEqual(results, 100)

        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', '100ms')
        self.assertEqual(results, 100)

        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', '1s')
        self.assertEqual(results, 1000)

        # test sec conversions
        validation_string = 'single|secs|'.split("|")
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', 100)
        self.assertEqual(results, 100)

        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', 100.0)
        self.assertEqual(results, 100)

        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', '100')
        self.assertEqual(results, 100)

        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', '100s')
        self.assertEqual(results, 100)

        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', '100ms')
        self.assertEqual(results, .1)

        # test single list conversions
        # (this just test it gets converted to a list since string_to_list
        # is tested earlier)
        validation_string = 'single|list|'.split("|")
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', 'hi')
        self.assertEqual(results, ['hi'])

        # Test lists
        validation_string = 'list|int|'.split("|")
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', '1, 2, 3')
        self.assertEqual(results, [1, 2, 3])

        # Test set
        validation_string = 'set|int|'.split("|")
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', '1, 2, 3')
        self.assertEqual(results, {1, 2, 3})

        # Test dict
        validation_string = 'dict|str:int|'.split("|")
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', dict(hello='1'))
        self.assertEqual(results, dict(hello=1))

        # Test color
        validation_string = 'single|color|'.split("|")
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', 'red')
        self.assertEqual(results, (255, 0, 0))

        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', 'ff0000')
        self.assertEqual(results, (255, 0, 0))

        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', '255, 0, 0')
        self.assertEqual(results, (255, 0, 0))

        # Test kivycolor
        validation_string = 'single|kivycolor|'.split("|")
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', 'red')
        self.assertEqual(results, [1, 0, 0, 1])

        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', 'ff0000')
        self.assertEqual(results, [1, 0, 0, 1])

        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', '255, 0, 0')
        self.assertEqual(results, [1, 0, 0, 1])

        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', 'ff000000')
        self.assertEqual(results, [1, 0, 0, 0])

        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', '255, 0, 0, 255')
        self.assertEqual(results, [1, 0, 0, 1])

        # Test gain
        validation_string = 'single|gain|'.split("|")
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', '0.0')
        self.assertEqual(results, 0.0)

        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', '1.0')
        self.assertEqual(results, 1.0)

        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', '2.0')
        self.assertEqual(results, 1.0)

        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', '-3')
        self.assertEqual(results, 0.0)

        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', '0 db')
        self.assertEqual(results, 1.0)

        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', '-inf')
        self.assertEqual(results, 0.0)

        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', '-3 DB')
        self.assertAlmostEqual(results, 0.707945784)

        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', '-6db')
        self.assertAlmostEqual(results, 0.501187233)

        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', '-17.5db')
        self.assertAlmostEqual(results, 0.133352143)

        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', '3db')
        self.assertEqual(results, 1.0)

        # test pow2
        validation_string = 'single|pow2|'.split("|")
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', 128)
        self.assertEqual(results, 128)
        results = self.machine.config_validator.validate_config_item(
            validation_string, 'test_failure_info', '128')
        self.assertEqual(results, '128')

        with self.assertRaises(AssertionError):
            self.machine.config_validator.validate_config_item(
                validation_string, validation_failure_info, '127')

        # test enum
        validation_string = 'single|enum(None,test)|None'.split("|")
        results = self.machine.config_validator.validate_config_item(
            validation_string, validation_failure_info, None)
        self.assertEqual(None, results)

        results = self.machine.config_validator.validate_config_item(
            validation_string, validation_failure_info, "None")
        self.assertEqual(None, results)

        results = self.machine.config_validator.validate_config_item(
            validation_string, validation_failure_info, "test")
        self.assertEqual("test", results)

        self.maxDiff = None
        with self.assertRaises(AssertionError) as e:
            self.machine.config_validator.validate_config_item(
                validation_string, validation_failure_info, 'something else')
        self.assertEqual('Config File Error in ConfigValidator: Config validation error: Entry '
                         'key:entry:subkey = "something else" is not valid. Entry "something else" is not valid for enum. '
                         'Valid values are: None,test Error Code: CFE-ConfigValidator-5 '
                         '({})'.format(log_url.format("CFE-ConfigValidator-5")), str(e.exception))

        # test enum with 'NO' setting
        validation_string = 'single|enum(nc,no)|no'.split("|")
        results = self.machine.config_validator.validate_config_item(
            validation_string, validation_failure_info, False)
        self.assertEqual('no', results)