Sybren A. Stüvel
e70dad2177
Flamenco Manager now has a "storage path" config option, which will be used by Shaman if enabled. Now the `{jobs}` implicit variable will always exist, its value depending on whether Shaman is enabled or not.
95 lines
2.9 KiB
Go
95 lines
2.9 KiB
Go
package config
|
|
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestDefaultSettings(t *testing.T) {
|
|
config, err := loadConf("nonexistant.yaml")
|
|
assert.NotNil(t, err) // should indicate an error to open the file.
|
|
|
|
// The settings should contain the defaults, though.
|
|
assert.Equal(t, latestConfigVersion, config.Meta.Version)
|
|
assert.Equal(t, defaultConfig.TaskLogsPath, config.TaskLogsPath)
|
|
assert.Equal(t, defaultConfig.DatabaseDSN, config.DatabaseDSN)
|
|
|
|
assert.Equal(t, false, config.Variables["ffmpeg"].IsTwoWay)
|
|
assert.Equal(t, "ffmpeg", config.Variables["ffmpeg"].Values[0].Value)
|
|
assert.Equal(t, VariablePlatformLinux, config.Variables["ffmpeg"].Values[0].Platform)
|
|
}
|
|
|
|
func TestVariableValidation(t *testing.T) {
|
|
c := DefaultConfig()
|
|
|
|
platformless := c.Variables["blender"]
|
|
platformless.Values = VariableValues{
|
|
VariableValue{Value: "/path/to/blender"},
|
|
VariableValue{Platform: "linux", Value: "/valid/path/blender"},
|
|
}
|
|
c.Variables["blender"] = platformless
|
|
|
|
c.checkVariables()
|
|
|
|
assert.Equal(t, c.Variables["blender"].Values[0].Value, "/path/to/blender")
|
|
assert.Equal(t, c.Variables["blender"].Values[1].Value, "/valid/path/blender")
|
|
}
|
|
|
|
// TODO: Test two-way variables. Even though they're not currently in the
|
|
// default configuration, they should work.
|
|
|
|
func TestStorageImplicitVariablesWithShaman(t *testing.T) {
|
|
c := DefaultConfig(func(c *Conf) {
|
|
// Having the Shaman enabled should create an implicit variable "{jobs}" at the Shaman checkout path.
|
|
c.StoragePath = "/path/to/shaman/storage"
|
|
c.Shaman.Enabled = true
|
|
|
|
c.Variables["jobs"] = Variable{
|
|
IsTwoWay: true,
|
|
Values: []VariableValue{
|
|
{
|
|
Audience: VariableAudienceAll,
|
|
Platform: VariablePlatformAll,
|
|
Value: "this value should not be seen",
|
|
},
|
|
},
|
|
}
|
|
})
|
|
|
|
assert.NotContains(t, c.Variables, "jobs", "implicit variables should erase existing variables with the same name")
|
|
if !assert.Contains(t, c.implicitVariables, "jobs") {
|
|
t.FailNow()
|
|
}
|
|
assert.False(t, c.implicitVariables["jobs"].IsTwoWay)
|
|
assert.Equal(t, c.Shaman.CheckoutPath(), c.implicitVariables["jobs"].Values[0].Value)
|
|
}
|
|
|
|
func TestStorageImplicitVariablesWithoutShaman(t *testing.T) {
|
|
c := DefaultConfig(func(c *Conf) {
|
|
// Having the Shaman disabled should create an implicit variable "{jobs}" at the storage path.
|
|
c.StoragePath = "/path/to/shaman/storage"
|
|
c.Shaman.Enabled = false
|
|
|
|
c.Variables["jobs"] = Variable{
|
|
IsTwoWay: true,
|
|
Values: []VariableValue{
|
|
{
|
|
Audience: VariableAudienceAll,
|
|
Platform: VariablePlatformAll,
|
|
Value: "this value should not be seen",
|
|
},
|
|
},
|
|
}
|
|
})
|
|
|
|
assert.NotContains(t, c.Variables, "jobs", "implicit variables should erase existing variables with the same name")
|
|
if !assert.Contains(t, c.implicitVariables, "jobs") {
|
|
t.FailNow()
|
|
}
|
|
assert.False(t, c.implicitVariables["jobs"].IsTwoWay)
|
|
assert.Equal(t, c.StoragePath, c.implicitVariables["jobs"].Values[0].Value)
|
|
}
|