2024-04-10 22:39:55 +02:00
package run
import (
"context"
2025-07-14 20:46:51 +00:00
"errors"
"fmt"
2024-04-10 22:39:55 +02:00
"testing"
2025-07-14 20:46:51 +00:00
runnerv1 "code.forgejo.org/forgejo/actions-proto/runner/v1"
2025-07-03 19:01:33 +02:00
"runner.forgejo.org/internal/pkg/labels"
2024-04-10 22:39:55 +02:00
"github.com/stretchr/testify/assert"
)
2025-07-14 20:46:51 +00:00
func TestExplainFailedGenerateWorkflow ( t * testing . T ) {
logged := ""
log := func ( message string , args ... any ) {
logged += fmt . Sprintf ( message , args ... ) + "\n"
}
task := & runnerv1 . Task {
WorkflowPayload : [ ] byte ( "on: [push]\njobs:\n" ) ,
}
generateWorkflowError := errors . New ( "message 1\nmessage 2" )
err := explainFailedGenerateWorkflow ( task , log , generateWorkflowError )
assert . Error ( t , err )
assert . Equal ( t , "1: on: [push]\n2: jobs:\n3: \nErrors were found and although they tend to be cryptic the line number they refer to gives a hint as to where the problem might be.\nmessage 1\nmessage 2\n" , logged )
}
2024-04-10 22:39:55 +02:00
func TestLabelUpdate ( t * testing . T ) {
ctx := context . Background ( )
ls := labels . Labels { }
initialLabel , err := labels . Parse ( "testlabel:docker://alpine" )
2024-04-10 23:20:34 +02:00
assert . NoError ( t , err )
2024-04-10 22:39:55 +02:00
ls = append ( ls , initialLabel )
newLs := labels . Labels { }
newLabel , err := labels . Parse ( "next label:host" )
2024-04-10 23:20:34 +02:00
assert . NoError ( t , err )
2024-04-10 22:39:55 +02:00
newLs = append ( newLs , initialLabel )
newLs = append ( newLs , newLabel )
runner := Runner {
labels : ls ,
}
assert . Contains ( t , runner . labels , initialLabel )
assert . NotContains ( t , runner . labels , newLabel )
runner . Update ( ctx , newLs )
assert . Contains ( t , runner . labels , initialLabel )
assert . Contains ( t , runner . labels , newLabel )
}