From 837e0e97cb2e7fbd588177ce89c6c3313b15116e Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Tue, 14 Mar 2023 17:55:15 +0100 Subject: [PATCH] integration: split feature compat check for subtests Signed-off-by: CrazyMax (cherry picked from commit 365598b01f759c1f1ff92892ac14dc8602cf24bf) --- client/client_test.go | 72 +++++++++++++++++++++++++++++++++---------- 1 file changed, 55 insertions(+), 17 deletions(-) diff --git a/client/client_test.go b/client/client_test.go index bacfe70a2601..6ca36d2a71a6 100644 --- a/client/client_test.go +++ b/client/client_test.go @@ -975,7 +975,6 @@ func testSecurityModeErrors(t *testing.T, sb integration.Sandbox) { } func testFrontendImageNaming(t *testing.T, sb integration.Sandbox) { - integration.CheckFeatureCompat(t, sb, integration.FeatureOCIExporter, integration.FeatureDirectPush) requiresLinux(t) c, err := New(sb.Context(), sb.Address()) require.NoError(t, err) @@ -1084,12 +1083,15 @@ func testFrontendImageNaming(t *testing.T, sb integration.Sandbox) { switch exp { case ExporterOCI: + integration.CheckFeatureCompat(t, sb, integration.FeatureOCIExporter) t.Skip("oci exporter does not support named images") case ExporterDocker: + integration.CheckFeatureCompat(t, sb, integration.FeatureOCIExporter) outW, err := os.Create(out) require.NoError(t, err) so.Exports[0].Output = fixedWriteCloser(outW) case ExporterImage: + integration.CheckFeatureCompat(t, sb, integration.FeatureDirectPush) imageName = registry + "/" + imageName so.Exports[0].Attrs["push"] = "true" } @@ -3748,7 +3750,11 @@ func testBuildPushAndValidate(t *testing.T, sb integration.Sandbox) { } func testStargzLazyRegistryCacheImportExport(t *testing.T, sb integration.Sandbox) { - integration.CheckFeatureCompat(t, sb, integration.FeatureCacheExport, integration.FeatureCacheImport, integration.FeatureCacheBackendRegistry) + integration.CheckFeatureCompat(t, sb, + integration.FeatureCacheExport, + integration.FeatureCacheBackendRegistry, + integration.FeatureOCIExporter, + ) requiresLinux(t) cdAddress := sb.ContainerdAddress() if cdAddress == "" || sb.Snapshotter() != "stargz" { @@ -3808,6 +3814,7 @@ func testStargzLazyRegistryCacheImportExport(t *testing.T, sb integration.Sandbo // clear all local state out ensurePruneAll(t, c, sb) + integration.CheckFeatureCompat(t, sb, integration.FeatureCacheImport, integration.FeatureDirectPush) // stargz layers should be lazy even for executing something on them def, err = baseDef. @@ -4374,12 +4381,7 @@ func testZstdLocalCacheExport(t *testing.T, sb integration.Sandbox) { } func testCacheExportIgnoreError(t *testing.T, sb integration.Sandbox) { - integration.CheckFeatureCompat(t, sb, - integration.FeatureCacheExport, - integration.FeatureCacheBackendS3, - integration.FeatureCacheBackendLocal, - integration.FeatureCacheBackendRegistry, - ) + integration.CheckFeatureCompat(t, sb, integration.FeatureCacheExport) c, err := New(sb.Context(), sb.Address()) require.NoError(t, err) defer c.Close() @@ -4462,12 +4464,21 @@ func testCacheExportIgnoreError(t *testing.T, sb integration.Sandbox) { for _, ignoreError := range ignoreErrorValues { ignoreErrStr := strconv.FormatBool(ignoreError) for n, test := range tests { + n := n require.Equal(t, 1, len(test.Exports)) require.Equal(t, 1, len(test.CacheExports)) require.NotEmpty(t, test.CacheExports[0].Attrs) test.CacheExports[0].Attrs["ignore-error"] = ignoreErrStr testName := fmt.Sprintf("%s-%s", n, ignoreErrStr) t.Run(testName, func(t *testing.T) { + switch n { + case "local-ignore-error": + integration.CheckFeatureCompat(t, sb, integration.FeatureCacheBackendLocal) + case "registry-ignore-error": + integration.CheckFeatureCompat(t, sb, integration.FeatureCacheBackendRegistry) + case "s3-ignore-error": + integration.CheckFeatureCompat(t, sb, integration.FeatureCacheBackendS3) + } _, err = c.Solve(sb.Context(), def, SolveOpt{ Exports: test.Exports, CacheExports: test.CacheExports, @@ -4486,7 +4497,11 @@ func testCacheExportIgnoreError(t *testing.T, sb integration.Sandbox) { } func testUncompressedLocalCacheImportExport(t *testing.T, sb integration.Sandbox) { - integration.CheckFeatureCompat(t, sb, integration.FeatureCacheExport, integration.FeatureCacheImport, integration.FeatureCacheBackendLocal) + integration.CheckFeatureCompat(t, sb, + integration.FeatureCacheExport, + integration.FeatureCacheImport, + integration.FeatureCacheBackendLocal, + ) dir := t.TempDir() im := CacheOptionsEntry{ Type: "local", @@ -4506,7 +4521,11 @@ func testUncompressedLocalCacheImportExport(t *testing.T, sb integration.Sandbox } func testUncompressedRegistryCacheImportExport(t *testing.T, sb integration.Sandbox) { - integration.CheckFeatureCompat(t, sb, integration.FeatureCacheExport, integration.FeatureCacheImport, integration.FeatureCacheBackendRegistry) + integration.CheckFeatureCompat(t, sb, + integration.FeatureCacheExport, + integration.FeatureCacheImport, + integration.FeatureCacheBackendRegistry, + ) registry, err := sb.NewRegistry() if errors.Is(err, integration.ErrRequirements) { t.Skip(err.Error()) @@ -4531,7 +4550,11 @@ func testUncompressedRegistryCacheImportExport(t *testing.T, sb integration.Sand } func testZstdLocalCacheImportExport(t *testing.T, sb integration.Sandbox) { - integration.CheckFeatureCompat(t, sb, integration.FeatureCacheExport, integration.FeatureCacheImport, integration.FeatureCacheBackendLocal) + integration.CheckFeatureCompat(t, sb, + integration.FeatureCacheExport, + integration.FeatureCacheImport, + integration.FeatureCacheBackendLocal, + ) dir := t.TempDir() im := CacheOptionsEntry{ Type: "local", @@ -4552,7 +4575,11 @@ func testZstdLocalCacheImportExport(t *testing.T, sb integration.Sandbox) { } func testZstdRegistryCacheImportExport(t *testing.T, sb integration.Sandbox) { - integration.CheckFeatureCompat(t, sb, integration.FeatureCacheExport, integration.FeatureCacheImport, integration.FeatureCacheBackendRegistry) + integration.CheckFeatureCompat(t, sb, + integration.FeatureCacheExport, + integration.FeatureCacheImport, + integration.FeatureCacheBackendRegistry, + ) registry, err := sb.NewRegistry() if errors.Is(err, integration.ErrRequirements) { t.Skip(err.Error()) @@ -4640,7 +4667,11 @@ func testBasicCacheImportExport(t *testing.T, sb integration.Sandbox, cacheOptio } func testBasicRegistryCacheImportExport(t *testing.T, sb integration.Sandbox) { - integration.CheckFeatureCompat(t, sb, integration.FeatureCacheExport, integration.FeatureCacheImport, integration.FeatureCacheBackendRegistry) + integration.CheckFeatureCompat(t, sb, + integration.FeatureCacheExport, + integration.FeatureCacheImport, + integration.FeatureCacheBackendRegistry, + ) registry, err := sb.NewRegistry() if errors.Is(err, integration.ErrRequirements) { t.Skip(err.Error()) @@ -4657,7 +4688,11 @@ func testBasicRegistryCacheImportExport(t *testing.T, sb integration.Sandbox) { } func testMultipleRegistryCacheImportExport(t *testing.T, sb integration.Sandbox) { - integration.CheckFeatureCompat(t, sb, integration.FeatureCacheExport, integration.FeatureCacheImport, integration.FeatureCacheBackendRegistry) + integration.CheckFeatureCompat(t, sb, + integration.FeatureCacheExport, + integration.FeatureCacheImport, + integration.FeatureCacheBackendRegistry, + ) registry, err := sb.NewRegistry() if errors.Is(err, integration.ErrRequirements) { t.Skip(err.Error()) @@ -4680,7 +4715,11 @@ func testMultipleRegistryCacheImportExport(t *testing.T, sb integration.Sandbox) } func testBasicLocalCacheImportExport(t *testing.T, sb integration.Sandbox) { - integration.CheckFeatureCompat(t, sb, integration.FeatureCacheExport, integration.FeatureCacheImport, integration.FeatureCacheBackendLocal) + integration.CheckFeatureCompat(t, sb, + integration.FeatureCacheExport, + integration.FeatureCacheImport, + integration.FeatureCacheBackendLocal, + ) dir := t.TempDir() im := CacheOptionsEntry{ Type: "local", @@ -4701,9 +4740,7 @@ func testBasicInlineCacheImportExport(t *testing.T, sb integration.Sandbox) { integration.CheckFeatureCompat(t, sb, integration.FeatureDirectPush, integration.FeatureCacheExport, - integration.FeatureCacheImport, integration.FeatureCacheBackendInline, - integration.FeatureCacheBackendRegistry, ) requiresLinux(t) registry, err := sb.NewRegistry() @@ -4756,6 +4793,7 @@ func testBasicInlineCacheImportExport(t *testing.T, sb integration.Sandbox) { require.NoError(t, err) ensurePruneAll(t, c, sb) + integration.CheckFeatureCompat(t, sb, integration.FeatureCacheImport, integration.FeatureCacheBackendRegistry) resp, err = c.Solve(sb.Context(), def, SolveOpt{ // specifying inline cache exporter is needed for reproducing containerimage.digest