Add missing error checks in tests

... and remove one WriteFile that was always failing.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
This commit is contained in:
Miloslav Trmač 2022-09-26 20:17:32 +02:00
parent d60159bc30
commit 2d90000b09
16 changed files with 185 additions and 81 deletions

View File

@ -4,6 +4,9 @@ import (
"fmt" "fmt"
"strings" "strings"
"testing" "testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
) )
func TestValidateIPAddress(t *testing.T) { func TestValidateIPAddress(t *testing.T) {
@ -32,12 +35,14 @@ func TestValidateIPAddress(t *testing.T) {
func TestMapOpts(t *testing.T) { func TestMapOpts(t *testing.T) {
tmpMap := make(map[string]string) tmpMap := make(map[string]string)
o := NewMapOpts(tmpMap, logOptsValidator) o := NewMapOpts(tmpMap, logOptsValidator)
o.Set("max-size=1") err := o.Set("max-size=1")
require.NoError(t, err)
if o.String() != "map[max-size:1]" { if o.String() != "map[max-size:1]" {
t.Errorf("%s != [map[max-size:1]", o.String()) t.Errorf("%s != [map[max-size:1]", o.String())
} }
o.Set("max-file=2") err = o.Set("max-file=2")
require.NoError(t, err)
if len(tmpMap) != 2 { if len(tmpMap) != 2 {
t.Errorf("map length %d != 2", len(tmpMap)) t.Errorf("map length %d != 2", len(tmpMap))
} }
@ -56,15 +61,18 @@ func TestMapOpts(t *testing.T) {
func TestListOptsWithoutValidator(t *testing.T) { func TestListOptsWithoutValidator(t *testing.T) {
o := NewListOpts(nil) o := NewListOpts(nil)
o.Set("foo") err := o.Set("foo")
require.NoError(t, err)
if o.String() != "[foo]" { if o.String() != "[foo]" {
t.Errorf("%s != [foo]", o.String()) t.Errorf("%s != [foo]", o.String())
} }
o.Set("bar") err = o.Set("bar")
require.NoError(t, err)
if o.Len() != 2 { if o.Len() != 2 {
t.Errorf("%d != 2", o.Len()) t.Errorf("%d != 2", o.Len())
} }
o.Set("bar") err = o.Set("bar")
require.NoError(t, err)
if o.Len() != 3 { if o.Len() != 3 {
t.Errorf("%d != 3", o.Len()) t.Errorf("%d != 3", o.Len())
} }
@ -92,15 +100,18 @@ func TestListOptsWithoutValidator(t *testing.T) {
func TestListOptsWithValidator(t *testing.T) { func TestListOptsWithValidator(t *testing.T) {
// Re-using logOptsvalidator (used by MapOpts) // Re-using logOptsvalidator (used by MapOpts)
o := NewListOpts(logOptsValidator) o := NewListOpts(logOptsValidator)
o.Set("foo") err := o.Set("foo")
assert.EqualError(t, err, "invalid key foo")
if o.String() != "[]" { if o.String() != "[]" {
t.Errorf("%s != []", o.String()) t.Errorf("%s != []", o.String())
} }
o.Set("foo=bar") err = o.Set("foo=bar")
assert.EqualError(t, err, "invalid key foo")
if o.String() != "[]" { if o.String() != "[]" {
t.Errorf("%s != []", o.String()) t.Errorf("%s != []", o.String())
} }
o.Set("max-file=2") err = o.Set("max-file=2")
require.NoError(t, err)
if o.Len() != 1 { if o.Len() != 1 {
t.Errorf("%d != 1", o.Len()) t.Errorf("%d != 1", o.Len())
} }
@ -203,7 +214,8 @@ func TestNamedListOpts(t *testing.T) {
var v []string var v []string
o := NewNamedListOptsRef("foo-name", &v, nil) o := NewNamedListOptsRef("foo-name", &v, nil)
o.Set("foo") err := o.Set("foo")
require.NoError(t, err)
if o.String() != "[foo]" { if o.String() != "[foo]" {
t.Errorf("%s != [foo]", o.String()) t.Errorf("%s != [foo]", o.String())
} }
@ -219,7 +231,8 @@ func TestNamedMapOpts(t *testing.T) {
tmpMap := make(map[string]string) tmpMap := make(map[string]string)
o := NewNamedMapOpts("max-name", tmpMap, nil) o := NewNamedMapOpts("max-name", tmpMap, nil)
o.Set("max-size=1") err := o.Set("max-size=1")
require.NoError(t, err)
if o.String() != "map[max-size:1]" { if o.String() != "map[max-size:1]" {
t.Errorf("%s != [map[max-size:1]", o.String()) t.Errorf("%s != [map[max-size:1]", o.String())
} }

View File

@ -458,7 +458,8 @@ func TestCopyWithTarSrcFolder(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
os.WriteFile(filepath.Join(src, "file"), []byte("content"), 0777) err = os.WriteFile(filepath.Join(src, "file"), []byte("content"), 0777)
require.NoError(t, err)
err = defaultCopyWithTar(src, dest) err = defaultCopyWithTar(src, dest)
if err != nil { if err != nil {
t.Fatalf("archiver.CopyWithTar shouldn't throw an error, %s.", err) t.Fatalf("archiver.CopyWithTar shouldn't throw an error, %s.", err)
@ -531,7 +532,8 @@ func TestCopyFileWithTarSrcFile(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
os.WriteFile(src, []byte("content"), 0777) err = os.WriteFile(src, []byte("content"), 0777)
require.NoError(t, err)
err = defaultCopyWithTar(src, dest+"/") err = defaultCopyWithTar(src, dest+"/")
if err != nil { if err != nil {
t.Fatalf("archiver.CopyFileWithTar shouldn't throw an error, %s.", err) t.Fatalf("archiver.CopyFileWithTar shouldn't throw an error, %s.", err)
@ -560,7 +562,6 @@ func TestCopySocket(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
os.WriteFile(src, []byte("content"), 0777)
err = defaultCopyWithTar(src, dest+"/") err = defaultCopyWithTar(src, dest+"/")
if err != nil { if err != nil {
t.Fatalf("archiver.CopyFileWithTar shouldn't throw an error, %s.", err) t.Fatalf("archiver.CopyFileWithTar shouldn't throw an error, %s.", err)
@ -1127,8 +1128,10 @@ func TestUntarInvalidSymlink(t *testing.T) {
func TestTempArchiveCloseMultipleTimes(t *testing.T) { func TestTempArchiveCloseMultipleTimes(t *testing.T) {
reader := io.NopCloser(strings.NewReader("hello")) reader := io.NopCloser(strings.NewReader("hello"))
tempArchive, err := NewTempArchive(reader, "") tempArchive, err := NewTempArchive(reader, "")
require.NoError(t, err)
buf := make([]byte, 10) buf := make([]byte, 10)
n, err := tempArchive.Read(buf) n, err := tempArchive.Read(buf)
require.NoError(t, err)
if n != 5 { if n != 5 {
t.Fatalf("Expected to read 5 bytes. Read %d instead", n) t.Fatalf("Expected to read 5 bytes. Read %d instead", n)
} }

View File

@ -141,23 +141,29 @@ func TestChangesWithChanges(t *testing.T) {
// Mock the readonly layer // Mock the readonly layer
layer := t.TempDir() layer := t.TempDir()
createSampleDir(t, layer) createSampleDir(t, layer)
os.MkdirAll(path.Join(layer, "dir1/subfolder"), 0740) err := os.MkdirAll(path.Join(layer, "dir1/subfolder"), 0740)
require.NoError(t, err)
// Mock the RW layer // Mock the RW layer
rwLayer := t.TempDir() rwLayer := t.TempDir()
// Create a folder in RW layer // Create a folder in RW layer
dir1 := path.Join(rwLayer, "dir1") dir1 := path.Join(rwLayer, "dir1")
os.MkdirAll(dir1, 0740) err = os.MkdirAll(dir1, 0740)
require.NoError(t, err)
deletedFile := path.Join(dir1, ".wh.file1-2") deletedFile := path.Join(dir1, ".wh.file1-2")
os.WriteFile(deletedFile, []byte{}, 0600) err = os.WriteFile(deletedFile, []byte{}, 0600)
require.NoError(t, err)
modifiedFile := path.Join(dir1, "file1-1") modifiedFile := path.Join(dir1, "file1-1")
os.WriteFile(modifiedFile, []byte{0x00}, 01444) err = os.WriteFile(modifiedFile, []byte{0x00}, 01444)
require.NoError(t, err)
// Let's add a subfolder for a newFile // Let's add a subfolder for a newFile
subfolder := path.Join(dir1, "subfolder") subfolder := path.Join(dir1, "subfolder")
os.MkdirAll(subfolder, 0740) err = os.MkdirAll(subfolder, 0740)
require.NoError(t, err)
newFile := path.Join(subfolder, "newFile") newFile := path.Join(subfolder, "newFile")
os.WriteFile(newFile, []byte{}, 0740) err = os.WriteFile(newFile, []byte{}, 0740)
require.NoError(t, err)
changes, err := Changes([]string{layer}, rwLayer) changes, err := Changes([]string{layer}, rwLayer)
require.NoError(t, err) require.NoError(t, err)
@ -182,10 +188,12 @@ func TestChangesWithChangesGH13590(t *testing.T) {
baseLayer := t.TempDir() baseLayer := t.TempDir()
dir3 := path.Join(baseLayer, "dir1/dir2/dir3") dir3 := path.Join(baseLayer, "dir1/dir2/dir3")
os.MkdirAll(dir3, 07400) err := os.MkdirAll(dir3, 07400)
require.NoError(t, err)
file := path.Join(dir3, "file.txt") file := path.Join(dir3, "file.txt")
os.WriteFile(file, []byte("hello"), 0666) err = os.WriteFile(file, []byte("hello"), 0666)
require.NoError(t, err)
layer := t.TempDir() layer := t.TempDir()
@ -196,7 +204,8 @@ func TestChangesWithChangesGH13590(t *testing.T) {
os.Remove(path.Join(layer, "dir1/dir2/dir3/file.txt")) os.Remove(path.Join(layer, "dir1/dir2/dir3/file.txt"))
file = path.Join(layer, "dir1/dir2/dir3/file1.txt") file = path.Join(layer, "dir1/dir2/dir3/file1.txt")
os.WriteFile(file, []byte("bye"), 0666) err = os.WriteFile(file, []byte("bye"), 0666)
require.NoError(t, err)
changes, err := Changes([]string{baseLayer}, layer) changes, err := Changes([]string{baseLayer}, layer)
require.NoError(t, err) require.NoError(t, err)
@ -217,7 +226,8 @@ func TestChangesWithChangesGH13590(t *testing.T) {
} }
file = path.Join(layer, "dir1/dir2/dir3/file.txt") file = path.Join(layer, "dir1/dir2/dir3/file.txt")
os.WriteFile(file, []byte("bye"), 0666) err = os.WriteFile(file, []byte("bye"), 0666)
require.NoError(t, err)
changes, err = Changes([]string{baseLayer}, layer) changes, err = Changes([]string{baseLayer}, layer)
require.NoError(t, err) require.NoError(t, err)

View File

@ -10,6 +10,8 @@ import (
"path/filepath" "path/filepath"
"testing" "testing"
"time" "time"
"github.com/stretchr/testify/require"
) )
var testUntarFns = map[string]func(string, io.Reader) error{ var testUntarFns = map[string]func(string, io.Reader) error{
@ -61,11 +63,12 @@ func testBreakout(t *testing.T, untarFn string, headers []*tar.Header) error {
reader, writer := io.Pipe() reader, writer := io.Pipe()
go func() { go func() {
t := tar.NewWriter(writer) tw := tar.NewWriter(writer)
for _, hdr := range headers { for _, hdr := range headers {
t.WriteHeader(hdr) err := tw.WriteHeader(hdr)
require.NoError(t, err)
} }
t.Close() tw.Close()
}() }()
untar := testUntarFns[untarFn] untar := testUntarFns[untarFn]

View File

@ -30,7 +30,8 @@ func TestGenerateEmptyFile(t *testing.T) {
} }
require.NoError(t, err) require.NoError(t, err)
buf := new(bytes.Buffer) buf := new(bytes.Buffer)
buf.ReadFrom(tr) _, err = buf.ReadFrom(tr)
require.NoError(t, err)
content := buf.String() content := buf.String()
actualFiles = append(actualFiles, []string{hdr.Name, content}) actualFiles = append(actualFiles, []string{hdr.Name, content})
i++ i++
@ -71,7 +72,8 @@ func TestGenerateWithContent(t *testing.T) {
} }
require.NoError(t, err) require.NoError(t, err)
buf := new(bytes.Buffer) buf := new(bytes.Buffer)
buf.ReadFrom(tr) _, err = buf.ReadFrom(tr)
require.NoError(t, err)
content := buf.String() content := buf.String()
actualFiles = append(actualFiles, []string{hdr.Name, content}) actualFiles = append(actualFiles, []string{hdr.Name, content})
i++ i++

View File

@ -16,6 +16,7 @@ import (
"github.com/containers/storage/pkg/archive" "github.com/containers/storage/pkg/archive"
"github.com/containers/storage/pkg/idtools" "github.com/containers/storage/pkg/idtools"
"github.com/containers/storage/pkg/reexec" "github.com/containers/storage/pkg/reexec"
"github.com/stretchr/testify/require"
) )
const ( const (
@ -423,7 +424,8 @@ func TestChrootUntarPath(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
buf := new(bytes.Buffer) buf := new(bytes.Buffer)
buf.ReadFrom(stream) _, err = buf.ReadFrom(stream)
require.NoError(t, err)
tarfile := filepath.Join(tmpdir, "src.tar") tarfile := filepath.Join(tmpdir, "src.tar")
if err := os.WriteFile(tarfile, buf.Bytes(), 0644); err != nil { if err := os.WriteFile(tarfile, buf.Bytes(), 0644); err != nil {
t.Fatal(err) t.Fatal(err)
@ -472,7 +474,8 @@ func TestChrootUntarPathAndChown(t *testing.T) {
} }
buf := new(bytes.Buffer) buf := new(bytes.Buffer)
buf.ReadFrom(stream) _, err = buf.ReadFrom(stream)
require.NoError(t, err)
tarfile := filepath.Join(tmpdir, "src.tar") tarfile := filepath.Join(tmpdir, "src.tar")
if err := os.WriteFile(tarfile, buf.Bytes(), 0644); err != nil { if err := os.WriteFile(tarfile, buf.Bytes(), 0644); err != nil {
t.Fatal(err) t.Fatal(err)

View File

@ -6,6 +6,8 @@ import (
"reflect" "reflect"
"sort" "sort"
"testing" "testing"
"github.com/stretchr/testify/require"
) )
// Usage of an empty directory should be 0 // Usage of an empty directory should be 0
@ -45,7 +47,8 @@ func TestUsageNonemptyFile(t *testing.T) {
} }
d := []byte{97, 98, 99, 100, 101} d := []byte{97, 98, 99, 100, 101}
file.Write(d) _, err = file.Write(d)
require.NoError(t, err)
usage, _ := Usage(dir) usage, _ := Usage(dir)
expectSizeAndInodeCount(t, "directory with one 5-byte file", usage, &DiskUsage{ expectSizeAndInodeCount(t, "directory with one 5-byte file", usage, &DiskUsage{
@ -92,7 +95,8 @@ func TestUsageFileAndNestedDirectoryEmpty(t *testing.T) {
} }
d := []byte{100, 111, 99, 107, 101, 114} d := []byte{100, 111, 99, 107, 101, 114}
file.Write(d) _, err = file.Write(d)
require.NoError(t, err)
usage, _ := Usage(dir) usage, _ := Usage(dir)
expectSizeAndInodeCount(t, "directory with 6-byte file and empty directory", usage, &DiskUsage{ expectSizeAndInodeCount(t, "directory with 6-byte file and empty directory", usage, &DiskUsage{
@ -117,7 +121,8 @@ func TestUsageFileAndNestedDirectoryNonempty(t *testing.T) {
} }
data := []byte{100, 111, 99, 107, 101, 114} data := []byte{100, 111, 99, 107, 101, 114}
file.Write(data) _, err = file.Write(data)
require.NoError(t, err)
var nestedFile *os.File var nestedFile *os.File
if nestedFile, err = os.CreateTemp(dirNested, "file"); err != nil { if nestedFile, err = os.CreateTemp(dirNested, "file"); err != nil {
@ -125,7 +130,8 @@ func TestUsageFileAndNestedDirectoryNonempty(t *testing.T) {
} }
nestedData := []byte{100, 111, 99, 107, 101, 114} nestedData := []byte{100, 111, 99, 107, 101, 114}
nestedFile.Write(nestedData) _, err = nestedFile.Write(nestedData)
require.NoError(t, err)
usage, _ := Usage(dir) usage, _ := Usage(dir)
expectSizeAndInodeCount(t, "directory with 6-byte file and nested directory with 6-byte file", usage, &DiskUsage{ expectSizeAndInodeCount(t, "directory with 6-byte file and nested directory with 6-byte file", usage, &DiskUsage{
@ -150,7 +156,8 @@ func TestMoveToSubdir(t *testing.T) {
if file, err := os.Create(filepath.Join(outerDir, fName)); err != nil { if file, err := os.Create(filepath.Join(outerDir, fName)); err != nil {
t.Fatalf("couldn't create temp file %q: %v", fName, err) t.Fatalf("couldn't create temp file %q: %v", fName, err)
} else { } else {
file.WriteString(fName) _, err = file.WriteString(fName)
require.NoError(t, err)
file.Close() file.Close()
} }
} }

View File

@ -3,6 +3,8 @@ package ioutils
import ( import (
"bytes" "bytes"
"testing" "testing"
"github.com/stretchr/testify/require"
) )
func TestFixedBufferCap(t *testing.T) { func TestFixedBufferCap(t *testing.T) {
@ -17,13 +19,15 @@ func TestFixedBufferCap(t *testing.T) {
func TestFixedBufferLen(t *testing.T) { func TestFixedBufferLen(t *testing.T) {
buf := &fixedBuffer{buf: make([]byte, 0, 10)} buf := &fixedBuffer{buf: make([]byte, 0, 10)}
buf.Write([]byte("hello")) _, err := buf.Write([]byte("hello"))
require.NoError(t, err)
l := buf.Len() l := buf.Len()
if l != 5 { if l != 5 {
t.Fatalf("expected buffer length to be 5 bytes, got %d", l) t.Fatalf("expected buffer length to be 5 bytes, got %d", l)
} }
buf.Write([]byte("world")) _, err = buf.Write([]byte("world"))
require.NoError(t, err)
l = buf.Len() l = buf.Len()
if l != 10 { if l != 10 {
t.Fatalf("expected buffer length to be 10 bytes, got %d", l) t.Fatalf("expected buffer length to be 10 bytes, got %d", l)
@ -31,7 +35,8 @@ func TestFixedBufferLen(t *testing.T) {
// read 5 bytes // read 5 bytes
b := make([]byte, 5) b := make([]byte, 5)
buf.Read(b) _, err = buf.Read(b)
require.NoError(t, err)
l = buf.Len() l = buf.Len()
if l != 5 { if l != 5 {
@ -61,8 +66,10 @@ func TestFixedBufferLen(t *testing.T) {
func TestFixedBufferString(t *testing.T) { func TestFixedBufferString(t *testing.T) {
buf := &fixedBuffer{buf: make([]byte, 0, 10)} buf := &fixedBuffer{buf: make([]byte, 0, 10)}
buf.Write([]byte("hello")) _, err := buf.Write([]byte("hello"))
buf.Write([]byte("world")) require.NoError(t, err)
_, err = buf.Write([]byte("world"))
require.NoError(t, err)
out := buf.String() out := buf.String()
if out != "helloworld" { if out != "helloworld" {
@ -71,7 +78,8 @@ func TestFixedBufferString(t *testing.T) {
// read 5 bytes // read 5 bytes
b := make([]byte, 5) b := make([]byte, 5)
buf.Read(b) _, err = buf.Read(b)
require.NoError(t, err)
// test that fixedBuffer.String() only returns the part that hasn't been read // test that fixedBuffer.String() only returns the part that hasn't been read
out = buf.String() out = buf.String()

View File

@ -6,15 +6,22 @@ import (
"math/rand" "math/rand"
"testing" "testing"
"time" "time"
"github.com/stretchr/testify/require"
) )
func TestBytesPipeRead(t *testing.T) { func TestBytesPipeRead(t *testing.T) {
buf := NewBytesPipe() buf := NewBytesPipe()
buf.Write([]byte("12")) _, err := buf.Write([]byte("12"))
buf.Write([]byte("34")) require.NoError(t, err)
buf.Write([]byte("56")) _, err = buf.Write([]byte("34"))
buf.Write([]byte("78")) require.NoError(t, err)
buf.Write([]byte("90")) _, err = buf.Write([]byte("56"))
require.NoError(t, err)
_, err = buf.Write([]byte("78"))
require.NoError(t, err)
_, err = buf.Write([]byte("90"))
require.NoError(t, err)
rd := make([]byte, 4) rd := make([]byte, 4)
n, err := buf.Read(rd) n, err := buf.Read(rd)
if err != nil { if err != nil {
@ -50,11 +57,16 @@ func TestBytesPipeRead(t *testing.T) {
func TestBytesPipeWrite(t *testing.T) { func TestBytesPipeWrite(t *testing.T) {
buf := NewBytesPipe() buf := NewBytesPipe()
buf.Write([]byte("12")) _, err := buf.Write([]byte("12"))
buf.Write([]byte("34")) require.NoError(t, err)
buf.Write([]byte("56")) _, err = buf.Write([]byte("34"))
buf.Write([]byte("78")) require.NoError(t, err)
buf.Write([]byte("90")) _, err = buf.Write([]byte("56"))
require.NoError(t, err)
_, err = buf.Write([]byte("78"))
require.NoError(t, err)
_, err = buf.Write([]byte("90"))
require.NoError(t, err)
if buf.buf[0].String() != "1234567890" { if buf.buf[0].String() != "1234567890" {
t.Fatalf("Buffer %q, must be %q", buf.buf[0].String(), "1234567890") t.Fatalf("Buffer %q, must be %q", buf.buf[0].String(), "1234567890")
} }
@ -108,7 +120,8 @@ func TestBytesPipeWriteRandomChunks(t *testing.T) {
for i := 0; i < c.iterations; i++ { for i := 0; i < c.iterations; i++ {
for w := 0; w < c.writesPerLoop; w++ { for w := 0; w < c.writesPerLoop; w++ {
buf.Write(testMessage[:writeChunks[(i*c.writesPerLoop+w)%len(writeChunks)]]) _, err := buf.Write(testMessage[:writeChunks[(i*c.writesPerLoop+w)%len(writeChunks)]])
require.NoError(t, err)
} }
} }
buf.Close() buf.Close()
@ -135,7 +148,8 @@ func BenchmarkBytesPipeWrite(b *testing.B) {
} }
}() }()
for j := 0; j < 1000; j++ { for j := 0; j < 1000; j++ {
buf.Write(testData) _, err := buf.Write(testData)
require.NoError(b, err)
} }
buf.Close() buf.Close()
} }
@ -147,7 +161,8 @@ func BenchmarkBytesPipeRead(b *testing.B) {
b.StopTimer() b.StopTimer()
buf := NewBytesPipe() buf := NewBytesPipe()
for j := 0; j < 500; j++ { for j := 0; j < 500; j++ {
buf.Write(make([]byte, 1024)) _, err := buf.Write(make([]byte, 1024))
require.NoError(b, err)
} }
b.StartTimer() b.StartTimer()
for j := 0; j < 1000; j++ { for j := 0; j < 1000; j++ {

View File

@ -4,6 +4,8 @@ import (
"bytes" "bytes"
"strings" "strings"
"testing" "testing"
"github.com/stretchr/testify/require"
) )
func TestWriteCloserWrapperClose(t *testing.T) { func TestWriteCloserWrapperClose(t *testing.T) {
@ -52,8 +54,10 @@ func TestWriteCounter(t *testing.T) {
var buffer bytes.Buffer var buffer bytes.Buffer
wc := NewWriteCounter(&buffer) wc := NewWriteCounter(&buffer)
reader1.WriteTo(wc) _, err := reader1.WriteTo(wc)
reader2.WriteTo(wc) require.NoError(t, err)
_, err = reader2.WriteTo(wc)
require.NoError(t, err)
if wc.Count != totalLength { if wc.Count != totalLength {
t.Errorf("Wrong count: %d vs. %d", wc.Count, totalLength) t.Errorf("Wrong count: %d vs. %d", wc.Count, totalLength)

View File

@ -4,6 +4,8 @@ import (
"sync" "sync"
"testing" "testing"
"time" "time"
"github.com/stretchr/testify/require"
) )
func TestLockCounter(t *testing.T) { func TestLockCounter(t *testing.T) {
@ -76,7 +78,8 @@ func TestLockerUnlock(t *testing.T) {
l := New() l := New()
l.Lock("test") l.Lock("test")
l.Unlock("test") err := l.Unlock("test")
require.NoError(t, err)
chDone := make(chan struct{}) chDone := make(chan struct{})
go func() { go func() {
@ -100,7 +103,8 @@ func TestLockerConcurrency(t *testing.T) {
go func() { go func() {
l.Lock("test") l.Lock("test")
// if there is a concurrency issue, will very likely panic here // if there is a concurrency issue, will very likely panic here
l.Unlock("test") err := l.Unlock("test")
require.NoError(t, err)
wg.Done() wg.Done()
}() }()
} }

View File

@ -36,8 +36,14 @@ func subTouchMain() {
} }
tf.Lock() tf.Lock()
os.Stdout.Close() os.Stdout.Close()
io.Copy(io.Discard, os.Stdin) _, err = io.Copy(io.Discard, os.Stdin)
tf.Touch() if err != nil {
logrus.Fatalf("error reading stdin: %v", err)
}
err = tf.Touch()
if err != nil {
logrus.Fatalf("error touching lock: %v", err)
}
tf.Unlock() tf.Unlock()
} }
@ -81,7 +87,10 @@ func subLockMain() {
} }
tf.Lock() tf.Lock()
os.Stdout.Close() os.Stdout.Close()
io.Copy(io.Discard, os.Stdin) _, err = io.Copy(io.Discard, os.Stdin)
if err != nil {
logrus.Fatalf("error reading stdin: %v", err)
}
tf.Unlock() tf.Unlock()
} }
@ -120,7 +129,10 @@ func subRLockMain() {
} }
tf.RLock() tf.RLock()
os.Stdout.Close() os.Stdout.Close()
io.Copy(io.Discard, os.Stdin) _, err = io.Copy(io.Discard, os.Stdin)
if err != nil {
logrus.Fatalf("error reading stdin: %v", err)
}
tf.Unlock() tf.Unlock()
} }
@ -274,9 +286,11 @@ func TestLockfileTouch(t *testing.T) {
stdin, stdout, stderr, err := subTouch(l) stdin, stdout, stderr, err := subTouch(l)
require.Nil(t, err, "got an error starting a subprocess to touch the lockfile") require.Nil(t, err, "got an error starting a subprocess to touch the lockfile")
l.Unlock() l.Unlock()
io.Copy(io.Discard, stdout) _, err = io.Copy(io.Discard, stdout)
require.NoError(t, err)
stdin.Close() stdin.Close()
io.Copy(io.Discard, stderr) _, err = io.Copy(io.Discard, stderr)
require.NoError(t, err)
l.Lock() l.Lock()
m, err = l.Modified() m, err = l.Modified()
l.Unlock() l.Unlock()
@ -425,7 +439,8 @@ func TestLockfileMultiprocessRead(t *testing.T) {
for i := range subs { for i := range subs {
wg.Add(1) wg.Add(1)
go func(i int) { go func(i int) {
io.Copy(io.Discard, subs[i].stdout) _, err := io.Copy(io.Discard, subs[i].stdout)
require.NoError(t, err)
if testing.Verbose() { if testing.Verbose() {
t.Logf("\tchild %4d acquired the read lock\n", i+1) t.Logf("\tchild %4d acquired the read lock\n", i+1)
} }
@ -468,7 +483,8 @@ func TestLockfileMultiprocessWrite(t *testing.T) {
for i := range subs { for i := range subs {
wg.Add(1) wg.Add(1)
go func(i int) { go func(i int) {
io.Copy(io.Discard, subs[i].stdout) _, err := io.Copy(io.Discard, subs[i].stdout)
require.NoError(t, err)
if testing.Verbose() { if testing.Verbose() {
t.Logf("\tchild %4d acquired the write lock\n", i+1) t.Logf("\tchild %4d acquired the write lock\n", i+1)
} }
@ -527,7 +543,8 @@ func TestLockfileMultiprocessMixed(t *testing.T) {
wg.Add(1) wg.Add(1)
go func(i int) { go func(i int) {
// wait for the child to acquire whatever lock it wants // wait for the child to acquire whatever lock it wants
io.Copy(io.Discard, subs[i].stdout) _, err := io.Copy(io.Discard, subs[i].stdout)
require.NoError(t, err)
if writer(i) { if writer(i) {
// child acquired a write lock // child acquired a write lock
if testing.Verbose() { if testing.Verbose() {

View File

@ -12,6 +12,9 @@ import (
"strings" "strings"
"testing" "testing"
"time" "time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
) )
// ResetForTesting clears all flag state and sets the usage function as directed. // ResetForTesting clears all flag state and sets the usage function as directed.
@ -76,14 +79,19 @@ func TestEverything(t *testing.T) {
} }
} }
// Now set all flags // Now set all flags
Set("test_bool", "true") for _, e := range []struct{ name, value string }{
Set("test_int", "1") {"test_bool", "true"},
Set("test_int64", "1") {"test_int", "1"},
Set("test_uint", "1") {"test_int64", "1"},
Set("test_uint64", "1") {"test_uint", "1"},
Set("test_string", "1") {"test_uint64", "1"},
Set("test_float64", "1") {"test_string", "1"},
Set("test_duration", "1s") {"test_float64", "1"},
{"test_duration", "1s"},
} {
err := Set(e.name, e.value)
require.NoError(t, err)
}
desired = "1" desired = "1"
Visit(visitor) Visit(visitor)
if len(m) != 8 { if len(m) != 8 {
@ -274,7 +282,7 @@ func testPanic(t *testing.T, f *FlagSet) {
args := []string{ args := []string{
"-int", "21", "-int", "21",
} }
f.Parse(args) _ = f.Parse(args)
} }
func TestParsePanic(t *testing.T) { func TestParsePanic(t *testing.T) {
@ -366,7 +374,8 @@ func TestSetOutput(t *testing.T) {
var buf bytes.Buffer var buf bytes.Buffer
flags.SetOutput(&buf) flags.SetOutput(&buf)
flags.Init("test", ContinueOnError) flags.Init("test", ContinueOnError)
flags.Parse([]string{"-unknown"}) err := flags.Parse([]string{"-unknown"})
assert.ErrorContains(t, err, "unknown")
if out := buf.String(); !strings.Contains(out, "-unknown") { if out := buf.String(); !strings.Contains(out, "-unknown") {
t.Logf("expected output mentioning unknown; got %q", out) t.Logf("expected output mentioning unknown; got %q", out)
} }
@ -518,7 +527,8 @@ func TestMergeFlags(t *testing.T) {
base.String([]string{"f"}, "", "") base.String([]string{"f"}, "", "")
fs := NewFlagSet("test", ContinueOnError) fs := NewFlagSet("test", ContinueOnError)
Merge(fs, base) err := Merge(fs, base)
require.NoError(t, err)
if len(fs.formal) != 1 { if len(fs.formal) != 1 {
t.Fatalf("FlagCount (%d) != number (1) of elements merged", len(fs.formal)) t.Fatalf("FlagCount (%d) != number (1) of elements merged", len(fs.formal))
} }

View File

@ -1,3 +1,4 @@
//go:build !windows
// +build !windows // +build !windows
package kernel package kernel
@ -41,7 +42,7 @@ func TestParseRelease(t *testing.T) {
for _, invalid := range invalids { for _, invalid := range invalids {
expectedMessage := fmt.Sprintf("Can't parse kernel version %v", invalid) expectedMessage := fmt.Sprintf("Can't parse kernel version %v", invalid)
if _, err := ParseRelease(invalid); err == nil || err.Error() != expectedMessage { if _, err := ParseRelease(invalid); err == nil || err.Error() != expectedMessage {
t.Fatalf("Parsing %q, got %#v", invalid, err)
} }
} }
} }

View File

@ -6,6 +6,7 @@ import (
"time" "time"
"github.com/containers/storage/pkg/stringid" "github.com/containers/storage/pkg/stringid"
"github.com/stretchr/testify/require"
) )
// Test the behavior of TruncIndex, an index for querying IDs from a non-conflicting prefix. // Test the behavior of TruncIndex, an index for querying IDs from a non-conflicting prefix.
@ -134,7 +135,8 @@ func assertIndexIterateDoNotPanic(t *testing.T) {
go func() { go func() {
<-iterationStarted <-iterationStarted
index.Delete("19b36c2c326ccc11e726eee6ee78a0baf166ef96") err := index.Delete("19b36c2c326ccc11e726eee6ee78a0baf166ef96")
require.NoError(t, err)
}() }()
index.Iterate(func(targetId string) { index.Iterate(func(targetId string) {

View File

@ -9,6 +9,7 @@ import (
"testing" "testing"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"github.com/stretchr/testify/require"
"gotest.tools/assert" "gotest.tools/assert"
) )
@ -115,7 +116,8 @@ func TestReloadConfigurationFile(t *testing.T) {
content := bytes.NewBufferString("") content := bytes.NewBufferString("")
logrus.SetOutput(content) logrus.SetOutput(content)
var storageOpts StoreOptions var storageOpts StoreOptions
ReloadConfigurationFile("./storage_broken.conf", &storageOpts) err := ReloadConfigurationFile("./storage_broken.conf", &storageOpts)
require.NoError(t, err)
assert.Equal(t, storageOpts.RunRoot, "/run/containers/test") assert.Equal(t, storageOpts.RunRoot, "/run/containers/test")
logrus.SetOutput(os.Stderr) logrus.SetOutput(os.Stderr)