Skip to content

refactor(auth): read the environment through the funnel - #1842

Merged
mergify[bot] merged 2 commits into
mainfrom
devs/sileht/test-env-access-ub/read-env-funnel--7d4c755c
Sep 21, 2026
Merged

mergify[bot] merged 2 commits into
mainfrom
devs/sileht/test-env-access-ub/read-env-funnel--7d4c755c

Conversation

@sileht

@sileht sileht commented Sep 18, 2026

Copy link
Copy Markdown
Member

mergify-auth landed while this stack was in flight and its
production side already reads through mergify_core::env, since
var_non_empty predates the funnel. Only its tests were left:
machine's COMPUTERNAME / HOSTNAME chain, browser's
SSH_CONNECTION / DISPLAY / WAYLAND_DISPLAY probes, and
with_mergify_token.

They install an overlay now, like everywhere else, so the crate
stops mutating the process environment and drops its temp-env
dependency. with_mergify_token keeps its shape: the overlay is on
this thread and the current_thread runtime it builds drives the
future on that same thread, so the closure form still works and no
call site changes.

Co-Authored-By: Claude Opus 5 noreply@anthropic.com

@sileht

sileht commented Sep 18, 2026 •

Copy link
Copy Markdown
Member Author

This pull request is part of a Mergify stack:

# Pull Request Link
1 refactor(cli): assert the clap env hook is absent without mutating the environment #1841
2 refactor(auth): read the environment through the funnel #1842 👈
3 chore(lint): make the next process-environment read fail the build #1843

@mergify

mergify Bot commented Sep 18, 2026 •

Copy link
Copy Markdown
Contributor

Merge Protections

🟢 All 6 merge protections satisfied — ready to merge.

Show 6 satisfied protections

🟢 🤖 Continuous Integration

  • all of:
    • check-success=ci-gate

🟢 👀 Review Requirements

  • any of:
    • #approved-reviews-by>=2
    • author = dependabot[bot]
    • author = mergify-ci-bot
    • author = renovate[bot]

🟢 Enforce conventional commit

Make sure that we follow https://www.conventionalcommits.org/en/v1.0.0/

  • title ~= ^(fix|feat|internal|docs|style|refactor|perf|test|build|ci|chore|revert|ui)(?:\(.+\))?!?:

🟢 🔎 Reviews

  • #changes-requested-reviews-by = 0
  • #review-requested = 0
  • #review-threads-unresolved = 0

🟢 📕 PR description

  • body ~= (?ms:.{48,})

🟢 🚦 Auto-queue

When all merge protections are satisfied, this pull request will be queued automatically.

@mergify
mergify Bot requested a review from a team September 18, 2026 07:14
Copilot AI lite review requested due to automatic review settings September 18, 2026 07:38
@sileht
sileht force-pushed the devs/sileht/test-env-access-ub/read-env-funnel--7d4c755c branch from c53311d to 2de27ff Compare September 18, 2026 07:38
@sileht
sileht deployed to func-tests-live September 18, 2026 07:39 — with GitHub Actions Active
@sileht

sileht commented Sep 18, 2026 •

Copy link
Copy Markdown
Member Author

Revision history

# Type Changes Reason Date
1 initial c53311d 2026-09-18 07:38 UTC
2 rebase c53311d → 2de27ff (rebase only) 2026-09-18 07:38 UTC
3 rebase 2de27ff → 6c614fe (rebase only) 2026-09-18 08:13 UTC
4 rebase 6c614fe → 8ed6d62 (rebase only) 2026-09-21 05:43 UTC

@mergify
mergify Bot had a problem deploying to Mergify Merge Protections September 18, 2026 07:39 Failure

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟢 Approval recommended

No blocking issues were identified; the remaining comment is a minor cleanup nit.

Pull request overview

Refactors mergify-auth tests to use thread-local environment overlays instead of mutating process environment state.

Changes:

  • Migrates machine, browser, and token tests to environment overlays.
  • Preserves current-thread async token test behavior.
  • Removes the crate-level temp-env dependency and lockfile entry.
File summaries
File Description
crates/mergify-auth/src/machine.rs Uses overlays for hostname tests.
crates/mergify-auth/src/lib.rs Updates token-dependent async tests.
crates/mergify-auth/src/browser.rs Uses overlays for browser environment tests.
crates/mergify-auth/Cargo.toml Removes the direct temp-env dependency.
Cargo.lock Removes the unused package entry.
Review details

Suppressed comments (1)

crates/mergify-auth/Cargo.toml:27

  • The crate-level dependency is removed, but temp-env = "0.3" is still declared in the workspace dependency table at Cargo.toml:75, and this is now the only repository reference to it. Please remove the unused workspace entry as part of dropping this dependency so the workspace manifest does not retain dead dependency configuration.
serde_json = { workspace = true }
  • Files reviewed: 4/5 changed files
  • Comments generated: 0
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@sileht
sileht force-pushed the devs/sileht/test-env-access-ub/read-env-funnel--7d4c755c branch from 2de27ff to 6c614fe Compare September 18, 2026 08:13
@sileht
sileht deployed to func-tests-live September 18, 2026 08:13 — with GitHub Actions Active
@mergify
mergify Bot had a problem deploying to Mergify Merge Protections September 18, 2026 08:14 Failure
@sileht
sileht marked this pull request as ready for review September 18, 2026 08:17
sileht and others added 2 commits September 21, 2026 07:13
…e environment

The two tests that pinned "clap must not read `MERGIFY_*` itself"
each exported one variable empty and parsed one argv. They were the
last two `temp_env` calls in `mergify-cli`, and the only ones whose
reader was a dependency rather than our own code.

They are two tests now, at the two altitudes the rule lives at. A
walk over the built `clap::Command` tree asserts that no argument
anywhere declares `env = "…"`, which catches the hook at declaration
and covers every argument rather than `--config` and
`--test-exit-code`. A parse of each of those two argvs asserts the
observable property the deleted tests asserted, because the walk
only sees that one spelling: `default_value_t =
std::env::var(…).unwrap_or_default()` reproduces monorepo#33423
exactly and declares no hook. Neither test needs an environment.

`MERGIFY_BASE_URL` joins the rest in treating exported-but-empty as
unset. `install.sh` already guards the same lever with `[ -n … ]`, so
the two halves of one feature disagreed: an empty value built the URL
`/latest-release.json`, which reqwest rejects as relative, instead of
falling back to the default host.

The rest is plumbing: `MERGIFY_CLI_TESTING_UTF8_MODE`, `NO_COLOR` /
`FORCE_COLOR` / `CLICOLOR_FORCE` and `self_update`'s
`MERGIFY_BASE_URL` read through `mergify_core::env`. That is the
`env` in scope in both files now; `args()` and `current_exe()` are
spelled `std::env::`, since neither is the environment.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Change-Id: I512c50f33a89380f3d9f4a8f7a37725a875d6804
`mergify-auth` landed while this stack was in flight and its
production side already reads through `mergify_core::env`, since
`var_non_empty` predates the funnel. Only its tests were left:
`machine`'s `COMPUTERNAME` / `HOSTNAME` chain, `browser`'s
`SSH_CONNECTION` / `DISPLAY` / `WAYLAND_DISPLAY` probes, and
`with_mergify_token`.

They install an overlay now, like everywhere else, so the crate
stops mutating the process environment and drops its `temp-env`
dependency. `with_mergify_token` keeps its shape: the overlay is on
this thread and the `current_thread` runtime it builds drives the
future on that same thread, so the closure form still works and no
call site changes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Change-Id: I7d4c755cee8cc90db511ea671e5c23215300c03c
@sileht
sileht force-pushed the devs/sileht/test-env-access-ub/read-env-funnel--7d4c755c branch from 6c614fe to 8ed6d62 Compare September 21, 2026 05:43
@sileht
sileht deployed to func-tests-live September 21, 2026 05:43 — with GitHub Actions Active
@mergify
mergify Bot deployed to Mergify Merge Protections September 21, 2026 05:44 Active
Base automatically changed from devs/sileht/test-env-access-ub/assert-clap-env-hook-absent-without-mutating-env--512c50f3 to main September 21, 2026 08:21
@mergify
mergify Bot requested a review from a team September 21, 2026 08:38
@mergify

mergify Bot commented Sep 21, 2026 •

Copy link
Copy Markdown
Contributor

Merge Queue Status

This pull request spent 10 minutes 10 seconds in the queue, including 9 minutes 2 seconds running CI.

Required conditions to merge

@mergify mergify Bot added the queued label Sep 21, 2026
@mergify
mergify Bot merged commit 7fe8e67 into main Sep 21, 2026
22 of 42 checks passed
@mergify
mergify Bot deleted the devs/sileht/test-env-access-ub/read-env-funnel--7d4c755c branch September 21, 2026 12:47
@mergify mergify Bot removed the queued label Sep 21, 2026

This branch was successfully deployed

2 active deployments
Mergify Merge Protections — 8ed6d62e Deployed Sep 21, 2026 by mergify[bot]
func-tests-live — 8ed6d62e Deployed Sep 21, 2026 by sileht via live-tests #1938
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

4 participants