@@ -3206,6 +3206,77 @@ systemConfig:
32063206 }
32073207}
32083208
3209+ func TestPackageRepositoryYAMLParsingLocalPath (t * testing.T ) {
3210+ yamlContent := `image:
3211+ name: test-local-repo-parsing
3212+ version: "1.0.0"
3213+
3214+ target:
3215+ os: ubuntu
3216+ dist: ubuntu24
3217+ arch: x86_64
3218+ imageType: raw
3219+
3220+ packageRepositories:
3221+ - codename: "localdeb"
3222+ path: "/data/os-image-composer/localdeb"
3223+ pkey: "[trusted=yes]"
3224+ component: "main"
3225+
3226+ systemConfig:
3227+ name: test
3228+ packages:
3229+ - test-package
3230+ kernel:
3231+ version: "6.12"
3232+ cmdline: "quiet"
3233+ `
3234+
3235+ tmpFile , err := os .CreateTemp ("" , "test-local-repo-*.yml" )
3236+ if err != nil {
3237+ t .Fatalf ("failed to create temp file: %v" , err )
3238+ }
3239+ if err := tmpFile .Chmod (0600 ); err != nil {
3240+ tmpFile .Close ()
3241+ os .Remove (tmpFile .Name ())
3242+ return
3243+ }
3244+ defer os .Remove (tmpFile .Name ())
3245+
3246+ if _ , err := tmpFile .WriteString (yamlContent ); err != nil {
3247+ t .Fatalf ("failed to write temp file: %v" , err )
3248+ }
3249+ tmpFile .Close ()
3250+
3251+ template , err := LoadTemplate (tmpFile .Name (), false )
3252+ if err != nil {
3253+ t .Fatalf ("failed to load YAML template with local package repository: %v" , err )
3254+ }
3255+
3256+ repos := template .GetPackageRepositories ()
3257+ if len (repos ) != 1 {
3258+ t .Fatalf ("expected 1 parsed repository, got %d" , len (repos ))
3259+ }
3260+
3261+ repo := template .GetRepositoryByCodename ("localdeb" )
3262+ if repo == nil {
3263+ t .Fatalf ("expected to find localdeb repository" )
3264+ }
3265+
3266+ if repo .Path != "/data/os-image-composer/localdeb" {
3267+ t .Errorf ("expected repo path '/data/os-image-composer/localdeb', got '%s'" , repo .Path )
3268+ }
3269+ if repo .PKey != "[trusted=yes]" {
3270+ t .Errorf ("expected repo pkey '[trusted=yes]', got '%s'" , repo .PKey )
3271+ }
3272+ if repo .Component != "main" {
3273+ t .Errorf ("expected repo component 'main', got '%s'" , repo .Component )
3274+ }
3275+ if repo .URL != "" {
3276+ t .Errorf ("expected repo URL to be empty for local path repository, got '%s'" , repo .URL )
3277+ }
3278+ }
3279+
32093280func TestPackageRepositoriesWithDuplicateCodenames (t * testing.T ) {
32103281 repos := []PackageRepository {
32113282 {Codename : "duplicate" , URL : "https://first.com" , PKey : "https://first.com/key.pub" },
0 commit comments