Skip to content

Commit e0f1405

Browse files
authored
Merge branch 'scaleway:master' into master
2 parents 66db83a + 0ffc356 commit e0f1405

13 files changed

+1128
-46
lines changed

cmd/scw/testdata/test-all-usage-registry-tag-delete-usage.golden

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ USAGE:
77

88
ARGS:
99
tag-id UUID of the tag
10+
[timeout] Maximum time to handle the request
1011
[region=fr-par] Region to target. If none is passed will use default region from the config (fr-par | nl-ams | pl-waw)
1112

1213
DEPRECATED ARGS:

core/testing.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -679,6 +679,14 @@ func ExecBeforeCmdArgs(args []string) BeforeFunc {
679679
}
680680
}
681681

682+
// ExecBeforeCmdWithResult executes the given command and returns its result.
683+
func ExecBeforeCmdWithResult(ctx *BeforeFuncCtx, cmd string) any {
684+
args := cmdToArgs(ctx.Meta, cmd)
685+
ctx.Logger.Debugf("ExecBeforeCmd: args=%s\n", args)
686+
687+
return ctx.ExecuteCmd(args)
688+
}
689+
682690
// ExecAfterCmd executes the given before command.
683691
func ExecAfterCmd(cmd string) AfterFunc {
684692
return func(ctx *AfterFuncCtx) error {

docs/commands/registry.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,7 @@ scw registry tag delete <tag-id ...> [arg=value ...]
332332
| Name | | Description |
333333
|------|---|-------------|
334334
| tag-id | Required | UUID of the tag |
335+
| timeout | | Maximum time to handle the request |
335336
| ~~force~~ | Deprecated | If two tags share the same digest the deletion will fail unless this parameter is set to true (deprecated) |
336337
| region | Default: `fr-par`<br />One of: `fr-par`, `nl-ams`, `pl-waw` | Region to target. If none is passed will use default region from the config |
337338

go.mod

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ module github.com/scaleway/scaleway-cli/v2
33
go 1.25.0
44

55
require (
6-
github.com/aws/aws-sdk-go-v2 v1.39.5
7-
github.com/aws/aws-sdk-go-v2/service/s3 v1.89.1
6+
github.com/aws/aws-sdk-go-v2 v1.39.6
7+
github.com/aws/aws-sdk-go-v2/service/s3 v1.89.2
88
github.com/buildpacks/pack v0.38.2
99
github.com/c-bata/go-prompt v0.2.6
1010
github.com/charmbracelet/bubbletea v1.3.10
@@ -54,24 +54,24 @@ require (
5454
github.com/ProtonMail/go-crypto v1.3.0 // indirect
5555
github.com/agext/levenshtein v1.2.3 // indirect
5656
github.com/apex/log v1.9.0 // indirect
57-
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.2 // indirect
57+
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.3 // indirect
5858
github.com/aws/aws-sdk-go-v2/config v1.31.6 // indirect
5959
github.com/aws/aws-sdk-go-v2/credentials v1.18.10 // indirect
6060
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.6 // indirect
61-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.12 // indirect
62-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.12 // indirect
61+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13 // indirect
62+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13 // indirect
6363
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect
64-
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.12 // indirect
64+
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.13 // indirect
6565
github.com/aws/aws-sdk-go-v2/service/ecr v1.50.1 // indirect
6666
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.37.2 // indirect
67-
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.2 // indirect
68-
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.3 // indirect
69-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.12 // indirect
70-
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.12 // indirect
67+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3 // indirect
68+
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.4 // indirect
69+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13 // indirect
70+
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.13 // indirect
7171
github.com/aws/aws-sdk-go-v2/service/sso v1.29.1 // indirect
7272
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.2 // indirect
7373
github.com/aws/aws-sdk-go-v2/service/sts v1.38.2 // indirect
74-
github.com/aws/smithy-go v1.23.1 // indirect
74+
github.com/aws/smithy-go v1.23.2 // indirect
7575
github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.10.1 // indirect
7676
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
7777
github.com/beorn7/perks v1.0.1 // indirect

go.sum

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -61,46 +61,46 @@ github.com/aphistic/sweet v0.2.0/go.mod h1:fWDlIh/isSE9n6EPsRmC0det+whmX6dJid3st
6161
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
6262
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
6363
github.com/aws/aws-sdk-go v1.20.6/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
64-
github.com/aws/aws-sdk-go-v2 v1.39.5 h1:e/SXuia3rkFtapghJROrydtQpfQaaUgd1cUvyO1mp2w=
65-
github.com/aws/aws-sdk-go-v2 v1.39.5/go.mod h1:yWSxrnioGUZ4WVv9TgMrNUeLV3PFESn/v+6T/Su8gnM=
66-
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.2 h1:t9yYsydLYNBk9cJ73rgPhPWqOh/52fcWDQB5b1JsKSY=
67-
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.2/go.mod h1:IusfVNTmiSN3t4rhxWFaBAqn+mcNdwKtPcV16eYdgko=
64+
github.com/aws/aws-sdk-go-v2 v1.39.6 h1:2JrPCVgWJm7bm83BDwY5z8ietmeJUbh3O2ACnn+Xsqk=
65+
github.com/aws/aws-sdk-go-v2 v1.39.6/go.mod h1:c9pm7VwuW0UPxAEYGyTmyurVcNrbF6Rt/wixFqDhcjE=
66+
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.3 h1:DHctwEM8P8iTXFxC/QK0MRjwEpWQeM9yzidCRjldUz0=
67+
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.3/go.mod h1:xdCzcZEtnSTKVDOmUZs4l/j3pSV6rpo1WXl5ugNsL8Y=
6868
github.com/aws/aws-sdk-go-v2/config v1.31.6 h1:a1t8fXY4GT4xjyJExz4knbuoxSCacB5hT/WgtfPyLjo=
6969
github.com/aws/aws-sdk-go-v2/config v1.31.6/go.mod h1:5ByscNi7R+ztvOGzeUaIu49vkMk2soq5NaH5PYe33MQ=
7070
github.com/aws/aws-sdk-go-v2/credentials v1.18.10 h1:xdJnXCouCx8Y0NncgoptztUocIYLKeQxrCgN6x9sdhg=
7171
github.com/aws/aws-sdk-go-v2/credentials v1.18.10/go.mod h1:7tQk08ntj914F/5i9jC4+2HQTAuJirq7m1vZVIhEkWs=
7272
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.6 h1:wbjnrrMnKew78/juW7I2BtKQwa1qlf6EjQgS69uYY14=
7373
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.6/go.mod h1:AtiqqNrDioJXuUgz3+3T0mBWN7Hro2n9wll2zRUc0ww=
74-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.12 h1:p/9flfXdoAnwJnuW9xHEAFY22R3A6skYkW19JFF9F+8=
75-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.12/go.mod h1:ZTLHakoVCTtW8AaLGSwJ3LXqHD9uQKnOcv1TrpO6u2k=
76-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.12 h1:2lTWFvRcnWFFLzHWmtddu5MTchc5Oj2OOey++99tPZ0=
77-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.12/go.mod h1:hI92pK+ho8HVcWMHKHrK3Uml4pfG7wvL86FzO0LVtQQ=
74+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13 h1:a+8/MLcWlIxo1lF9xaGt3J/u3yOZx+CdSveSNwjhD40=
75+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13/go.mod h1:oGnKwIYZ4XttyU2JWxFrwvhF6YKiK/9/wmE3v3Iu9K8=
76+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13 h1:HBSI2kDkMdWz4ZM7FjwE7e/pWDEZ+nR95x8Ztet1ooY=
77+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13/go.mod h1:YE94ZoDArI7awZqJzBAZ3PDD2zSfuP7w6P2knOzIn8M=
7878
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo=
7979
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo=
80-
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.12 h1:itu4KHu8JK/N6NcLIISlf3LL1LccMqruLUXZ9y7yBZw=
81-
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.12/go.mod h1:i+6vTU3xziikTY3vcox23X8pPGW5X3wVgd1VZ7ha+x8=
80+
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.13 h1:eg/WYAa12vqTphzIdWMzqYRVKKnCboVPRlvaybNCqPA=
81+
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.13/go.mod h1:/FDdxWhz1486obGrKKC1HONd7krpk38LBt+dutLcN9k=
8282
github.com/aws/aws-sdk-go-v2/service/ecr v1.50.1 h1:lcwFjRx3C/hBxJzoWkD6DIG2jeB+mzLmFVBFVOadxxE=
8383
github.com/aws/aws-sdk-go-v2/service/ecr v1.50.1/go.mod h1:qt9OL5kXqWoSub4QAkOF74mS3M2zOTNxMODqgwEUjt8=
8484
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.37.2 h1:EfatDVSMFxaS5TiR0C0zssQU1Nm+rGx3VbUGIH1y274=
8585
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.37.2/go.mod h1:oRy1IEgzXtOkEk4B/J7HZbXUC258drDLtkmc++lN7IA=
86-
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.2 h1:xtuxji5CS0JknaXoACOunXOYOQzgfTvGAc9s2QdCJA4=
87-
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.2/go.mod h1:zxwi0DIR0rcRcgdbl7E2MSOvxDyyXGBlScvBkARFaLQ=
88-
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.3 h1:NEe7FaViguRQEm8zl8Ay/kC/QRsMtWUiCGZajQIsLdc=
89-
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.3/go.mod h1:JLuCKu5VfiLBBBl/5IzZILU7rxS0koQpHzMOCzycOJU=
90-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.12 h1:MM8imH7NZ0ovIVX7D2RxfMDv7Jt9OiUXkcQ+GqywA7M=
91-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.12/go.mod h1:gf4OGwdNkbEsb7elw2Sy76odfhwNktWII3WgvQgQQ6w=
92-
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.12 h1:R3uW0iKl8rgNEXNjVGliW/oMEh9fO/LlUEV8RvIFr1I=
93-
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.12/go.mod h1:XEttbEr5yqsw8ebi7vlDoGJJjMXRez4/s9pibpJyL5s=
94-
github.com/aws/aws-sdk-go-v2/service/s3 v1.89.1 h1:Dq82AV+Qxpno/fG162eAhnD8d48t9S+GZCfz7yv1VeA=
95-
github.com/aws/aws-sdk-go-v2/service/s3 v1.89.1/go.mod h1:MbKLznDKpf7PnSonNRUVYZzfP0CeLkRIUexeblgKcU4=
86+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3 h1:x2Ibm/Af8Fi+BH+Hsn9TXGdT+hKbDd5XOTZxTMxDk7o=
87+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3/go.mod h1:IW1jwyrQgMdhisceG8fQLmQIydcT/jWY21rFhzgaKwo=
88+
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.4 h1:NvMjwvv8hpGUILarKw7Z4Q0w1H9anXKsesMxtw++MA4=
89+
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.4/go.mod h1:455WPHSwaGj2waRSpQp7TsnpOnBfw8iDfPfbwl7KPJE=
90+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13 h1:kDqdFvMY4AtKoACfzIGD8A0+hbT41KTKF//gq7jITfM=
91+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13/go.mod h1:lmKuogqSU3HzQCwZ9ZtcqOc5XGMqtDK7OIc2+DxiUEg=
92+
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.13 h1:zhBJXdhWIFZ1acfDYIhu4+LCzdUS2Vbcum7D01dXlHQ=
93+
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.13/go.mod h1:JaaOeCE368qn2Hzi3sEzY6FgAZVCIYcC2nwbro2QCh8=
94+
github.com/aws/aws-sdk-go-v2/service/s3 v1.89.2 h1:xgBWsgaeUESl8A8k80p6yBdexMWDVeiDmJ/pkjohJ7c=
95+
github.com/aws/aws-sdk-go-v2/service/s3 v1.89.2/go.mod h1:+wArOOrcHUevqdto9k1tKOF5++YTe9JEcPSc9Tx2ZSw=
9696
github.com/aws/aws-sdk-go-v2/service/sso v1.29.1 h1:8OLZnVJPvjnrxEwHFg9hVUof/P4sibH+Ea4KKuqAGSg=
9797
github.com/aws/aws-sdk-go-v2/service/sso v1.29.1/go.mod h1:27M3BpVi0C02UiQh1w9nsBEit6pLhlaH3NHna6WUbDE=
9898
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.2 h1:gKWSTnqudpo8dAxqBqZnDoDWCiEh/40FziUjr/mo6uA=
9999
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.2/go.mod h1:x7+rkNmRoEN1U13A6JE2fXne9EWyJy54o3n6d4mGaXQ=
100100
github.com/aws/aws-sdk-go-v2/service/sts v1.38.2 h1:YZPjhyaGzhDQEvsffDEcpycq49nl7fiGcfJTIo8BszI=
101101
github.com/aws/aws-sdk-go-v2/service/sts v1.38.2/go.mod h1:2dIN8qhQfv37BdUYGgEC8Q3tteM3zFxTI1MLO2O3J3c=
102-
github.com/aws/smithy-go v1.23.1 h1:sLvcH6dfAFwGkHLZ7dGiYF7aK6mg4CgKA/iDKjLDt9M=
103-
github.com/aws/smithy-go v1.23.1/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4pu07mx0=
102+
github.com/aws/smithy-go v1.23.2 h1:Crv0eatJUQhaManss33hS5r40CG3ZFH+21XSkqMrIUM=
103+
github.com/aws/smithy-go v1.23.2/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4pu07mx0=
104104
github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.10.1 h1:6lMw4/QGLFPvbKQ0eri/9Oh3YX5Nm6BPrUlZR8yuJHg=
105105
github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.10.1/go.mod h1:EVJOSYOVeoD3VFFZ/dWCAzWJp5wZr9lTOCjW8ejAmO0=
106106
github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59/go.mod h1:q/89r3U2H7sSsE2t6Kca0lfwTK8JdoNGS/yzM/4iH5I=

internal/namespaces/registry/v1/custom.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ func GetCommands() *core.Commands {
2727
registryInstallDockerHelperCommand(),
2828
))
2929

30+
cmds.MustFind("registry", "tag", "delete").Override(tagDeleteBuilder)
3031
cmds.MustFind("registry", "tag", "get").Override(tagGetBuilder)
3132
cmds.MustFind("registry", "tag", "list").Override(tagListBuilder)
3233

internal/namespaces/registry/v1/custom_tag.go

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,15 @@ package registry
33
import (
44
"context"
55
"fmt"
6+
"reflect"
7+
"time"
68

79
"github.com/fatih/color"
810
"github.com/scaleway/scaleway-cli/v2/core"
911
"github.com/scaleway/scaleway-cli/v2/core/human"
1012
"github.com/scaleway/scaleway-sdk-go/api/registry/v1"
1113
"github.com/scaleway/scaleway-sdk-go/logger"
14+
"github.com/scaleway/scaleway-sdk-go/scw"
1215
)
1316

1417
//
@@ -25,7 +28,7 @@ var (
2528
}
2629
)
2730

28-
type customTag struct {
31+
type CustomTag struct {
2932
registry.Tag
3033
FullName string
3134
}
@@ -59,7 +62,7 @@ func tagGetBuilder(c *core.Command) *core.Command {
5962
return getTagResp, nil
6063
}
6164

62-
res := customTag{
65+
res := CustomTag{
6366
Tag: *tag,
6467
FullName: fmt.Sprintf("%s/%s:%s", namespace.Endpoint, image.Name, tag.Name),
6568
}
@@ -112,9 +115,9 @@ func tagListBuilder(c *core.Command) *core.Command {
112115
return listTagResp, err
113116
}
114117

115-
var customRes []customTag
118+
var customRes []CustomTag
116119
for _, tag := range listTagResp.([]*registry.Tag) {
117-
customRes = append(customRes, customTag{
120+
customRes = append(customRes, CustomTag{
118121
Tag: *tag,
119122
FullName: fmt.Sprintf("%s/%s:%s",
120123
namespace.Endpoint,
@@ -129,3 +132,40 @@ func tagListBuilder(c *core.Command) *core.Command {
129132

130133
return c
131134
}
135+
136+
type customTagDeleteArgs struct {
137+
registry.DeleteTagRequest
138+
Timeout *string
139+
}
140+
141+
func tagDeleteBuilder(c *core.Command) *core.Command {
142+
c.ArgsType = reflect.TypeOf(customTagDeleteArgs{})
143+
c.ArgSpecs.AddBefore("force", &core.ArgSpec{
144+
Name: "timeout",
145+
Short: "Maximum time to handle the request",
146+
Required: false,
147+
Positional: false,
148+
})
149+
150+
c.Run = func(ctx context.Context, argsI any) (any, error) {
151+
client := core.ExtractClient(ctx)
152+
api := registry.NewAPI(client)
153+
args := argsI.(*customTagDeleteArgs)
154+
155+
if args.Timeout == nil {
156+
return api.DeleteTag(&args.DeleteTagRequest, scw.WithContext(ctx))
157+
}
158+
159+
timeout, err := time.ParseDuration(*args.Timeout)
160+
if err != nil {
161+
return nil, err
162+
}
163+
164+
ctxWithTimeout, cancel := context.WithTimeout(ctx, timeout)
165+
defer cancel()
166+
167+
return api.DeleteTag(&args.DeleteTagRequest, scw.WithContext(ctxWithTimeout))
168+
}
169+
170+
return c
171+
}
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
package registry_test
2+
3+
import (
4+
"fmt"
5+
"testing"
6+
7+
"github.com/scaleway/scaleway-cli/v2/core"
8+
"github.com/scaleway/scaleway-cli/v2/internal/namespaces/registry/v1"
9+
"github.com/scaleway/scaleway-cli/v2/internal/testhelpers"
10+
)
11+
12+
func Test_RegistryTagDelete(t *testing.T) {
13+
registryNamespaceMetaKey := "RegistryNamespace"
14+
helloWorldImage := "hello-world:latest"
15+
helloWorldImageMetaKey := "HelloWorldImage"
16+
tagIDMetaKey := "TagID"
17+
18+
t.Run("simple", core.Test(&core.TestConfig{
19+
Commands: registry.GetCommands(),
20+
BeforeFunc: core.BeforeFuncCombine(
21+
core.ExecStoreBeforeCmd(
22+
registryNamespaceMetaKey,
23+
fmt.Sprintf("scw registry namespace create name=%s is-public=false",
24+
core.GetRandomName("test-rg-tag-delete"),
25+
),
26+
),
27+
core.BeforeFuncWhenUpdatingCassette(
28+
core.BeforeFuncCombine(
29+
core.ExecBeforeCmd("scw registry login"),
30+
testhelpers.PushRegistryImage(helloWorldImage, registryNamespaceMetaKey),
31+
),
32+
),
33+
testhelpers.StoreImageIdentifierInMeta(
34+
registryNamespaceMetaKey,
35+
helloWorldImage,
36+
helloWorldImageMetaKey,
37+
),
38+
testhelpers.StoreTagIDInMeta(registryNamespaceMetaKey, helloWorldImage, tagIDMetaKey),
39+
),
40+
Cmd: fmt.Sprintf("scw registry tag delete {{ .%s }}", tagIDMetaKey),
41+
Check: core.TestCheckCombine(
42+
core.TestCheckGolden(),
43+
core.TestCheckExitCode(0),
44+
),
45+
AfterFunc: func(ctx *core.AfterFuncCtx) error {
46+
return core.ExecAfterCmd(
47+
fmt.Sprintf(
48+
"scw registry namespace delete {{ .%s.ID }}",
49+
registryNamespaceMetaKey,
50+
),
51+
)(
52+
ctx,
53+
)
54+
},
55+
}))
56+
57+
t.Run("timeout-ok", core.Test(&core.TestConfig{
58+
Commands: registry.GetCommands(),
59+
BeforeFunc: core.BeforeFuncCombine(
60+
core.ExecStoreBeforeCmd(
61+
registryNamespaceMetaKey,
62+
fmt.Sprintf("scw registry namespace create name=%s is-public=false",
63+
core.GetRandomName("test-rg-tag-delete"),
64+
),
65+
),
66+
core.BeforeFuncWhenUpdatingCassette(
67+
core.BeforeFuncCombine(
68+
core.ExecBeforeCmd("scw registry login"),
69+
testhelpers.PushRegistryImage(helloWorldImage, registryNamespaceMetaKey),
70+
),
71+
),
72+
testhelpers.StoreImageIdentifierInMeta(
73+
registryNamespaceMetaKey,
74+
helloWorldImage,
75+
helloWorldImageMetaKey,
76+
),
77+
testhelpers.StoreTagIDInMeta(registryNamespaceMetaKey, helloWorldImage, tagIDMetaKey),
78+
),
79+
Cmd: fmt.Sprintf("scw registry tag delete {{ .%s }} timeout=1s", tagIDMetaKey),
80+
Check: core.TestCheckCombine(
81+
core.TestCheckGolden(),
82+
core.TestCheckExitCode(0),
83+
),
84+
AfterFunc: func(ctx *core.AfterFuncCtx) error {
85+
return core.ExecAfterCmd(
86+
fmt.Sprintf(
87+
"scw registry namespace delete {{ .%s.ID }}",
88+
registryNamespaceMetaKey,
89+
),
90+
)(
91+
ctx,
92+
)
93+
},
94+
}))
95+
}

0 commit comments

Comments
 (0)