/
cloudservices
/
common
Обзор
Документация
Войти
/
cloudservices
/
common
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
test/config_test.go
70 строк
2 KB
Ivan
init
26 июл 2026, 11:34
26 июл 2026, 11:34
46b4481
Код
Авторство
О чём код?
package common_test import ( "os" "path/filepath" "testing" common "gitverse.ru/cloudservices/common" ) type testConfig struct { Name string `yaml:"name"` Nested testNested `yaml:"nested"` Items []string `yaml:"items"` } type testNested struct { URL string `yaml:"url"` } func TestLoadConfigExpandsEnvironmentVariables(t *testing.T) { t.Setenv("COMMON_TEST_NAME", "service") t.Setenv("COMMON_TEST_URL", "https://example.test") t.Setenv("COMMON_TEST_ITEM", "item-value") path := filepath.Join(t.TempDir(), "config.yaml") data := "name: ${COMMON_TEST_NAME}\nnested:\n url: $COMMON_TEST_URL\nitems:\n - first\n - ${COMMON_TEST_ITEM}\n" if err := os.WriteFile(path, []byte(data), 0o600); err != nil { t.Fatal(err) } var got testConfig if err := common.LoadConfig(path, &got); err != nil { t.Fatalf("LoadConfig() error = %v", err) } want := testConfig{Name: "service", Nested: testNested{URL: "https://example.test"}, Items: []string{"first", "item-value"}} if got.Name != want.Name || got.Nested.URL != want.Nested.URL || len(got.Items) != len(want.Items) || got.Items[1] != want.Items[1] { t.Errorf("LoadConfig() = %#v, want %#v", got, want) } } func TestLoadConfigLoadsRelativeEnvFile(t *testing.T) { dir := t.TempDir() if err := os.WriteFile(filepath.Join(dir, ".env"), []byte("COMMON_TEST_FROM_FILE=loaded\n"), 0o600); err != nil { t.Fatal(err) } t.Setenv("COMMON_TEST_FROM_FILE", "") os.Unsetenv("COMMON_TEST_FROM_FILE") path := filepath.Join(dir, "config.yaml") if err := os.WriteFile(path, []byte("env_file: .env\nname: $COMMON_TEST_FROM_FILE\n"), 0o600); err != nil { t.Fatal(err) } var got testConfig if err := common.LoadConfig(path, &got); err != nil { t.Fatalf("LoadConfig() error = %v", err) } if got.Name != "loaded" { t.Errorf("name = %q, want %q", got.Name, "loaded") } } func TestLoadConfigMissingFile(t *testing.T) { var got testConfig if err := common.LoadConfig(filepath.Join(t.TempDir(), "missing.yaml"), &got); err == nil { t.Fatal("LoadConfig() error = nil, want an error") } }