1// SPDX-License-Identifier: AGPL-3.0-or-later
2
3package domain
4
5import (
6 "testing"
7
8 "github.com/stretchr/testify/assert"
9 "github.com/stretchr/testify/require"
10)
11
12func TestParseWorkflowPath(t *testing.T) {
13 for in, want := range map[string]string{
14 "release.yml": ".github/workflows/release.yml",
15 " release.yaml ": ".github/workflows/release.yaml",
16 ".github/workflows/release.yml": ".github/workflows/release.yml",
17 ".github/workflows/a.b-c_d.yaml": ".github/workflows/a.b-c_d.yaml",
18 } {
19 got, err := ParseWorkflowPath(in)
20 require.NoError(t, err, in)
21 assert.Equal(t, want, got, in)
22 }
23 for _, in := range []string{
24 "", " ", "release", "release.txt", ".yml", ".github/workflows/.yml",
25 "sub/release.yml", ".github/workflows/sub/release.yml", ".github/workflows/../release.yml",
26 "/.github/workflows/release.yml", ".github/other/release.yml",
27 ".github/workflows//release.yml", "./.github/workflows/release.yml", ".github/workflows/sub/../release.yml",
28 ".github/workflows/./release.yml", ".github//workflows/release.yml", "github/workflows/release.yml",
29 ".github/workflows/release.yml/", "..", "../release.yml", ".github/workflows/..", ".github/workflows/.", "x\\y.yml", "a\x00.yml", ".github/workflows/",
30 } {
31 _, err := ParseWorkflowPath(in)
32 assert.ErrorIs(t, err, ErrInvalid, "%q", in)
33 }
34}