diff --git a/crates/uv/tests/it/export.rs b/crates/uv/tests/it/export.rs index 019e6a8316b7b..de4af1a6ebf77 100644 --- a/crates/uv/tests/it/export.rs +++ b/crates/uv/tests/it/export.rs @@ -1,10 +1,12 @@ #![allow(clippy::disallowed_types)] -use crate::common::{TestContext, apply_filters, uv_snapshot}; +use crate::common::{ + READ_ONLY_GITHUB_TOKEN, TestContext, apply_filters, decode_token, uv_snapshot, +}; use anyhow::{Ok, Result}; use assert_cmd::assert::OutputAssertExt; use assert_fs::prelude::*; -use indoc::indoc; +use indoc::{formatdoc, indoc}; use insta::assert_snapshot; use std::process::Stdio; @@ -1138,6 +1140,40 @@ fn requirements_txt_non_project() -> Result<()> { Ok(()) } +#[cfg(feature = "git")] +#[test] +fn requirements_txt_git_credentials() -> Result<()> { + let context = TestContext::new("3.12"); + let token = decode_token(READ_ONLY_GITHUB_TOKEN); + + let pyproject_toml = context.temp_dir.child("pyproject.toml"); + pyproject_toml.write_str(&formatdoc! {r#" + [project] + name = "project" + version = "0.1.0" + requires-python = ">=3.12" + dependencies = ["uv-private-pypackage @ git+https://{token}@github.com/astral-test/uv-private-pypackage"] + "#})?; + + context.lock().assert().success(); + + // The token should not be included in the export + uv_snapshot!(context.filters(), context.export(), @r" + success: true + exit_code: 0 + ----- stdout ----- + # This file was autogenerated by uv via the following command: + # uv export --cache-dir [CACHE_DIR] + uv-private-pypackage @ git+https://github.com/astral-test/uv-private-pypackage@d780faf0ac91257d4d5a4f0c5a0e4509608c0071 + # via project + + ----- stderr ----- + Resolved 2 packages in [TIME] + "); + + Ok(()) +} + #[test] fn requirements_txt_non_project_marker() -> Result<()> { let context = TestContext::new("3.12");