diff --git a/addrs/provider.go b/addrs/provider.go index c2e193f4e..c0055c66f 100644 --- a/addrs/provider.go +++ b/addrs/provider.go @@ -156,8 +156,8 @@ func (pt Provider) LegacyString() string { if pt.IsZero() { panic("called LegacyString on zero-value addrs.Provider") } - if pt.Namespace != LegacyProviderNamespace { - panic(pt.String() + " is not a legacy addrs.Provider") + if pt.Namespace != LegacyProviderNamespace && pt.Namespace != BuiltInProviderNamespace { + panic(pt.String() + " cannot be represented as a legacy string") } return pt.Type } diff --git a/addrs/provider_test.go b/addrs/provider_test.go index b58428593..0e02a61fb 100644 --- a/addrs/provider_test.go +++ b/addrs/provider_test.go @@ -54,6 +54,37 @@ func TestProviderString(t *testing.T) { } } +func TestProviderLegacyString(t *testing.T) { + tests := []struct { + Input Provider + Want string + }{ + { + Provider{ + Type: "test", + Hostname: DefaultRegistryHost, + Namespace: LegacyProviderNamespace, + }, + "test", + }, + { + Provider{ + Type: "terraform", + Hostname: BuiltInProviderHost, + Namespace: BuiltInProviderNamespace, + }, + "terraform", + }, + } + + for _, test := range tests { + got := test.Input.LegacyString() + if got != test.Want { + t.Errorf("wrong result for %s\ngot: %s\nwant: %s", test.Input.String(), got, test.Want) + } + } +} + func TestProviderDisplay(t *testing.T) { tests := []struct { Input Provider