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:
parent
d60159bc30
commit
2d90000b09
|
|
@ -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())
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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]
|
||||||
|
|
|
||||||
|
|
@ -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++
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
|
|
|
||||||
|
|
@ -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++ {
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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() {
|
||||||
|
|
|
||||||
|
|
@ -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))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue