forked from josch/mmdebstrap
Johannes Schauer Marin Rodrigues
4c3fddcd54
- multiple individual shell scripts instead of one 3.5k line monster - tests driven by Python script allowing: * declarative test description in coverage.txt * collecting errors instead of aborting on first error * skipping tests * running specific tests
33 lines
1.3 KiB
Bash
33 lines
1.3 KiB
Bash
#!/bin/sh
|
|
set -eu
|
|
export LC_ALL=C.UTF-8
|
|
pkgs=base-files,base-passwd,busybox,debianutils,dpkg,libc-bin,mawk,tar
|
|
# busybox --install -s will install symbolic links into the rootfs, leaving
|
|
# existing files untouched. It has to run after extraction (otherwise there is
|
|
# no busybox binary) and before first configuration
|
|
{{ CMD }} --mode=root --variant=custom \
|
|
--include=$pkgs \
|
|
--setup-hook='mkdir -p "$1/bin"' \
|
|
--setup-hook='echo root:x:0:0:root:/root:/bin/sh > "$1/etc/passwd"' \
|
|
--setup-hook='printf "root:x:0:\nmail:x:8:\nutmp:x:43:\n" > "$1/etc/group"' \
|
|
--extract-hook='chroot "$1" busybox --install -s' \
|
|
{{ DIST }} /tmp/debian-chroot {{ MIRROR }}
|
|
echo "$pkgs" | tr ',' '\n' > /tmp/expected
|
|
chroot /tmp/debian-chroot dpkg-query -f '${binary:Package}\n' -W \
|
|
| comm -12 - /tmp/expected \
|
|
| diff -u - /tmp/expected
|
|
rm /tmp/expected
|
|
for cmd in echo cat sed grep; do
|
|
test -L /tmp/debian-chroot/bin/$cmd
|
|
test "$(readlink /tmp/debian-chroot/bin/$cmd)" = "/bin/busybox"
|
|
done
|
|
for cmd in sort; do
|
|
test -L /tmp/debian-chroot/usr/bin/$cmd
|
|
test "$(readlink /tmp/debian-chroot/usr/bin/$cmd)" = "/bin/busybox"
|
|
done
|
|
chroot /tmp/debian-chroot echo foobar \
|
|
| chroot /tmp/debian-chroot cat \
|
|
| chroot /tmp/debian-chroot sort \
|
|
| chroot /tmp/debian-chroot sed 's/foobar/blubber/' \
|
|
| chroot /tmp/debian-chroot grep blubber >/dev/null
|
|
rm -r /tmp/debian-chroot
|