github.com/nektos/act@v0.2.83/pkg/schema/schema_test.go (about)

     1  package schema
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  	"gopkg.in/yaml.v3"
     8  )
     9  
    10  func TestAdditionalFunctions(t *testing.T) {
    11  	var node yaml.Node
    12  	err := yaml.Unmarshal([]byte(`
    13  on: push
    14  jobs:
    15    job-with-condition:
    16      runs-on: self-hosted
    17      if: success() || success('joba', 'jobb') || failure() || failure('joba', 'jobb') || always() || cancelled()
    18      steps:
    19      - run: exit 0
    20  `), &node)
    21  	if !assert.NoError(t, err) {
    22  		return
    23  	}
    24  	err = (&Node{
    25  		Definition: "workflow-root-strict",
    26  		Schema:     GetWorkflowSchema(),
    27  	}).UnmarshalYAML(&node)
    28  	assert.NoError(t, err)
    29  }
    30  
    31  func TestAdditionalFunctionsFailure(t *testing.T) {
    32  	var node yaml.Node
    33  	err := yaml.Unmarshal([]byte(`
    34  on: push
    35  jobs:
    36    job-with-condition:
    37      runs-on: self-hosted
    38      if: success() || success('joba', 'jobb') || failure() || failure('joba', 'jobb') || always('error')
    39      steps:
    40      - run: exit 0
    41  `), &node)
    42  	if !assert.NoError(t, err) {
    43  		return
    44  	}
    45  	err = (&Node{
    46  		Definition: "workflow-root-strict",
    47  		Schema:     GetWorkflowSchema(),
    48  	}).UnmarshalYAML(&node)
    49  	assert.Error(t, err)
    50  }
    51  
    52  func TestAdditionalFunctionsSteps(t *testing.T) {
    53  	var node yaml.Node
    54  	err := yaml.Unmarshal([]byte(`
    55  on: push
    56  jobs:
    57    job-with-condition:
    58      runs-on: self-hosted
    59      steps:
    60      - run: exit 0
    61        if: success() || failure() || always()
    62  `), &node)
    63  	if !assert.NoError(t, err) {
    64  		return
    65  	}
    66  	err = (&Node{
    67  		Definition: "workflow-root-strict",
    68  		Schema:     GetWorkflowSchema(),
    69  	}).UnmarshalYAML(&node)
    70  	assert.NoError(t, err)
    71  }
    72  
    73  func TestAdditionalFunctionsStepsExprSyntax(t *testing.T) {
    74  	var node yaml.Node
    75  	err := yaml.Unmarshal([]byte(`
    76  on: push
    77  jobs:
    78    job-with-condition:
    79      runs-on: self-hosted
    80      steps:
    81      - run: exit 0
    82        if: ${{ success() || failure() || always() }}
    83  `), &node)
    84  	if !assert.NoError(t, err) {
    85  		return
    86  	}
    87  	err = (&Node{
    88  		Definition: "workflow-root-strict",
    89  		Schema:     GetWorkflowSchema(),
    90  	}).UnmarshalYAML(&node)
    91  	assert.NoError(t, err)
    92  }