mirror of https://github.com/containers/podman.git
63 lines
1.8 KiB
Bash
63 lines
1.8 KiB
Bash
#!/usr/bin/env bats
|
|
#
|
|
# Tests for podman preexec hooks
|
|
#
|
|
|
|
load helpers
|
|
load helpers.network
|
|
|
|
# The existence of this file allows preexec hooks to run.
|
|
preexec_hook_ok_file=/etc/containers/podman_preexec_hooks.txt
|
|
|
|
function setup() {
|
|
basic_setup
|
|
}
|
|
|
|
function teardown() {
|
|
if [[ -n "$preexec_hook_ok_file" ]]; then
|
|
sudo -n rm -f $preexec_hook_ok_file || true
|
|
fi
|
|
|
|
basic_teardown
|
|
}
|
|
|
|
@test "podman preexec hook" {
|
|
# This file does not exist on any CI system nor any developer system
|
|
# nor actually anywhere in the universe except a small small set of
|
|
# places with very specific requirements. If we find this file on
|
|
# our test system, it could be a leftover from prior testing, or
|
|
# basically just something very weird. So, fail loudly if we see it.
|
|
# No podman developer ever wants this file to exist.
|
|
if [[ -e $preexec_hook_ok_file ]]; then
|
|
# Unset the variable, so we don't delete it in teardown
|
|
msg="File already exists (it should not): $preexec_hook_ok_file"
|
|
preexec_hook_ok_file=
|
|
|
|
die "$msg"
|
|
fi
|
|
|
|
# Good. File does not exist. Now see if we can TEMPORARILY create it.
|
|
sudo -n touch $preexec_hook_ok_file || skip "test requires sudo"
|
|
|
|
preexec_hook_dir=$PODMAN_TMPDIR/auth
|
|
mkdir -p $preexec_hook_dir
|
|
preexec_hook_script=$preexec_hook_dir/pull_check.sh
|
|
|
|
cat > $preexec_hook_script <<EOF
|
|
#!/bin/sh
|
|
if echo \$@ | grep "pull foobar"; then
|
|
exit 42
|
|
fi
|
|
exit 43
|
|
EOF
|
|
chmod +x $preexec_hook_script
|
|
|
|
PODMAN_PREEXEC_HOOKS_DIR=$preexec_hook_dir run_podman 42 pull foobar
|
|
PODMAN_PREEXEC_HOOKS_DIR=$preexec_hook_dir run_podman 43 version
|
|
|
|
sudo -n rm -f $preexec_hook_ok_file || true
|
|
|
|
# no hooks-ok file, everything should now work again (HOOKS_DIR is ignored)
|
|
PODMAN_PREEXEC_HOOKS_DIR=$preexec_hook_dir run_podman version
|
|
}
|