package config import ( "os" "path/filepath" "testing" ) func setupTestConfigFile(content string) (string, error) { // Create a temporary file dir, err := os.MkdirTemp("", "config_test") if err != nil { return "", err } filePath := filepath.Join(dir, "test_config.yml") // Write content to the temp file if err := os.WriteFile(filePath, []byte(content), 0644); err != nil { return "", err } return filePath, nil } func TestReadConfigWithDefaultValues(t *testing.T) { ymlContent := `bundle: true platform: browser format: esm sourcemap: true outdir: public html: index.html port: 8080 ` filePath, err := setupTestConfigFile(ymlContent) if err != nil { t.Fatalf("Failed to setup test config file: %v", err) } defer os.RemoveAll(filepath.Dir(filePath)) config, err := ReadConfig(filePath) if err != nil { t.Fatalf("Failed to read config: %v", err) } expected := &Config{ Common: Common{ Bundle: true, Sourcemap: true, Platform: "browser", Format: "esm", Outdir: "public", }, } if config.Platform != expected.Platform { t.Errorf("ReadConfig().SomeField = %+v, expected %+v", config.Platform, expected.Platform) } if config.Format != expected.Format { t.Errorf("ReadConfig().SomeField = %+v, expected %+v", config.Format, expected.Format) } if config.Outdir != expected.Outdir { t.Errorf("ReadConfig().SomeField = %+v, expected %+v", config.Outdir, expected.Outdir) } if config.Bundle != expected.Bundle { t.Errorf("ReadConfig().SomeField = %+v, expected %+v", config.Bundle, expected.Bundle) } if config.Sourcemap != expected.Sourcemap { t.Errorf("ReadConfig().SomeField = %+v, expected %+v", config.Sourcemap, expected.Sourcemap) } if config.Serve.Html != "index.html" { t.Errorf("ReadConfig().SomeField = %+v, expected %+v", config.Serve.Html, "index.html") } if config.Serve.Port != 8080 { t.Errorf("ReadConfig().SomeField = %+v, expected %+v", config.Serve.Port, 8080) } } func TestReadConfigWithCustomBuildConfig(t *testing.T) { ymlContent := `build: minify: true minifyWhitespace: true sourcemap: false ` filePath, err := setupTestConfigFile(ymlContent) if err != nil { t.Fatalf("Failed to setup test config file: %v", err) } defer os.RemoveAll(filepath.Dir(filePath)) config, err := ReadConfig(filePath) if err != nil { t.Fatalf("Failed to read config: %v", err) } expected := &BuildConfig{ Common: Common{ Minify: true, MinifyWhitespace: true, MinifyIdentifiers: false, Bundle: true, Sourcemap: false, }, } if config.Build.Minify != expected.Minify { t.Errorf("ReadConfig().SomeField = %+v, expected %+v", config.Build.Minify, expected.Minify) } if config.Build.MinifyWhitespace != expected.MinifyWhitespace { t.Errorf("ReadConfig().SomeField = %+v, expected %+v", config.Build.MinifyWhitespace, expected.MinifyWhitespace) } if config.Build.MinifyIdentifiers != expected.MinifyIdentifiers { t.Errorf("ReadConfig().SomeField = %+v, expected %+v", config.Build.MinifyIdentifiers, expected.MinifyIdentifiers) } if config.Build.Bundle != expected.Bundle { t.Errorf("ReadConfig().SomeField = %+v, expected %+v", config.Build.Bundle, expected.Bundle) } if config.Build.Sourcemap != expected.Sourcemap { t.Errorf("ReadConfig().SomeField = %+v, expected %+v", config.Build.Sourcemap, expected.Sourcemap) } }