[lxc-devel] [distrobuilder/master] tests: Use testify

monstermunchkin on Github lxc-bot at linuxcontainers.org
Tue Jul 3 09:47:31 UTC 2018


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 364 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20180703/e80e9b2f/attachment.bin>
-------------- next part --------------
From cdac765d152823e5f604ed760b37df07db770dc6 Mon Sep 17 00:00:00 2001
From: Thomas Hipp <thomas.hipp at canonical.com>
Date: Mon, 2 Jul 2018 21:12:54 +0200
Subject: [PATCH] tests: Use testify

Signed-off-by: Thomas Hipp <thomas.hipp at canonical.com>
---
 generators/dump_test.go       |  42 ++++-----------
 generators/generators_test.go |  59 ++++++--------------
 generators/hostname_test.go   |  30 ++++-------
 generators/hosts_test.go      |  30 ++++-------
 generators/template_test.go   |  37 +++++--------
 image/lxc_test.go             | 121 +++++++++++-------------------------------
 image/lxd_test.go             |  72 ++++++++-----------------
 shared/definition_test.go     |  57 ++++++--------------
 shared/osarch_test.go         |  18 +++----
 shared/util_test.go           |  52 ++++++++----------
 10 files changed, 153 insertions(+), 365 deletions(-)

diff --git a/generators/dump_test.go b/generators/dump_test.go
index bb417bb..8b40acf 100644
--- a/generators/dump_test.go
+++ b/generators/dump_test.go
@@ -7,7 +7,7 @@ import (
 	"path/filepath"
 	"testing"
 
-	lxd "github.com/lxc/lxd/shared"
+	"github.com/stretchr/testify/require"
 
 	"github.com/lxc/distrobuilder/shared"
 )
@@ -20,35 +20,25 @@ func TestDumpGeneratorRunLXC(t *testing.T) {
 	defer teardown(cacheDir)
 
 	generator := Get("dump")
-	if generator == nil {
-		t.Fatal("Expected dump generator, got nil")
-	}
+	require.Equal(t, DumpGenerator{}, generator)
 
 	err := generator.RunLXC(cacheDir, rootfsDir, nil,
 		shared.DefinitionFile{
 			Path:    "/hello/world",
 			Content: "hello world",
 		})
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 
-	if !lxd.PathExists(filepath.Join(rootfsDir, "hello", "world")) {
-		t.Fatalf("Directory '%s' wasn't created", "/hello/world")
-	}
+	require.FileExists(t, filepath.Join(rootfsDir, "hello", "world"))
 
 	var buffer bytes.Buffer
 	file, err := os.Open(filepath.Join(rootfsDir, "hello", "world"))
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 	defer file.Close()
 
 	io.Copy(&buffer, file)
 
-	if buffer.String() != "hello world\n" {
-		t.Fatalf("Expected '%s', got '%s'", "hello world", buffer.String())
-	}
+	require.Equal(t, "hello world\n", buffer.String())
 }
 
 func TestDumpGeneratorRunLXD(t *testing.T) {
@@ -59,33 +49,23 @@ func TestDumpGeneratorRunLXD(t *testing.T) {
 	defer teardown(cacheDir)
 
 	generator := Get("dump")
-	if generator == nil {
-		t.Fatal("Expected dump generator, got nil")
-	}
+	require.Equal(t, DumpGenerator{}, generator)
 
 	err := generator.RunLXD(cacheDir, rootfsDir, nil,
 		shared.DefinitionFile{
 			Path:    "/hello/world",
 			Content: "hello world",
 		})
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 
-	if !lxd.PathExists(filepath.Join(rootfsDir, "hello", "world")) {
-		t.Fatalf("Directory '%s' wasn't created", "/hello/world")
-	}
+	require.FileExists(t, filepath.Join(rootfsDir, "hello", "world"))
 
 	var buffer bytes.Buffer
 	file, err := os.Open(filepath.Join(rootfsDir, "hello", "world"))
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 	defer file.Close()
 
 	io.Copy(&buffer, file)
 
-	if buffer.String() != "hello world\n" {
-		t.Fatalf("Expected '%s', got '%s'", "hello world", buffer.String())
-	}
+	require.Equal(t, "hello world\n", buffer.String())
 }
diff --git a/generators/generators_test.go b/generators/generators_test.go
index 63a9dd6..2721b27 100644
--- a/generators/generators_test.go
+++ b/generators/generators_test.go
@@ -5,16 +5,15 @@ import (
 	"io"
 	"os"
 	"path/filepath"
-	"reflect"
 	"testing"
+
+	"github.com/stretchr/testify/require"
 )
 
 func setup(t *testing.T, cacheDir string) {
 	// Create rootfs directory
 	err := os.MkdirAll(filepath.Join(cacheDir, "rootfs"), 0755)
-	if err != nil {
-		t.Fatalf("Failed to create rootfs directory: %s", err)
-	}
+	require.NoError(t, err)
 }
 
 func teardown(cacheDir string) {
@@ -23,19 +22,13 @@ func teardown(cacheDir string) {
 
 func TestGet(t *testing.T) {
 	generator := Get("hostname")
-	if generator == nil || reflect.DeepEqual(&generator, HostnameGenerator{}) {
-		t.Fatal("Expected hostname generator")
-	}
+	require.Equal(t, HostnameGenerator{}, generator)
 
 	generator = Get("hosts")
-	if generator == nil || reflect.DeepEqual(&generator, HostsGenerator{}) {
-		t.Fatal("Expected hosts generator")
-	}
+	require.Equal(t, HostsGenerator{}, generator)
 
 	generator = Get("")
-	if generator != nil {
-		t.Fatalf("Expected nil, got '%v'", generator)
-	}
+	require.Nil(t, generator)
 }
 
 func TestRestoreFiles(t *testing.T) {
@@ -47,9 +40,7 @@ func TestRestoreFiles(t *testing.T) {
 
 	// Create test directory
 	err := os.MkdirAll(filepath.Join(cacheDir, "rootfs", "testdir1"), 0755)
-	if err != nil {
-		t.Fatalf("Failed to create test directory: %s", err)
-	}
+	require.NoError(t, err)
 
 	// Create original test file
 	createTestFile(t, filepath.Join(cacheDir, "rootfs", "testdir1", "testfile1"),
@@ -57,25 +48,17 @@ func TestRestoreFiles(t *testing.T) {
 
 	// Chmod cache directory which should lead to StoreFile failing
 	err = os.Chmod(cacheDir, 0600)
-	if err != nil {
-		t.Fatalf("Failed to chmod cache directory: %s", err)
-	}
+	require.NoError(t, err)
 
 	err = StoreFile(cacheDir, cacheDir, filepath.Join("/testdir1", "testfile1"))
-	if err == nil {
-		t.Fatal("Expected failure")
-	}
+	require.Error(t, err)
 
 	// Restore permissions
 	err = os.Chmod(cacheDir, 0755)
-	if err != nil {
-		t.Fatalf("Failed to chmod cache directory: %s", err)
-	}
+	require.NoError(t, err)
 
 	err = StoreFile(cacheDir, rootfsDir, filepath.Join("/testdir1", "testfile1"))
-	if err != nil {
-		t.Fatalf("Failed to store file: %s", err)
-	}
+	require.NoError(t, err)
 
 	validateTestFile(t, filepath.Join(cacheDir, "tmp", "testdir1", "testfile1"),
 		"original file")
@@ -85,9 +68,7 @@ func TestRestoreFiles(t *testing.T) {
 		"modified file")
 
 	err = RestoreFiles(cacheDir, rootfsDir)
-	if err != nil {
-		t.Fatalf("Failed to restore file: %s", err)
-	}
+	require.NoError(t, err)
 
 	validateTestFile(t, filepath.Join(cacheDir, "rootfs", "testdir1", "testfile1"),
 		"original file")
@@ -95,28 +76,20 @@ func TestRestoreFiles(t *testing.T) {
 
 func createTestFile(t *testing.T, path, content string) {
 	file, err := os.Create(path)
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 	defer file.Close()
 
 	_, err = file.WriteString(content)
-	if err != nil {
-		t.Fatalf("Failed to write to testfile")
-	}
+	require.NoError(t, err)
 }
 
 func validateTestFile(t *testing.T, path, content string) {
 	file, err := os.Open(path)
-	if err != nil {
-		t.Fatalf("Failed to open testfile: %s", err)
-	}
+	require.NoError(t, err)
 	defer file.Close()
 
 	var buffer bytes.Buffer
 	io.Copy(&buffer, file)
 
-	if buffer.String() != content {
-		t.Fatalf("Expected file content to be '%s', got '%s'", content, buffer.String())
-	}
+	require.Equal(t, content, buffer.String())
 }
diff --git a/generators/hostname_test.go b/generators/hostname_test.go
index 16036b5..b750505 100644
--- a/generators/hostname_test.go
+++ b/generators/hostname_test.go
@@ -5,6 +5,8 @@ import (
 	"path/filepath"
 	"testing"
 
+	"github.com/stretchr/testify/require"
+
 	"github.com/lxc/distrobuilder/image"
 	"github.com/lxc/distrobuilder/shared"
 )
@@ -17,9 +19,7 @@ func TestHostnameGeneratorRunLXC(t *testing.T) {
 	defer teardown(cacheDir)
 
 	generator := Get("hostname")
-	if generator == nil {
-		t.Fatal("Expected hostname generator, got nil")
-	}
+	require.Equal(t, HostnameGenerator{}, generator)
 
 	definition := shared.Definition{
 		Image: shared.DefinitionImage{
@@ -31,25 +31,19 @@ func TestHostnameGeneratorRunLXC(t *testing.T) {
 	image := image.NewLXCImage(cacheDir, "", cacheDir, definition)
 
 	err := os.MkdirAll(filepath.Join(cacheDir, "rootfs", "etc"), 0755)
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 
 	createTestFile(t, filepath.Join(cacheDir, "rootfs", "etc", "hostname"), "hostname")
 
 	err = generator.RunLXC(cacheDir, rootfsDir, image,
 		shared.DefinitionFile{Path: "/etc/hostname"})
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 
 	validateTestFile(t, filepath.Join(cacheDir, "tmp", "etc", "hostname"), "hostname")
 	validateTestFile(t, filepath.Join(cacheDir, "rootfs", "etc", "hostname"), "LXC_NAME\n")
 
 	err = RestoreFiles(cacheDir, rootfsDir)
-	if err != nil {
-		t.Fatalf("Failed to restore files: %s", err)
-	}
+	require.NoError(t, err)
 
 	validateTestFile(t, filepath.Join(cacheDir, "rootfs", "etc", "hostname"), "hostname")
 }
@@ -62,9 +56,7 @@ func TestHostnameGeneratorRunLXD(t *testing.T) {
 	defer teardown(cacheDir)
 
 	generator := Get("hostname")
-	if generator == nil {
-		t.Fatal("Expected hostname generator, got nil")
-	}
+	require.Equal(t, HostnameGenerator{}, generator)
 
 	definition := shared.Definition{
 		Image: shared.DefinitionImage{
@@ -76,17 +68,13 @@ func TestHostnameGeneratorRunLXD(t *testing.T) {
 	image := image.NewLXDImage(cacheDir, "", cacheDir, definition)
 
 	err := os.MkdirAll(filepath.Join(cacheDir, "rootfs", "etc"), 0755)
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 
 	createTestFile(t, filepath.Join(cacheDir, "rootfs", "etc", "hostname"), "hostname")
 
 	err = generator.RunLXD(cacheDir, rootfsDir, image,
 		shared.DefinitionFile{Path: "/etc/hostname"})
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 
 	validateTestFile(t, filepath.Join(cacheDir, "templates", "hostname.tpl"), "{{ container.name }}\n")
 }
diff --git a/generators/hosts_test.go b/generators/hosts_test.go
index cc4553f..6b38819 100644
--- a/generators/hosts_test.go
+++ b/generators/hosts_test.go
@@ -5,6 +5,8 @@ import (
 	"path/filepath"
 	"testing"
 
+	"github.com/stretchr/testify/require"
+
 	"github.com/lxc/distrobuilder/image"
 	"github.com/lxc/distrobuilder/shared"
 )
@@ -17,9 +19,7 @@ func TestHostsGeneratorRunLXC(t *testing.T) {
 	defer teardown(cacheDir)
 
 	generator := Get("hosts")
-	if generator == nil {
-		t.Fatal("Expected hosts generator, got nil")
-	}
+	require.Equal(t, HostsGenerator{}, generator)
 
 	definition := shared.Definition{
 		Image: shared.DefinitionImage{
@@ -31,18 +31,14 @@ func TestHostsGeneratorRunLXC(t *testing.T) {
 	image := image.NewLXCImage(cacheDir, "", cacheDir, definition)
 
 	err := os.MkdirAll(filepath.Join(cacheDir, "rootfs", "etc"), 0755)
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 
 	createTestFile(t, filepath.Join(cacheDir, "rootfs", "etc", "hosts"),
 		"127.0.0.1\tlocalhost\n127.0.0.1\tdistrobuilder\n")
 
 	err = generator.RunLXC(cacheDir, rootfsDir, image,
 		shared.DefinitionFile{Path: "/etc/hosts"})
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 
 	validateTestFile(t, filepath.Join(cacheDir, "tmp", "etc", "hosts"),
 		"127.0.0.1\tlocalhost\n127.0.0.1\tdistrobuilder\n")
@@ -50,9 +46,7 @@ func TestHostsGeneratorRunLXC(t *testing.T) {
 		"127.0.0.1\tlocalhost\n127.0.0.1\tLXC_NAME\n")
 
 	err = RestoreFiles(cacheDir, rootfsDir)
-	if err != nil {
-		t.Fatalf("Failed to restore files: %s", err)
-	}
+	require.NoError(t, err)
 
 	validateTestFile(t, filepath.Join(cacheDir, "rootfs", "etc", "hosts"),
 		"127.0.0.1\tlocalhost\n127.0.0.1\tdistrobuilder\n")
@@ -66,9 +60,7 @@ func TestHostsGeneratorRunLXD(t *testing.T) {
 	defer teardown(cacheDir)
 
 	generator := Get("hosts")
-	if generator == nil {
-		t.Fatal("Expected hosts generator, got nil")
-	}
+	require.Equal(t, HostsGenerator{}, generator)
 
 	definition := shared.Definition{
 		Image: shared.DefinitionImage{
@@ -80,18 +72,14 @@ func TestHostsGeneratorRunLXD(t *testing.T) {
 	image := image.NewLXDImage(cacheDir, "", cacheDir, definition)
 
 	err := os.MkdirAll(filepath.Join(cacheDir, "rootfs", "etc"), 0755)
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 
 	createTestFile(t, filepath.Join(cacheDir, "rootfs", "etc", "hosts"),
 		"127.0.0.1\tlocalhost\n127.0.0.1\tdistrobuilder\n")
 
 	err = generator.RunLXD(cacheDir, rootfsDir, image,
 		shared.DefinitionFile{Path: "/etc/hosts"})
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 
 	validateTestFile(t, filepath.Join(cacheDir, "templates", "hosts.tpl"),
 		"127.0.0.1\tlocalhost\n127.0.0.1\t{{ container.name }}\n")
diff --git a/generators/template_test.go b/generators/template_test.go
index b5748e0..da84f9f 100644
--- a/generators/template_test.go
+++ b/generators/template_test.go
@@ -3,9 +3,10 @@ package generators
 import (
 	"os"
 	"path/filepath"
-	"reflect"
 	"testing"
 
+	"github.com/stretchr/testify/require"
+
 	"github.com/lxc/distrobuilder/image"
 	"github.com/lxc/distrobuilder/shared"
 )
@@ -18,9 +19,7 @@ func TestTemplateGeneratorRunLXD(t *testing.T) {
 	defer teardown(cacheDir)
 
 	generator := Get("template")
-	if generator == nil {
-		t.Fatal("Expected template generator, got nil")
-	}
+	require.Equal(t, TemplateGenerator{}, generator)
 
 	definition := shared.Definition{
 		Image: shared.DefinitionImage{
@@ -32,9 +31,7 @@ func TestTemplateGeneratorRunLXD(t *testing.T) {
 	image := image.NewLXDImage(cacheDir, "", cacheDir, definition)
 
 	err := os.MkdirAll(filepath.Join(cacheDir, "rootfs", "root"), 0755)
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 
 	createTestFile(t, filepath.Join(cacheDir, "rootfs", "root", "template"), "--test--")
 
@@ -44,9 +41,7 @@ func TestTemplateGeneratorRunLXD(t *testing.T) {
 		Content:   "==test==",
 		Path:      "/root/template",
 	})
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 
 	validateTestFile(t, filepath.Join(cacheDir, "templates", "template.tpl"), "==test==\n")
 	validateTestFile(t, filepath.Join(cacheDir, "rootfs", "root", "template"), "--test--")
@@ -60,9 +55,7 @@ func TestTemplateGeneratorRunLXDDefaultWhen(t *testing.T) {
 	defer teardown(cacheDir)
 
 	generator := Get("template")
-	if generator == nil {
-		t.Fatal("Expected template generator, got nil")
-	}
+	require.Equal(t, TemplateGenerator{}, generator)
 
 	definition := shared.Definition{
 		Image: shared.DefinitionImage{
@@ -79,9 +72,8 @@ func TestTemplateGeneratorRunLXDDefaultWhen(t *testing.T) {
 		Content:   "==test==",
 		Path:      "test-default-when",
 	})
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
+
 	err = generator.RunLXD(cacheDir, rootfsDir, image, shared.DefinitionFile{
 		Generator: "template",
 		Name:      "test-when",
@@ -91,16 +83,11 @@ func TestTemplateGeneratorRunLXDDefaultWhen(t *testing.T) {
 			When: []string{"create"},
 		},
 	})
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 
 	testvalue := []string{"create", "copy"}
-	if reflect.DeepEqual(image.Metadata.Templates["test-default-when"].When, testvalue) == false {
-		t.Fatalf("When default value not correct [%v] != [%v]", image.Metadata.Templates["test-default-when"].When, testvalue)
-	}
+	require.Equal(t, image.Metadata.Templates["test-default-when"].When, testvalue)
+
 	testvalue = []string{"create"}
-	if reflect.DeepEqual(image.Metadata.Templates["test-when"].When, testvalue) == false {
-		t.Fatalf("When value not correct [%v] != [%v]", image.Metadata.Templates["test-when"].When, testvalue)
-	}
+	require.Equal(t, image.Metadata.Templates["test-when"].When, testvalue)
 }
diff --git a/image/lxc_test.go b/image/lxc_test.go
index b72eca2..ad8885c 100644
--- a/image/lxc_test.go
+++ b/image/lxc_test.go
@@ -7,12 +7,12 @@ import (
 	"log"
 	"os"
 	"path/filepath"
-	"reflect"
-	"regexp"
 	"strings"
 	"syscall"
 	"testing"
 
+	"github.com/stretchr/testify/require"
+
 	"github.com/lxc/distrobuilder/shared"
 )
 
@@ -96,14 +96,8 @@ func TestNewLXCImage(t *testing.T) {
 	image := NewLXCImage(lxcCacheDir(), "", lxcCacheDir(), lxcDef)
 	defer teardownLXC()
 
-	if image.cacheDir != lxcCacheDir() {
-		t.Fatalf("Expected image.cacheDir to be '%s', got '%s'", lxcCacheDir(),
-			image.cacheDir)
-	}
-
-	if !reflect.DeepEqual(image.definition, lxcDef) {
-		t.Fatalf("lxcImageDef and image.definition are not equal")
-	}
+	require.Equal(t, lxcCacheDir(), image.cacheDir)
+	require.Equal(t, lxcDef, image.definition)
 }
 
 func TestLXCAddTemplate(t *testing.T) {
@@ -111,44 +105,33 @@ func TestLXCAddTemplate(t *testing.T) {
 	defer teardownLXC()
 
 	// Make sure templates file is empty.
-	info, err := os.Stat(filepath.Join(lxcCacheDir(), "metadata", "templates"))
-	if err == nil && info.Size() > 0 {
-		t.Fatalf("Expected file size to be 0, got %d", info.Size())
-	}
+	_, err := os.Stat(filepath.Join(lxcCacheDir(), "metadata", "templates"))
+	require.EqualError(t, err, fmt.Sprintf("stat %s: no such file or directory",
+		filepath.Join(lxcCacheDir(), "metadata", "templates")))
 
 	// Add first template entry.
 	image.AddTemplate("/path/file1")
 	file, err := os.Open(filepath.Join(lxcCacheDir(), "metadata", "templates"))
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 
 	// Copy file content to buffer.
 	var buffer bytes.Buffer
 	io.Copy(&buffer, file)
 	file.Close()
 
-	if buffer.String() != "/path/file1\n" {
-		t.Fatalf("Expected templates content to be '%s', got '%s'",
-			"/path/file", buffer.String())
-	}
+	require.Equal(t, "/path/file1\n", buffer.String())
 
 	// Add second template entry.
 	image.AddTemplate("/path/file2")
 	file, err = os.Open(filepath.Join(lxcCacheDir(), "metadata", "templates"))
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 
 	// Copy file content to buffer.
 	buffer.Reset()
 	io.Copy(&buffer, file)
 	file.Close()
 
-	if buffer.String() != "/path/file1\n/path/file2\n" {
-		t.Fatalf("Expected templates content to be '%s', got '%s'",
-			"/path/file1\n/path/file2", buffer.String())
-	}
+	require.Equal(t, "/path/file1\n/path/file2\n", buffer.String())
 }
 
 func TestLXCBuild(t *testing.T) {
@@ -156,14 +139,10 @@ func TestLXCBuild(t *testing.T) {
 	defer teardownLXC()
 
 	err := os.MkdirAll(filepath.Join(lxcCacheDir(), "rootfs"), 0755)
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 
 	err = image.Build()
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 	defer func() {
 		os.Remove("meta.tar.xz")
 		os.Remove("rootfs.tar.xz")
@@ -229,40 +208,23 @@ func TestLXCCreateMetadataBasic(t *testing.T) {
 		image := tt.prepareImage(*defaultImage)
 		err := image.createMetadata()
 		if tt.shouldFail {
-			if err == nil {
-				t.Fatalf("Expected to fail, but didn't: %s", tt.name)
-			}
-
-			match, _ := regexp.MatchString(tt.expectedError, err.Error())
-			if !match {
-				t.Fatalf("Expected to fail with '%s', got '%s'", tt.expectedError,
-					err.Error())
-			}
-		}
-		if !tt.shouldFail && err != nil {
-			t.Fatalf("Unexpected error: %s", err)
+			require.Regexp(t, tt.expectedError, err)
+		} else {
+			require.NoError(t, err)
 		}
 	}
 
 	// Verify create-message template
 	f, err := os.Open(filepath.Join(lxcCacheDir(), "metadata", "create-message"))
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 	defer f.Close()
 
 	var buf bytes.Buffer
 	_, err = io.Copy(&buf, f)
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
-
-	expected := fmt.Sprintf("Welcome to %s %s\n",
-		strings.Title(lxcDef.Image.Distribution), lxcDef.Image.Release)
-	if buf.String() != expected {
-		t.Fatalf("create-message: Expected '%s', got '%s'", expected,
-			buf.String())
-	}
+	require.NoError(t, err)
+	require.Equal(t, fmt.Sprintf("Welcome to %s %s\n",
+		strings.Title(lxcDef.Image.Distribution), lxcDef.Image.Release),
+		buf.String())
 }
 
 func TestLXCCreateMetadataConfig(t *testing.T) {
@@ -316,27 +278,18 @@ func TestLXCCreateMetadataConfig(t *testing.T) {
 	}
 
 	err := image.createMetadata()
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 
 	for _, tt := range tests {
 		log.Printf("Checking '%s'", tt.configFile)
 		file, err := os.Open(filepath.Join(lxcCacheDir(), "metadata", tt.configFile))
-		if err != nil {
-			t.Fatalf("Unexpected error: %s", err)
-		}
+		require.NoError(t, err)
 
 		var buffer bytes.Buffer
 		_, err = io.Copy(&buffer, file)
 		file.Close()
-		if err != nil {
-			t.Fatalf("Unexpected error: %s", err)
-		}
-
-		if buffer.String() != tt.expected {
-			t.Fatalf("Expected '%s', got '%s'", tt.expected, buffer.String())
-		}
+		require.NoError(t, err)
+		require.Equal(t, tt.expected, buffer.String())
 	}
 }
 
@@ -348,28 +301,20 @@ func TestLXCPackMetadata(t *testing.T) {
 	}()
 
 	err := image.createMetadata()
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 
 	err = image.packMetadata()
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 
 	// Include templates directory.
 	image.AddTemplate("/path/file")
 	err = image.packMetadata()
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 
 	// Provoke error by removing the metadata directory
 	os.RemoveAll(filepath.Join(lxcCacheDir(), "metadata"))
 	err = image.packMetadata()
-	if err == nil {
-		t.Fatal("Expected failure")
-	}
+	require.Error(t, err)
 
 }
 
@@ -379,14 +324,10 @@ func TestLXCWriteMetadata(t *testing.T) {
 
 	// Should fail due to invalid path
 	err := image.writeMetadata("/path/file", "", false)
-	if err == nil {
-		t.Fatal("Expected failure")
-	}
+	require.Error(t, err)
 
 	// Should succeed
 	err = image.writeMetadata("test", "metadata", false)
-	if err != nil {
-		t.Fatalf("Unexpected failure: %s", err)
-	}
+	require.NoError(t, err)
 	os.Remove("test")
 }
diff --git a/image/lxd_test.go b/image/lxd_test.go
index f6d03da..d9efcd1 100644
--- a/image/lxd_test.go
+++ b/image/lxd_test.go
@@ -5,11 +5,10 @@ import (
 	"log"
 	"os"
 	"path/filepath"
-	"reflect"
 	"strings"
 	"testing"
 
-	lxd "github.com/lxc/lxd/shared"
+	"github.com/stretchr/testify/require"
 
 	"github.com/lxc/distrobuilder/shared"
 )
@@ -36,36 +35,30 @@ func setupLXD(t *testing.T) *LXDImage {
 	cacheDir := filepath.Join(os.TempDir(), "distrobuilder-test")
 
 	err := os.MkdirAll(filepath.Join(cacheDir, "rootfs"), 0755)
-	if err != nil {
-		t.Fatalf("Failed to create rootfs directory: %s", err)
-	}
+	require.NoError(t, err)
 
 	err = os.MkdirAll(filepath.Join(cacheDir, "templates"), 0755)
-	if err != nil {
-		t.Fatalf("Failed to create templates directory: %s", err)
-	}
+	require.NoError(t, err)
 
 	image := NewLXDImage(cacheDir, "", cacheDir, lxdDef)
 
-	// Check cache directory
-	if image.cacheDir != cacheDir {
-		teardownLXD(t)
-		t.Fatalf("Expected cacheDir to be '%s', is '%s'", cacheDir, image.cacheDir)
-	}
+	fail := true
+	defer func() {
+		if fail {
+			teardownLXD(t)
+		}
+	}()
 
-	if !reflect.DeepEqual(lxdDef, image.definition) {
-		teardownLXD(t)
-		t.Fatal("lxdDef and image.definition are not equal")
-	}
+	// Check cache directory
+	require.Equal(t, cacheDir, image.cacheDir)
+	require.Equal(t, lxdDef, image.definition)
 
 	lxdDef.SetDefaults()
 
 	err = lxdDef.Validate()
-	if err != nil {
-		teardownLXD(t)
-		t.Fatalf("Failed to validate image: %s", err)
-	}
+	require.NoError(t, err)
 
+	fail = false
 	return image
 }
 
@@ -84,46 +77,31 @@ func TestLXDBuild(t *testing.T) {
 func testLXDBuildSplitImage(t *testing.T, image *LXDImage) {
 	// Create split tarball and squashfs.
 	err := image.Build(false, "xz")
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 	defer func() {
 		os.Remove("lxd.tar.xz")
 		os.Remove("rootfs.squashfs")
 	}()
 
-	if !lxd.PathExists("lxd.tar.xz") {
-		t.Fatalf("File '%s' does not exist", "lxd.tar.xz")
-	}
-
-	if !lxd.PathExists("rootfs.squashfs") {
-		t.Fatalf("File '%s' does not exist", "rootfs.squashfs")
-	}
+	require.FileExists(t, "lxd.tar.xz")
+	require.FileExists(t, "rootfs.squashfs")
 }
 
 func testLXDBuildUnifiedImage(t *testing.T, image *LXDImage) {
 	// Create unified tarball with custom name.
 	err := image.Build(true, "xz")
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 	defer os.Remove("ubuntu-17.10-x86_64-testing.tar.xz")
 
-	if !lxd.PathExists("ubuntu-17.10-x86_64-testing.tar.xz") {
-		t.Fatalf("File '%s' does not exist", "ubuntu-17.10-x86_64-testing.tar.xz")
-	}
+	require.FileExists(t, "ubuntu-17.10-x86_64-testing.tar.xz")
 
 	// Create unified tarball with default name.
 	image.definition.Image.Name = ""
 	err = image.Build(true, "xz")
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 	defer os.Remove("lxd.tar.xz")
 
-	if !lxd.PathExists("lxd.tar.xz") {
-		t.Fatalf("File '%s' does not exist", "lxd.tar.xz")
-	}
+	require.FileExists(t, "lxd.tar.xz")
 }
 
 func TestLXDCreateMetadata(t *testing.T) {
@@ -131,9 +109,7 @@ func TestLXDCreateMetadata(t *testing.T) {
 	defer teardownLXD(t)
 
 	err := image.createMetadata()
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 
 	tests := []struct {
 		name     string
@@ -176,8 +152,6 @@ func TestLXDCreateMetadata(t *testing.T) {
 
 	for i, tt := range tests {
 		log.Printf("Running test #%d: %s", i, tt.name)
-		if tt.have != tt.expected {
-			t.Fatalf("Expected '%s', got '%s'", tt.expected, tt.have)
-		}
+		require.Equal(t, tt.expected, tt.have)
 	}
 }
diff --git a/shared/definition_test.go b/shared/definition_test.go
index e078a5a..36957eb 100644
--- a/shared/definition_test.go
+++ b/shared/definition_test.go
@@ -2,10 +2,10 @@ package shared
 
 import (
 	"log"
-	"regexp"
 	"testing"
 
 	"github.com/lxc/lxd/shared"
+	"github.com/stretchr/testify/require"
 )
 
 func TestSetDefinitionDefaults(t *testing.T) {
@@ -15,13 +15,8 @@ func TestSetDefinitionDefaults(t *testing.T) {
 
 	uname, _ := shared.Uname()
 
-	if def.Image.Architecture != uname.Machine {
-		t.Fatalf("Expected image.arch to be '%s', got '%s'", uname.Machine, def.Image.Architecture)
-	}
-
-	if def.Image.Expiry != "30d" {
-		t.Fatalf("Expected image.expiry to be '%s', got '%s'", "30d", def.Image.Expiry)
-	}
+	require.Equal(t, uname.Machine, def.Image.Architecture)
+	require.Equal(t, "30d", def.Image.Expiry)
 }
 
 func TestValidateDefinition(t *testing.T) {
@@ -213,16 +208,10 @@ func TestValidateDefinition(t *testing.T) {
 		log.Printf("Running test #%d: %s", i, tt.name)
 		tt.definition.SetDefaults()
 		err := tt.definition.Validate()
-		if !tt.shouldFail && err != nil {
-			t.Fatalf("Validation failed: %s", err)
-		} else if tt.shouldFail {
-			if err == nil {
-				t.Fatal("Expected failure")
-			}
-			match, _ := regexp.MatchString(tt.expected, err.Error())
-			if !match {
-				t.Fatalf("Validation failed: Expected '%s', got '%s'", tt.expected, err.Error())
-			}
+		if tt.shouldFail {
+			require.Regexp(t, tt.expected, err)
+		} else {
+			require.NoError(t, err)
 		}
 	}
 }
@@ -255,38 +244,22 @@ func TestDefinitionSetValue(t *testing.T) {
 	}
 
 	err := d.SetValue("image.release", "bionic")
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
-	if d.Image.Release != "bionic" {
-		t.Fatalf("Expected '%s', got '%s'", "bionic", d.Image.Release)
-	}
+	require.NoError(t, err)
+	require.Equal(t, "bionic", d.Image.Release)
 
 	err = d.SetValue("actions.0.trigger", "post-files")
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
-	if d.Actions[0].Trigger != "post-files" {
-		t.Fatalf("Expected '%s', got '%s'", "post-files", d.Actions[0].Trigger)
-	}
+	require.NoError(t, err)
+	require.Equal(t, "post-files", d.Actions[0].Trigger)
 
 	// Index out of bounds
 	err = d.SetValue("actions.3.trigger", "post-files")
-	if err == nil || err.Error() != "Index out of range" {
-		t.Fatal("Expected index out of range")
-	}
+	require.EqualError(t, err, "Index out of range")
 
 	// Nonsense
 	err = d.SetValue("image", "[foo: bar]")
-	if err == nil || err.Error() != "Unsupported type 'struct'" {
-		t.Fatal("Expected unsupported assignment")
-	}
+	require.EqualError(t, err, "Unsupported type 'struct'")
 
 	err = d.SetValue("source.ignore_release", "true")
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
-	if !d.Source.IgnoreRelease {
-		t.Fatalf("Expected '%v', got '%v'", true, d.Source.IgnoreRelease)
-	}
+	require.NoError(t, err)
+	require.Equal(t, true, d.Source.IgnoreRelease)
 }
diff --git a/shared/osarch_test.go b/shared/osarch_test.go
index b946a6d..4068033 100644
--- a/shared/osarch_test.go
+++ b/shared/osarch_test.go
@@ -3,6 +3,8 @@ package shared
 import (
 	"log"
 	"testing"
+
+	"github.com/stretchr/testify/require"
 )
 
 func TestGetArch(t *testing.T) {
@@ -41,21 +43,13 @@ func TestGetArch(t *testing.T) {
 	for i, tt := range tests {
 		log.Printf("Running test #%d: %s %s", i, tt.distro, tt.arch)
 		arch, err := GetArch(tt.distro, tt.arch)
-		if err != nil {
-			t.Fatalf("Unexpected error: %s", err)
-		}
-		if arch != tt.expected {
-			t.Fatalf("Wrong arch: Expected '%s', got '%s'", tt.expected, arch)
-		}
+		require.NoError(t, err)
+		require.Equal(t, tt.expected, arch)
 	}
 
 	_, err := GetArch("distro", "")
-	if err == nil || err.Error() != "Architecture map isn't supported: distro" {
-		t.Fatalf("Expected unsupported architecture map, got '%s'", err)
-	}
+	require.EqualError(t, err, "Architecture map isn't supported: distro")
 
 	_, err = GetArch("debian", "arch")
-	if err == nil || err.Error() != "Architecture isn't supported: arch" {
-		t.Fatalf("Expected unsupported architecture, got '%s'", err)
-	}
+	require.EqualError(t, err, "Architecture isn't supported: arch")
 }
diff --git a/shared/util_test.go b/shared/util_test.go
index 187adcb..360be5e 100644
--- a/shared/util_test.go
+++ b/shared/util_test.go
@@ -8,6 +8,7 @@ import (
 	"testing"
 
 	lxd "github.com/lxc/lxd/shared"
+	"github.com/stretchr/testify/require"
 	"gopkg.in/flosch/pongo2.v3"
 )
 
@@ -83,36 +84,29 @@ func TestVerifyFile(t *testing.T) {
 		log.Printf("Running test #%d: %s", i, tt.name)
 		valid, err := VerifyFile(tt.signedFile, tt.signatureFile, tt.keys,
 			tt.keyserver)
-		if !tt.shouldFail && !valid {
-			t.Fatalf("Failed to verify: %s\n%s", tt.name, err)
-		}
-		if tt.shouldFail && valid {
-			t.Fatalf("Expected to fail: %s", tt.name)
+		if tt.shouldFail {
+			require.Error(t, err)
+			require.False(t, valid)
+		} else {
+			require.NoError(t, err)
+			require.True(t, valid)
 		}
 	}
 }
 
 func TestCreateGPGKeyring(t *testing.T) {
 	keyring, err := CreateGPGKeyring("keyserver.ubuntu.com", []string{"0x5DE8949A899C8D99"})
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 
-	if !lxd.PathExists(keyring) {
-		t.Fatalf("Failed to create GPG keyring '%s'", keyring)
-	}
+	require.FileExists(t, keyring)
 	os.RemoveAll(path.Dir(keyring))
 
 	// This shouldn't fail, but the keyring file should not be created since
 	// there are no keys to be exported.
 	keyring, err = CreateGPGKeyring("", []string{})
-	if err != nil {
-		t.Fatalf("Unexpected error: %s", err)
-	}
+	require.NoError(t, err)
 
-	if lxd.PathExists(keyring) {
-		t.Fatalf("GPG keyring '%s' should not exist", keyring)
-	}
+	require.False(t, lxd.PathExists(keyring), "File should not exist")
 	os.RemoveAll(path.Dir(keyring))
 }
 
@@ -175,11 +169,11 @@ func TestRenderTemplate(t *testing.T) {
 	for i, tt := range tests {
 		log.Printf("Running test #%d: %s", i, tt.name)
 		ret, err := RenderTemplate(tt.template, tt.iface)
-		if tt.shouldFail && err == nil {
-			t.Fatal("test should have failed")
-		}
-		if ret != tt.expected {
-			t.Fatalf("expected '%s', got '%s'", tt.expected, ret)
+		if tt.shouldFail {
+			require.Error(t, err)
+		} else {
+			require.NoError(t, err)
+			require.Equal(t, tt.expected, ret)
 		}
 	}
 }
@@ -198,21 +192,17 @@ func TestSetEnvVariables(t *testing.T) {
 
 	for _, e := range env {
 		v, set := os.LookupEnv(e.Key)
-		if !set || e.Value != v {
-			t.Fatalf("Expected %s to be '%s', got '%s'", e.Key, e.Value, v)
-		}
+		require.True(t, set)
+		require.Equal(t, e.Value, v)
 	}
 
 	// Reset env variables
 	SetEnvVariables(oldEnv)
 
 	val, set := os.LookupEnv("FOO")
-	if !set || val != "bar" {
-		t.Fatalf("Expected %s to be '%s', got '%s'", "FOO", "bar", val)
-	}
+	require.True(t, set)
+	require.Equal(t, val, "bar")
 
 	val, set = os.LookupEnv("BAR")
-	if set {
-		t.Fatalf("Expected %s to be unset", "BAR")
-	}
+	require.False(t, set, "Expected 'BAR' to be unset")
 }


More information about the lxc-devel mailing list