121 lines
4.2 KiB
Go
121 lines
4.2 KiB
Go
package recipe
|
|
|
|
import (
|
|
"path"
|
|
"testing"
|
|
|
|
"coopcloud.tech/abra/pkg/config"
|
|
|
|
"github.com/google/go-cmp/cmp"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestGet(t *testing.T) {
|
|
cfg := config.LoadAbraConfig()
|
|
testcases := []struct {
|
|
name string
|
|
recipe Recipe
|
|
}{
|
|
{
|
|
name: "foo",
|
|
recipe: Recipe{
|
|
Name: "foo",
|
|
Dir: path.Join(cfg.GetAbraDir(), "/recipes/foo"),
|
|
GitURL: "https://git.coopcloud.tech/toolshed/foo.git",
|
|
SSHURL: "ssh://git@git.coopcloud.tech:2222/toolshed/foo.git",
|
|
ComposePath: path.Join(cfg.GetAbraDir(), "recipes/foo/compose.yml"),
|
|
ReadmePath: path.Join(cfg.GetAbraDir(), "recipes/foo/README.md"),
|
|
SampleEnvPath: path.Join(cfg.GetAbraDir(), "recipes/foo/.env.sample"),
|
|
AbraShPath: path.Join(cfg.GetAbraDir(), "recipes/foo/abra.sh"),
|
|
},
|
|
},
|
|
{
|
|
name: "foo:1.2.3",
|
|
recipe: Recipe{
|
|
Name: "foo",
|
|
EnvVersion: "1.2.3",
|
|
Dir: path.Join(cfg.GetAbraDir(), "/recipes/foo"),
|
|
GitURL: "https://git.coopcloud.tech/toolshed/foo.git",
|
|
SSHURL: "ssh://git@git.coopcloud.tech:2222/toolshed/foo.git",
|
|
ComposePath: path.Join(cfg.GetAbraDir(), "recipes/foo/compose.yml"),
|
|
ReadmePath: path.Join(cfg.GetAbraDir(), "recipes/foo/README.md"),
|
|
SampleEnvPath: path.Join(cfg.GetAbraDir(), "recipes/foo/.env.sample"),
|
|
AbraShPath: path.Join(cfg.GetAbraDir(), "recipes/foo/abra.sh"),
|
|
},
|
|
},
|
|
{
|
|
name: "mygit.org/myorg/cool-recipe",
|
|
recipe: Recipe{
|
|
Name: "mygit.org/myorg/cool-recipe",
|
|
Dir: path.Join(cfg.GetAbraDir(), "/recipes/mygit_org_myorg_cool-recipe"),
|
|
GitURL: "https://mygit.org/myorg/cool-recipe.git",
|
|
SSHURL: "ssh://git@mygit.org/myorg/cool-recipe.git",
|
|
ComposePath: path.Join(cfg.GetAbraDir(), "recipes/mygit_org_myorg_cool-recipe/compose.yml"),
|
|
ReadmePath: path.Join(cfg.GetAbraDir(), "recipes/mygit_org_myorg_cool-recipe/README.md"),
|
|
SampleEnvPath: path.Join(cfg.GetAbraDir(), "recipes/mygit_org_myorg_cool-recipe/.env.sample"),
|
|
AbraShPath: path.Join(cfg.GetAbraDir(), "recipes/mygit_org_myorg_cool-recipe/abra.sh"),
|
|
},
|
|
},
|
|
{
|
|
name: "mygit.org/myorg/cool-recipe:1.2.4",
|
|
recipe: Recipe{
|
|
Name: "mygit.org/myorg/cool-recipe",
|
|
EnvVersion: "1.2.4",
|
|
Dir: path.Join(cfg.GetAbraDir(), "/recipes/mygit_org_myorg_cool-recipe"),
|
|
GitURL: "https://mygit.org/myorg/cool-recipe.git",
|
|
SSHURL: "ssh://git@mygit.org/myorg/cool-recipe.git",
|
|
ComposePath: path.Join(cfg.GetAbraDir(), "recipes/mygit_org_myorg_cool-recipe/compose.yml"),
|
|
ReadmePath: path.Join(cfg.GetAbraDir(), "recipes/mygit_org_myorg_cool-recipe/README.md"),
|
|
SampleEnvPath: path.Join(cfg.GetAbraDir(), "recipes/mygit_org_myorg_cool-recipe/.env.sample"),
|
|
AbraShPath: path.Join(cfg.GetAbraDir(), "recipes/mygit_org_myorg_cool-recipe/abra.sh"),
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, tc := range testcases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
t.Setenv("ABRA_DIR", "<abraDir>")
|
|
recipe := Get(tc.name)
|
|
if diff := cmp.Diff(tc.recipe, recipe); diff != "" {
|
|
t.Errorf("Recipe mismatch (-want +got):\n%s", diff)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestGetVersionLabelLocalDoesNotUseTimeoutLabel(t *testing.T) {
|
|
r := Get("traefik")
|
|
if err := r.EnsureExists(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
for i := 1; i < 50; i++ {
|
|
label, err := r.GetVersionLabelLocal()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
// NOTE(d1): this is potentially quite a brittle unit test as it needs to
|
|
// hardcode the default timeout label to ensure that the label parser never
|
|
// returns it. hopefully this won't fail too often! if you're here because
|
|
// of a failure, just update the `defaultTimeoutLabel` value & permalink
|
|
// below
|
|
// https://git.coopcloud.tech/toolshed/traefik/src/commit/ac3a47fe8ca3ef92db84f64cfedfbb348000faee/.env.sample#L2
|
|
defaultTimeoutLabel := "300"
|
|
assert.NotEqual(t, label, defaultTimeoutLabel)
|
|
}
|
|
}
|
|
|
|
func TestDirtyMarkerRemoved(t *testing.T) {
|
|
r := Get("abra-test-recipe:1e83340e+U")
|
|
assert.Equal(t, "1e83340e", r.EnvVersion)
|
|
}
|
|
|
|
func TestGetEnvVersionRaw(t *testing.T) {
|
|
v, err := GetEnvVersionRaw("abra-test-recipe:1e83340e+U")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, "1e83340e+U", v)
|
|
}
|