| // Copyright IBM Corp. 2014, 2026 | |
| // SPDX-License-Identifier: BUSL-1.1 | |
| package configs | |
| import ( | |
| "path/filepath" | |
| "testing" | |
| "github.com/hashicorp/go-slug/sourceaddrs" | |
| "github.com/hashicorp/go-slug/sourcebundle" | |
| ) | |
| // TestSourceBundleParser_LoadConfigDir_WithRelativePath tests that when | |
| // LocalPathForSource returns a relative path, LoadConfigDir correctly uses | |
| // it as-is without attempting to convert it. | |
| func TestSourceBundleParser_LoadConfigDir_WithRelativePath(t *testing.T) { | |
| // Use the basics-bundle from stacks testdata which has a component with has a relative source. | |
| bundlePath := "../stacks/stackconfig/testdata/basics-bundle" | |
| bundle, err := sourcebundle.OpenDir(bundlePath) | |
| if err != nil { | |
| t.Fatalf("failed to open source bundle: %s", err) | |
| } | |
| source := sourceaddrs.MustParseSource("../stacks/stackconfig/testdata/basics-bundle").(sourceaddrs.FinalSource) | |
| // Create a SourceBundleParser and load the config directory. | |
| parser := NewSourceBundleParser(bundle) | |
| mod, diags := parser.LoadConfigDir(source) | |
| if diags.HasErrors() { | |
| t.Fatalf("unexpected errors: %s", diags.Error()) | |
| } | |
| if mod == nil { | |
| t.Fatal("expected non-nil module") | |
| } | |
| // Verify that the SourceDir is set and that it's a relative path. | |
| if mod.SourceDir == "" { | |
| t.Error("expected SourceDir to be set, but it was empty") | |
| } | |
| if filepath.IsAbs(mod.SourceDir) { | |
| t.Errorf("expected SourceDir to be relative, but got absolute path: %s", mod.SourceDir) | |
| } | |
| } |