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

chore: Fail fast when migration test is detecting TF_CLI_CONFIG_FILE #2266

Merged
merged 2 commits into from May 20, 2024

Conversation

EspenAlbert
Copy link
Collaborator

@EspenAlbert EspenAlbert commented May 10, 2024

Description

Using TF_CLI_CONFIG_FILE might cause your local "latest" build version of TF provider to be used instead of latest released version (e.g., 1.16.0)

Link to any related issue(s): CLOUDP-248697

Type of change:

  • Bug fix (non-breaking change which fixes an issue). Please, add the "bug" label to the PR.
  • New feature (non-breaking change which adds functionality). Please, add the "enhancement" label to the PR. A migration guide must be created or updated if the new feature will go in a major version.
  • Breaking change (fix or feature that would cause existing functionality to not work as expected). Please, add the "breaking change" label to the PR. A migration guide must be created or updated.
  • This change requires a documentation update
  • Documentation fix/enhancement

Required Checklist:

  • I have signed the MongoDB CLA
  • I have read the contributing guides
  • I have checked that this change does not generate any credentials and that they are NOT accidentally logged anywhere.
  • I have added tests that prove my fix is effective or that my feature works per HashiCorp requirements
  • I have added any necessary documentation (if appropriate)
  • I have run make fmt and formatted my code
  • If changes include deprecations or removals, I defined an isolated PR with a relevant title as it will be used in the auto-generated changelog.
  • If changes include removal or addition of 3rd party GitHub actions, I updated our internal document. Reach out to the APIx Integration slack channel to get access to the internal document.

Further comments


func validateConflictingEnvVars() {
if os.Getenv("TF_CLI_CONFIG_FILE") != "" {
log.Fatal("found `TF_CLI_CONFIG_FILE` in env-var when running migration tests, this might override the terraform provider for MONGODB_ATLAS_LAST_VERSION and instead use local latest build!")
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would have liked to use tb.Fatal instead of log.Fatal but I think there is a possibility of versionConstraint being called without checkLastVersion, therefore, I had to use log.Fatal

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sorry, not sure I understand this, can you elaborate or explain in a different way? We shouldn't use log.Fatal in tests but tb.Fatal

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was afraid of a case where some migration tests would call ExternalProvidersWithAWS and ExternalProviders which call versionConstraint and the migration test would not be skipped.
However, looking at the code, everywhere those are used we expect to see mig.PreCheck or mig.SkipIfVersionBelow used which would check the TF_CLI_CONFIG_FILE env-var and skip the test

Changed in 11ecbc6

@EspenAlbert EspenAlbert marked this pull request as ready for review May 10, 2024 15:26
@EspenAlbert EspenAlbert requested a review from a team as a code owner May 10, 2024 15:26
@EspenAlbert EspenAlbert added the not_stale Not stale issue or PR label May 15, 2024
@@ -11,6 +11,7 @@ import (

func SkipIfVersionBelow(tb testing.TB, minVersion string) {
tb.Helper()
validateConflictingEnvVars(tb)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we need to call it here? I assume that checkLastVersion will be called at some point in a mig test

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I found some examples where only acc pre checks are used, e.g., here.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh i see, so we have some inconsistencies as we should call checkLastVersion before calling versionConstraint, but it's not happening in the example you're mentioning.

mig.ExternalProviders calls versionConstraint but checkLastVersion is not called because the test is missing a mig precheck

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

all mig tests should call a mig precheck but not sure if it's easy to enforce

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, it would be nice if we could enforce it.
For now, I pefer keeping the validateConflictingEnvVars in the SkipIfVersionBelow 👍

@EspenAlbert EspenAlbert merged commit 06c7b2a into master May 20, 2024
32 checks passed
@EspenAlbert EspenAlbert deleted the CLOUDP-248697 branch May 20, 2024 14:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
not_stale Not stale issue or PR
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants