From 44c1f1a6299083869ef27ec2e5be06acf0a5607c Mon Sep 17 00:00:00 2001 From: Tigor Hutasuhut Date: Tue, 25 Jun 2024 17:12:30 +0700 Subject: [PATCH] error-action: add marshal yaml --- lib/workflow/job.go | 4 ++++ lib/workflow/job_test.go | 42 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/lib/workflow/job.go b/lib/workflow/job.go index 09e8982..db1ff68 100644 --- a/lib/workflow/job.go +++ b/lib/workflow/job.go @@ -16,6 +16,10 @@ type Job struct { type ErrorAction string +func (er ErrorAction) MarshalYAML() (interface{}, error) { + return er.String(), nil +} + func (ea *ErrorAction) UnmarshalYAML(value *yaml.Node) error { if value.IsZero() { *ea = ErrorActionStopJob diff --git a/lib/workflow/job_test.go b/lib/workflow/job_test.go index 28c4dba..8bc8f67 100644 --- a/lib/workflow/job_test.go +++ b/lib/workflow/job_test.go @@ -88,3 +88,45 @@ func TestErrorAction_UnmarshalYAML(t *testing.T) { }) } } + +func TestErrorAction_MarshalYAML(t *testing.T) { + tests := []struct { + name string + er ErrorAction + want []byte + }{ + { + name: "continue", + er: ErrorActionContinue, + want: []byte("E: continue"), + }, + { + name: "stop-job", + er: ErrorActionStopJob, + want: []byte("E: stop-job"), + }, + { + name: "stop-action", + er: ErrorActionStopAction, + want: []byte("E: stop-action"), + }, + { + name: "stop-run", + er: ErrorActionStopRun, + want: []byte("E: stop-run"), + }, + } + type placeholder struct { + E ErrorAction `yaml:"E"` + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + e := placeholder{E: tt.er} + got, err := yaml.Marshal(e) + if !assert.NoError(t, err) { + return + } + assert.Equal(t, tt.want, got) + }) + } +}