Skip to content

Commit f36ac4c

Browse files
authored
feat(cmd): handle ErrEnvNotExist with typed error checking (#3126)
* fix/typed-err * remove comments * typo * goimports issue * add previous comment * typo * previous version * refactoring
1 parent b2b8009 commit f36ac4c

File tree

3 files changed

+27
-0
lines changed

3 files changed

+27
-0
lines changed

cmd/deploy_test.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -449,6 +449,20 @@ func TestDeploy_Envs(t *testing.T) {
449449
}
450450

451451
// TODO: create and test typed errors for ErrEnvNotExist etc.
452+
453+
cmd = NewDeployCmd(NewTestClient())
454+
cmd.SetArgs([]string{"--env=DOES_NOT_EXIST-"})
455+
err = cmd.Execute()
456+
457+
var e *fn.ErrEnvNotExist
458+
if !errors.As(err, &e) {
459+
t.Fatalf("expected ErrEnvNotExist, got '%v'", err)
460+
}
461+
462+
if e.Name != "DOES_NOT_EXIST" {
463+
t.Fatalf("expected env name 'DOES_NOT_EXIST', got '%v'", e.Name)
464+
}
465+
452466
}
453467

454468
// TestDeploy_FunctionContext ensures that the function contextually relevant

cmd/root.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,13 +298,18 @@ func mergeEnvs(envs []fn.Env, envToUpdate *util.OrderedMap, envToRemove []string
298298
}
299299

300300
for _, name := range envToRemove {
301+
found := false
301302
for i, envVar := range envs {
302303
if *envVar.Name == name {
303304
envs = append(envs[:i], envs[i+1:]...)
304305
counter++
306+
found = true
305307
break
306308
}
307309
}
310+
if !found {
311+
return nil, 0, &fn.ErrEnvNotExist{Name: name}
312+
}
308313
}
309314

310315
errMsg := fn.ValidateEnvs(envs)

pkg/functions/errors.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,11 @@ type ErrRunTimeout struct {
7979
func (e ErrRunTimeout) Error() string {
8080
return fmt.Sprintf("timed out waiting for function to be ready for %s", e.Timeout)
8181
}
82+
83+
type ErrEnvNotExist struct {
84+
Name string
85+
}
86+
87+
func (e ErrEnvNotExist) Error() string {
88+
return fmt.Sprintf("environment variable %q does not exist", e.Name)
89+
}

0 commit comments

Comments
 (0)