Skip to content

Commit 619b049

Browse files
committed
Don't warn when --output-file is empty
1 parent a17c047 commit 619b049

8 files changed

Lines changed: 51 additions & 20 deletions

File tree

Cargo.lock

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/uv-requirements-txt/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ uv-client = { workspace = true }
2323
uv-fs = { workspace = true }
2424
uv-normalize = { workspace = true }
2525
uv-configuration = { workspace = true }
26-
uv-warnings = { workspace = true }
2726

2827
fs-err = { workspace = true }
2928
regex = { workspace = true }

crates/uv-requirements-txt/src/lib.rs

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ use uv_distribution_types::{UnresolvedRequirement, UnresolvedRequirementSpecific
5252
use uv_fs::Simplified;
5353
use uv_pep508::{expand_env_vars, Pep508Error, RequirementOrigin, VerbatimUrl};
5454
use uv_pypi_types::{Requirement, VerbatimParsedUrl};
55-
use uv_warnings::warn_user;
5655

5756
use crate::requirement::EditableError;
5857
pub use crate::requirement::RequirementsTxtRequirement;
@@ -219,16 +218,6 @@ impl RequirementsTxt {
219218
file: requirements_txt.to_path_buf(),
220219
error: err,
221220
})?;
222-
if data == Self::default() {
223-
if requirements_txt == Path::new("-") {
224-
warn_user!("No dependencies found in stdin");
225-
} else {
226-
warn_user!(
227-
"Requirements file {} does not contain any dependencies",
228-
requirements_txt.user_display()
229-
);
230-
}
231-
}
232221

233222
Ok(data)
234223
}

crates/uv-requirements/src/specification.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ use uv_pep508::{MarkerTree, UnnamedRequirement, UnnamedRequirementUrl};
4545
use uv_pypi_types::Requirement;
4646
use uv_pypi_types::VerbatimParsedUrl;
4747
use uv_requirements_txt::{RequirementsTxt, RequirementsTxtRequirement};
48+
use uv_warnings::warn_user;
4849
use uv_workspace::pyproject::PyProjectToml;
4950

5051
use crate::RequirementsSource;
@@ -113,6 +114,18 @@ impl RequirementsSpecification {
113114
}
114115

115116
let requirements_txt = RequirementsTxt::parse(path, &*CWD, client_builder).await?;
117+
118+
if requirements_txt == RequirementsTxt::default() {
119+
if path == Path::new("-") {
120+
warn_user!("No dependencies found in stdin");
121+
} else {
122+
warn_user!(
123+
"Requirements file `{}` does not contain any dependencies",
124+
path.user_display()
125+
);
126+
}
127+
}
128+
116129
Self {
117130
requirements: requirements_txt
118131
.requirements

crates/uv/tests/it/pip_compile.rs

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ fn missing_venv() -> Result<()> {
132132
# uv pip compile --cache-dir [CACHE_DIR] requirements.in
133133
134134
----- stderr -----
135-
warning: Requirements file requirements.in does not contain any dependencies
135+
warning: Requirements file `requirements.in` does not contain any dependencies
136136
Resolved in [TIME]
137137
"###
138138
);
@@ -142,6 +142,37 @@ fn missing_venv() -> Result<()> {
142142
Ok(())
143143
}
144144

145+
#[test]
146+
fn empty_output() -> Result<()> {
147+
let context = TestContext::new("3.12");
148+
context
149+
.temp_dir
150+
.child("requirements.in")
151+
.write_str("iniconfig==1.1.1")?;
152+
context.temp_dir.child("requirements.txt").touch()?;
153+
154+
uv_snapshot!(context.filters(), context.pip_compile()
155+
.arg("requirements.in")
156+
.arg("--output-file")
157+
.arg("requirements.txt"), @r###"
158+
success: true
159+
exit_code: 0
160+
----- stdout -----
161+
# This file was autogenerated by uv via the following command:
162+
# uv pip compile --cache-dir [CACHE_DIR] requirements.in --output-file requirements.txt
163+
iniconfig==1.1.1
164+
# via -r requirements.in
165+
166+
----- stderr -----
167+
Resolved 1 package in [TIME]
168+
"###
169+
);
170+
171+
context.venv.assert(predicates::path::missing());
172+
173+
Ok(())
174+
}
175+
145176
/// Resolve a specific version of `anyio` from a `pyproject.toml` file.
146177
#[test]
147178
fn compile_pyproject_toml() -> Result<()> {

crates/uv/tests/it/pip_install.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ fn empty_requirements_txt() -> Result<()> {
5050
----- stdout -----
5151
5252
----- stderr -----
53-
warning: Requirements file requirements.txt does not contain any dependencies
53+
warning: Requirements file `requirements.txt` does not contain any dependencies
5454
Audited in [TIME]
5555
"###
5656
);

crates/uv/tests/it/pip_sync.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,7 @@ fn pip_sync_empty() -> Result<()> {
360360
----- stdout -----
361361
362362
----- stderr -----
363-
warning: Requirements file requirements.txt does not contain any dependencies
363+
warning: Requirements file `requirements.txt` does not contain any dependencies
364364
No requirements found (hint: use `--allow-empty-requirements` to clear the environment)
365365
"###
366366
);
@@ -373,7 +373,7 @@ fn pip_sync_empty() -> Result<()> {
373373
----- stdout -----
374374
375375
----- stderr -----
376-
warning: Requirements file requirements.txt does not contain any dependencies
376+
warning: Requirements file `requirements.txt` does not contain any dependencies
377377
Resolved in [TIME]
378378
Audited in [TIME]
379379
"###
@@ -397,7 +397,7 @@ fn pip_sync_empty() -> Result<()> {
397397
----- stdout -----
398398
399399
----- stderr -----
400-
warning: Requirements file requirements.txt does not contain any dependencies
400+
warning: Requirements file `requirements.txt` does not contain any dependencies
401401
Resolved in [TIME]
402402
Uninstalled 1 package in [TIME]
403403
- iniconfig==2.0.0

crates/uv/tests/it/run.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1751,7 +1751,7 @@ fn run_empty_requirements_txt() -> Result<()> {
17511751
+ foo==1.0.0 (from file://[TEMP_DIR]/)
17521752
+ idna==3.6
17531753
+ sniffio==1.3.1
1754-
warning: Requirements file requirements.txt does not contain any dependencies
1754+
warning: Requirements file `requirements.txt` does not contain any dependencies
17551755
"###);
17561756

17571757
// Then reused in subsequent invocations
@@ -1763,7 +1763,7 @@ fn run_empty_requirements_txt() -> Result<()> {
17631763
----- stderr -----
17641764
Resolved 6 packages in [TIME]
17651765
Audited 4 packages in [TIME]
1766-
warning: Requirements file requirements.txt does not contain any dependencies
1766+
warning: Requirements file `requirements.txt` does not contain any dependencies
17671767
"###);
17681768

17691769
Ok(())

0 commit comments

Comments
 (0)