github.com/dlintw/docker@v1.5.0-rc4/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  }