Skip to content

Commit 081277d

Browse files
committedDec 6, 2021
internal/plugintest: Migrate from github.com/hashicorp/terraform-exec/tfinstall to github.com/hashicorp/hc-install
Reference: #823
1 parent 76b3563 commit 081277d

File tree

3 files changed

+43
-13
lines changed

3 files changed

+43
-13
lines changed
 

‎go.mod

+3-2
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,11 @@ require (
1414
github.com/google/go-cmp v0.5.6
1515
github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320
1616
github.com/hashicorp/go-hclog v0.15.0
17-
github.com/hashicorp/go-multierror v1.0.0
17+
github.com/hashicorp/go-multierror v1.1.1
1818
github.com/hashicorp/go-plugin v1.4.1
1919
github.com/hashicorp/go-uuid v1.0.1
2020
github.com/hashicorp/go-version v1.3.0
21+
github.com/hashicorp/hc-install v0.3.1-0.20211130192457-6196e6301818
2122
github.com/hashicorp/hcl/v2 v2.3.0
2223
github.com/hashicorp/logutils v1.0.0
2324
github.com/hashicorp/terraform-exec v0.15.0
@@ -31,7 +32,7 @@ require (
3132
github.com/mitchellh/mapstructure v1.1.2
3233
github.com/mitchellh/reflectwalk v1.0.2
3334
github.com/zclconf/go-cty v1.9.1
34-
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b
35+
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e
3536
golang.org/x/tools v0.0.0-20200713011307-fd294ab11aed
3637
google.golang.org/grpc v1.32.0
3738
)

‎go.sum

+8-5
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,7 @@ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
139139
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
140140
github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
141141
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
142-
github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
143142
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
144-
github.com/google/martian/v3 v3.0.0 h1:pMen7vLs8nvgEYhywH3KDWJIJTeEr2ULsVWHWYHQyBs=
145143
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
146144
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
147145
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
@@ -170,8 +168,9 @@ github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9
170168
github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
171169
github.com/hashicorp/go-hclog v0.15.0 h1:qMuK0wxsoW4D0ddCCYwPSTm4KQv1X1ke3WmPWZ0Mvsk=
172170
github.com/hashicorp/go-hclog v0.15.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
173-
github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o=
174171
github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
172+
github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
173+
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
175174
github.com/hashicorp/go-plugin v1.3.0/go.mod h1:F9eH4LrE/ZsRdbwhfjs9k9HoDUwAHnYtXdgmf1AVNs0=
176175
github.com/hashicorp/go-plugin v1.4.1 h1:6UltRQlLN9iZO513VveELp5xyaFxVD2+1OVylE+2E+w=
177176
github.com/hashicorp/go-plugin v1.4.1/go.mod h1:5fGEH17QVwTTcR0zV7yhDPLLmFX9YSZ38b18Udy6vYQ=
@@ -185,6 +184,8 @@ github.com/hashicorp/go-version v1.3.0 h1:McDWVJIU/y+u1BRV06dPaLfLCaT7fUTJLp5r04
185184
github.com/hashicorp/go-version v1.3.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
186185
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
187186
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
187+
github.com/hashicorp/hc-install v0.3.1-0.20211130192457-6196e6301818 h1:24weybnDYSZ7lj5EfDZNPzK9tCSpXreku7uzhUcywBk=
188+
github.com/hashicorp/hc-install v0.3.1-0.20211130192457-6196e6301818/go.mod h1:3LCdWcCDS1gaHC9mhHCGbkYfoY6vdsKohGjugbZdZak=
188189
github.com/hashicorp/hcl/v2 v2.3.0 h1:iRly8YaMwTBAKhn1Ybk7VSdzbnopghktCD031P8ggUE=
189190
github.com/hashicorp/hcl/v2 v2.3.0/go.mod h1:d+FwDBbOLvpAM3Z6J7gPj/VoAGkNe/gm352ZhjJ/Zv8=
190191
github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y=
@@ -317,8 +318,9 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
317318
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
318319
golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
319320
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
320-
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b h1:7mWr3k41Qtv8XlltBkDkl8LoP3mpSgBW8BUoxtEdbXg=
321321
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
322+
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e h1:gsTQYXdTw2Gq7RBsWvlQ91b+aEQ6bXFUngBGuR8sPpI=
323+
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
322324
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
323325
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
324326
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -427,8 +429,9 @@ golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7w
427429
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
428430
golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
429431
golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
430-
golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79 h1:RX8C8PRZc2hTIod4ds8ij+/4RQX3AqhYj3uOHmyaz4E=
431432
golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
433+
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 h1:SrN+KX8Art/Sf4HNj6Zcz06G7VEz+7w9tdXTPOZ7+l4=
434+
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
432435
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E=
433436
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
434437
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=

‎internal/plugintest/config.go

+32-6
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,13 @@ import (
77
"os"
88
"strings"
99

10-
"github.com/hashicorp/terraform-exec/tfinstall"
10+
"github.com/hashicorp/go-version"
11+
install "github.com/hashicorp/hc-install"
12+
"github.com/hashicorp/hc-install/checkpoint"
13+
"github.com/hashicorp/hc-install/fs"
14+
"github.com/hashicorp/hc-install/product"
15+
"github.com/hashicorp/hc-install/releases"
16+
"github.com/hashicorp/hc-install/src"
1117
)
1218

1319
// Config is used to configure the test helper. In most normal test programs
@@ -33,16 +39,36 @@ func DiscoverConfig(sourceDir string) (*Config, error) {
3339
return nil, fmt.Errorf("failed to create temp dir: %w", err)
3440
}
3541

36-
finders := []tfinstall.ExecPathFinder{}
42+
var sources []src.Source
3743
switch {
3844
case tfPath != "":
39-
finders = append(finders, tfinstall.ExactPath(tfPath))
45+
sources = append(sources, &fs.AnyVersion{
46+
ExactBinPath: tfPath,
47+
})
4048
case tfVersion != "":
41-
finders = append(finders, tfinstall.ExactVersion(tfVersion, tfDir))
49+
tfVersion, err := version.NewVersion(tfVersion)
50+
51+
if err != nil {
52+
return nil, fmt.Errorf("invalid Terraform version: %w", err)
53+
}
54+
55+
sources = append(sources, &releases.ExactVersion{
56+
InstallDir: tfDir,
57+
Product: product.Terraform,
58+
Version: tfVersion,
59+
})
4260
default:
43-
finders = append(finders, tfinstall.LookPath(), tfinstall.LatestVersion(tfDir, true))
61+
sources = append(sources, &fs.AnyVersion{
62+
Product: &product.Terraform,
63+
})
64+
sources = append(sources, &checkpoint.LatestVersion{
65+
InstallDir: tfDir,
66+
Product: product.Terraform,
67+
})
4468
}
45-
tfExec, err := tfinstall.Find(context.Background(), finders...)
69+
70+
installer := install.NewInstaller()
71+
tfExec, err := installer.Ensure(context.Background(), sources)
4672
if err != nil {
4773
return nil, err
4874
}

0 commit comments

Comments
 (0)
Please sign in to comment.