mirror of https://github.com/containers/podman.git
				
				
				
			
						commit
						28573fa9d2
					
				|  | @ -119,15 +119,8 @@ var _ = Describe("Podman commit", func() { | |||
| 
 | ||||
| 		check := podmanTest.Podman([]string{"inspect", "foobar.com/test1-image:latest"}) | ||||
| 		check.WaitWithDefaultTimeout() | ||||
| 		data := check.InspectImageJSON() | ||||
| 		foundBlue := false | ||||
| 		for _, i := range data[0].Labels { | ||||
| 			if i == "blue" { | ||||
| 				foundBlue = true | ||||
| 				break | ||||
| 			} | ||||
| 		} | ||||
| 		Expect(foundBlue).To(BeTrue()) | ||||
| 		inspectResults := check.InspectImageJSON() | ||||
| 		Expect(inspectResults[0].Labels).To(HaveKeyWithValue("image", "blue")) | ||||
| 	}) | ||||
| 
 | ||||
| 	It("podman commit container with --squash", func() { | ||||
|  |  | |||
|  | @ -288,10 +288,9 @@ var _ = Describe("Podman container clone", func() { | |||
| 		inspect := podmanTest.Podman([]string{"inspect", clone.OutputToString()}) | ||||
| 		inspect.WaitWithDefaultTimeout() | ||||
| 		Expect(inspect).To(Exit(0)) | ||||
| 		Expect(inspect.InspectContainerToJSON()[0].NetworkSettings.Networks).To(HaveLen(2)) | ||||
| 		_, ok := inspect.InspectContainerToJSON()[0].NetworkSettings.Networks["testing123"] | ||||
| 		Expect(ok).To(BeTrue()) | ||||
| 
 | ||||
| 		networks := inspect.InspectContainerToJSON()[0].NetworkSettings.Networks | ||||
| 		Expect(networks).To(HaveLen(2)) | ||||
| 		Expect(networks).To(HaveKey("testing123")) | ||||
| 	}) | ||||
| 
 | ||||
| 	It("podman container clone env test", func() { | ||||
|  |  | |||
|  | @ -193,8 +193,7 @@ var _ = Describe("Podman events", func() { | |||
| 		Expect(result).Should(Exit(0)) | ||||
| 		tEnd := time.Now() | ||||
| 		outDur := tEnd.Sub(untilT) | ||||
| 		diff := outDur.Seconds() > 0 | ||||
| 		Expect(diff).To(BeTrue()) | ||||
| 		Expect(outDur.Seconds()).To(BeNumerically(">", 0), "duration") | ||||
| 		Expect(result.OutputToString()).To(ContainSubstring(name1)) | ||||
| 		Expect(result.OutputToString()).To(ContainSubstring(name2)) | ||||
| 		Expect(result.OutputToString()).To(ContainSubstring(name3)) | ||||
|  |  | |||
|  | @ -316,7 +316,7 @@ WORKDIR /test | |||
| 
 | ||||
| 		actual := podmanTest.Podman([]string{"images", "--sort", "created", "-q"}) | ||||
| 		actual.WaitWithDefaultTimeout() | ||||
| 		Expect(expected.Out).Should(Equal(actual.Out)) | ||||
| 		Expect(actual.Out).Should(Equal(expected.Out)) | ||||
| 	}) | ||||
| 
 | ||||
| 	It("podman images --all flag", func() { | ||||
|  |  | |||
|  | @ -509,7 +509,7 @@ var _ = Describe("Podman inspect", func() { | |||
| 				Expect(ulimit.Hard).To(BeNumerically("==", -1)) | ||||
| 			} | ||||
| 		} | ||||
| 		Expect(found).To(BeTrue()) | ||||
| 		Expect(found).To(BeTrue(), "found RLIMIT_CORE") | ||||
| 	}) | ||||
| 
 | ||||
| 	It("Dropped capabilities are sorted", func() { | ||||
|  |  | |||
|  | @ -116,7 +116,7 @@ var _ = Describe("Podman login and logout", func() { | |||
| 		Expect(authInfo).To(HaveKey(authsKey)) | ||||
| 
 | ||||
| 		auths, ok := authInfo[authsKey].(map[string]interface{}) | ||||
| 		Expect(ok).To(BeTrue()) | ||||
| 		Expect(ok).To(BeTrue(), "authInfo[%s]", authsKey) | ||||
| 
 | ||||
| 		return auths | ||||
| 	} | ||||
|  |  | |||
|  | @ -4,7 +4,6 @@ import ( | |||
| 	"fmt" | ||||
| 	"os" | ||||
| 	"os/exec" | ||||
| 	"strings" | ||||
| 	"time" | ||||
| 
 | ||||
| 	. "github.com/containers/podman/v4/test/utils" | ||||
|  | @ -281,7 +280,7 @@ var _ = Describe("Podman logs", func() { | |||
| 
 | ||||
| 			output := results.OutputToStringArray() | ||||
| 			Expect(output).To(HaveLen(6)) | ||||
| 			Expect(strings.Contains(output[0], cid1[:12]) || strings.Contains(output[0], cid2[:12])).To(BeTrue()) | ||||
| 			Expect(output[0]).To(Or(ContainSubstring(cid1[:12]), ContainSubstring(cid2[:12]))) | ||||
| 		}) | ||||
| 
 | ||||
| 		It("podman logs on a created container should result in 0 exit code: "+log, func() { | ||||
|  |  | |||
|  | @ -154,7 +154,7 @@ var _ = Describe("Podman manifest", func() { | |||
| 		Expect(session2.OutputToString()).To(Equal(session.OutputToString())) | ||||
| 	}) | ||||
| 
 | ||||
| 	It(" add --all", func() { | ||||
| 	It("add --all", func() { | ||||
| 		session := podmanTest.Podman([]string{"manifest", "create", "foo"}) | ||||
| 		session.WaitWithDefaultTimeout() | ||||
| 		Expect(session).Should(Exit(0)) | ||||
|  | @ -375,7 +375,7 @@ var _ = Describe("Podman manifest", func() { | |||
| 				break | ||||
| 			} | ||||
| 		} | ||||
| 		Expect(foundZstdFile).To(BeTrue()) | ||||
| 		Expect(foundZstdFile).To(BeTrue(), "found zstd file") | ||||
| 	}) | ||||
| 
 | ||||
| 	It("push progress", func() { | ||||
|  |  | |||
|  | @ -80,7 +80,7 @@ var _ = Describe("Podman network create", func() { | |||
| 		containerIP, _, err := net.ParseCIDR(try.OutputToString()) | ||||
| 		Expect(err).ToNot(HaveOccurred()) | ||||
| 		// Ensure that the IP the container got is within the subnet the user asked for
 | ||||
| 		Expect(subnet.Contains(containerIP)).To(BeTrue()) | ||||
| 		Expect(subnet.Contains(containerIP)).To(BeTrue(), "subnet contains containerIP") | ||||
| 	}) | ||||
| 
 | ||||
| 	It("podman network create with name and IPv6 subnet", func() { | ||||
|  | @ -119,7 +119,7 @@ var _ = Describe("Podman network create", func() { | |||
| 		containerIP, _, err := net.ParseCIDR(try.OutputToString()) | ||||
| 		Expect(err).ToNot(HaveOccurred()) | ||||
| 		// Ensure that the IP the container got is within the subnet the user asked for
 | ||||
| 		Expect(subnet.Contains(containerIP)).To(BeTrue()) | ||||
| 		Expect(subnet.Contains(containerIP)).To(BeTrue(), "subnet contains containerIP") | ||||
| 	}) | ||||
| 
 | ||||
| 	It("podman network create with name and IPv6 flag (dual-stack)", func() { | ||||
|  | @ -194,7 +194,7 @@ var _ = Describe("Podman network create", func() { | |||
| 		containerIP, _, err := net.ParseCIDR(try.OutputToString()) | ||||
| 		Expect(err).ToNot(HaveOccurred()) | ||||
| 		// Ensure that the IP the container got is within the subnet the user asked for
 | ||||
| 		Expect(subnet.Contains(containerIP)).To(BeTrue()) | ||||
| 		Expect(subnet.Contains(containerIP)).To(BeTrue(), "subnet contains containerIP") | ||||
| 		// verify the container has an IPv4 address too (the IPv4 subnet is autogenerated)
 | ||||
| 		try = podmanTest.Podman([]string{"run", "--rm", "--network", netName, ALPINE, "sh", "-c", "ip addr show eth0 |  awk ' /inet / {print $2}'"}) | ||||
| 		try.WaitWithDefaultTimeout() | ||||
|  |  | |||
|  | @ -301,8 +301,8 @@ var _ = Describe("Podman network", func() { | |||
| 		conData := inspect.InspectContainerToJSON() | ||||
| 		Expect(conData).To(HaveLen(1)) | ||||
| 		Expect(conData[0].NetworkSettings.Networks).To(HaveLen(1)) | ||||
| 		net, ok := conData[0].NetworkSettings.Networks[netName] | ||||
| 		Expect(ok).To(BeTrue()) | ||||
| 		Expect(conData[0].NetworkSettings.Networks).To(HaveKey(netName)) | ||||
| 		net := conData[0].NetworkSettings.Networks[netName] | ||||
| 		Expect(net).To(HaveField("NetworkID", netName)) | ||||
| 		Expect(net).To(HaveField("IPPrefixLen", 24)) | ||||
| 		Expect(net.IPAddress).To(HavePrefix("10.50.50.")) | ||||
|  | @ -337,11 +337,11 @@ var _ = Describe("Podman network", func() { | |||
| 		conData := inspect.InspectContainerToJSON() | ||||
| 		Expect(conData).To(HaveLen(1)) | ||||
| 		Expect(conData[0].NetworkSettings.Networks).To(HaveLen(2)) | ||||
| 		net1, ok := conData[0].NetworkSettings.Networks[netName1] | ||||
| 		Expect(ok).To(BeTrue()) | ||||
| 		Expect(conData[0].NetworkSettings.Networks).To(HaveKey(netName1)) | ||||
| 		Expect(conData[0].NetworkSettings.Networks).To(HaveKey(netName2)) | ||||
| 		net1 := conData[0].NetworkSettings.Networks[netName1] | ||||
| 		Expect(net1).To(HaveField("NetworkID", netName1)) | ||||
| 		net2, ok := conData[0].NetworkSettings.Networks[netName2] | ||||
| 		Expect(ok).To(BeTrue()) | ||||
| 		net2 := conData[0].NetworkSettings.Networks[netName2] | ||||
| 		Expect(net2).To(HaveField("NetworkID", netName2)) | ||||
| 
 | ||||
| 		// Necessary to ensure the CNI network is removed cleanly
 | ||||
|  | @ -374,13 +374,13 @@ var _ = Describe("Podman network", func() { | |||
| 		conData := inspect.InspectContainerToJSON() | ||||
| 		Expect(conData).To(HaveLen(1)) | ||||
| 		Expect(conData[0].NetworkSettings.Networks).To(HaveLen(2)) | ||||
| 		net1, ok := conData[0].NetworkSettings.Networks[netName1] | ||||
| 		Expect(ok).To(BeTrue()) | ||||
| 		Expect(conData[0].NetworkSettings.Networks).To(HaveKey(netName1)) | ||||
| 		Expect(conData[0].NetworkSettings.Networks).To(HaveKey(netName2)) | ||||
| 		net1 := conData[0].NetworkSettings.Networks[netName1] | ||||
| 		Expect(net1).To(HaveField("NetworkID", netName1)) | ||||
| 		Expect(net1).To(HaveField("IPPrefixLen", 25)) | ||||
| 		Expect(net1.IPAddress).To(HavePrefix("10.50.51.")) | ||||
| 		net2, ok := conData[0].NetworkSettings.Networks[netName2] | ||||
| 		Expect(ok).To(BeTrue()) | ||||
| 		net2 := conData[0].NetworkSettings.Networks[netName2] | ||||
| 		Expect(net2).To(HaveField("NetworkID", netName2)) | ||||
| 		Expect(net2).To(HaveField("IPPrefixLen", 26)) | ||||
| 		Expect(net2.IPAddress).To(HavePrefix("10.50.51.")) | ||||
|  | @ -512,7 +512,7 @@ var _ = Describe("Podman network", func() { | |||
| 			time.Sleep(interval) | ||||
| 			interval *= 2 | ||||
| 		} | ||||
| 		Expect(worked).To(BeTrue()) | ||||
| 		Expect(worked).To(BeTrue(), "nginx came up") | ||||
| 
 | ||||
| 		// Nginx is now running so no need to do a loop
 | ||||
| 		// Test against the first alias
 | ||||
|  |  | |||
|  | @ -3169,7 +3169,7 @@ spec: | |||
| 		// the file should have been created
 | ||||
| 		st, err := os.Stat(hostPathLocation) | ||||
| 		Expect(err).ToNot(HaveOccurred()) | ||||
| 		Expect(st.Mode().IsDir()).To(BeTrue()) | ||||
| 		Expect(st.Mode().IsDir()).To(BeTrue(), "hostPathLocation is a directory") | ||||
| 	}) | ||||
| 
 | ||||
| 	It("podman play kube test with DirectoryOrCreate HostPath type volume and non-existent directory path", func() { | ||||
|  | @ -3186,7 +3186,7 @@ spec: | |||
| 		// the full path should have been created
 | ||||
| 		st, err := os.Stat(hostPathLocation) | ||||
| 		Expect(err).ToNot(HaveOccurred()) | ||||
| 		Expect(st.Mode().IsDir()).To(BeTrue()) | ||||
| 		Expect(st.Mode().IsDir()).To(BeTrue(), "hostPathLocation is a directory") | ||||
| 	}) | ||||
| 
 | ||||
| 	It("podman play kube test with DirectoryOrCreate HostPath type volume and existent directory path", func() { | ||||
|  |  | |||
|  | @ -152,7 +152,7 @@ var _ = Describe("Podman pod clone", func() { | |||
| 		run.WaitWithDefaultTimeout() | ||||
| 		Expect(run).Should(Exit(0)) | ||||
| 		t, strings := run.GrepString("shm on /dev/shm type tmpfs") | ||||
| 		Expect(t).To(BeTrue()) | ||||
| 		Expect(t).To(BeTrue(), "found /dev/shm") | ||||
| 		Expect(strings[0]).Should(ContainSubstring("size=10240k")) | ||||
| 	}) | ||||
| 
 | ||||
|  |  | |||
|  | @ -102,7 +102,7 @@ var _ = Describe("Podman pod create", func() { | |||
| 		webserver := podmanTest.Podman([]string{"run", "--pod", pod, "-dt", NGINX_IMAGE}) | ||||
| 		webserver.WaitWithDefaultTimeout() | ||||
| 		Expect(webserver).Should(Exit(0)) | ||||
| 		Expect(ncz(port)).To(BeTrue()) | ||||
| 		Expect(ncz(port)).To(BeTrue(), "port %d is up", port) | ||||
| 	}) | ||||
| 
 | ||||
| 	It("podman create pod with id file with network portbindings", func() { | ||||
|  | @ -116,7 +116,7 @@ var _ = Describe("Podman pod create", func() { | |||
| 		webserver := podmanTest.Podman([]string{"run", "--pod-id-file", file, "-dt", NGINX_IMAGE}) | ||||
| 		webserver.WaitWithDefaultTimeout() | ||||
| 		Expect(webserver).Should(Exit(0)) | ||||
| 		Expect(ncz(port)).To(BeTrue()) | ||||
| 		Expect(ncz(port)).To(BeTrue(), "port %d is up", port) | ||||
| 	}) | ||||
| 
 | ||||
| 	It("podman create pod with no infra but portbindings should fail", func() { | ||||
|  | @ -988,8 +988,7 @@ ENTRYPOINT ["sleep","99999"] | |||
| 		ctrCreate = podmanTest.Podman([]string{"container", "run", "--pod", podCreate.OutputToString(), ALPINE, "cat", "/proc/self/attr/current"}) | ||||
| 		ctrCreate.WaitWithDefaultTimeout() | ||||
| 		Expect(ctrCreate).Should(Exit(0)) | ||||
| 		match, _ := ctrCreate.GrepString("spc_t") | ||||
| 		Expect(match).Should(BeTrue()) | ||||
| 		Expect(ctrCreate.OutputToString()).To(ContainSubstring("spc_t")) | ||||
| 	}) | ||||
| 
 | ||||
| 	It("podman pod create --security-opt seccomp", func() { | ||||
|  | @ -1138,7 +1137,7 @@ ENTRYPOINT ["sleep","99999"] | |||
| 		run.WaitWithDefaultTimeout() | ||||
| 		Expect(run).Should(Exit(0)) | ||||
| 		t, strings := run.GrepString("shm on /dev/shm type tmpfs") | ||||
| 		Expect(t).To(BeTrue()) | ||||
| 		Expect(t).To(BeTrue(), "found /dev/shm") | ||||
| 		Expect(strings[0]).Should(ContainSubstring("size=10240k")) | ||||
| 	}) | ||||
| 
 | ||||
|  | @ -1192,7 +1191,7 @@ ENTRYPOINT ["sleep","99999"] | |||
| 		run.WaitWithDefaultTimeout() | ||||
| 		Expect(run).Should(Exit(0)) | ||||
| 		t, strings := run.GrepString("tmpfs on /run/lock") | ||||
| 		Expect(t).To(BeTrue()) | ||||
| 		Expect(t).To(BeTrue(), "found /run/lock") | ||||
| 		Expect(strings[0]).Should(ContainSubstring("size=10240k")) | ||||
| 	}) | ||||
| 
 | ||||
|  |  | |||
|  | @ -169,7 +169,7 @@ var _ = Describe("Podman ps", func() { | |||
| 
 | ||||
| 		sortedArr := session.OutputToStringArray() | ||||
| 
 | ||||
| 		Expect(sort.SliceIsSorted(sortedArr, func(i, j int) bool { return sortedArr[i] < sortedArr[j] })).To(BeTrue()) | ||||
| 		Expect(sort.SliceIsSorted(sortedArr, func(i, j int) bool { return sortedArr[i] < sortedArr[j] })).To(BeTrue(), "slice is sorted") | ||||
| 	}) | ||||
| 
 | ||||
| 	It("podman pod ps --ctr-names", func() { | ||||
|  |  | |||
|  | @ -144,8 +144,7 @@ var _ = Describe("Podman pod rm", func() { | |||
| 		result := podmanTest.Podman([]string{"pod", "rm", "-a"}) | ||||
| 		result.WaitWithDefaultTimeout() | ||||
| 		Expect(result).To(ExitWithError()) | ||||
| 		foundExpectedError, _ := result.ErrorGrepString("cannot be removed") | ||||
| 		Expect(foundExpectedError).To(BeTrue()) | ||||
| 		Expect(result.ErrorToString()).To(ContainSubstring("cannot be removed")) | ||||
| 
 | ||||
| 		numPods = podmanTest.NumberOfPods() | ||||
| 		ps = podmanTest.Podman([]string{"pod", "ps"}) | ||||
|  |  | |||
|  | @ -524,9 +524,10 @@ var _ = Describe("Podman prune", func() { | |||
| 	}) | ||||
| 
 | ||||
| 	It("podman system prune --all --external fails", func() { | ||||
| 		prune := podmanTest.Podman([]string{"system", "prune", "--all", "--enternal"}) | ||||
| 		prune := podmanTest.Podman([]string{"system", "prune", "--all", "--external"}) | ||||
| 		prune.WaitWithDefaultTimeout() | ||||
| 		Expect(prune).Should(Exit(125)) | ||||
| 		Expect(prune.ErrorToString()).To(ContainSubstring("--external cannot be combined with other options")) | ||||
| 	}) | ||||
| 
 | ||||
| 	It("podman system prune --external leaves referenced containers", func() { | ||||
|  |  | |||
|  | @ -271,7 +271,7 @@ var _ = Describe("Podman ps", func() { | |||
| 
 | ||||
| 	It("podman ps print a human-readable `Status` with json format", func() { | ||||
| 		_, ec, _ := podmanTest.RunLsContainer("test1") | ||||
| 		Expect(ec).To(Equal(0)) | ||||
| 		Expect(ec).To(Equal(0), "container exit code") | ||||
| 
 | ||||
| 		result := podmanTest.Podman([]string{"ps", "-a", "--format", "json"}) | ||||
| 		result.WaitWithDefaultTimeout() | ||||
|  | @ -279,7 +279,7 @@ var _ = Describe("Podman ps", func() { | |||
| 		Expect(result.OutputToString()).To(BeValidJSON()) | ||||
| 		// must contain "Status"
 | ||||
| 		match, StatusLine := result.GrepString(`Status`) | ||||
| 		Expect(match).To(BeTrue()) | ||||
| 		Expect(match).To(BeTrue(), "found 'Status'") | ||||
| 		// we waited for container to exit, so this must contain `Exited`
 | ||||
| 		Expect(StatusLine[0]).To(ContainSubstring("Exited")) | ||||
| 	}) | ||||
|  | @ -460,7 +460,7 @@ var _ = Describe("Podman ps", func() { | |||
| 			size1, _ := units.FromHumanSize(matches1[1]) | ||||
| 			size2, _ := units.FromHumanSize(matches2[1]) | ||||
| 			return size1 < size2 | ||||
| 		})).To(BeTrue()) | ||||
| 		})).To(BeTrue(), "slice is sorted") | ||||
| 
 | ||||
| 	}) | ||||
| 
 | ||||
|  | @ -480,7 +480,7 @@ var _ = Describe("Podman ps", func() { | |||
| 		Expect(session.OutputToString()).ToNot(ContainSubstring("COMMAND")) | ||||
| 
 | ||||
| 		sortedArr := session.OutputToStringArray() | ||||
| 		Expect(sort.SliceIsSorted(sortedArr, func(i, j int) bool { return sortedArr[i] < sortedArr[j] })).To(BeTrue()) | ||||
| 		Expect(sort.SliceIsSorted(sortedArr, func(i, j int) bool { return sortedArr[i] < sortedArr[j] })).To(BeTrue(), "slice is sorted") | ||||
| 	}) | ||||
| 
 | ||||
| 	It("podman --pod", func() { | ||||
|  |  | |||
|  | @ -44,8 +44,7 @@ var _ = Describe("Podman pull", func() { | |||
| 		session.WaitWithDefaultTimeout() | ||||
| 		Expect(session).Should(Exit(125)) | ||||
| 		expectedError := "initializing source docker://ibetthisdoesnotexistfr:random" | ||||
| 		found, _ := session.ErrorGrepString(expectedError) | ||||
| 		Expect(found).To(BeTrue()) | ||||
| 		Expect(session.ErrorToString()).To(ContainSubstring(expectedError)) | ||||
| 
 | ||||
| 		session = podmanTest.Podman([]string{"rmi", "busybox:musl", "alpine", "quay.io/libpod/cirros", "testdigest_v2s2@sha256:755f4d90b3716e2bf57060d249e2cd61c9ac089b1233465c5c2cb2d7ee550fdb"}) | ||||
| 		session.WaitWithDefaultTimeout() | ||||
|  | @ -288,8 +287,7 @@ var _ = Describe("Podman pull", func() { | |||
| 		session.WaitWithDefaultTimeout() | ||||
| 		Expect(session).Should(Exit(125)) | ||||
| 		expectedError := "Unexpected tar manifest.json: expected 1 item, got 2" | ||||
| 		found, _ := session.ErrorGrepString(expectedError) | ||||
| 		Expect(found).To(BeTrue()) | ||||
| 		Expect(session.ErrorToString()).To(ContainSubstring(expectedError)) | ||||
| 
 | ||||
| 		// Now pull _one_ image from a multi-image archive via the name
 | ||||
| 		// and index syntax.
 | ||||
|  | @ -314,15 +312,13 @@ var _ = Describe("Podman pull", func() { | |||
| 		session.WaitWithDefaultTimeout() | ||||
| 		Expect(session).Should(Exit(125)) | ||||
| 		expectedError = "Tag \"foo.com/does/not/exist:latest\" not found" | ||||
| 		found, _ = session.ErrorGrepString(expectedError) | ||||
| 		Expect(found).To(BeTrue()) | ||||
| 		Expect(session.ErrorToString()).To(ContainSubstring(expectedError)) | ||||
| 
 | ||||
| 		session = podmanTest.Podman([]string{"pull", "docker-archive:./testdata/docker-two-images.tar.xz:@2"}) | ||||
| 		session.WaitWithDefaultTimeout() | ||||
| 		Expect(session).Should(Exit(125)) | ||||
| 		expectedError = "Invalid source index @2, only 2 manifest items available" | ||||
| 		found, _ = session.ErrorGrepString(expectedError) | ||||
| 		Expect(found).To(BeTrue()) | ||||
| 		Expect(session.ErrorToString()).To(ContainSubstring(expectedError)) | ||||
| 	}) | ||||
| 
 | ||||
| 	It("podman pull from oci-archive", func() { | ||||
|  |  | |||
|  | @ -91,7 +91,7 @@ var _ = Describe("Podman push", func() { | |||
| 				break | ||||
| 			} | ||||
| 		} | ||||
| 		Expect(foundZstdFile).To(BeTrue()) | ||||
| 		Expect(foundZstdFile).To(BeTrue(), "found zstd file") | ||||
| 	}) | ||||
| 
 | ||||
| 	It("podman push to local registry", func() { | ||||
|  |  | |||
|  | @ -451,7 +451,7 @@ var _ = Describe("quadlet system generator", func() { | |||
| 			current := session.ErrorToStringArray() | ||||
| 			expected := "No files to parse from [/something]" | ||||
| 
 | ||||
| 			Expect(strings.Contains(current[0], expected)).To(BeTrue()) | ||||
| 			Expect(current[0]).To(ContainSubstring(expected)) | ||||
| 		}) | ||||
| 
 | ||||
| 		It("Should parse a kube file and print it to stdout", func() { | ||||
|  | @ -504,7 +504,7 @@ var _ = Describe("quadlet system generator", func() { | |||
| 				fmt.Sprintf("ExecStop=%s kube down %s/deployment.yml", podmanPath, quadletDir), | ||||
| 			} | ||||
| 
 | ||||
| 			Expect(expected).To(Equal(current)) | ||||
| 			Expect(current).To(Equal(expected)) | ||||
| 		}) | ||||
| 	}) | ||||
| 
 | ||||
|  |  | |||
|  | @ -77,7 +77,7 @@ var _ = Describe("Podman restart", func() { | |||
| 	It("podman restart running container", func() { | ||||
| 		_ = podmanTest.RunTopContainer("test1") | ||||
| 		ok := WaitForContainer(podmanTest) | ||||
| 		Expect(ok).To(BeTrue()) | ||||
| 		Expect(ok).To(BeTrue(), "test1 container is up") | ||||
| 		startTime := podmanTest.Podman([]string{"inspect", "--format='{{.State.StartedAt}}'", "test1"}) | ||||
| 		startTime.WaitWithDefaultTimeout() | ||||
| 
 | ||||
|  | @ -92,7 +92,7 @@ var _ = Describe("Podman restart", func() { | |||
| 	It("podman container restart running container", func() { | ||||
| 		_ = podmanTest.RunTopContainer("test1") | ||||
| 		ok := WaitForContainer(podmanTest) | ||||
| 		Expect(ok).To(BeTrue()) | ||||
| 		Expect(ok).To(BeTrue(), "test1 container is up") | ||||
| 		startTime := podmanTest.Podman([]string{"container", "inspect", "--format='{{.State.StartedAt}}'", "test1"}) | ||||
| 		startTime.WaitWithDefaultTimeout() | ||||
| 
 | ||||
|  |  | |||
|  | @ -49,7 +49,7 @@ var _ = Describe("Podman run restart containers", func() { | |||
| 	It("Podman start after signal kill", func() { | ||||
| 		_ = podmanTest.RunTopContainer("test1") | ||||
| 		ok := WaitForContainer(podmanTest) | ||||
| 		Expect(ok).To(BeTrue()) | ||||
| 		Expect(ok).To(BeTrue(), "test1 container started") | ||||
| 
 | ||||
| 		killSession := podmanTest.Podman([]string{"kill", "-s", "9", "test1"}) | ||||
| 		killSession.WaitWithDefaultTimeout() | ||||
|  |  | |||
|  | @ -62,9 +62,7 @@ var _ = Describe("Podman run", func() { | |||
| 		session := podmanTest.Podman([]string{"run", ALPINE, "cat", "/proc/self/attr/current"}) | ||||
| 		session.WaitWithDefaultTimeout() | ||||
| 		Expect(session).Should(Exit(0)) | ||||
| 		match1, _ := session.GrepString("container_t") | ||||
| 		match2, _ := session.GrepString("svirt_lxc_net_t") | ||||
| 		Expect(match1 || match2).Should(BeTrue()) | ||||
| 		Expect(session.OutputToString()).To(Or(ContainSubstring("container_t"), ContainSubstring("svirt_lxc_net_t"))) | ||||
| 	}) | ||||
| 
 | ||||
| 	It("podman run selinux type setup test", func() { | ||||
|  |  | |||
|  | @ -1254,11 +1254,9 @@ USER mail`, BB) | |||
| 		session := podmanTest.Podman([]string{"run", "--volume", vol1 + ":/myvol1:z", "--volume", vol2 + ":/myvol2:shared,z", fedoraMinimal, "findmnt", "-o", "TARGET,PROPAGATION"}) | ||||
| 		session.WaitWithDefaultTimeout() | ||||
| 		Expect(session).Should(Exit(0)) | ||||
| 		match, shared := session.GrepString("shared") | ||||
| 		Expect(match).Should(BeTrue()) | ||||
| 		Expect(session.OutputToString()).To(ContainSubstring("shared")) | ||||
| 		// make sure it's only shared (and not 'shared,slave')
 | ||||
| 		isSharedOnly := !strings.Contains(shared[0], "shared,") | ||||
| 		Expect(isSharedOnly).Should(BeTrue()) | ||||
| 		Expect(session.OutputToString()).To(Not(ContainSubstring("shared,"))) | ||||
| 	}) | ||||
| 
 | ||||
| 	It("podman run --security-opts proc-opts=", func() { | ||||
|  | @ -1417,7 +1415,7 @@ USER mail`, BB) | |||
| 				break | ||||
| 			} | ||||
| 		} | ||||
| 		Expect(found).To(BeTrue()) | ||||
| 		Expect(found).To(BeTrue(), "found expected /ran file") | ||||
| 
 | ||||
| 		err = os.Remove(aliveFile) | ||||
| 		Expect(err).ToNot(HaveOccurred()) | ||||
|  | @ -1433,7 +1431,7 @@ USER mail`, BB) | |||
| 				break | ||||
| 			} | ||||
| 		} | ||||
| 		Expect(found).To(BeTrue()) | ||||
| 		Expect(found).To(BeTrue(), "found /ran file after restart") | ||||
| 	}) | ||||
| 
 | ||||
| 	It("podman run with restart policy does not restart on manual stop", func() { | ||||
|  | @ -2098,7 +2096,7 @@ WORKDIR /madethis`, BB) | |||
| 		mount.WaitWithDefaultTimeout() | ||||
| 		Expect(mount).Should(Exit(0)) | ||||
| 		t, strings := mount.GrepString("tmpfs on /run/lock") | ||||
| 		Expect(t).To(BeTrue()) | ||||
| 		Expect(t).To(BeTrue(), "found /run/lock") | ||||
| 		Expect(strings[0]).Should(ContainSubstring("size=10240k")) | ||||
| 	}) | ||||
| }) | ||||
|  |  | |||
|  | @ -144,7 +144,7 @@ var _ = Describe("Podman stats", func() { | |||
| 			} | ||||
| 			time.Sleep(time.Second) | ||||
| 		} | ||||
| 		Expect(found).To(BeTrue()) | ||||
| 		Expect(found).To(BeTrue(), "container has started") | ||||
| 		stats := podmanTest.Podman([]string{"stats", "--all", "--no-stream", "--format", "json"}) | ||||
| 		stats.WaitWithDefaultTimeout() | ||||
| 		Expect(stats).Should(Exit(0)) | ||||
|  |  | |||
|  | @ -88,7 +88,7 @@ WantedBy=default.target | |||
| 
 | ||||
| 		// Give container 10 seconds to start
 | ||||
| 		started := podmanTest.WaitContainerReady(ctrName, "Reached target multi-user.target - Multi-User System.", 30, 1) | ||||
| 		Expect(started).To(BeTrue()) | ||||
| 		Expect(started).To(BeTrue(), "Reached multi-user.target") | ||||
| 
 | ||||
| 		systemctl := podmanTest.Podman([]string{"exec", ctrName, "systemctl", "status", "--no-pager"}) | ||||
| 		systemctl.WaitWithDefaultTimeout() | ||||
|  | @ -100,7 +100,7 @@ WantedBy=default.target | |||
| 		Expect(result).Should(Exit(0)) | ||||
| 		conData := result.InspectContainerToJSON() | ||||
| 		Expect(conData).To(HaveLen(1)) | ||||
| 		Expect(conData[0].Config.SystemdMode).To(BeTrue()) | ||||
| 		Expect(conData[0].Config).To(HaveField("SystemdMode", true)) | ||||
| 
 | ||||
| 		// stats not supported w/ CGv1 rootless or containerized
 | ||||
| 		if isCgroupsV1() && (isRootless() || isContainerized()) { | ||||
|  | @ -127,7 +127,7 @@ WantedBy=default.target | |||
| 		Expect(result).Should(Exit(0)) | ||||
| 		conData := result.InspectContainerToJSON() | ||||
| 		Expect(conData).To(HaveLen(1)) | ||||
| 		Expect(conData[0].Config.SystemdMode).To(BeTrue()) | ||||
| 		Expect(conData[0].Config).To(HaveField("SystemdMode", true)) | ||||
| 	}) | ||||
| 
 | ||||
| 	It("podman systemd in command triggers systemd mode", func() { | ||||
|  | @ -152,7 +152,7 @@ CMD /usr/lib/systemd/systemd`, ALPINE) | |||
| 		Expect(result).Should(Exit(0)) | ||||
| 		conData := result.InspectContainerToJSON() | ||||
| 		Expect(conData).To(HaveLen(1)) | ||||
| 		Expect(conData[0].Config.SystemdMode).To(BeTrue()) | ||||
| 		Expect(conData[0].Config).To(HaveField("SystemdMode", true)) | ||||
| 	}) | ||||
| 
 | ||||
| 	It("podman create container with --uidmap and conmon PidFile accessible", func() { | ||||
|  | @ -181,7 +181,7 @@ CMD /usr/lib/systemd/systemd`, ALPINE) | |||
| 		Expect(result).Should(Exit(0)) | ||||
| 		conData := result.InspectContainerToJSON() | ||||
| 		Expect(conData).To(HaveLen(1)) | ||||
| 		Expect(conData[0].Config.SystemdMode).To(BeTrue()) | ||||
| 		Expect(conData[0].Config).To(HaveField("SystemdMode", true)) | ||||
| 	}) | ||||
| 
 | ||||
| 	It("podman run --systemd container should NOT mount /run noexec", func() { | ||||
|  |  | |||
|  | @ -85,18 +85,30 @@ var _ = Describe("Podman volume create", func() { | |||
| 			Skip("Volume export check does not work with a remote client") | ||||
| 		} | ||||
| 
 | ||||
| 		session := podmanTest.Podman([]string{"volume", "create", "myvol"}) | ||||
| 		volName := "my_vol_" + RandomString(10) | ||||
| 		session := podmanTest.Podman([]string{"volume", "create", volName}) | ||||
| 		session.WaitWithDefaultTimeout() | ||||
| 		volName := session.OutputToString() | ||||
| 		Expect(session).Should(Exit(0)) | ||||
| 		Expect(session.OutputToString()).To(Equal(volName)) | ||||
| 
 | ||||
| 		session = podmanTest.Podman([]string{"run", "--volume", volName + ":/data", ALPINE, "sh", "-c", "echo hello >> " + "/data/test"}) | ||||
| 		helloString := "hello-" + RandomString(20) | ||||
| 		session = podmanTest.Podman([]string{"run", "--volume", volName + ":/data", ALPINE, "sh", "-c", "echo " + helloString + " >> /data/test"}) | ||||
| 		session.WaitWithDefaultTimeout() | ||||
| 		Expect(session).Should(Exit(0)) | ||||
| 
 | ||||
| 		check := podmanTest.Podman([]string{"volume", "export", volName}) | ||||
| 		// export to tar file...
 | ||||
| 		helloTar := filepath.Join(podmanTest.TempDir, "hello.tar") | ||||
| 		check := podmanTest.Podman([]string{"volume", "export", "-o", helloTar, volName}) | ||||
| 		check.WaitWithDefaultTimeout() | ||||
| 		Expect(check.OutputToString()).To(ContainSubstring("hello")) | ||||
| 		Expect(check).Should(Exit(0)) | ||||
| 
 | ||||
| 		// ...then confirm that tar file has our desired content.
 | ||||
| 		// These flags emit filename to stderr (-v), contents to stdout
 | ||||
| 		tar := SystemExec("tar", []string{"-x", "-v", "--to-stdout", "-f", helloTar}) | ||||
| 		tar.WaitWithDefaultTimeout() | ||||
| 		Expect(tar).To(Exit(0)) | ||||
| 		Expect(tar.ErrorToString()).To(Equal("test")) | ||||
| 		Expect(tar.OutputToString()).To(Equal(helloString)) | ||||
| 	}) | ||||
| 
 | ||||
| 	It("podman create and import volume", func() { | ||||
|  | @ -104,12 +116,13 @@ var _ = Describe("Podman volume create", func() { | |||
| 			Skip("Volume export check does not work with a remote client") | ||||
| 		} | ||||
| 
 | ||||
| 		session := podmanTest.Podman([]string{"volume", "create", "my_vol"}) | ||||
| 		volName := "my_vol_" + RandomString(10) | ||||
| 		session := podmanTest.Podman([]string{"volume", "create", volName}) | ||||
| 		session.WaitWithDefaultTimeout() | ||||
| 		volName := session.OutputToString() | ||||
| 		Expect(session).Should(Exit(0)) | ||||
| 		Expect(session.OutputToString()).To(Equal(volName)) | ||||
| 
 | ||||
| 		session = podmanTest.Podman([]string{"run", "--volume", volName + ":/data", ALPINE, "sh", "-c", "echo hello >> " + "/data/test"}) | ||||
| 		session = podmanTest.Podman([]string{"run", "--volume", volName + ":/data", ALPINE, "sh", "-c", "echo hello >> /data/test"}) | ||||
| 		session.WaitWithDefaultTimeout() | ||||
| 		Expect(session).Should(Exit(0)) | ||||
| 
 | ||||
|  |  | |||
|  | @ -258,6 +258,34 @@ EOF | |||
|     run_podman volume rm my_vol2 | ||||
| } | ||||
| 
 | ||||
| # stdout with NULs is easier to test here than in ginkgo | ||||
| @test "podman volume export to stdout" { | ||||
|     skip_if_remote "N/A on podman-remote" | ||||
| 
 | ||||
|     local volname="myvol_$(random_string 10)" | ||||
|     local mountpoint="/data$(random_string 8)" | ||||
| 
 | ||||
|     run_podman volume create $volname | ||||
|     assert "$output" == "$volname" "volume create emits the name it was given" | ||||
| 
 | ||||
|     local content="mycontent-$(random_string 20)-the-end" | ||||
|     run_podman run --rm --volume "$volname:$mountpoint" $IMAGE \ | ||||
|                sh -c "echo $content >$mountpoint/testfile" | ||||
|     assert "$output" = "" | ||||
| 
 | ||||
|     # We can't use run_podman because bash can't handle NUL characters. | ||||
|     # Can't even store them in variables, so we need immediate redirection | ||||
|     # The "-v" is only for debugging: tar will emit the filename to stderr. | ||||
|     # If this test ever fails, that may give a clue. | ||||
|     echo "$_LOG_PROMPT $PODMAN volume export $volname | tar -x ..." | ||||
|     tar_output="$($PODMAN volume export $volname | tar -x -v --to-stdout)" | ||||
|     echo "$tar_output" | ||||
|     assert "$tar_output" == "$content" "extracted content" | ||||
| 
 | ||||
|     # Clean up | ||||
|     run_podman volume rm $volname | ||||
| } | ||||
| 
 | ||||
| # Podman volume user test | ||||
| @test "podman volume user test" { | ||||
|     is_rootless || skip "only meaningful when run rootless" | ||||
|  |  | |||
|  | @ -527,16 +527,6 @@ function skip_if_journald_unavailable { | |||
|     fi | ||||
| } | ||||
| 
 | ||||
| function skip_if_root_ubuntu { | ||||
|     if is_ubuntu; then | ||||
|         if ! is_remote; then | ||||
|             if ! is_rootless; then | ||||
|                  skip "Cannot run this test on rootful ubuntu, usually due to user errors" | ||||
|             fi | ||||
|         fi | ||||
|     fi | ||||
| } | ||||
| 
 | ||||
| function skip_if_aarch64 { | ||||
|     if is_aarch64; then | ||||
|         skip "${msg:-Cannot run this test on aarch64 systems}" | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue