Skip to content

Commit 3318657

Browse files
authored
Merge pull request moby#3715 from crazy-max/missing-cache-features
integration: missing feature compat checks
2 parents 18e158c + f5aa841 commit 3318657

File tree

2 files changed

+71
-15
lines changed

2 files changed

+71
-15
lines changed

client/build_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1991,6 +1991,7 @@ func testClientGatewayContainerSignal(t *testing.T, sb integration.Sandbox) {
19911991
}
19921992

19931993
func testClientGatewayNilResult(t *testing.T, sb integration.Sandbox) {
1994+
integration.CheckFeatureCompat(t, sb, integration.FeatureMergeDiff)
19941995
requiresLinux(t)
19951996
c, err := New(sb.Context(), sb.Address())
19961997
require.NoError(t, err)

client/client_test.go

Lines changed: 70 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -974,7 +974,6 @@ func testSecurityModeErrors(t *testing.T, sb integration.Sandbox) {
974974
}
975975

976976
func testFrontendImageNaming(t *testing.T, sb integration.Sandbox) {
977-
integration.CheckFeatureCompat(t, sb, integration.FeatureOCIExporter, integration.FeatureDirectPush)
978977
requiresLinux(t)
979978
c, err := New(sb.Context(), sb.Address())
980979
require.NoError(t, err)
@@ -1083,12 +1082,15 @@ func testFrontendImageNaming(t *testing.T, sb integration.Sandbox) {
10831082

10841083
switch exp {
10851084
case ExporterOCI:
1085+
integration.CheckFeatureCompat(t, sb, integration.FeatureOCIExporter)
10861086
t.Skip("oci exporter does not support named images")
10871087
case ExporterDocker:
1088+
integration.CheckFeatureCompat(t, sb, integration.FeatureOCIExporter)
10881089
outW, err := os.Create(out)
10891090
require.NoError(t, err)
10901091
so.Exports[0].Output = fixedWriteCloser(outW)
10911092
case ExporterImage:
1093+
integration.CheckFeatureCompat(t, sb, integration.FeatureDirectPush)
10921094
imageName = registry + "/" + imageName
10931095
so.Exports[0].Attrs["push"] = "true"
10941096
}
@@ -3747,7 +3749,11 @@ func testBuildPushAndValidate(t *testing.T, sb integration.Sandbox) {
37473749
}
37483750

37493751
func testStargzLazyRegistryCacheImportExport(t *testing.T, sb integration.Sandbox) {
3750-
integration.CheckFeatureCompat(t, sb, integration.FeatureCacheExport, integration.FeatureCacheImport, integration.FeatureCacheBackendRegistry)
3752+
integration.CheckFeatureCompat(t, sb,
3753+
integration.FeatureCacheExport,
3754+
integration.FeatureCacheBackendRegistry,
3755+
integration.FeatureOCIExporter,
3756+
)
37513757
requiresLinux(t)
37523758
cdAddress := sb.ContainerdAddress()
37533759
if cdAddress == "" || sb.Snapshotter() != "stargz" {
@@ -3807,6 +3813,7 @@ func testStargzLazyRegistryCacheImportExport(t *testing.T, sb integration.Sandbo
38073813

38083814
// clear all local state out
38093815
ensurePruneAll(t, c, sb)
3816+
integration.CheckFeatureCompat(t, sb, integration.FeatureCacheImport, integration.FeatureDirectPush)
38103817

38113818
// stargz layers should be lazy even for executing something on them
38123819
def, err = baseDef.
@@ -4456,7 +4463,7 @@ func testZstdLocalCacheExport(t *testing.T, sb integration.Sandbox) {
44564463
}
44574464

44584465
func testCacheExportIgnoreError(t *testing.T, sb integration.Sandbox) {
4459-
integration.CheckFeatureCompat(t, sb, integration.FeatureCacheExport, integration.FeatureCacheBackendLocal)
4466+
integration.CheckFeatureCompat(t, sb, integration.FeatureCacheExport)
44604467
c, err := New(sb.Context(), sb.Address())
44614468
require.NoError(t, err)
44624469
defer c.Close()
@@ -4539,12 +4546,21 @@ func testCacheExportIgnoreError(t *testing.T, sb integration.Sandbox) {
45394546
for _, ignoreError := range ignoreErrorValues {
45404547
ignoreErrStr := strconv.FormatBool(ignoreError)
45414548
for n, test := range tests {
4549+
n := n
45424550
require.Equal(t, 1, len(test.Exports))
45434551
require.Equal(t, 1, len(test.CacheExports))
45444552
require.NotEmpty(t, test.CacheExports[0].Attrs)
45454553
test.CacheExports[0].Attrs["ignore-error"] = ignoreErrStr
45464554
testName := fmt.Sprintf("%s-%s", n, ignoreErrStr)
45474555
t.Run(testName, func(t *testing.T) {
4556+
switch n {
4557+
case "local-ignore-error":
4558+
integration.CheckFeatureCompat(t, sb, integration.FeatureCacheBackendLocal)
4559+
case "registry-ignore-error":
4560+
integration.CheckFeatureCompat(t, sb, integration.FeatureCacheBackendRegistry)
4561+
case "s3-ignore-error":
4562+
integration.CheckFeatureCompat(t, sb, integration.FeatureCacheBackendS3)
4563+
}
45484564
_, err = c.Solve(sb.Context(), def, SolveOpt{
45494565
Exports: test.Exports,
45504566
CacheExports: test.CacheExports,
@@ -4563,7 +4579,11 @@ func testCacheExportIgnoreError(t *testing.T, sb integration.Sandbox) {
45634579
}
45644580

45654581
func testUncompressedLocalCacheImportExport(t *testing.T, sb integration.Sandbox) {
4566-
integration.CheckFeatureCompat(t, sb, integration.FeatureCacheExport, integration.FeatureCacheImport, integration.FeatureCacheBackendLocal)
4582+
integration.CheckFeatureCompat(t, sb,
4583+
integration.FeatureCacheExport,
4584+
integration.FeatureCacheImport,
4585+
integration.FeatureCacheBackendLocal,
4586+
)
45674587
dir := t.TempDir()
45684588
im := CacheOptionsEntry{
45694589
Type: "local",
@@ -4583,7 +4603,11 @@ func testUncompressedLocalCacheImportExport(t *testing.T, sb integration.Sandbox
45834603
}
45844604

45854605
func testUncompressedRegistryCacheImportExport(t *testing.T, sb integration.Sandbox) {
4586-
integration.CheckFeatureCompat(t, sb, integration.FeatureCacheExport, integration.FeatureCacheImport, integration.FeatureCacheBackendRegistry)
4606+
integration.CheckFeatureCompat(t, sb,
4607+
integration.FeatureCacheExport,
4608+
integration.FeatureCacheImport,
4609+
integration.FeatureCacheBackendRegistry,
4610+
)
45874611
registry, err := sb.NewRegistry()
45884612
if errors.Is(err, integration.ErrRequirements) {
45894613
t.Skip(err.Error())
@@ -4608,7 +4632,11 @@ func testUncompressedRegistryCacheImportExport(t *testing.T, sb integration.Sand
46084632
}
46094633

46104634
func testZstdLocalCacheImportExport(t *testing.T, sb integration.Sandbox) {
4611-
integration.CheckFeatureCompat(t, sb, integration.FeatureCacheExport, integration.FeatureCacheImport, integration.FeatureCacheBackendLocal)
4635+
integration.CheckFeatureCompat(t, sb,
4636+
integration.FeatureCacheExport,
4637+
integration.FeatureCacheImport,
4638+
integration.FeatureCacheBackendLocal,
4639+
)
46124640
dir := t.TempDir()
46134641
im := CacheOptionsEntry{
46144642
Type: "local",
@@ -4629,7 +4657,11 @@ func testZstdLocalCacheImportExport(t *testing.T, sb integration.Sandbox) {
46294657
}
46304658

46314659
func testZstdRegistryCacheImportExport(t *testing.T, sb integration.Sandbox) {
4632-
integration.CheckFeatureCompat(t, sb, integration.FeatureCacheExport, integration.FeatureCacheImport, integration.FeatureCacheBackendRegistry)
4660+
integration.CheckFeatureCompat(t, sb,
4661+
integration.FeatureCacheExport,
4662+
integration.FeatureCacheImport,
4663+
integration.FeatureCacheBackendRegistry,
4664+
)
46334665
registry, err := sb.NewRegistry()
46344666
if errors.Is(err, integration.ErrRequirements) {
46354667
t.Skip(err.Error())
@@ -4717,7 +4749,11 @@ func testBasicCacheImportExport(t *testing.T, sb integration.Sandbox, cacheOptio
47174749
}
47184750

47194751
func testBasicRegistryCacheImportExport(t *testing.T, sb integration.Sandbox) {
4720-
integration.CheckFeatureCompat(t, sb, integration.FeatureCacheExport, integration.FeatureCacheImport, integration.FeatureCacheBackendRegistry)
4752+
integration.CheckFeatureCompat(t, sb,
4753+
integration.FeatureCacheExport,
4754+
integration.FeatureCacheImport,
4755+
integration.FeatureCacheBackendRegistry,
4756+
)
47214757
registry, err := sb.NewRegistry()
47224758
if errors.Is(err, integration.ErrRequirements) {
47234759
t.Skip(err.Error())
@@ -4734,7 +4770,11 @@ func testBasicRegistryCacheImportExport(t *testing.T, sb integration.Sandbox) {
47344770
}
47354771

47364772
func testMultipleRegistryCacheImportExport(t *testing.T, sb integration.Sandbox) {
4737-
integration.CheckFeatureCompat(t, sb, integration.FeatureCacheExport, integration.FeatureCacheImport, integration.FeatureCacheBackendRegistry)
4773+
integration.CheckFeatureCompat(t, sb,
4774+
integration.FeatureCacheExport,
4775+
integration.FeatureCacheImport,
4776+
integration.FeatureCacheBackendRegistry,
4777+
)
47384778
registry, err := sb.NewRegistry()
47394779
if errors.Is(err, integration.ErrRequirements) {
47404780
t.Skip(err.Error())
@@ -4757,7 +4797,11 @@ func testMultipleRegistryCacheImportExport(t *testing.T, sb integration.Sandbox)
47574797
}
47584798

47594799
func testBasicLocalCacheImportExport(t *testing.T, sb integration.Sandbox) {
4760-
integration.CheckFeatureCompat(t, sb, integration.FeatureCacheExport, integration.FeatureCacheImport, integration.FeatureCacheBackendLocal)
4800+
integration.CheckFeatureCompat(t, sb,
4801+
integration.FeatureCacheExport,
4802+
integration.FeatureCacheImport,
4803+
integration.FeatureCacheBackendLocal,
4804+
)
47614805
dir := t.TempDir()
47624806
im := CacheOptionsEntry{
47634807
Type: "local",
@@ -4775,7 +4819,11 @@ func testBasicLocalCacheImportExport(t *testing.T, sb integration.Sandbox) {
47754819
}
47764820

47774821
func testBasicS3CacheImportExport(t *testing.T, sb integration.Sandbox) {
4778-
integration.CheckFeatureCompat(t, sb, integration.FeatureCacheExport, integration.FeatureCacheImport, integration.FeatureCacheBackendS3)
4822+
integration.CheckFeatureCompat(t, sb,
4823+
integration.FeatureCacheExport,
4824+
integration.FeatureCacheImport,
4825+
integration.FeatureCacheBackendS3,
4826+
)
47794827

47804828
opts := integration.MinioOpts{
47814829
Region: "us-east-1",
@@ -4813,7 +4861,11 @@ func testBasicS3CacheImportExport(t *testing.T, sb integration.Sandbox) {
48134861
}
48144862

48154863
func testBasicAzblobCacheImportExport(t *testing.T, sb integration.Sandbox) {
4816-
integration.CheckFeatureCompat(t, sb, integration.FeatureCacheExport, integration.FeatureCacheImport, integration.FeatureCacheBackendAzblob)
4864+
integration.CheckFeatureCompat(t, sb,
4865+
integration.FeatureCacheExport,
4866+
integration.FeatureCacheImport,
4867+
integration.FeatureCacheBackendAzblob,
4868+
)
48174869

48184870
opts := integration.AzuriteOpts{
48194871
AccountName: "azblobcacheaccount",
@@ -4849,9 +4901,7 @@ func testBasicInlineCacheImportExport(t *testing.T, sb integration.Sandbox) {
48494901
integration.CheckFeatureCompat(t, sb,
48504902
integration.FeatureDirectPush,
48514903
integration.FeatureCacheExport,
4852-
integration.FeatureCacheImport,
48534904
integration.FeatureCacheBackendInline,
4854-
integration.FeatureCacheBackendRegistry,
48554905
)
48564906
requiresLinux(t)
48574907
registry, err := sb.NewRegistry()
@@ -4904,6 +4954,7 @@ func testBasicInlineCacheImportExport(t *testing.T, sb integration.Sandbox) {
49044954
require.NoError(t, err)
49054955

49064956
ensurePruneAll(t, c, sb)
4957+
integration.CheckFeatureCompat(t, sb, integration.FeatureCacheImport, integration.FeatureCacheBackendRegistry)
49074958

49084959
resp, err = c.Solve(sb.Context(), def, SolveOpt{
49094960
// specifying inline cache exporter is needed for reproducing containerimage.digest
@@ -5012,7 +5063,11 @@ func testBasicInlineCacheImportExport(t *testing.T, sb integration.Sandbox) {
50125063
}
50135064

50145065
func testBasicGhaCacheImportExport(t *testing.T, sb integration.Sandbox) {
5015-
integration.CheckFeatureCompat(t, sb, integration.FeatureCacheExport, integration.FeatureCacheImport, integration.FeatureCacheBackendGha)
5066+
integration.CheckFeatureCompat(t, sb,
5067+
integration.FeatureCacheExport,
5068+
integration.FeatureCacheImport,
5069+
integration.FeatureCacheBackendGha,
5070+
)
50165071
runtimeToken := os.Getenv("ACTIONS_RUNTIME_TOKEN")
50175072
cacheURL := os.Getenv("ACTIONS_CACHE_URL")
50185073
if runtimeToken == "" || cacheURL == "" {

0 commit comments

Comments
 (0)