terraform-provider-gitea/vendor/github.com/hashicorp/terraform-plugin-test/config.go
Malar Invention 00ebcd295e add vendor
2022-04-03 09:37:16 +05:30

61 lines
1.9 KiB
Go

package tftest
import (
"fmt"
"os"
"path/filepath"
)
// Config is used to configure the test helper. In most normal test programs
// the configuration is discovered automatically by an Init* function using
// DiscoverConfig, but this is exposed so that more complex scenarios can be
// implemented by direct configuration.
type Config struct {
PluginName string
SourceDir string
TerraformExec string
CurrentPluginExec string
PreviousPluginExec string
}
// DiscoverConfig uses environment variables and other means to automatically
// discover a reasonable test helper configuration.
func DiscoverConfig(pluginName string, sourceDir string) (*Config, error) {
var tfExec string
var err error
tfVersion := os.Getenv("TF_ACC_TERRAFORM_VERSION")
if tfVersion == "" {
tfExec = FindTerraform()
if tfExec == "" {
return nil, fmt.Errorf("unable to find 'terraform' executable for testing; either place it in PATH or set TF_ACC_TERRAFORM_PATH explicitly to a direct executable path")
}
} else {
tfExec, err = InstallTerraform(tfVersion)
if err != nil {
return nil, fmt.Errorf("could not install Terraform version %s: %s", tfVersion, err)
}
}
prevExec := os.Getenv("TF_ACC_PREVIOUS_EXEC")
if prevExec != "" {
if info, err := os.Stat(prevExec); err != nil {
return nil, fmt.Errorf("TF_ACC_PREVIOUS_EXEC of %s cannot be used: %s", prevExec, err)
} else if info.IsDir() {
return nil, fmt.Errorf("TF_ACC_PREVIOUS_EXEC of %s is directory, not file", prevExec)
}
}
absPluginExecPath, err := filepath.Abs(os.Args[0])
if err != nil {
return nil, fmt.Errorf("could not resolve plugin exec path %s: %s", os.Args[0], err)
}
return &Config{
PluginName: pluginName,
SourceDir: sourceDir,
TerraformExec: tfExec,
CurrentPluginExec: absPluginExecPath,
PreviousPluginExec: os.Getenv("TF_ACC_PREVIOUS_EXEC"),
}, nil
}