mirror of
https://code.forgejo.org/forgejo/runner.git
synced 2025-10-05 19:30:59 +00:00
fix: forgejo-runner validate exit with error when validation fails
Refs forgejo/runner#1002
This commit is contained in:
parent
bcf2bfbf20
commit
8c6c089a65
2 changed files with 33 additions and 24 deletions
|
@ -50,12 +50,13 @@ func validate(dir, path string, isWorkflow, isAction bool) error {
|
||||||
kind = "action"
|
kind = "action"
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("%s %s schema validation failed:\n%s\n", shortPath, kind, err.Error())
|
err = fmt.Errorf("%s %s schema validation failed:\n%s", shortPath, kind, err.Error())
|
||||||
|
fmt.Printf("%s\n", err.Error())
|
||||||
} else {
|
} else {
|
||||||
fmt.Printf("%s %s schema validation OK\n", shortPath, kind)
|
fmt.Printf("%s %s schema validation OK\n", shortPath, kind)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func validatePath(validateArgs *validateArgs) error {
|
func validatePath(validateArgs *validateArgs) error {
|
||||||
|
@ -115,6 +116,8 @@ func validateRepository(validateArgs *validateArgs) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var validationErrors error
|
||||||
|
|
||||||
if err := filepath.Walk(clonedir, func(path string, fi fs.FileInfo, err error) error {
|
if err := filepath.Walk(clonedir, func(path string, fi fs.FileInfo, err error) error {
|
||||||
if validatePathMatch(path, ".forgejo/workflows/action") {
|
if validatePathMatch(path, ".forgejo/workflows/action") {
|
||||||
return nil
|
return nil
|
||||||
|
@ -123,7 +126,7 @@ func validateRepository(validateArgs *validateArgs) error {
|
||||||
isAction := true
|
isAction := true
|
||||||
if validatePathMatch(path, "action") {
|
if validatePathMatch(path, "action") {
|
||||||
if err := validate(clonedir, path, isWorkflow, isAction); err != nil {
|
if err := validate(clonedir, path, isWorkflow, isAction); err != nil {
|
||||||
return err
|
validationErrors = errors.Join(validationErrors, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
@ -141,9 +144,9 @@ func validateRepository(validateArgs *validateArgs) error {
|
||||||
if err := filepath.Walk(workflowdir, func(path string, fi fs.FileInfo, err error) error {
|
if err := filepath.Walk(workflowdir, func(path string, fi fs.FileInfo, err error) error {
|
||||||
isWorkflow := true
|
isWorkflow := true
|
||||||
isAction := false
|
isAction := false
|
||||||
if validateHasYamlSuffix(path, "") {
|
if validateHasYamlSuffix(path) {
|
||||||
if err := validate(clonedir, path, isWorkflow, isAction); err != nil {
|
if err := validate(clonedir, path, isWorkflow, isAction); err != nil {
|
||||||
return err
|
validationErrors = errors.Join(validationErrors, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
@ -152,7 +155,7 @@ func validateRepository(validateArgs *validateArgs) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return validationErrors
|
||||||
}
|
}
|
||||||
|
|
||||||
func processDirectory(validateArgs *validateArgs) {
|
func processDirectory(validateArgs *validateArgs) {
|
||||||
|
|
|
@ -56,9 +56,10 @@ func Test_validateCmd(t *testing.T) {
|
||||||
stdOut: "schema validation OK",
|
stdOut: "schema validation OK",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "PathActionNOK",
|
name: "PathActionNOK",
|
||||||
args: []string{"--action", "--path", "testdata/validate/bad-action.yml"},
|
args: []string{"--action", "--path", "testdata/validate/bad-action.yml"},
|
||||||
stdOut: "Expected a mapping got scalar",
|
stdOut: "Expected a mapping got scalar",
|
||||||
|
message: "testdata/validate/bad-action.yml action schema validation failed",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "PathWorkflowOK",
|
name: "PathWorkflowOK",
|
||||||
|
@ -66,9 +67,10 @@ func Test_validateCmd(t *testing.T) {
|
||||||
stdOut: "schema validation OK",
|
stdOut: "schema validation OK",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "PathWorkflowNOK",
|
name: "PathWorkflowNOK",
|
||||||
args: []string{"--workflow", "--path", "testdata/validate/bad-workflow.yml"},
|
args: []string{"--workflow", "--path", "testdata/validate/bad-workflow.yml"},
|
||||||
stdOut: "Unknown Property ruins-on",
|
stdOut: "Unknown Property ruins-on",
|
||||||
|
message: "testdata/validate/bad-workflow.yml workflow schema validation failed",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "DirectoryOK",
|
name: "DirectoryOK",
|
||||||
|
@ -76,14 +78,16 @@ func Test_validateCmd(t *testing.T) {
|
||||||
stdOut: "action.yml action schema validation OK\nsubaction/action.yaml action schema validation OK\n.forgejo/workflows/action.yml workflow schema validation OK\n.forgejo/workflows/workflow1.yml workflow schema validation OK\n.forgejo/workflows/workflow2.yaml workflow schema validation OK",
|
stdOut: "action.yml action schema validation OK\nsubaction/action.yaml action schema validation OK\n.forgejo/workflows/action.yml workflow schema validation OK\n.forgejo/workflows/workflow1.yml workflow schema validation OK\n.forgejo/workflows/workflow2.yaml workflow schema validation OK",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "DirectoryActionNOK",
|
name: "DirectoryActionNOK",
|
||||||
args: []string{"--directory", "testdata/validate/bad-directory"},
|
args: []string{"--directory", "testdata/validate/bad-directory"},
|
||||||
stdOut: "action.yml action schema validation failed",
|
stdOut: "action.yml action schema validation failed",
|
||||||
|
message: "action.yml action schema validation failed",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "DirectoryWorkflowNOK",
|
name: "DirectoryWorkflowNOK",
|
||||||
args: []string{"--directory", "testdata/validate/bad-directory"},
|
args: []string{"--directory", "testdata/validate/bad-directory"},
|
||||||
stdOut: ".forgejo/workflows/workflow1.yml workflow schema validation failed",
|
stdOut: ".forgejo/workflows/workflow1.yml workflow schema validation failed",
|
||||||
|
message: ".forgejo/workflows/workflow1.yml workflow schema validation failed",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "RepositoryOK",
|
name: "RepositoryOK",
|
||||||
|
@ -91,14 +95,16 @@ func Test_validateCmd(t *testing.T) {
|
||||||
stdOut: "action.yml action schema validation OK\nsubaction/action.yaml action schema validation OK\n.forgejo/workflows/action.yml workflow schema validation OK\n.forgejo/workflows/workflow1.yml workflow schema validation OK\n.forgejo/workflows/workflow2.yaml workflow schema validation OK",
|
stdOut: "action.yml action schema validation OK\nsubaction/action.yaml action schema validation OK\n.forgejo/workflows/action.yml workflow schema validation OK\n.forgejo/workflows/workflow1.yml workflow schema validation OK\n.forgejo/workflows/workflow2.yaml workflow schema validation OK",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "RepositoryActionNOK",
|
name: "RepositoryActionNOK",
|
||||||
args: []string{"--repository", "testdata/validate/bad-repository"},
|
args: []string{"--repository", "testdata/validate/bad-repository"},
|
||||||
stdOut: "action.yml action schema validation failed",
|
stdOut: "action.yml action schema validation failed",
|
||||||
|
message: "action.yml action schema validation failed",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "RepositoryWorkflowNOK",
|
name: "RepositoryWorkflowNOK",
|
||||||
args: []string{"--repository", "testdata/validate/bad-repository"},
|
args: []string{"--repository", "testdata/validate/bad-repository"},
|
||||||
stdOut: ".forgejo/workflows/workflow1.yml workflow schema validation failed",
|
stdOut: ".forgejo/workflows/workflow1.yml workflow schema validation failed",
|
||||||
|
message: ".forgejo/workflows/workflow1.yml workflow schema validation failed",
|
||||||
},
|
},
|
||||||
} {
|
} {
|
||||||
t.Run(testCase.name, func(t *testing.T) {
|
t.Run(testCase.name, func(t *testing.T) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue