Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions test_report/tests/common/env.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
use std::env;

use constants::{
TRUNK_ALLOW_EMPTY_TEST_RESULTS_ENV, TRUNK_API_CLIENT_RETRY_COUNT_ENV, TRUNK_API_TOKEN_ENV,
TRUNK_CODEOWNERS_PATH_ENV, TRUNK_DISABLE_QUARANTINING_ENV, TRUNK_DRY_RUN_ENV,
TRUNK_ORG_URL_SLUG_ENV, TRUNK_PR_NUMBER_ENV, TRUNK_PUBLIC_API_ADDRESS_ENV,
TRUNK_QUARANTINED_TESTS_DISK_CACHE_TTL_SECS_ENV, TRUNK_REPO_HEAD_AUTHOR_NAME_ENV,
TRUNK_REPO_HEAD_BRANCH_ENV, TRUNK_REPO_HEAD_COMMIT_EPOCH_ENV, TRUNK_REPO_HEAD_SHA_ENV,
TRUNK_REPO_ROOT_ENV, TRUNK_REPO_URL_ENV, TRUNK_USE_UNCLONED_REPO_ENV, TRUNK_VARIANT_ENV,
};

/// Cleans up all TRUNK_* and CI-related environment variables to avoid test interference.
pub fn cleanup_env_vars() {
unsafe {
env::remove_var(TRUNK_PUBLIC_API_ADDRESS_ENV);
env::remove_var(TRUNK_API_TOKEN_ENV);
env::remove_var(TRUNK_ORG_URL_SLUG_ENV);
env::remove_var(TRUNK_PR_NUMBER_ENV);
env::remove_var(TRUNK_REPO_ROOT_ENV);
env::remove_var(TRUNK_REPO_URL_ENV);
env::remove_var(TRUNK_REPO_HEAD_SHA_ENV);
env::remove_var(TRUNK_REPO_HEAD_BRANCH_ENV);
env::remove_var(TRUNK_REPO_HEAD_COMMIT_EPOCH_ENV);
env::remove_var(TRUNK_REPO_HEAD_AUTHOR_NAME_ENV);
env::remove_var(TRUNK_VARIANT_ENV);
env::remove_var(TRUNK_USE_UNCLONED_REPO_ENV);
env::remove_var(TRUNK_DISABLE_QUARANTINING_ENV);
env::remove_var(TRUNK_ALLOW_EMPTY_TEST_RESULTS_ENV);
env::remove_var(TRUNK_DRY_RUN_ENV);
env::remove_var(TRUNK_CODEOWNERS_PATH_ENV);
env::remove_var("CI");
env::remove_var("GITHUB_JOB");
env::remove_var(TRUNK_QUARANTINED_TESTS_DISK_CACHE_TTL_SECS_ENV);
env::remove_var(TRUNK_API_CLIENT_RETRY_COUNT_ENV);
}
}

#[allow(dead_code)]
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

I realize this is an antipattern in rust-world, but it matches the pattern of the rest of this repo, and I didn't want to undertake crate explosion right now. Having these common utils are necessary for the other "integration" tests in this crate.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

what about this is an anti-pattern? new to rust

Copy link
Copy Markdown
Member

@dfrankland dfrankland May 29, 2026

Choose a reason for hiding this comment

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

Ideally you don't define re-usable functions for tests within the tests directory. It forces one to mark the functions as dead_code because code (the test functions themselves) within tests files only materializes via compiler options.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

The compiler only executes this function inside of tests, which are excluded from the normal compilation cycle, so it thinks this is dead code. The better pattern afaik is to setup separate, flat crates for test_report, test_report_tests, test_report_test_utils, that way the functions are used either directly where they're defined or exposed as public in the crate (and therefore not unused). That's what I tried to do for the rust integration tests in trunk2. But doing so right now in analytics-cli would require a substantial refactor, so I'm just using the macro here to bypass the warning

pub fn clean_up_cache_files() {
let cache_dir = env::temp_dir().join(constants::CACHE_DIR);
if let Ok(entries) = std::fs::read_dir(&cache_dir) {
for entry in entries.flatten() {
let _ = std::fs::remove_file(entry.path());
}
}
}
5 changes: 5 additions & 0 deletions test_report/tests/common/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
//! Shared helpers for `test_report` integration tests.

mod env;

pub use env::{clean_up_cache_files, cleanup_env_vars};
Loading
Loading