Skip to content

Commit d22f44d

Browse files
[8.19] (backport #11605) Convert readDocker in package tests to a testing helper to get more specific errors (#11624)
* Convert readDocker to testing helper. (#11605) (cherry picked from commit 57d2faa) # Conflicts: # dev-tools/packaging/testing/package_test.go * Fix conflicts --------- Co-authored-by: Craig MacKenzie <[email protected]>
1 parent 34c9073 commit d22f44d

File tree

1 file changed

+14
-30
lines changed

1 file changed

+14
-30
lines changed

dev-tools/packaging/testing/package_test.go

Lines changed: 14 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ func checkNpcapNotices(pkg, file string, contents io.Reader) error {
372372
}
373373

374374
func checkDocker(t *testing.T, file string, fipsPackage bool) {
375-
p, info, err := readDocker(file, true)
375+
p, info, err := readDocker(t, file, true)
376376
if err != nil {
377377
t.Errorf("error reading file %v: %v", file, err)
378378
return
@@ -398,7 +398,7 @@ func checkDocker(t *testing.T, file string, fipsPackage bool) {
398398
}
399399

400400
func checkCompleteDocker(t *testing.T, file string) {
401-
p, _, err := readDocker(file, false)
401+
p, _, err := readDocker(t, file, false)
402402
if err != nil {
403403
t.Errorf("error reading file %v: %v", file, err)
404404
}
@@ -977,27 +977,23 @@ func openZip(zipFile string) (*zip.ReadCloser, error) {
977977
return r, nil
978978
}
979979

980-
func readDocker(dockerFile string, filterWorkingDir bool) (*packageFile, *dockerInfo, error) {
980+
func readDocker(t *testing.T, dockerFile string, filterWorkingDir bool) (*packageFile, *dockerInfo, error) {
981+
t.Helper()
982+
981983
// Read the manifest file first so that the config file and layer
982984
// names are known in advance.
983985
manifest, err := getDockerManifest(dockerFile)
984-
if err != nil {
985-
return nil, nil, err
986-
}
986+
require.NoError(t, err)
987987

988988
file, err := os.Open(dockerFile)
989-
if err != nil {
990-
return nil, nil, err
991-
}
989+
require.NoError(t, err)
992990
defer file.Close()
993991

994992
var info *dockerInfo
995993
layers := make(map[string]*packageFile)
996994

997995
gzipReader, err := gzip.NewReader(file)
998-
if err != nil {
999-
return nil, nil, err
1000-
}
996+
require.NoError(t, err)
1001997
defer gzipReader.Close()
1002998

1003999
tarReader := tar.NewReader(gzipReader)
@@ -1007,38 +1003,29 @@ func readDocker(dockerFile string, filterWorkingDir bool) (*packageFile, *docker
10071003
if errors.Is(err, io.EOF) {
10081004
break
10091005
}
1010-
return nil, nil, err
1006+
require.NoError(t, err)
10111007
}
10121008

10131009
switch {
10141010
case header.Name == manifest.Config:
10151011
info, err = readDockerInfo(tarReader)
1016-
if err != nil {
1017-
return nil, nil, err
1018-
}
1012+
require.NoError(t, err)
10191013
case slices.Contains(manifest.Layers, header.Name):
10201014
layer, err := readTarContents(header.Name, tarReader)
1021-
if err != nil {
1022-
return nil, nil, err
1023-
}
1015+
require.NoError(t, err)
10241016
layers[header.Name] = layer
10251017
}
10261018
}
10271019

1028-
if len(info.Config.Entrypoint) == 0 {
1029-
return nil, nil, fmt.Errorf("no entrypoint")
1030-
}
1031-
1020+
require.NotZero(t, len(info.Config.Entrypoint), "no entrypoint")
10321021
workingDir := info.Config.WorkingDir
10331022
entrypoint := info.Config.Entrypoint[0]
10341023

10351024
// Read layers in order and for each file keep only the entry seen in the later layer
10361025
p := &packageFile{Name: filepath.Base(dockerFile), Contents: map[string]packageEntry{}}
10371026
for _, layer := range manifest.Layers {
10381027
layerFile, found := layers[layer]
1039-
if !found {
1040-
return nil, nil, fmt.Errorf("layer not found: %s", layer)
1041-
}
1028+
require.True(t, found, fmt.Sprintf("layer not found: %s", layer))
10421029
for name, entry := range layerFile.Contents {
10431030
if excludedPathsPattern.MatchString(name) {
10441031
continue
@@ -1056,10 +1043,7 @@ func readDocker(dockerFile string, filterWorkingDir bool) (*packageFile, *docker
10561043
}
10571044
}
10581045

1059-
if len(p.Contents) == 0 {
1060-
return nil, nil, fmt.Errorf("no files found in docker working directory (%s)", info.Config.WorkingDir)
1061-
}
1062-
1046+
require.NotZero(t, len(p.Contents), fmt.Sprintf("no files found in docker working directory (%s)", info.Config.WorkingDir))
10631047
return p, info, nil
10641048
}
10651049

0 commit comments

Comments
 (0)