Repository navigation
Isolate GCP test selection and credential fixture lifetimes - #128
danielmawhirter wants to merge 1 commit into
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Comment |
Change map
Observed failure: mixed test modules performed credential work during collection, while decorator authentication could run after dependent resource fixtures. Broad environment inheritance coupled unrelated providers. Smallest sufficient change: introduce one shared profile registry, early selection plugin, isolated GCP launcher, and fixture-owned credential lifetime. Existing workflows are deliberately outside this PR; the dependent routing PR activates these contracts. Verification: 117 focused tests passed (37 launcher, 26 plugin, 54 credential helpers), including real child coverage output. Collection audit: 154 baseline nodes = 88 general + 65 GCP + one GCP/AWS, with no omissions or overlaps. Python lint/isort passed. Live authentication remains unverified. Stopping condition: exact disjoint GCP ownership is demonstrable, unrelated modules are excluded before import, credentials exist before dependent fixtures, and child execution receives only declared inputs. General/Snowflake isolated runtime refuses execution pending Azure/Databricks classification; their collection mode remains available. Removal of the direct local BigQuery compatibility wrapper and remaining local GCS legacy inputs are separate follow-ups. |
|
Superseded by #224 and #225, which retain collection-safe fixture setup, credential ordering, and scoped lifecycle cleanup without the generic profile registry, launcher, and selection plugin. Worth revisiting separately: provider-specific process environments and audited test ownership, especially Azure/Databricks. Start with explicit jobs and ordinary fixtures; the full profile framework is not required to unblock GCP CI. |
Depends on #127.
Summary
GCP tests currently share collection, credential setup, and worker environments with unrelated tests, allowing authentication to happen during collection or after dependent fixtures have started. Add an explicit profile registry, launcher, and pytest selection plugin so the registered GCP tests run with declared credentials and prepare their identities before dependent resources start.
The GCP-only profile uses local artifacts; the GCP+AWS profile retains S3 for the BigQuery training test that needs it. Provider-only modules are excluded before import, mixed parameters are partitioned before fixture setup, and incompatible explicit targets fail early. Manifests make the selected node sets reviewable. Existing unprofiled commands retain their behavior; workflow routing follows in a dependent PR.
Change map
File-by-file change map.
Testing Done
General and Snowflake launcher profiles permit collection only. Their runtime credential contracts remain transitional: Azure and Databricks credentials have not yet been provisioned or narrowed. Direct local GCS setup temporarily retains encoded/home credential support; the transitional BigQuery wrapper is removed in a later dependent change. Exact credential isolation of the entire hosted suite remains follow-up work.
Checklist