github.com/pmorton/docker@v1.5.0/integration-cli/docker_cli_images_test.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "os/exec" 6 "reflect" 7 "sort" 8 "strings" 9 "testing" 10 "time" 11 ) 12 13 func TestImagesEnsureImageIsListed(t *testing.T) { 14 imagesCmd := exec.Command(dockerBinary, "images") 15 out, _, err := runCommandWithOutput(imagesCmd) 16 if err != nil { 17 t.Fatalf("listing images failed with errors: %s, %v", out, err) 18 } 19 20 if !strings.Contains(out, "busybox") { 21 t.Fatal("images should've listed busybox") 22 } 23 24 logDone("images - busybox should be listed") 25 } 26 27 func TestImagesOrderedByCreationDate(t *testing.T) { 28 defer deleteImages("order:test_a") 29 defer deleteImages("order:test_c") 30 defer deleteImages("order:test_b") 31 id1, err := buildImage("order:test_a", 32 `FROM scratch 33 MAINTAINER dockerio1`, true) 34 if err != nil { 35 t.Fatal(err) 36 } 37 time.Sleep(time.Second) 38 id2, err := buildImage("order:test_c", 39 `FROM scratch 40 MAINTAINER dockerio2`, true) 41 if err != nil { 42 t.Fatal(err) 43 } 44 time.Sleep(time.Second) 45 id3, err := buildImage("order:test_b", 46 `FROM scratch 47 MAINTAINER dockerio3`, true) 48 if err != nil { 49 t.Fatal(err) 50 } 51 52 out, _, err := runCommandWithOutput(exec.Command(dockerBinary, "images", "-q", "--no-trunc")) 53 if err != nil { 54 t.Fatalf("listing images failed with errors: %s, %v", out, err) 55 } 56 imgs := strings.Split(out, "\n") 57 if imgs[0] != id3 { 58 t.Fatalf("First image must be %s, got %s", id3, imgs[0]) 59 } 60 if imgs[1] != id2 { 61 t.Fatalf("Second image must be %s, got %s", id2, imgs[1]) 62 } 63 if imgs[2] != id1 { 64 t.Fatalf("Third image must be %s, got %s", id1, imgs[2]) 65 } 66 67 logDone("images - ordering by creation date") 68 } 69 70 func TestImagesErrorWithInvalidFilterNameTest(t *testing.T) { 71 imagesCmd := exec.Command(dockerBinary, "images", "-f", "FOO=123") 72 out, _, err := runCommandWithOutput(imagesCmd) 73 if !strings.Contains(out, "Invalid filter") { 74 t.Fatalf("error should occur when listing images with invalid filter name FOO, %s, %v", out, err) 75 } 76 77 logDone("images - invalid filter name check working") 78 } 79 80 func TestImagesFilterWhiteSpaceTrimmingAndLowerCasingWorking(t *testing.T) { 81 imageName := "images_filter_test" 82 defer deleteAllContainers() 83 defer deleteImages(imageName) 84 buildImage(imageName, 85 `FROM scratch 86 RUN touch /test/foo 87 RUN touch /test/bar 88 RUN touch /test/baz`, true) 89 90 filters := []string{ 91 "dangling=true", 92 "Dangling=true", 93 " dangling=true", 94 "dangling=true ", 95 "dangling = true", 96 } 97 98 imageListings := make([][]string, 5, 5) 99 for idx, filter := range filters { 100 cmd := exec.Command(dockerBinary, "images", "-f", filter) 101 out, _, err := runCommandWithOutput(cmd) 102 if err != nil { 103 t.Fatal(err) 104 } 105 listing := strings.Split(out, "\n") 106 sort.Strings(listing) 107 imageListings[idx] = listing 108 } 109 110 for idx, listing := range imageListings { 111 if idx < 4 && !reflect.DeepEqual(listing, imageListings[idx+1]) { 112 for idx, errListing := range imageListings { 113 fmt.Printf("out %d", idx) 114 for _, image := range errListing { 115 fmt.Print(image) 116 } 117 fmt.Print("") 118 } 119 t.Fatalf("All output must be the same") 120 } 121 } 122 123 logDone("images - white space trimming and lower casing") 124 }