summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xcontrib/cirrus/pr-should-include-tests3
-rwxr-xr-xcontrib/cirrus/runner.sh67
-rwxr-xr-xhack/make-and-check-size5
-rw-r--r--libpod/container_inspect.go2
-rw-r--r--libpod/define/container_inspect.go2
-rw-r--r--test/e2e/common_test.go11
-rw-r--r--test/e2e/create_test.go9
-rw-r--r--test/e2e/libpod_suite_remote_test.go3
-rw-r--r--test/e2e/pod_create_test.go8
-rw-r--r--test/system/200-pod.bats2
-rw-r--r--test/upgrade/test-upgrade.bats8
-rw-r--r--test/utils/utils.go2
12 files changed, 97 insertions, 25 deletions
diff --git a/contrib/cirrus/pr-should-include-tests b/contrib/cirrus/pr-should-include-tests
index 8103df41d..0d39047a6 100755
--- a/contrib/cirrus/pr-should-include-tests
+++ b/contrib/cirrus/pr-should-include-tests
@@ -30,8 +30,7 @@ fi
# Nothing changed under test subdirectory.
#
# This is OK if the only files being touched are "safe" ones.
-filtered_changes=$(git diff --name-status $base $head |
- awk '{print $2}' |
+filtered_changes=$(git diff --name-only $base $head |
fgrep -vx .cirrus.yml |
fgrep -vx .gitignore |
fgrep -vx Makefile |
diff --git a/contrib/cirrus/runner.sh b/contrib/cirrus/runner.sh
index f33c6af29..8f956d7f5 100755
--- a/contrib/cirrus/runner.sh
+++ b/contrib/cirrus/runner.sh
@@ -46,6 +46,8 @@ function _run_validate() {
}
function _run_unit() {
+ _bail_if_test_can_be_skipped test/goecho test/version
+
# shellcheck disable=SC2154
if [[ "$PODBIN_NAME" != "podman" ]]; then
# shellcheck disable=SC2154
@@ -55,31 +57,45 @@ function _run_unit() {
}
function _run_apiv2() {
+ _bail_if_test_can_be_skipped test/apiv2
+
source .venv/requests/bin/activate
make localapiv2 |& logformatter
}
function _run_compose() {
+ _bail_if_test_can_be_skipped test/compose
+
./test/compose/test-compose |& logformatter
}
function _run_compose_v2() {
+ _bail_if_test_can_be_skipped test/compose
+
./test/compose/test-compose |& logformatter
}
function _run_int() {
+ _bail_if_test_can_be_skipped test/e2e
+
dotest integration
}
function _run_sys() {
+ _bail_if_test_can_be_skipped test/system
+
dotest system
}
function _run_upgrade_test() {
+ _bail_if_test_can_be_skipped test/upgrade
+
bats test/upgrade |& logformatter
}
function _run_bud() {
+ _bail_if_test_can_be_skipped test/buildah-bud
+
./test/buildah-bud/run-buildah-bud-tests |& logformatter
}
@@ -217,6 +233,9 @@ function _run_build() {
}
function _run_altbuild() {
+ # We can skip all these steps for test-only PRs, but not doc-only ones
+ _bail_if_test_can_be_skipped docs
+
local -a arches
local arch
req_env_vars ALT_NAME
@@ -345,6 +364,54 @@ dotest() {
|& logformatter
}
+# Optimization: will exit if the only PR diffs are under docs/ or tests/
+# with the exception of any given arguments. E.g., don't run e2e or upgrade
+# or bud tests if the only PR changes are in test/system.
+function _bail_if_test_can_be_skipped() {
+ local head base diffs
+
+ # Cirrus sets these for PRs but not cron. In cron, we never want to skip.
+ for v in CIRRUS_CHANGE_IN_REPO DEST_BRANCH; do
+ if [[ -z "${!v}" ]]; then
+ msg "[ _cannot do selective skip: \$$v is undefined ]"
+ return 0
+ fi
+ done
+ # And if this one *is* defined, it means we're not in PR-land; don't skip.
+ if [[ -n "$CIRRUS_TAG" ]]; then
+ msg "[ _cannot do selective skip: \$CIRRUS_TAG is defined ]"
+ return 0
+ fi
+
+ head=$CIRRUS_CHANGE_IN_REPO
+ base=$(git merge-base $DEST_BRANCH $head)
+ diffs=$(git diff --name-only $base $head)
+
+ # If PR touches any files in an argument directory, we cannot skip
+ for subdir in "$@"; do
+ if egrep -q "^$subdir/" <<<"$diffs"; then
+ return 0
+ fi
+ done
+
+ # PR does not touch any files under our input directories. Now see
+ # if the PR touches files outside of the following directories, by
+ # filtering these out from the diff results.
+ for subdir in docs test; do
+ # || true needed because we're running with set -e
+ diffs=$(egrep -v "^$subdir/" <<<"$diffs" || true)
+ done
+
+ # If we still have diffs, they indicate files outside of docs & test.
+ # It is not safe to skip.
+ if [[ -n "$diffs" ]]; then
+ return 0
+ fi
+
+ msg "SKIPPING: This is a doc- and/or test-only PR with no changes under $*"
+ exit 0
+}
+
# Nearly every task in .cirrus.yml makes use of this shell script
# wrapped by /usr/bin/time to collect runtime statistics. Because the
# --output option is used to log stats to a file, every child-process
diff --git a/hack/make-and-check-size b/hack/make-and-check-size
index f2345b815..5b0021d12 100755
--- a/hack/make-and-check-size
+++ b/hack/make-and-check-size
@@ -92,9 +92,10 @@ if [[ ! -d $context_dir ]]; then
fi
# This is the original (and primary) purpose of this check: if 'make' fails,
-# there is no point in continuing
+# there is no point in continuing. Show at least the commit title since
+# the ID may not match anything human recognisable.
echo
-echo "Building: $(git rev-parse HEAD)"
+echo "Building: $(git log -n 1 --no-show-signature --oneline)"
make
# Determine size of each built file.
diff --git a/libpod/container_inspect.go b/libpod/container_inspect.go
index 14290ca0d..735790411 100644
--- a/libpod/container_inspect.go
+++ b/libpod/container_inspect.go
@@ -367,7 +367,7 @@ func (c *Container) generateInspectContainerConfig(spec *spec.Spec) *define.Insp
// Leave empty if not explicitly overwritten by user
if len(c.config.Entrypoint) != 0 {
- ctrConfig.Entrypoint = c.config.Entrypoint
+ ctrConfig.Entrypoint = strings.Join(c.config.Entrypoint, " ")
}
if len(c.config.Labels) != 0 {
diff --git a/libpod/define/container_inspect.go b/libpod/define/container_inspect.go
index 444fbff62..ae2ce9724 100644
--- a/libpod/define/container_inspect.go
+++ b/libpod/define/container_inspect.go
@@ -44,7 +44,7 @@ type InspectContainerConfig struct {
// Container working directory
WorkingDir string `json:"WorkingDir"`
// Container entrypoint
- Entrypoint []string `json:"Entrypoint"`
+ Entrypoint string `json:"Entrypoint"`
// On-build arguments - presently unused. More of Buildah's domain.
OnBuild *string `json:"OnBuild"`
// Container labels
diff --git a/test/e2e/common_test.go b/test/e2e/common_test.go
index 9580230b5..2f4146bba 100644
--- a/test/e2e/common_test.go
+++ b/test/e2e/common_test.go
@@ -858,18 +858,15 @@ func (p *PodmanTestIntegration) makeOptions(args []string, noEvents, noCache boo
eventsType = "none"
}
- networkBackend := p.NetworkBackend.ToString()
- networkDir := p.NetworkConfigDir
- if p.NetworkBackend == Netavark {
- networkDir = p.NetworkConfigDir
- }
podmanOptions := strings.Split(fmt.Sprintf("%s--root %s --runroot %s --runtime %s --conmon %s --network-config-dir %s --cgroup-manager %s --tmpdir %s --events-backend %s",
- debug, p.Root, p.RunRoot, p.OCIRuntime, p.ConmonBinary, networkDir, p.CgroupManager, p.TmpDir, eventsType), " ")
+ debug, p.Root, p.RunRoot, p.OCIRuntime, p.ConmonBinary, p.NetworkConfigDir, p.CgroupManager, p.TmpDir, eventsType), " ")
if os.Getenv("HOOK_OPTION") != "" {
podmanOptions = append(podmanOptions, os.Getenv("HOOK_OPTION"))
}
- podmanOptions = append(podmanOptions, "--network-backend", networkBackend)
+ if !p.RemoteTest {
+ podmanOptions = append(podmanOptions, "--network-backend", p.NetworkBackend.ToString())
+ }
podmanOptions = append(podmanOptions, strings.Split(p.StorageOptions, " ")...)
if !noCache {
diff --git a/test/e2e/create_test.go b/test/e2e/create_test.go
index 11f8b5abf..4c3b5604a 100644
--- a/test/e2e/create_test.go
+++ b/test/e2e/create_test.go
@@ -118,7 +118,7 @@ var _ = Describe("Podman create", func() {
result := podmanTest.Podman([]string{"inspect", "entrypoint_test", "--format", "{{.Config.Entrypoint}}"})
result.WaitWithDefaultTimeout()
Expect(result).Should(Exit(0))
- Expect(result.OutputToString()).To(Equal("[/bin/foobar]"))
+ Expect(result.OutputToString()).To(Equal("/bin/foobar"))
})
It("podman create --entrypoint \"\"", func() {
@@ -130,7 +130,7 @@ var _ = Describe("Podman create", func() {
result := podmanTest.Podman([]string{"inspect", session.OutputToString(), "--format", "{{.Config.Entrypoint}}"})
result.WaitWithDefaultTimeout()
Expect(result).Should(Exit(0))
- Expect(result.OutputToString()).To(Equal("[]"))
+ Expect(result.OutputToString()).To(Equal(""))
})
It("podman create --entrypoint json", func() {
@@ -143,7 +143,7 @@ var _ = Describe("Podman create", func() {
result := podmanTest.Podman([]string{"inspect", "entrypoint_json", "--format", "{{.Config.Entrypoint}}"})
result.WaitWithDefaultTimeout()
Expect(result).Should(Exit(0))
- Expect(result.OutputToString()).To(Equal("[/bin/foo -c]"))
+ Expect(result.OutputToString()).To(Equal("/bin/foo -c"))
})
It("podman create --mount flag with multiple mounts", func() {
@@ -281,8 +281,7 @@ var _ = Describe("Podman create", func() {
Expect(ctrJSON).To(HaveLen(1))
Expect(ctrJSON[0].Config.Cmd).To(HaveLen(1))
Expect(ctrJSON[0].Config.Cmd[0]).To(Equal("redis-server"))
- Expect(ctrJSON[0].Config.Entrypoint).To(HaveLen(1))
- Expect(ctrJSON[0].Config.Entrypoint[0]).To(Equal("docker-entrypoint.sh"))
+ Expect(ctrJSON[0].Config.Entrypoint).To(Equal("docker-entrypoint.sh"))
})
It("podman create --pull", func() {
diff --git a/test/e2e/libpod_suite_remote_test.go b/test/e2e/libpod_suite_remote_test.go
index dddcf5c14..9ad2bf7b9 100644
--- a/test/e2e/libpod_suite_remote_test.go
+++ b/test/e2e/libpod_suite_remote_test.go
@@ -137,6 +137,9 @@ func getRemoteOptions(p *PodmanTestIntegration, args []string) []string {
if os.Getenv("HOOK_OPTION") != "" {
podmanOptions = append(podmanOptions, os.Getenv("HOOK_OPTION"))
}
+ if p.NetworkBackend.ToString() == "netavark" {
+ podmanOptions = append(podmanOptions, "--network-backend", "netavark")
+ }
podmanOptions = append(podmanOptions, strings.Split(p.StorageOptions, " ")...)
podmanOptions = append(podmanOptions, args...)
return podmanOptions
diff --git a/test/e2e/pod_create_test.go b/test/e2e/pod_create_test.go
index dc43ce6fd..8def80213 100644
--- a/test/e2e/pod_create_test.go
+++ b/test/e2e/pod_create_test.go
@@ -368,7 +368,7 @@ var _ = Describe("Podman pod create", func() {
check1 := podmanTest.Podman([]string{"container", "inspect", "--format", "{{.Config.Entrypoint}}", data.Containers[0].ID})
check1.WaitWithDefaultTimeout()
Expect(check1).Should(Exit(0))
- Expect(check1.OutputToString()).To(Equal("[/catatonit -P]"))
+ Expect(check1.OutputToString()).To(Equal("/catatonit -P"))
// check the Path and Args
check2 := podmanTest.Podman([]string{"container", "inspect", "--format", "{{.Path}}:{{.Args}}", data.Containers[0].ID})
@@ -391,7 +391,7 @@ var _ = Describe("Podman pod create", func() {
check1 := podmanTest.Podman([]string{"container", "inspect", "--format", "{{.Config.Entrypoint}}", data.Containers[0].ID})
check1.WaitWithDefaultTimeout()
Expect(check1).Should(Exit(0))
- Expect(check1.OutputToString()).To(Equal("[/pause1]"))
+ Expect(check1.OutputToString()).To(Equal("/pause1"))
// check the Path and Args
check2 := podmanTest.Podman([]string{"container", "inspect", "--format", "{{.Path}}:{{.Args}}", data.Containers[0].ID})
@@ -418,7 +418,7 @@ entrypoint ["/fromimage"]
check1 := podmanTest.Podman([]string{"container", "inspect", "--format", "{{.Config.Entrypoint}}", data.Containers[0].ID})
check1.WaitWithDefaultTimeout()
Expect(check1).Should(Exit(0))
- Expect(check1.OutputToString()).To(Equal("[/fromimage]"))
+ Expect(check1.OutputToString()).To(Equal("/fromimage"))
// check the Path and Args
check2 := podmanTest.Podman([]string{"container", "inspect", "--format", "{{.Path}}:{{.Args}}", data.Containers[0].ID})
@@ -445,7 +445,7 @@ entrypoint ["/fromimage"]
check1 := podmanTest.Podman([]string{"container", "inspect", "--format", "{{.Config.Entrypoint}}", data.Containers[0].ID})
check1.WaitWithDefaultTimeout()
Expect(check1).Should(Exit(0))
- Expect(check1.OutputToString()).To(Equal("[/fromcommand]"))
+ Expect(check1.OutputToString()).To(Equal("/fromcommand"))
// check the Path and Args
check2 := podmanTest.Podman([]string{"container", "inspect", "--format", "{{.Path}}:{{.Args}}", data.Containers[0].ID})
diff --git a/test/system/200-pod.bats b/test/system/200-pod.bats
index e6f4ecdbc..f5fe41924 100644
--- a/test/system/200-pod.bats
+++ b/test/system/200-pod.bats
@@ -234,7 +234,7 @@ EOF
local infra_cid="$output"
# confirm that entrypoint is what we set
run_podman container inspect --format '{{.Config.Entrypoint}}' $infra_cid
- is "$output" "[$infra_command]" "infra-command took effect"
+ is "$output" "$infra_command" "infra-command took effect"
# confirm that infra container name is set
run_podman container inspect --format '{{.Name}}' $infra_cid
is "$output" "$infra_name" "infra-name took effect"
diff --git a/test/upgrade/test-upgrade.bats b/test/upgrade/test-upgrade.bats
index 198d8a169..5efe05d49 100644
--- a/test/upgrade/test-upgrade.bats
+++ b/test/upgrade/test-upgrade.bats
@@ -146,6 +146,12 @@ EOF
# cause connectivity issues since cni and netavark should never be mixed.
mkdir -p /run/netns /run/cni /run/containers /var/lib/cni /etc/cni/net.d
+ # Containers-common around release 1-55 no-longer supplies this file
+ sconf=/etc/containers/storage.conf
+ v_sconf=
+ if [[ -e "$sconf" ]]; then
+ v_sconf="-v $sconf:$sconf"
+ fi
#
# Use new-podman to run the above script under old-podman.
@@ -165,7 +171,7 @@ EOF
--net=host \
--cgroupns=host \
--pid=host \
- -v /etc/containers/storage.conf:/etc/containers/storage.conf \
+ $v_sconf \
-v /dev/fuse:/dev/fuse \
-v /run/crun:/run/crun \
-v /run/netns:/run/netns:rshared \
diff --git a/test/utils/utils.go b/test/utils/utils.go
index da56a3a2e..39a0ac875 100644
--- a/test/utils/utils.go
+++ b/test/utils/utils.go
@@ -110,7 +110,7 @@ func (p *PodmanTest) PodmanAsUserBase(args []string, uid, gid uint32, cwd string
}
runCmd := append(wrapper, podmanBinary)
- if p.NetworkBackend == Netavark {
+ if !p.RemoteTest && p.NetworkBackend == Netavark {
runCmd = append(runCmd, []string{"--network-backend", "netavark"}...)
}