in cli/bptest/init.go [14:73]
func initTest(name string) error {
// check if test already exist
testDir := path.Join(intTestPath, name)
exists, err := util.Exists(testDir)
if err != nil {
return err
}
if exists {
return fmt.Errorf("%s already exists", testDir)
}
// write go mod if not exists
goModpath := path.Join(intTestPath, goModFilename)
exists, err = util.Exists(goModpath)
if err != nil {
return err
}
if !exists {
goMod, err := getTmplFileContents(goModFilename)
if err != nil {
return err
}
cwd, err := os.Getwd()
if err != nil {
return err
}
err = writeFile(goModpath, fmt.Sprintf(goMod, path.Base(cwd)))
if err != nil {
return fmt.Errorf("error writing go mod file: %w", err)
}
}
// discover test configs
testCfg, err := discovery.GetConfigDirFromTestDir(testDir)
if err != nil {
return fmt.Errorf("unable to discover test configs for %s: %w", testDir, err)
}
// Parse config to expose outputs within test
mod, diags := tfconfig.LoadModule(testCfg)
if diags.HasErrors() {
return fmt.Errorf("error parsing outputs: %w", diags)
}
outputs := make([]string, 0, len(mod.Outputs))
for _, op := range mod.Outputs {
// todo(bharathkkb): make templates type aware
outputs = append(outputs, op.Name)
}
// render and write test
testFile, err := getBPTestFromTmpl(name, outputs)
if err != nil {
return fmt.Errorf("error creating blueprint test: %w", err)
}
err = os.MkdirAll(testDir, os.ModePerm)
if err != nil {
return fmt.Errorf("error creating test dir: %w", err)
}
return writeFile(path.Join(testDir, fmt.Sprintf("%s_test.go", strcase.ToSnake(name))), testFile)
}