mirror of https://github.com/databricks/cli.git
Pass through $HOME when invoking Terraform (#319)
## Changes This is useful when developing the Databricks Terraform provider where you keep a local-only build of the provider and refer to it using $HOME from `~/.terraformrc`, for example like this: ``` plugin_cache_dir = "$HOME/.terraform.d/plugin-cache" ``` ## Tests That $HOME is passed through cannot be tested as is because the `tfexec.Terraform` struct doesn't expose it through public fields or methods. What can be tested is a successful run of the initialize mutator and this is included in this commit.
This commit is contained in:
parent
2a0f2f70b7
commit
42d29f92c9
|
@ -96,6 +96,12 @@ func (m *initialize) Apply(ctx context.Context, b *bundle.Bundle) ([]bundle.Muta
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Include $HOME in set of environment variables to pass along.
|
||||||
|
home, ok := os.LookupEnv("HOME")
|
||||||
|
if ok {
|
||||||
|
env["HOME"] = home
|
||||||
|
}
|
||||||
|
|
||||||
// Configure environment variables for auth for Terraform to use.
|
// Configure environment variables for auth for Terraform to use.
|
||||||
log.Debugf(ctx, "Environment variables for Terraform: %s", strings.Join(maps.Keys(env), ", "))
|
log.Debugf(ctx, "Environment variables for Terraform: %s", strings.Join(maps.Keys(env), ", "))
|
||||||
err = tf.SetEnv(env)
|
err = tf.SetEnv(env)
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
package terraform
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"os/exec"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/databricks/bricks/bundle"
|
||||||
|
"github.com/databricks/bricks/bundle/config"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestInitEnvironmentVariables(t *testing.T) {
|
||||||
|
_, err := exec.LookPath("terraform")
|
||||||
|
if err != nil {
|
||||||
|
t.Skipf("cannot find terraform binary: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
bundle := &bundle.Bundle{
|
||||||
|
Config: config.Root{
|
||||||
|
Path: t.TempDir(),
|
||||||
|
Bundle: config.Bundle{
|
||||||
|
Environment: "whatever",
|
||||||
|
Terraform: &config.Terraform{
|
||||||
|
ExecPath: "terraform",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
// Trigger initialization of workspace client.
|
||||||
|
// TODO(pietern): create test fixture that initializes a mocked client.
|
||||||
|
t.Setenv("DATABRICKS_HOST", "https://x")
|
||||||
|
t.Setenv("DATABRICKS_TOKEN", "foobar")
|
||||||
|
bundle.WorkspaceClient()
|
||||||
|
|
||||||
|
_, err = Initialize().Apply(context.Background(), bundle)
|
||||||
|
require.NoError(t, err)
|
||||||
|
}
|
Loading…
Reference in New Issue