opentofu/internal/getproviders/filesystem_search_test.go
namgyalangmo cb2e9119aa
Update copyright notice (#1232)
Signed-off-by: namgyalangmo <75657887+namgyalangmo@users.noreply.github.com>
2024-02-08 09:48:59 +00:00

58 lines
1.6 KiB
Go

// Copyright (c) The OpenTofu Authors
// SPDX-License-Identifier: MPL-2.0
// Copyright (c) 2023 HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package getproviders
import (
"path/filepath"
"testing"
"github.com/google/go-cmp/cmp"
"github.com/opentofu/opentofu/internal/addrs"
)
func TestSearchLocalDirectory(t *testing.T) {
tests := []struct {
Fixture string
Subdir string
Want map[addrs.Provider]PackageMetaList
}{
{
"symlinks",
"symlink",
map[addrs.Provider]PackageMetaList{
addrs.MustParseProviderSourceString("example.com/foo/bar"): {
{
Provider: addrs.MustParseProviderSourceString("example.com/foo/bar"),
Version: MustParseVersion("1.0.0"),
TargetPlatform: Platform{OS: "linux", Arch: "amd64"},
Filename: "terraform-provider-bar_1.0.0_linux_amd64.zip",
Location: PackageLocalDir("testdata/search-local-directory/symlinks/real/example.com/foo/bar/1.0.0/linux_amd64"),
},
},
// This search doesn't find example.net/foo/bar because only
// the top-level search directory is supported as being a
// symlink, and so we ignore the example.net symlink to
// example.com that is one level deeper.
},
},
}
for _, test := range tests {
t.Run(test.Fixture, func(t *testing.T) {
fullDir := filepath.Join("testdata/search-local-directory", test.Fixture, test.Subdir)
got, err := SearchLocalDirectory(fullDir)
if err != nil {
t.Errorf("unexpected error: %s", err)
}
want := test.Want
if diff := cmp.Diff(want, got); diff != "" {
t.Errorf("wrong result\n%s", diff)
}
})
}
}