def test_must_provide_entrypoint_for_certain_runtimes_only(self, runtime):
        if runtime in RUNTIMES_WITH_ENTRYPOINT_OVERRIDES:
            result, _ = LambdaContainer._get_debug_settings(runtime, self.debug_options)
            self.assertIsNotNone(result, "{} runtime must provide entrypoint".format(runtime))

        elif runtime in RUNTIMES_WITH_DEBUG_ENV_VARS_ONLY:
            result, _ = LambdaContainer._get_debug_settings(runtime, self.debug_options)
            self.assertEqual("/var/rapid/init", result, "{} runtime must not override entrypoint".format(runtime))
        else:
            with self.assertRaises(DebuggingNotSupported):
                LambdaContainer._get_debug_settings(runtime, self.debug_options)
    def test_delve_api_version_can_be_read_from_debug_args(
            self, version, debug_args):
        debug_options = DebugContext(debug_ports=[1235], debug_args=debug_args)
        _, env_vars = LambdaContainer._get_debug_settings(
            Runtime.go1x.value, debug_options)

        self.assertEqual(env_vars.get("_AWS_LAMBDA_GO_DELVE_API_VERSION"),
                         version)
    def test_debug_arg_must_be_split_by_spaces_and_appended_to_bootstrap_based_entrypoint(self, runtime):
        """
        Debug args list is appended as arguments to bootstrap-args, which is past the fourth position in the array
        """
        expected_debug_args = ["a=b", "c=d", "e=f"]
        result, _ = LambdaContainer._get_debug_settings(runtime, self.debug_options)
        actual = result[4:5][0]

        self.assertTrue(all(debug_arg in actual for debug_arg in expected_debug_args))
    def test_debug_arg_must_be_split_by_spaces_and_appended_to_entrypoint(self, runtime):
        """
        Debug args list is appended starting at second position in the array
        """
        expected_debug_args = ["a=b", "c=d", "e=f"]
        result, _ = LambdaContainer._get_debug_settings(runtime, self.debug_options)
        actual = result[1:4]

        self.assertEqual(actual, expected_debug_args)
    def test_must_provide_entrypoint_even_without_debug_args(self, runtime):
        debug_options = DebugContext(debug_ports=[1235], debug_args=None)
        result, _ = LambdaContainer._get_debug_settings(runtime, debug_options)

        self.assertIsNotNone(result)
    def test_must_provide_debug_env_vars(self, runtime):
        _, debug_env_vars = LambdaContainer._get_debug_settings(
            runtime, self.debug_options)

        self.assertIsNotNone(debug_env_vars)
 def test_must_skip_if_debug_port_is_not_specified(self):
     self.assertEqual(
         ("/var/rapid/init", {}),
         LambdaContainer._get_debug_settings("runtime", None),
         "Must not provide entrypoint if debug port is not given",
     )
 def test_must_skip_if_debug_port_is_not_specified(self):
     self.assertEqual(
         (LambdaContainer._DEFAULT_ENTRYPOINT, {}),
         LambdaContainer._get_debug_settings("runtime", None),
         "Must not provide entrypoint if debug port is not given",
     )