Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(assertions): incorrect assertions when >1 messages on a resource #18948

Merged
merged 5 commits into from Feb 14, 2022

Conversation

kaizencc
Copy link
Contributor

Previously we relied on the message id as a key to the internal messages object we maintain. However, the id is the construct path, and this is not unique if there are multiple messages attached to a particular construct. This would result in erroneous behavior from Annotations, as the newer message would overwrite the old one.

The fix here is to not depend on the id as the key at all. We don't need it, and it's there just to mold the messages into an object that matchSection can handle. Instead, we can index on index, and suddenly all our problems are solved.

I also redacted the stack trace from the `findXxx APIs; I don't see this as a breaking change because it is unfathomable that anyone is depending on the stack trace output, which is a long list of gibberish.

Fixes #18840.


By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license

@gitpod-io
Copy link

gitpod-io bot commented Feb 11, 2022

@github-actions github-actions bot added the @aws-cdk/assertions Related to the @aws-cdk/assertv2 package label Feb 11, 2022
@mergify mergify bot added the contribution/core This is a PR that came from AWS. label Feb 11, 2022
@yamatatsu
Copy link
Contributor

@kaizen3031593
Thank you for your fixing! 🙏🏻
Only one suggestion, the key name logicalId of Messages in assertions/lib/private/message.ts is better to change to key (or Record<string, SynthesisMessage>?) I think.

@kaizencc kaizencc added the pr/do-not-merge This PR should not be merged at this time. label Feb 14, 2022
@kaizencc kaizencc removed the pr/do-not-merge This PR should not be merged at this time. label Feb 14, 2022
@mergify
Copy link
Contributor

mergify bot commented Feb 14, 2022

Thank you for contributing! Your pull request will be updated from master and then merged automatically (do not update manually, and be sure to allow changes to be pushed to your fork).

@aws-cdk-automation
Copy link
Collaborator

AWS CodeBuild CI Report

  • CodeBuild project: AutoBuildProject89A8053A-LhjRyN9kxr8o
  • Commit ID: 39e0922
  • Result: SUCCEEDED
  • Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

@mergify mergify bot merged commit 072e1b9 into master Feb 14, 2022
@mergify mergify bot deleted the conroy/assert branch February 14, 2022 16:32
@mergify
Copy link
Contributor

mergify bot commented Feb 14, 2022

Thank you for contributing! Your pull request will be updated from master and then merged automatically (do not update manually, and be sure to allow changes to be pushed to your fork).

mergify bot pushed a commit that referenced this pull request Feb 16, 2022
Some tests are failing in v2 due to an oversight that had tests depend on user-supplied context. This PR reverts a change made in #18948 that redacted the stack trace for `findXxx()` APIs. Since this is something the user can configure through context values, it is unnecessary. As such, a few tests are now irrelevant.

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
TikiTDO pushed a commit to TikiTDO/aws-cdk that referenced this pull request Feb 21, 2022
…ws#18948)

Previously we relied on the message id as a key to the internal `messages` object we maintain. However, the id is the construct path, and this is not unique if there are multiple messages attached to a particular construct. This would result in erroneous behavior from `Annotations`, as the newer message would overwrite the old one.

The fix here is to not depend on the id as the key at all. We don't need it, and it's there just to mold the messages into an object that `matchSection` can handle. Instead, we can index on `index`, and suddenly all our problems are solved.

I also redacted the stack trace from the `findXxx APIs; I don't see this as a breaking change because it is unfathomable that anyone is depending on the stack trace output, which is a long list of gibberish.

Fixes aws#18840. 

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
TikiTDO pushed a commit to TikiTDO/aws-cdk that referenced this pull request Feb 21, 2022
Some tests are failing in v2 due to an oversight that had tests depend on user-supplied context. This PR reverts a change made in aws#18948 that redacted the stack trace for `findXxx()` APIs. Since this is something the user can configure through context values, it is unnecessary. As such, a few tests are now irrelevant.

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
@aws-cdk/assertions Related to the @aws-cdk/assertv2 package contribution/core This is a PR that came from AWS.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

(assertions): support multiple messages by logicalId in Annotations
4 participants