Skip to content

Prepare for 2.8.2 - #2219

Merged
juergbi merged 21 commits into
bst-2.8from
jbilleter/2.8
Nov 6, 2026
Merged

juergbi merged 21 commits into
bst-2.8from
jbilleter/2.8

Conversation

@juergbi

@juergbi juergbi commented Nov 6, 2026

Copy link
Copy Markdown
Contributor

All changes have been cherry-picked from master, except for the NEWS update.

nathanwilliams-ct and others added 21 commits November 6, 2026 08:15
Reject links replacing the destination in `tarfile.tar_filter`.

python/cpython#160343
…is 0

With message-lines set to 0, the detail of a message is truncated
away entirely, but LogLine still prints an empty line, a line with
only the indentation and another empty line after the message.

Likewise, a failure message in verbose mode with error-lines set to 0
skips the log tail, but is still followed by two empty lines instead
of the usual one.

Only print the message detail when some of it is left, and only add
the newline that introduces the failure details when they are printed.
Failure messages keep the single empty line that separates them from
the next message, and from the next entry in the failure summary.

Fixes #2145
Render messages with LogLine and check that no empty lines are left
behind when message-lines is 0, that a truncated message still reports
how many lines were left out, and that a failure message is followed
by a single empty line when error-lines is 0.

This is a part of #2145
`os.path.split()` splits the path into a `(head, tail)` pair, not into a
list of all path segments.

Use `pathlib` to iterate over all path segments and also reject absolute
paths.

`_ensure_real_directory()` is only called from `_process_list()`,
though, where it's separately called for each level in the hierarchy.
Due to this, each path segment was already checked and thus, the
previous bug didn't cause any issues.
The REAPI spec requires that every child in the directory must have a
path of exactly one segment. Raise an error if a `Directory` message
violates the spec.

Reported-by: MopMonk-AI <mopmonk-ai@tophant.com>
The REAPI spec requires that every child in the directory must have a
path of exactly one segment. Raise an error if a `Directory` message
violates the spec.
The REAPI spec requires that each child in the directory must have a
unique path segment (file name).
The REAPI spec requires that each child in the directory must have a
unique path segment (file name).
`bst artifact checkout` verifies that the destination is empty. However,
`bst artifact checkout --force` allows checkout to a non-empty
directory. Let's not blindly follow pre-existing directory symlinks even
in that case.
`bst artifact checkout --force` intentionally replaces existing files.
The same should apply to symlinks. Without `--force`, it should not be
possible to hit that code path.
A directory symlink will be overwritten in case of overlap in
`__import_files_from_directory`. Make sure the corresponding path is
added to `overwritten`.
Use the same logic as in `__import_files_from_directory()` to correctly
handle symlinks and populate `FileListResult`.
Match the behavior of `CasBasedDirectory`.
@juergbi
juergbi marked this pull request as ready for review November 6, 2026 08:46
@juergbi
juergbi merged commit 01556f8 into bst-2.8 Nov 6, 2026
17 checks passed
@juergbi
juergbi deleted the jbilleter/2.8 branch November 6, 2026 16:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants