Ensure nextest failures fail the Linux test workflow#1914
Merged
Conversation
This was referenced Apr 30, 2026
oferchen
added a commit
that referenced
this pull request
May 1, 2026
…1911) Closes #1911 by completing the local-copy bridge between the parsed `IconvSetting` on `ClientConfig` and the engine's `LocalCopyOptions`, mirroring the SSH/daemon bridge that PR #3458 wired through `apply_common_server_flags`. The audit at `docs/audits/iconv-inert.md` (PR #3526) labels #1911 as "Partial" because the local-copy path bypasses `apply_common_server_flags` and therefore had no route by which a resolved `FilenameConverter` could reach the engine. Changes: - `engine::local_copy::LocalCopyOptions` and `LocalCopyOptionsBuilder` gain an `iconv: Option<FilenameConverter>` field with a `with_iconv` setter and `iconv()` accessor on the options struct, plus an `iconv()` setter on the builder. - `core::client::run::LocalCopyOptionsBuilder::build` (the internal wrapper around the engine builder) calls `config.iconv().resolve_converter()` and propagates the result via the new setter. - Unit tests in `crates/engine/src/local_copy/options/filters.rs` cover default-none, attach, and clear. - Unit tests in `crates/core/src/client/run/mod.rs` cover the `IconvSetting -> LocalCopyOptions.iconv` mapping for unspecified, disabled, locale-default, explicit, and unsupported-charset variants. This PR plumbs the converter only; it does not yet apply it on sender file-list emit (#1912), receiver file-list ingest (#1913), or filter-rule path matching (#1914). Those are tracked separately.
This was referenced May 1, 2026
oferchen
added a commit
that referenced
this pull request
May 2, 2026
#1914) (#3550) Audit the filter-evaluation entry points to confirm they operate on local-charset names, matching upstream rsync 3.4.1 exactly. Upstream rsync's exclude.c contains zero iconv references. Filter rules match raw bytes in the local charset on both sender and receiver. The hand-off happens at the flist boundary: sender filters before iconvbufs(ic_send,...), receiver filters after iconvbufs(ic_recv,...). Pattern strings are stored verbatim from CLI/merge-files in the local charset. oc-rsync follows the same model: - Sender FilterChain::allows() in generator/file_list/walk.rs sees raw Path bytes from the local filesystem before encoding conversion. - Receiver FilterChain::allows_deletion() in receiver/directory/deletion.rs sees post-ic_recv local-charset names from the file list and entry names from read_dir(). - Pattern strings flow through CLI -> filters crate without iconv hops. No code change required. Wiring a FilenameConverter into the filter chain would double-convert names and break pattern matches for non-ASCII patterns.
oferchen
added a commit
that referenced
this pull request
May 5, 2026
…1911) Closes #1911 by completing the local-copy bridge between the parsed `IconvSetting` on `ClientConfig` and the engine's `LocalCopyOptions`, mirroring the SSH/daemon bridge that PR #3458 wired through `apply_common_server_flags`. The audit at `docs/audits/iconv-inert.md` (PR #3526) labels #1911 as "Partial" because the local-copy path bypasses `apply_common_server_flags` and therefore had no route by which a resolved `FilenameConverter` could reach the engine. Changes: - `engine::local_copy::LocalCopyOptions` and `LocalCopyOptionsBuilder` gain an `iconv: Option<FilenameConverter>` field with a `with_iconv` setter and `iconv()` accessor on the options struct, plus an `iconv()` setter on the builder. - `core::client::run::LocalCopyOptionsBuilder::build` (the internal wrapper around the engine builder) calls `config.iconv().resolve_converter()` and propagates the result via the new setter. - Unit tests in `crates/engine/src/local_copy/options/filters.rs` cover default-none, attach, and clear. - Unit tests in `crates/core/src/client/run/mod.rs` cover the `IconvSetting -> LocalCopyOptions.iconv` mapping for unspecified, disabled, locale-default, explicit, and unsupported-charset variants. This PR plumbs the converter only; it does not yet apply it on sender file-list emit (#1912), receiver file-list ingest (#1913), or filter-rule path matching (#1914). Those are tracked separately.
oferchen
added a commit
that referenced
this pull request
May 5, 2026
#1914) (#3550) Audit the filter-evaluation entry points to confirm they operate on local-charset names, matching upstream rsync 3.4.1 exactly. Upstream rsync's exclude.c contains zero iconv references. Filter rules match raw bytes in the local charset on both sender and receiver. The hand-off happens at the flist boundary: sender filters before iconvbufs(ic_send,...), receiver filters after iconvbufs(ic_recv,...). Pattern strings are stored verbatim from CLI/merge-files in the local charset. oc-rsync follows the same model: - Sender FilterChain::allows() in generator/file_list/walk.rs sees raw Path bytes from the local filesystem before encoding conversion. - Receiver FilterChain::allows_deletion() in receiver/directory/deletion.rs sees post-ic_recv local-charset names from the file list and entry names from read_dir(). - Pattern strings flow through CLI -> filters crate without iconv hops. No code change required. Wiring a FilenameConverter into the filter chain would double-convert names and break pattern matches for non-ASCII patterns.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
cargo nextestfailures by removing the unconditional success guardTesting
https://chatgpt.com/codex/tasks/task_e_69091f3ec794832392f6819450f8f956