fix: multiple extra-files are not evaluated properly (#61)

Quoting issues caused multiple extra-files to be ignored.
This commit is contained in:
Julian Tölle 2024-09-15 20:59:17 +02:00 committed by GitHub
parent 7a3d46eac7
commit 2567293368
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 68 additions and 3 deletions

View file

@ -26,7 +26,7 @@ runs:
- run - run
- --forge=github - --forge=github
- --branch=${{ inputs.branch }} - --branch=${{ inputs.branch }}
- --extra-files=${{ inputs.extra-files }} - --extra-files="${{ inputs.extra-files }}"
env: env:
GITHUB_TOKEN: ${{ inputs.token }} GITHUB_TOKEN: "${{ inputs.token }}"
GITHUB_USER: "oauth2" GITHUB_USER: "oauth2"

View file

@ -95,6 +95,12 @@ func run(cmd *cobra.Command, _ []string) error {
} }
func parseExtraFiles(input string) []string { func parseExtraFiles(input string) []string {
// We quote the arg to avoid issues with the expected newlines in the value.
// Need to remove those quotes before parsing the data
input = strings.Trim(input, `"`)
// In some situations we get a "\n" sequence, where we actually expect new lines,
// replace the two characters with an actual new line
input = strings.ReplaceAll(input, `\n`, "\n")
lines := strings.Split(input, "\n") lines := strings.Split(input, "\n")
extraFiles := make([]string, 0, len(lines)) extraFiles := make([]string, 0, len(lines))

59
cmd/rp/cmd/run_test.go Normal file
View file

@ -0,0 +1,59 @@
package cmd
import (
"testing"
"github.com/stretchr/testify/assert"
)
func Test_parseExtraFiles(t *testing.T) {
tests := []struct {
name string
input string
want []string
}{
{
name: "empty",
input: ``,
want: []string{},
},
{
name: "empty quoted",
input: `""`,
want: []string{},
},
{
name: "single",
input: `foo.txt`,
want: []string{"foo.txt"},
},
{
name: "single quoted",
input: `"foo.txt"`,
want: []string{"foo.txt"},
},
{
name: "multiple",
input: `foo.txt
dir/Chart.yaml`,
want: []string{"foo.txt", "dir/Chart.yaml"},
},
{
name: "multiple quoted",
input: `"foo.txt
dir/Chart.yaml"`,
want: []string{"foo.txt", "dir/Chart.yaml"},
},
{
name: "multiple with broken new lines",
input: `"action.yml\ntemplates/run.yml\n"`,
want: []string{"action.yml", "templates/run.yml"},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := parseExtraFiles(tt.input)
assert.Equal(t, tt.want, got)
})
}
}

View file

@ -33,4 +33,4 @@ releaser-pleaser:
rp run \ rp run \
--forge=gitlab \ --forge=gitlab \
--branch=$[[ inputs.branch ]] \ --branch=$[[ inputs.branch ]] \
--extra-files=$[[ inputs.extra-files ]] --extra-files="$[[ inputs.extra-files ]]"