fix --include option for files and add test case

This commit is contained in:
Johannes Schauer Marin Rodrigues 2022-09-06 13:06:40 +02:00
parent 9682e74385
commit 410c5fcb24
Signed by untrusted user: josch
GPG key ID: F2CBA5C78FBD83E1
3 changed files with 25 additions and 2 deletions

View file

@ -330,3 +330,5 @@ Needs-QEMU: true
Test: error-if-stdout-is-tty Test: error-if-stdout-is-tty
Test: variant-custom-timeout Test: variant-custom-timeout
Test: include-deb-file

View file

@ -4282,7 +4282,7 @@ sub main() {
} elsif ($opt_value =~ /^\.?\.?\//) { } elsif ($opt_value =~ /^\.?\.?\//) {
# Treat option as a single path name and don't split by comma # Treat option as a single path name and don't split by comma
# or whitespace -- append the normalized path. # or whitespace -- append the normalized path.
push @{ $options->{include} }, sanitize_path($opt_value); push @{ $options->{include} }, &{$sanitize_path}($opt_value);
} else { } else {
for my $pkg (split /[,\s]+/, $opt_value) { for my $pkg (split /[,\s]+/, $opt_value) {
# strip leading and trailing whitespace # strip leading and trailing whitespace
@ -4294,7 +4294,7 @@ sub main() {
# Make paths canonical absolute paths, resolve symlinks # Make paths canonical absolute paths, resolve symlinks
# and check if it's an existing file. # and check if it's an existing file.
if ($pkg =~ /^\.?\.?\//) { if ($pkg =~ /^\.?\.?\//) {
$pkg = sanitize_path($pkg); $pkg = &{$sanitize_path}($pkg);
} }
push @{ $options->{include} }, $pkg; push @{ $options->{include} }, $pkg;
} }

21
tests/include-deb-file Normal file
View file

@ -0,0 +1,21 @@
#!/bin/sh
set -eu
export LC_ALL=C.UTF-8
{{ CMD }} --variant=apt \
--customize-hook='mkdir "$1"/tmp/apt' \
--customize-hook='chroot "$1" env --chdir=/tmp/apt apt-get download busybox' \
--customize-hook='copy-out /tmp/apt /tmp' \
{{ DIST }} /dev/null {{ MIRROR }}
pkg="$(find /tmp/apt -type f)"
# some sanity checks
[ -f "$pkg" ]
case $pkg in
/tmp/apt/busybox*_{{ HOSTARCH }}.deb) : ;;
*) exit 1;;
esac
# now try to install that package
{{ CMD }} --variant=apt --include="$pkg" \
--customize-hook='chroot "$1" dpkg-query -W -f="\${Status}\n" busybox | grep "^install ok installed$"' \
{{ DIST }} /dev/null {{ MIRROR }}