From 96a8ff0513ae7b012b3e4ba8e43a3eca71847458 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Mon, 20 Jul 2026 03:24:57 +0900 Subject: fix(remote-filesystem): read scheme-less local paths in get_remote_contents PHP's getRemoteContents calls file_get_contents unconditionally: the same stream wrapper reads file:// URLs, plain local paths and network schemes. The Rust port only handled the explicit "file" scheme, so a scheme-less local packages.json repository failed with "file could not be downloaded". Extend the local branch to empty schemes; the http(s) stub is unchanged. This clears the first blocker of the create-project functional test; its ignore reason now documents the remaining ones (live network and Glob::to_regex emitting PCRE lookaheads the regex crate cannot compile), which need a user decision. Co-Authored-By: Claude Fable 5 --- crates/shirabe/tests/all_functional_test.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'crates/shirabe/tests') diff --git a/crates/shirabe/tests/all_functional_test.rs b/crates/shirabe/tests/all_functional_test.rs index e540ca15..5b473589 100644 --- a/crates/shirabe/tests/all_functional_test.rs +++ b/crates/shirabe/tests/all_functional_test.rs @@ -260,7 +260,16 @@ fn test_integration_create_project_command() { #[test] #[serial] -#[ignore = "RemoteFilesystem::get_remote_contents is an unimplemented Phase C stub (returns None), so reading the local packages.json repository via JsonFile/HttpDownloader fails with \"file could not be downloaded\""] +#[ignore = "the former blocker (scheme-less packages.json read via RemoteFilesystem::\ + get_remote_contents) is fixed and the EXPECT-REGEX assertion itself now passes, but \ + only incidentally: the run needs live network (real git clone from github.com) and \ + still panics with exit 101 (Composer exits 0) during CreateProjectCommand's keep-vcs \ + cleanup, whose Symfony Finder name patterns go through Glob::to_regex, which \ + faithfully emits PCRE lookaheads ((?=[^\\.])) the regex crate cannot compile; the \ + fixture just never asserts the exit code. Making Glob::to_regex regex-crate-compatible \ + would change the pattern text git_exclude_filter_test::test_pattern_escape asserts \ + verbatim, so both that rewrite and un-ignoring this green-but-crashing test need a \ + user decision"] fn test_integration_create_project_shows_full_hash_for_dev_packages() { run_integration("create-project-shows-full-hash-for-dev-packages.test"); } -- cgit v1.3.1