Skip to content

Commit 94df1ba

Browse files
committed
Fix affected stdin terminal detection
1 parent 2f3491e commit 94df1ba

2 files changed

Lines changed: 25 additions & 1 deletion

File tree

crates/app/src/queries/changed_files.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,8 @@ pub async fn query_changed_files_for_affected(
225225
let mut options = QueryChangedFilesOptions {
226226
default_branch: ci,
227227
local: !ci,
228-
stdin: true,
228+
// Only auto-read stdin for piped input, otherwise interactive terminals hang waiting for EOF.
229+
stdin: !stdin().is_terminal(),
229230
..Default::default()
230231
};
231232

crates/cli/tests/query_affected_test.rs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,29 @@ mod query_affected {
4646
);
4747
}
4848

49+
#[test]
50+
fn includes_project_via_stdin() {
51+
let sandbox = create_query_sandbox();
52+
53+
let assert = sandbox.run_bin(|cmd| {
54+
cmd.arg("query")
55+
.arg("affected")
56+
.write_stdin("basic/file.txt");
57+
});
58+
59+
let mut affected: Affected = serde_json::from_str(assert.stdout().trim()).unwrap();
60+
61+
assert!(!affected.projects.contains_key("advanced"));
62+
assert_eq!(
63+
affected.projects.remove("basic").unwrap(),
64+
AffectedProjectState {
65+
files: FxHashSet::from_iter(["basic/file.txt".into()]),
66+
tasks: FxHashSet::from_iter([Target::parse("basic:dev").unwrap()]),
67+
..Default::default()
68+
}
69+
);
70+
}
71+
4972
#[test]
5073
fn includes_task_for_input() {
5174
let sandbox = create_query_sandbox();

0 commit comments

Comments
 (0)