func NewKRMBlueprintTest()

in infra/blueprint-test/pkg/krmt/krm.go [105:166]


func NewKRMBlueprintTest(t testing.TB, opts ...krmtOption) *KRMBlueprintTest {
	krmt := &KRMBlueprintTest{
		name:       fmt.Sprintf("%s KRM Blueprint", t.Name()),
		t:          t,
		setters:    make(map[string]string),
		updatePkgs: true,
		timeout:    "10m",
	}
	// default KRM blueprint methods
	krmt.init = krmt.DefaultInit
	krmt.apply = krmt.DefaultApply
	krmt.verify = krmt.DefaultVerify
	krmt.teardown = krmt.DefaultTeardown
	// apply options
	for _, opt := range opts {
		opt(krmt)
	}
	// if no custom logger, set default based on test verbosity
	if krmt.logger == nil {
		krmt.logger = utils.GetLoggerFromT()
	}
	// if explicit exampleDir is provided, validate it else try auto discovery
	if krmt.exampleDir != "" {
		_, err := os.Stat(krmt.exampleDir)
		if os.IsNotExist(err) {
			t.Fatalf("Dir path %s does not exist", krmt.exampleDir)
		}
	} else {
		exampleDir, err := discovery.GetConfigDirFromTestDir(utils.GetWD(t))
		if err != nil {
			t.Fatalf("unable to detect KRM dir :%v", err)
		}
		krmt.exampleDir = exampleDir
	}
	// if explicit resourcesDir is provided, validate it.
	if len(krmt.additionalResources) != 0 {
		for _, path := range krmt.additionalResources {
			_, err := os.Stat(path)
			if os.IsNotExist(err) {
				t.Fatalf("Path for additional resources %s does not exist", path)
			}
		}
	}

	// discover test config
	var err error
	krmt.BlueprintTestConfig, err = discovery.GetTestConfig(path.Join(krmt.exampleDir, discovery.DefaultTestConfigFilename))
	if err != nil {
		t.Fatal(err)
	}
	// if no explicit build directory is provided, setup build directory
	if krmt.buildDir == "" {
		krmt.buildDir = krmt.getDefaultBuildDir()
	}
	// configure kpt to run in buildDir
	krmt.kpt = kpt.NewCmdConfig(t, kpt.WithDir(krmt.buildDir))
	// get well known setters from env vars
	krmt.getKnownSettersFromEnv()

	krmt.logger.Logf(krmt.t, "Running tests KRM configs in %s", krmt.exampleDir)
	return krmt
}