mirror of
				https://github.com/containers/podman.git
				synced 2025-10-31 18:08:51 +08:00 
			
		
		
		
	 02403c2e6d
			
		
	
	02403c2e6d
	
	
	
		
			
			pasta only works when we run as container_runtime_exec_t, now that pasta is the default this means that the current binary will not work when doing local dev without manually fixing the label. There are also other parts where the correct label is important. So as a simple fix always set the proper label in the bin/podman target. This also means we can drop this line from the hack/bats script. Signed-off-by: Paul Holzinger <pholzing@redhat.com>
		
			
				
	
	
		
			150 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			150 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| #
 | |
| # bats wrapper - invokes bats, root & rootless, on podman system tests
 | |
| #
 | |
| 
 | |
| ###############################################################################
 | |
| # BEGIN usage message
 | |
| 
 | |
| usage="Usage: $0 [--root] [--rootless] [FILENAME-PATTERN[:TEST-PATTERN]]
 | |
| 
 | |
| $0 is a wrapper for invoking podman system tests.
 | |
| 
 | |
|    --root         Run only as root
 | |
|    --rootless     Run only as user (i.e. you)
 | |
|    --remote       Run with podman-remote (see below)
 | |
| 
 | |
|    FILENAME-PATTERN Run only test files that match 'test/system/*name*',
 | |
|                     e.g. '500' or 'net' will match 500-networking.bats.
 | |
| 
 | |
|    TEST-PATTERN     When appended to a filename-pattern, and you have a
 | |
|                     modern-enough version of bats installed (i.e. Fedora
 | |
|                     but not RHEL), runs with '--filter TEST-PATTERN' which
 | |
|                     runs only subtests within FILENAME-PATTERH whose names
 | |
|                     match that string.
 | |
| 
 | |
|    --tag=TAG      Passed on to bats as '--filter-tags TAG'
 | |
|                   As of 2023-07-26 the only tag used is 'distro-integration'
 | |
| 
 | |
|    -T             Passed on to bats, which will then show timing data
 | |
| 
 | |
|    --help         display usage message
 | |
| 
 | |
| By default, tests ./bin/podman. To test a different podman, do:
 | |
| 
 | |
|     \$ env PODMAN=/abs/path/to/podman $0 ....
 | |
| 
 | |
| To test podman-remote, start your own servers (root and rootless) via:
 | |
| 
 | |
|     \$ bin/podman system service --timeout=0 &
 | |
|     \$ sudo !!
 | |
| 
 | |
| ...then invoke this script with --remote. (This script can't start the
 | |
| servers, because we can sudo *starting* the service but can't sudo
 | |
| stopping it: by the time the bats tests finish, the sudo timeout will
 | |
| have expired. We apologize for the inconvenience.)
 | |
| 
 | |
| $0 also passes through \$OCI_RUNTIME, should you need to test that.
 | |
| 
 | |
| Examples:
 | |
| 
 | |
|     \$ $0 220:\"restart cleans up\"
 | |
|        ... only the \"restart cleans up\" test in 220-healthcheck.bats
 | |
| 
 | |
|     \$ $0 --root 160:\"ps -f\"
 | |
|        ... runs all tests in 160-volumes.bats that match \"ps -f\" (root only)
 | |
| "
 | |
| 
 | |
| # END   usage message
 | |
| ###############################################################################
 | |
| # BEGIN initialization and command-line arg checking
 | |
| 
 | |
| # By default, test the podman in our working directory.
 | |
| # Some tests cd out of our workdir, so abs path is important
 | |
| export PODMAN=${PODMAN:-$(pwd)/bin/podman}
 | |
| export QUADLET=${QUADLET:-$(pwd)/bin/quadlet}
 | |
| 
 | |
| # Directory in which
 | |
| TESTS=test/system
 | |
| 
 | |
| REMOTE=
 | |
| TEST_ROOT=1
 | |
| TEST_ROOTLESS=1
 | |
| 
 | |
| declare -a bats_opts=()
 | |
| 
 | |
| declare -a bats_filter=()
 | |
| 
 | |
| for i;do
 | |
|     value=`expr "$i" : '[^=]*=\(.*\)'`
 | |
|     case "$i" in
 | |
|         -h|--help)  echo "$usage"; exit 0;;
 | |
|         --root)     TEST_ROOTLESS= ;;
 | |
|         --rootless) TEST_ROOT= ;;
 | |
|         --remote)   REMOTE=remote ;;
 | |
|         --ts|-T)    bats_opts+=("-T") ;;
 | |
|         --tag=*)    bats_filter=("--filter-tags" "$value") ;;
 | |
|         */*.bats)   TESTS=$i ;;
 | |
|         *)
 | |
|             if [[ $i =~ : ]]; then
 | |
|                 tname=${i%:*}          # network:localhost -> network
 | |
|                 filt=${i#*:}           # network:localhost ->   localhost
 | |
|                 TESTS=$(echo $TESTS/*$tname*.bats)
 | |
|                 bats_filter=("--filter" "$filt")
 | |
|             else
 | |
|                 TESTS=$(echo $TESTS/*$i*.bats)
 | |
|             fi
 | |
|             ;;
 | |
|     esac
 | |
| done
 | |
| 
 | |
| # With --remote, use correct binary and make sure daem--I mean server--is live
 | |
| if [[ "$REMOTE" ]]; then
 | |
|     if ! [[ $PODMAN =~ -remote ]]; then
 | |
|         PODMAN=${PODMAN}-remote
 | |
|     fi
 | |
| 
 | |
|     if [[ -n "$TEST_ROOT" ]]; then
 | |
|         sudo $PODMAN info >/dev/null || exit 1
 | |
|     fi
 | |
|     if [[ -n "$TEST_ROOTLESS" ]]; then
 | |
|         $PODMAN info >/dev/null || exit 1
 | |
|     fi
 | |
| fi
 | |
| 
 | |
| # END   initialization and command-line arg checking
 | |
| ###############################################################################
 | |
| 
 | |
| rc=0
 | |
| 
 | |
| # As of 2021-11 podman has a bunch of external helper binaries
 | |
| if [[ -z "$CONTAINERS_HELPER_BINARY_DIR" ]]; then
 | |
|     export CONTAINERS_HELPER_BINARY_DIR=$(pwd)/bin
 | |
| fi
 | |
| 
 | |
| # Used in 120-load test to identify rootless destination for podman image scp
 | |
| export PODMAN_ROOTLESS_USER=$(id -un)
 | |
| 
 | |
| # Root
 | |
| if [[ "$TEST_ROOT" ]]; then
 | |
|     echo "# bats ${bats_filter[*]} $TESTS"
 | |
|     sudo    --preserve-env=PODMAN \
 | |
|             --preserve-env=QUADLET \
 | |
|             --preserve-env=PODMAN_TEST_DEBUG \
 | |
|             --preserve-env=OCI_RUNTIME \
 | |
|             --preserve-env=CONTAINERS_HELPER_BINARY_DIR \
 | |
|             --preserve-env=PODMAN_ROOTLESS_USER \
 | |
|             bats "${bats_opts[@]}" "${bats_filter[@]}" $TESTS
 | |
|     rc=$?
 | |
| fi
 | |
| 
 | |
| # Rootless. (Only if we're not already root)
 | |
| if [[ "$TEST_ROOTLESS" && "$(id -u)" != 0 ]]; then
 | |
|     echo "--------------------------------------------------"
 | |
|     echo "\$ bats ${bats_filter[*]} $TESTS"
 | |
|     bats "${bats_opts[@]}" "${bats_filter[@]}" $TESTS
 | |
|     rc=$((rc | $?))
 | |
| fi
 | |
| 
 | |
| exit $rc
 |