Skip to content
This repository was archived by the owner on Mar 23, 2026. It is now read-only.
GitHub Actions / Test Results (amd64, MA/MR) - Integration, Bootstrap failed Feb 5, 2026 in 0s

1 fail, 521 skipped, 5 089 pass in 2h 38m 42s

    5 files  ±0      5 suites  ±0   2h 38m 42s ⏱️ -4s
5 611 tests +1  5 089 ✅ +1  521 💤 ±0  1 ❌ ±0 
5 617 runs  +1  5 089 ✅ +1  527 💤 ±0  1 ❌ ±0 

Results for commit c2656fe. ± Comparison against earlier commit 4cb765f.

Annotations

Check warning on line 0 in tests.aws.services.cloudformation.test_change_set_mappings.TestChangeSetMappings

See this annotation in the file changed.

@github-actions github-actions / Test Results (amd64, MA/MR) - Integration, Bootstrap

test_fn_find_in_map_with_nested_ref_change_mapping (tests.aws.services.cloudformation.test_change_set_mappings.TestChangeSetMappings) failed

test-results-integration-amd64-1/pytest-junit-integration-amd64-1.xml [took 0s]
Raw output
botocore.exceptions.ClientError: An error occurred (ValidationError) when calling the CreateChangeSet operation: Template error: Unable to get mapping for RegionMap::eu-central-1::value
self = <test_change_set_mappings.TestChangeSetMappings object at 0x7f678cd0f850>
snapshot = <localstack_snapshot.snapshots.prototype.SnapshotSession object at 0x7f6596c13c50>
capture_update_process = <function capture_update_process.<locals>.inner at 0x7f659e2a1260>

    @markers.snapshot.skip_snapshot_verify(paths=["$..LastOperations"])
    @markers.aws.validated
    def test_fn_find_in_map_with_nested_ref_change_mapping(
        self,
        snapshot,
        capture_update_process,
    ):
        name1 = f"topic-name-1-{long_uid()}"
        snapshot.add_transformer(RegexTransformer(name1, "topic-name-1"))
    
        template_1 = {
            "Mappings": {
                "RegionMap": {
                    "us-east-1": {"value": "east-value-1"},
                    "us-west-2": {"value": "west-value-1"},
                }
            },
            "Resources": {
                "Topic1": {
                    "Type": "AWS::SNS::Topic",
                    "Properties": {
                        "TopicName": name1,
                        "DisplayName": {
                            "Fn::FindInMap": [
                                "RegionMap",
                                {"Ref": "AWS::Region"},  # Nested Ref
                                "value",
                            ]
                        },
                    },
                }
            },
        }
    
        # Change the mapping values
        template_2 = {
            "Mappings": {
                "RegionMap": {
                    "us-east-1": {"value": "east-value-2"},  # Changed
                    "us-west-2": {"value": "west-value-2"},  # Changed
                }
            },
            "Resources": {
                "Topic1": {
                    "Type": "AWS::SNS::Topic",
                    "Properties": {
                        "TopicName": name1,
                        "DisplayName": {
                            "Fn::FindInMap": [
                                "RegionMap",
                                {"Ref": "AWS::Region"},
                                "value",
                            ]
                        },
                    },
                }
            },
        }
    
        # Should detect the mapping change and mark resource as modified
>       capture_update_process(snapshot, template_1, template_2)

tests/aws/services/cloudformation/test_change_set_mappings.py:427: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
localstack-core/localstack/testing/pytest/cloudformation/fixtures.py:157: in inner
    change_set_details = aws_client_no_retry.cloudformation.create_change_set(
.venv/lib/python3.13/site-packages/botocore/client.py:602: in _api_call
    return self._make_api_call(operation_name, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/botocore/context.py:123: in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <botocore.client.CloudFormation object at 0x7f6660166f90>
operation_name = 'CreateChangeSet'
api_params = {'Capabilities': ['CAPABILITY_IAM', 'CAPABILITY_NAMED_IAM', 'CAPABILITY_AUTO_EXPAND'], 'ChangeSetName': 'cs-8a7f236b', 'ChangeSetType': 'CREATE', 'Parameters': [], ...}

    @with_current_context()
    def _make_api_call(self, operation_name, api_params):
        operation_model = self._service_model.operation_model(operation_name)
        service_name = self._service_model.service_name
        history_recorder.record(
            'API_CALL',
            {
                'service': service_name,
                'operation': operation_name,
                'params': api_params,
            },
        )
        if operation_model.deprecated:
            logger.debug(
                'Warning: %s.%s() is deprecated', service_name, operation_name
            )
        request_context = {
            'client_region': self.meta.region_name,
            'client_config': self.meta.config,
            'has_streaming_input': operation_model.has_streaming_input,
            'auth_type': operation_model.resolved_auth_type,
            'unsigned_payload': operation_model.unsigned_payload,
            'auth_options': self._service_model.metadata.get('auth'),
        }
    
        api_params = self._emit_api_params(
            api_params=api_params,
            operation_model=operation_model,
            context=request_context,
        )
        (
            endpoint_url,
            additional_headers,
            properties,
        ) = self._resolve_endpoint_ruleset(
            operation_model, api_params, request_context
        )
        if properties:
            # Pass arbitrary endpoint info with the Request
            # for use during construction.
            request_context['endpoint_properties'] = properties
        request_dict = self._convert_to_request_dict(
            api_params=api_params,
            operation_model=operation_model,
            endpoint_url=endpoint_url,
            context=request_context,
            headers=additional_headers,
        )
        resolve_checksum_context(request_dict, operation_model, api_params)
    
        service_id = self._service_model.service_id.hyphenize()
        handler, event_response = self.meta.events.emit_until_response(
            f'before-call.{service_id}.{operation_name}',
            model=operation_model,
            params=request_dict,
            request_signer=self._request_signer,
            context=request_context,
        )
    
        if event_response is not None:
            http, parsed_response = event_response
        else:
            maybe_compress_request(
                self.meta.config, request_dict, operation_model
            )
            apply_request_checksum(request_dict)
            http, parsed_response = self._make_request(
                operation_model, request_dict, request_context
            )
    
        self.meta.events.emit(
            f'after-call.{service_id}.{operation_name}',
            http_response=http,
            parsed=parsed_response,
            model=operation_model,
            context=request_context,
        )
    
        if http.status_code >= 300:
            error_info = parsed_response.get("Error", {})
            error_code = request_context.get(
                'error_code_override'
            ) or error_info.get("Code")
            error_class = self.exceptions.from_code(error_code)
>           raise error_class(parsed_response, operation_name)
E           botocore.exceptions.ClientError: An error occurred (ValidationError) when calling the CreateChangeSet operation: Template error: Unable to get mapping for RegionMap::eu-central-1::value

.venv/lib/python3.13/site-packages/botocore/client.py:1078: ClientError