Files
atlantis/server/core/runtime/runtime_test.go
Nish Krishnan d914eafd2a Move core workflow packages under core. (#1684)
* Move core workflow packages under core.

* lint.
2021-07-01 12:54:44 -07:00

96 lines
1.8 KiB
Go

package runtime_test
import (
"fmt"
"testing"
"github.com/runatlantis/atlantis/server/core/runtime"
. "github.com/runatlantis/atlantis/testing"
)
func TestGetPlanFilename(t *testing.T) {
cases := []struct {
workspace string
projectName string
exp string
}{
{
"workspace",
"",
"workspace.tfplan",
},
{
"workspace",
"project",
"project-workspace.tfplan",
},
{
"workspace",
"project/with/slash",
"project::with::slash-workspace.tfplan",
},
{
"workspace",
"project with space",
"project with space-workspace.tfplan",
},
{
"workspace😀",
"project😀",
"project😀-workspace😀.tfplan",
},
// Previously we replaced invalid chars with -'s, however we now
// rely on validation of the atlantis.yaml file to ensure the name's
// don't contain chars that need to be url encoded. So now these
// chars shouldn't get replaced.
{
"default",
`all.invalid.chars \/"*?<>`,
"all.invalid.chars \\::\"*?<>-default.tfplan",
},
}
for i, c := range cases {
t.Run(fmt.Sprintf("case %d", i), func(t *testing.T) {
Equals(t, c.exp, runtime.GetPlanFilename(c.workspace, c.projectName))
})
}
}
func TestProjectNameFromPlanfile(t *testing.T) {
cases := []struct {
workspace string
filename string
exp string
}{
{
"workspace",
"workspace.tfplan",
"",
},
{
"workspace",
"project-workspace.tfplan",
"project",
},
{
"workspace",
"project-workspace-workspace.tfplan",
"project-workspace",
},
{
"workspace",
"project::with::slashes::-workspace.tfplan",
"project/with/slashes/",
},
}
for i, c := range cases {
t.Run(fmt.Sprintf("case %d", i), func(t *testing.T) {
act, err := runtime.ProjectNameFromPlanfile(c.workspace, c.filename)
Ok(t, err)
Equals(t, c.exp, act)
})
}
}