Skip to content

Commit b8b1d45

Browse files
authored
Merge pull request #1601 from Zhupku/mengzezhu/release-1.23
[release-1.23] cleanup: upgrade golint version and fix golint errors
2 parents 46f8a3f + 634cab8 commit b8b1d45

File tree

10 files changed

+39
-39
lines changed

10 files changed

+39
-39
lines changed

.github/workflows/static.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,5 @@ jobs:
1515
- name: Run linter
1616
uses: golangci/golangci-lint-action@v3
1717
with:
18-
version: v1.54
18+
version: v1.60
1919
args: -E=gofmt,unused,ineffassign,revive,misspell,exportloopref,asciicheck,bodyclose,depguard,dogsled,durationcheck,errname,forbidigo -D=staticcheck --timeout=30m0s

hack/verify-golint.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ set -euo pipefail
1818

1919
if [[ -z "$(command -v golangci-lint)" ]]; then
2020
echo "Cannot find golangci-lint. Installing golangci-lint..."
21-
go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.45.0
21+
go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.60.0
2222
export PATH=$PATH:$(go env GOPATH)/bin
2323
fi
2424

2525
echo "Verifying golint"
2626

27-
golangci-lint run --no-config --enable=golint --disable=typecheck --deadline=10m
27+
golangci-lint run --no-config -E=gofmt,unused,ineffassign,revive,misspell,exportloopref,asciicheck,bodyclose,depguard,dogsled,durationcheck,errname,forbidigo -D=staticcheck --timeout=30m
2828

2929
echo "Congratulations! Lint check completed for all Go source files."

pkg/blob/blob.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ func NewDriver(options *DriverOptions, kubeClient kubernetes.Interface, cloud *p
267267
d.Version = driverVersion
268268
d.NodeID = options.NodeID
269269

270-
getter := func(key string) (interface{}, error) { return nil, nil }
270+
getter := func(_ string) (interface{}, error) { return nil, nil }
271271
if d.accountSearchCache, err = azcache.NewTimedCache(time.Minute, getter, false); err != nil {
272272
klog.Fatalf("%v", err)
273273
}

pkg/blob/controllerserver.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -203,13 +203,13 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest)
203203
// only do validations here, used in NodeStageVolume, NodePublishVolume
204204
if v != "" {
205205
if _, err := strconv.ParseUint(v, 8, 32); err != nil {
206-
return nil, status.Errorf(codes.InvalidArgument, fmt.Sprintf("invalid mountPermissions %s in storage class", v))
206+
return nil, status.Errorf(codes.InvalidArgument, "invalid mountPermissions %s in storage class", v)
207207
}
208208
}
209209
case useDataPlaneAPIField:
210210
useDataPlaneAPI = strings.EqualFold(v, trueValue)
211211
default:
212-
return nil, status.Errorf(codes.InvalidArgument, fmt.Sprintf("invalid parameter %q in storage class", k))
212+
return nil, status.Errorf(codes.InvalidArgument, "invalid parameter %q in storage class", k)
213213
}
214214
}
215215

@@ -220,7 +220,7 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest)
220220
}
221221

222222
if matchTags && account != "" {
223-
return nil, status.Errorf(codes.InvalidArgument, fmt.Sprintf("matchTags must set as false when storageAccount(%s) is provided", account))
223+
return nil, status.Errorf(codes.InvalidArgument, "matchTags must set as false when storageAccount(%s) is provided", account)
224224
}
225225

226226
if resourceGroup == "" {
@@ -286,13 +286,13 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest)
286286
if IsAzureStackCloud(d.cloud) {
287287
accountKind = string(storage.KindStorage)
288288
if storageAccountType != "" && storageAccountType != string(storage.SkuNameStandardLRS) && storageAccountType != string(storage.SkuNamePremiumLRS) {
289-
return nil, status.Errorf(codes.InvalidArgument, fmt.Sprintf("Invalid skuName value: %s, as Azure Stack only supports %s and %s Storage Account types.", storageAccountType, storage.SkuNamePremiumLRS, storage.SkuNameStandardLRS))
289+
return nil, status.Errorf(codes.InvalidArgument, "Invalid skuName value: %s, as Azure Stack only supports %s and %s Storage Account types.", storageAccountType, storage.SkuNamePremiumLRS, storage.SkuNameStandardLRS)
290290
}
291291
}
292292

293293
tags, err := util.ConvertTagsToMap(customTags)
294294
if err != nil {
295-
return nil, status.Errorf(codes.InvalidArgument, err.Error())
295+
return nil, status.Errorf(codes.InvalidArgument, "%v", err)
296296
}
297297

298298
if strings.TrimSpace(storageEndpointSuffix) == "" {
@@ -380,7 +380,7 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest)
380380
// search in cache first
381381
cache, err := d.accountSearchCache.Get(lockKey, azcache.CacheReadTypeDefault)
382382
if err != nil {
383-
return nil, status.Errorf(codes.Internal, err.Error())
383+
return nil, status.Errorf(codes.Internal, "%v", err)
384384
}
385385
if cache != nil {
386386
accountName = cache.(string)
@@ -841,7 +841,7 @@ func (d *Driver) authorizeAzcopyWithIdentity() ([]string, error) {
841841
authAzcopyEnv = append(authAzcopyEnv, fmt.Sprintf("%s=%s", azcopySPAApplicationID, azureAuthConfig.AADClientID))
842842
authAzcopyEnv = append(authAzcopyEnv, fmt.Sprintf("%s=%s", azcopySPAClientSecret, azureAuthConfig.AADClientSecret))
843843
authAzcopyEnv = append(authAzcopyEnv, fmt.Sprintf("%s=%s", azcopyTenantID, azureAuthConfig.TenantID))
844-
klog.V(2).Infof(fmt.Sprintf("set AZCOPY_SPA_APPLICATION_ID=%s, AZCOPY_TENANT_ID=%s successfully", azureAuthConfig.AADClientID, azureAuthConfig.TenantID))
844+
klog.V(2).Infof("set AZCOPY_SPA_APPLICATION_ID=%s, AZCOPY_TENANT_ID=%s successfully", azureAuthConfig.AADClientID, azureAuthConfig.TenantID)
845845

846846
return authAzcopyEnv, nil
847847
}
@@ -897,10 +897,10 @@ func isValidVolumeCapabilities(volCaps []*csi.VolumeCapability) error {
897897
func parseDays(dayStr string) (int32, error) {
898898
days, err := strconv.Atoi(dayStr)
899899
if err != nil {
900-
return 0, status.Errorf(codes.InvalidArgument, fmt.Sprintf("invalid %s:%s in storage class", softDeleteBlobsField, dayStr))
900+
return 0, status.Errorf(codes.InvalidArgument, "invalid %s:%s in storage class", softDeleteBlobsField, dayStr)
901901
}
902902
if days <= 0 || days > 365 {
903-
return 0, status.Errorf(codes.InvalidArgument, fmt.Sprintf("invalid %s:%s in storage class, should be in range [1, 365]", softDeleteBlobsField, dayStr))
903+
return 0, status.Errorf(codes.InvalidArgument, "invalid %s:%s in storage class, should be in range [1, 365]", softDeleteBlobsField, dayStr)
904904
}
905905

906906
return int32(days), nil
@@ -920,11 +920,11 @@ func (d *Driver) generateSASToken(accountName, accountKey, storageEndpointSuffix
920920

921921
credential, err := azblob.NewSharedKeyCredential(accountName, accountKey)
922922
if err != nil {
923-
return "", status.Errorf(codes.Internal, fmt.Sprintf("failed to generate sas token in creating new shared key credential, accountName: %s, err: %s", accountName, err.Error()))
923+
return "", status.Errorf(codes.Internal, "failed to generate sas token in creating new shared key credential, accountName: %s, err: %v", accountName, err)
924924
}
925925
serviceClient, err := service.NewClientWithSharedKeyCredential(fmt.Sprintf("https://%s.blob.%s/", accountName, storageEndpointSuffix), credential, nil)
926926
if err != nil {
927-
return "", status.Errorf(codes.Internal, fmt.Sprintf("failed to generate sas token in creating new client with shared key credential, accountName: %s, err: %s", accountName, err.Error()))
927+
return "", status.Errorf(codes.Internal, "failed to generate sas token in creating new client with shared key credential, accountName: %s, err: %v", accountName, err)
928928
}
929929
sasURL, err := serviceClient.GetSASURL(
930930
sas.AccountResourceTypes{Object: true, Service: false, Container: true},

pkg/blob/controllerserver_test.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ func (c *mockBlobClient) CreateContainer(_ context.Context, _, _, _, _ string, _
6868
case MANAGEMENT:
6969
return retry.GetError(&http.Response{}, fmt.Errorf(containerBeingDeletedManagementAPIError))
7070
case CUSTOM:
71-
return retry.GetError(&http.Response{}, fmt.Errorf(*c.custom))
71+
return retry.GetError(&http.Response{}, fmt.Errorf("%v", *c.custom))
7272
}
7373
return nil
7474
}
@@ -79,7 +79,7 @@ func (c *mockBlobClient) DeleteContainer(_ context.Context, _, _, _, _ string) *
7979
case MANAGEMENT:
8080
return retry.GetError(&http.Response{}, fmt.Errorf(containerBeingDeletedManagementAPIError))
8181
case CUSTOM:
82-
return retry.GetError(&http.Response{}, fmt.Errorf(*c.custom))
82+
return retry.GetError(&http.Response{}, fmt.Errorf("%v", *c.custom))
8383
}
8484
return nil
8585
}
@@ -90,7 +90,7 @@ func (c *mockBlobClient) GetContainer(_ context.Context, _, _, _, _ string) (sto
9090
case MANAGEMENT:
9191
return storage.BlobContainer{ContainerProperties: c.conProp}, retry.GetError(&http.Response{}, fmt.Errorf(containerBeingDeletedManagementAPIError))
9292
case CUSTOM:
93-
return storage.BlobContainer{ContainerProperties: c.conProp}, retry.GetError(&http.Response{}, fmt.Errorf(*c.custom))
93+
return storage.BlobContainer{ContainerProperties: c.conProp}, retry.GetError(&http.Response{}, fmt.Errorf("%v", *c.custom))
9494
}
9595
return storage.BlobContainer{ContainerProperties: c.conProp}, nil
9696
}
@@ -411,7 +411,7 @@ func TestCreateVolume(t *testing.T) {
411411
controllerServiceCapability,
412412
}
413413

414-
expectedErr := status.Errorf(codes.InvalidArgument, fmt.Sprintf("invalid parameter %q in storage class", "invalidparameter"))
414+
expectedErr := status.Errorf(codes.InvalidArgument, "invalid parameter %q in storage class", "invalidparameter")
415415
_, err := d.CreateVolume(context.Background(), req)
416416
if !reflect.DeepEqual(err, expectedErr) {
417417
t.Errorf("Unexpected error: %v", err)
@@ -433,7 +433,7 @@ func TestCreateVolume(t *testing.T) {
433433
controllerServiceCapability,
434434
}
435435

436-
expectedErr := status.Errorf(codes.InvalidArgument, fmt.Sprintf("invalid %s %s in storage class", "mountPermissions", "0abc"))
436+
expectedErr := status.Errorf(codes.InvalidArgument, "invalid %s %s in storage class", "mountPermissions", "0abc")
437437
_, err := d.CreateVolume(context.Background(), req)
438438
if !reflect.DeepEqual(err, expectedErr) {
439439
t.Errorf("Unexpected error: %v", err)
@@ -529,7 +529,7 @@ func TestCreateVolume(t *testing.T) {
529529
controllerServiceCapability,
530530
}
531531

532-
expectedErr := status.Errorf(codes.InvalidArgument, fmt.Sprintf("Invalid skuName value: %s, as Azure Stack only supports %s and %s Storage Account types.", "unit-test", storage.SkuNamePremiumLRS, storage.SkuNameStandardLRS))
532+
expectedErr := status.Errorf(codes.InvalidArgument, "Invalid skuName value: %s, as Azure Stack only supports %s and %s Storage Account types.", "unit-test", storage.SkuNamePremiumLRS, storage.SkuNameStandardLRS)
533533
_, err := d.CreateVolume(context.Background(), req)
534534
if !reflect.DeepEqual(err, expectedErr) {
535535
t.Errorf("Unexpected error: %v", err)
@@ -1088,7 +1088,7 @@ func TestValidateVolumeCapabilities(t *testing.T) {
10881088
clientErr: NULL,
10891089
containerProp: &storage.ContainerProperties{},
10901090
expectedRes: nil,
1091-
expectedErr: status.Errorf(codes.Internal, retry.GetError(&http.Response{}, fmt.Errorf(containerBeingDeletedDataplaneAPIError)).Error().Error()),
1091+
expectedErr: status.Errorf(codes.Internal, "%v", retry.GetError(&http.Response{}, fmt.Errorf(containerBeingDeletedDataplaneAPIError)).Error()),
10921092
},
10931093
/*{ //Volume being shown as not existing. ContainerProperties.Deleted not setting correctly??
10941094
name: "Successful I/O",
@@ -1756,7 +1756,7 @@ func TestGenerateSASToken(t *testing.T) {
17561756
accountName: "unit-test",
17571757
accountKey: "fakeValue",
17581758
want: "",
1759-
expectedErr: status.Errorf(codes.Internal, fmt.Sprintf("failed to generate sas token in creating new shared key credential, accountName: %s, err: %s", "unit-test", "decode account key: illegal base64 data at input byte 8")),
1759+
expectedErr: status.Errorf(codes.Internal, "failed to generate sas token in creating new shared key credential, accountName: %s, err: %s", "unit-test", "decode account key: illegal base64 data at input byte 8"),
17601760
},
17611761
}
17621762
for _, tt := range tests {
@@ -1971,7 +1971,7 @@ func TestGetAzcopyAuth(t *testing.T) {
19711971
}
19721972

19731973
expectedAccountSASToken := ""
1974-
expectedErr := status.Errorf(codes.Internal, fmt.Sprintf("failed to generate sas token in creating new shared key credential, accountName: %s, err: %s", "accountName", "decode account key: illegal base64 data at input byte 8"))
1974+
expectedErr := status.Errorf(codes.Internal, "failed to generate sas token in creating new shared key credential, accountName: %s, err: %s", "accountName", "decode account key: illegal base64 data at input byte 8")
19751975
accountSASToken, _, err := d.getAzcopyAuth(context.Background(), "accountName", "", "core.windows.net", &azure.AccountOptions{}, secrets, "secretsName", "secretsNamespace", false)
19761976
if !reflect.DeepEqual(err, expectedErr) || !reflect.DeepEqual(accountSASToken, expectedAccountSASToken) {
19771977
t.Errorf("Unexpected accountSASToken: %s, Unexpected error: %v", accountSASToken, err)
@@ -1992,7 +1992,7 @@ func TestGetAzcopyAuth(t *testing.T) {
19921992

19931993
ctx := context.Background()
19941994
expectedAccountSASToken := ""
1995-
expectedErr := status.Errorf(codes.Internal, fmt.Sprintf("failed to generate sas token in creating new shared key credential, accountName: %s, err: %s", "accountName", "decode account key: illegal base64 data at input byte 8"))
1995+
expectedErr := status.Errorf(codes.Internal, "failed to generate sas token in creating new shared key credential, accountName: %s, err: %s", "accountName", "decode account key: illegal base64 data at input byte 8")
19961996
accountSASToken, _, err := d.getAzcopyAuth(ctx, "accountName", "", "core.windows.net", &azure.AccountOptions{}, secrets, "secretsName", "secretsNamespace", false)
19971997
if !reflect.DeepEqual(err, expectedErr) || !reflect.DeepEqual(accountSASToken, expectedAccountSASToken) {
19981998
t.Errorf("Unexpected accountSASToken: %s, Unexpected error: %v", accountSASToken, err)

pkg/blob/nodeserver.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ func (d *Driver) NodePublishVolume(ctx context.Context, req *csi.NodePublishVolu
112112
if perm := getValueInMap(context, mountPermissionsField); perm != "" {
113113
var err error
114114
if mountPermissions, err = strconv.ParseUint(perm, 8, 32); err != nil {
115-
return nil, status.Errorf(codes.InvalidArgument, fmt.Sprintf("invalid mountPermissions %s", perm))
115+
return nil, status.Errorf(codes.InvalidArgument, "invalid mountPermissions %s", perm)
116116
}
117117
}
118118
}
@@ -141,7 +141,7 @@ func (d *Driver) NodePublishVolume(ctx context.Context, req *csi.NodePublishVolu
141141
klog.Warningf("NodePublishVolume: mock mount on volumeID(%s), this is only for TESTING!!!", volumeID)
142142
if err := volumehelper.MakeDir(target, os.FileMode(mountPermissions)); err != nil {
143143
klog.Errorf("MakeDir failed on target: %s (%v)", target, err)
144-
return nil, status.Errorf(codes.Internal, err.Error())
144+
return nil, status.Errorf(codes.Internal, "%v", err)
145145
}
146146
return &csi.NodePublishVolumeResponse{}, nil
147147
}
@@ -288,7 +288,7 @@ func (d *Driver) NodeStageVolume(ctx context.Context, req *csi.NodeStageVolumeRe
288288
var err error
289289
var perm uint64
290290
if perm, err = strconv.ParseUint(v, 8, 32); err != nil {
291-
return nil, status.Errorf(codes.InvalidArgument, fmt.Sprintf("invalid mountPermissions %s", v))
291+
return nil, status.Errorf(codes.InvalidArgument, "invalid mountPermissions %s", v)
292292
}
293293
if perm == 0 {
294294
performChmodOp = false
@@ -310,7 +310,7 @@ func (d *Driver) NodeStageVolume(ctx context.Context, req *csi.NodeStageVolumeRe
310310

311311
_, accountName, _, containerName, authEnv, err := d.GetAuthEnv(ctx, volumeID, protocol, attrib, secrets)
312312
if err != nil {
313-
return nil, status.Errorf(codes.Internal, err.Error())
313+
return nil, status.Errorf(codes.Internal, "%v", err)
314314
}
315315

316316
// replace pv/pvc name namespace metadata in subDir
@@ -391,7 +391,7 @@ func (d *Driver) NodeStageVolume(ctx context.Context, req *csi.NodeStageVolumeRe
391391
klog.Warningf("NodeStageVolume: mock mount on volumeID(%s), this is only for TESTING!!!", volumeID)
392392
if err := volumehelper.MakeDir(targetPath, os.FileMode(mountPermissions)); err != nil {
393393
klog.Errorf("MakeDir failed on target: %s (%v)", targetPath, err)
394-
return nil, status.Errorf(codes.Internal, err.Error())
394+
return nil, status.Errorf(codes.Internal, "%v", err)
395395
}
396396
return &csi.NodeStageVolumeResponse{}, nil
397397
}
@@ -504,7 +504,7 @@ func (d *Driver) NodeGetVolumeStats(_ context.Context, req *csi.NodeGetVolumeSta
504504
// check if the volume stats is cached
505505
cache, err := d.volStatsCache.Get(req.VolumeId, azcache.CacheReadTypeDefault)
506506
if err != nil {
507-
return nil, status.Errorf(codes.Internal, err.Error())
507+
return nil, status.Errorf(codes.Internal, "%v", err)
508508
}
509509
if cache != nil {
510510
resp := cache.(csi.NodeGetVolumeStatsResponse)

pkg/csi-common/utils.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ func ParseEndpoint(ep string) (string, string, error) {
4444
func Listen(ctx context.Context, endpoint string) (net.Listener, error) {
4545
proto, addr, err := ParseEndpoint(endpoint)
4646
if err != nil {
47-
klog.Errorf(err.Error())
47+
klog.Errorf("%v", err)
4848
return nil, err
4949
}
5050

@@ -53,7 +53,7 @@ func Listen(ctx context.Context, endpoint string) (net.Listener, error) {
5353
addr = "/" + addr
5454
}
5555
if err := os.Remove(addr); err != nil && !os.IsNotExist(err) {
56-
klog.Errorf("Failed to remove %s, error: %s", addr, err.Error())
56+
klog.Errorf("Failed to remove %s, error: %v", addr, err)
5757
return nil, err
5858
}
5959
}

pkg/csi-common/utils_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ func TestLogGRPC(t *testing.T) {
9090
klog.SetOutput(buf)
9191
defer klog.SetOutput(io.Discard)
9292

93-
handler := func(ctx context.Context, req interface{}) (interface{}, error) { return nil, nil }
93+
handler := func(_ context.Context, _ interface{}) (interface{}, error) { return nil, nil }
9494
info := grpc.UnaryServerInfo{
9595
FullMethod: "fake",
9696
}

test/e2e/dynamic_provisioning_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ var _ = ginkgo.Describe("[blob-csi-e2e] Dynamic Provisioning", func() {
4040
testDriver driver.PVTestDriver
4141
)
4242

43-
ginkgo.BeforeEach(func(ctx ginkgo.SpecContext) {
43+
ginkgo.BeforeEach(func(_ ginkgo.SpecContext) {
4444
checkPodsRestart := testCmd{
4545
command: "sh",
4646
args: []string{"test/utils/check_driver_pods_restart.sh"},
@@ -827,7 +827,7 @@ var _ = ginkgo.Describe("[blob-csi-e2e] Dynamic Provisioning", func() {
827827
test.Run(ctx, cs, ns)
828828
})
829829

830-
ginkgo.It("[blob.csi.azure.com] verify examples", ginkgo.Label("flaky"), func(ctx ginkgo.SpecContext) {
830+
ginkgo.It("[blob.csi.azure.com] verify examples", ginkgo.Label("flaky"), func(_ ginkgo.SpecContext) {
831831
createExampleDeployment := testCmd{
832832
command: "bash",
833833
args: []string{"hack/verify-examples.sh"},

test/e2e/suite_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ var _ = ginkgo.SynchronizedBeforeSuite(func(ctx ginkgo.SpecContext) []byte {
101101
}
102102
execTestCmd([]testCmd{e2eBootstrap, createMetricsSVC})
103103
return nil
104-
}, func(ctx ginkgo.SpecContext, data []byte) {
104+
}, func(_ ginkgo.SpecContext, _ []byte) {
105105
// k8s.io/kubernetes/test/e2e/framework requires env KUBECONFIG to be set
106106
// it does not fall back to defaults
107107
if os.Getenv(kubeconfigEnvVar) == "" {
@@ -132,7 +132,7 @@ var _ = ginkgo.SynchronizedBeforeSuite(func(ctx ginkgo.SpecContext) []byte {
132132
}()
133133
})
134134

135-
var _ = ginkgo.SynchronizedAfterSuite(func(ctx ginkgo.SpecContext) {},
135+
var _ = ginkgo.SynchronizedAfterSuite(func(_ ginkgo.SpecContext) {},
136136
func(ctx ginkgo.SpecContext) {
137137
blobLog := testCmd{
138138
command: "bash",
@@ -181,7 +181,7 @@ func execTestCmd(cmds []testCmd) {
181181
cmdSh.Stderr = os.Stderr
182182
err := cmdSh.Run()
183183
if err != nil {
184-
log.Printf("Failed to run command: %s %s, Error: %s\n", cmd.command, strings.Join(cmd.args, " "), err.Error())
184+
log.Printf("Failed to run command: %s %s, Error: %v\n", cmd.command, strings.Join(cmd.args, " "), err)
185185
if !cmd.ignoreError {
186186
gomega.Expect(err).NotTo(gomega.HaveOccurred())
187187
}

0 commit comments

Comments
 (0)