github.com/containers/podman/v2@v2.2.2-0.20210501105131-c1e07d070c4c/test/e2e/diff_test.go (about)

     1  package integration
     2  
     3  import (
     4  	"os"
     5  	"sort"
     6  
     7  	. "github.com/containers/podman/v2/test/utils"
     8  	. "github.com/onsi/ginkgo"
     9  	. "github.com/onsi/gomega"
    10  )
    11  
    12  var _ = Describe("Podman diff", func() {
    13  	var (
    14  		tempdir    string
    15  		err        error
    16  		podmanTest *PodmanTestIntegration
    17  	)
    18  
    19  	BeforeEach(func() {
    20  		tempdir, err = CreateTempDirInTempDir()
    21  		if err != nil {
    22  			os.Exit(1)
    23  		}
    24  		podmanTest = PodmanTestCreate(tempdir)
    25  		podmanTest.Setup()
    26  		podmanTest.SeedImages()
    27  	})
    28  
    29  	AfterEach(func() {
    30  		podmanTest.Cleanup()
    31  		f := CurrentGinkgoTestDescription()
    32  		processTestResult(f)
    33  
    34  	})
    35  
    36  	It("podman diff of image", func() {
    37  		session := podmanTest.Podman([]string{"diff", ALPINE})
    38  		session.WaitWithDefaultTimeout()
    39  		Expect(session.ExitCode()).To(Equal(0))
    40  		Expect(len(session.OutputToStringArray())).To(BeNumerically(">", 0))
    41  	})
    42  
    43  	It("podman container diff of image", func() {
    44  		session := podmanTest.Podman([]string{"container", "diff", ALPINE})
    45  		session.WaitWithDefaultTimeout()
    46  		Expect(session.ExitCode()).To(Equal(0))
    47  		Expect(len(session.OutputToStringArray())).To(BeNumerically(">", 0))
    48  	})
    49  
    50  	It("podman diff bogus image", func() {
    51  		session := podmanTest.Podman([]string{"diff", "1234"})
    52  		session.WaitWithDefaultTimeout()
    53  		Expect(session.ExitCode()).To(Equal(125))
    54  	})
    55  
    56  	It("podman diff image with json output", func() {
    57  		session := podmanTest.Podman([]string{"diff", "--format=json", ALPINE})
    58  		session.WaitWithDefaultTimeout()
    59  		Expect(session.ExitCode()).To(Equal(0))
    60  		Expect(session.IsJSONOutputValid()).To(BeTrue())
    61  	})
    62  
    63  	It("podman diff container and committed image", func() {
    64  		session := podmanTest.Podman([]string{"run", "--name=diff-test", ALPINE, "touch", "/tmp/diff-test"})
    65  		session.WaitWithDefaultTimeout()
    66  		Expect(session.ExitCode()).To(Equal(0))
    67  		session = podmanTest.Podman([]string{"diff", "diff-test"})
    68  		session.WaitWithDefaultTimeout()
    69  		containerDiff := session.OutputToStringArray()
    70  		sort.Strings(containerDiff)
    71  		Expect(session.LineInOutputContains("C /tmp")).To(BeTrue())
    72  		Expect(session.LineInOutputContains("A /tmp/diff-test")).To(BeTrue())
    73  		session = podmanTest.Podman([]string{"commit", "diff-test", "diff-test-img"})
    74  		session.WaitWithDefaultTimeout()
    75  		Expect(session.ExitCode()).To(Equal(0))
    76  		session = podmanTest.Podman([]string{"diff", "diff-test-img"})
    77  		session.WaitWithDefaultTimeout()
    78  		imageDiff := session.OutputToStringArray()
    79  		sort.Strings(imageDiff)
    80  		Expect(imageDiff).To(Equal(containerDiff))
    81  	})
    82  
    83  	It("podman diff latest container", func() {
    84  		session := podmanTest.Podman([]string{"run", "--name", "diff-test", ALPINE, "touch", "/tmp/diff-test"})
    85  		session.WaitWithDefaultTimeout()
    86  		Expect(session.ExitCode()).To(Equal(0))
    87  		session = podmanTest.Podman([]string{"diff", "diff-test"})
    88  		session.WaitWithDefaultTimeout()
    89  		containerDiff := session.OutputToStringArray()
    90  		sort.Strings(containerDiff)
    91  		Expect(session.LineInOutputContains("C /tmp")).To(BeTrue())
    92  		Expect(session.LineInOutputContains("A /tmp/diff-test")).To(BeTrue())
    93  		Expect(session.ExitCode()).To(Equal(0))
    94  	})
    95  })