1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
|
package main
import (
"fmt"
"strings"
"testing"
)
func TestContainerTemplateOutputValidFormat(t *testing.T) {
params := containerOutputParams{
ContainerID: "e477836657bb",
Builder: " ",
ImageID: "f975c5035748",
ImageName: "test/image:latest",
ContainerName: "test-container",
}
formatString := "Container ID: {{.ContainerID}}"
expectedString := "Container ID: " + params.ContainerID
output, err := captureOutputWithError(func() error {
return containerOutputUsingTemplate(formatString, params)
})
if err != nil {
t.Error(err)
} else if strings.TrimSpace(output) != expectedString {
t.Errorf("Errorf with template output:\nExpected: %s\nReceived: %s\n", expectedString, output)
}
}
func TestContainerTemplateOutputInvalidFormat(t *testing.T) {
params := containerOutputParams{
ContainerID: "e477836657bb",
Builder: " ",
ImageID: "f975c5035748",
ImageName: "test/image:latest",
ContainerName: "test-container",
}
formatString := "ContainerID"
err := containerOutputUsingTemplate(formatString, params)
if err == nil || err.Error() != "error invalid format provided: ContainerID" {
t.Fatalf("expected error invalid format")
}
}
func TestContainerTemplateOutputNonexistentField(t *testing.T) {
params := containerOutputParams{
ContainerID: "e477836657bb",
Builder: " ",
ImageID: "f975c5035748",
ImageName: "test/image:latest",
ContainerName: "test-container",
}
formatString := "{{.ID}}"
err := containerOutputUsingTemplate(formatString, params)
if err == nil || !strings.Contains(err.Error(), "can't evaluate field ID") {
t.Fatalf("expected error nonexistent field")
}
}
func TestContainerFormatStringOutput(t *testing.T) {
params := containerOutputParams{
ContainerID: "e477836657bb",
Builder: " ",
ImageID: "f975c5035748",
ImageName: "test/with/this/very/long/image:latest",
ContainerName: "test-container",
}
const trimmedImageName = "test/with/this/very/long/imag..."
output := captureOutput(func() {
containerOutputUsingFormatString(true, params)
})
expectedOutput := fmt.Sprintf("%-12.12s %-8s %-12.12s %-32s %s\n", params.ContainerID, params.Builder, params.ImageID, trimmedImageName, params.ContainerName)
if output != expectedOutput {
t.Errorf("Error outputting using format string:\n\texpected: %s\n\treceived: %s\n", expectedOutput, output)
}
output = captureOutput(func() {
containerOutputUsingFormatString(false, params)
})
expectedOutput = fmt.Sprintf("%-64s %-8s %-64s %-32s %s\n", params.ContainerID, params.Builder, params.ImageID, params.ImageName, params.ContainerName)
if output != expectedOutput {
t.Errorf("Error outputting using format string:\n\texpected: %s\n\treceived: %s\n", expectedOutput, output)
}
}
func TestContainerHeaderOutput(t *testing.T) {
output := captureOutput(func() {
containerOutputHeader(true)
})
expectedOutput := fmt.Sprintf("%-12s %-8s %-12s %-32s %s\n", "CONTAINER ID", "BUILDER", "IMAGE ID", "IMAGE NAME", "CONTAINER NAME")
if output != expectedOutput {
t.Errorf("Error outputting using format string:\n\texpected: %s\n\treceived: %s\n", expectedOutput, output)
}
output = captureOutput(func() {
containerOutputHeader(false)
})
expectedOutput = fmt.Sprintf("%-64s %-8s %-64s %-32s %s\n", "CONTAINER ID", "BUILDER", "IMAGE ID", "IMAGE NAME", "CONTAINER NAME")
if output != expectedOutput {
t.Errorf("Error outputting using format string:\n\texpected: %s\n\treceived: %s\n", expectedOutput, output)
}
}
|