func Run()

in pkg/testutil/componentsuite/componentsuite.go [38:96]


func Run(t *testing.T, testSuiteFile string) {
	t.Logf("Running tests for suite %q", testSuiteFile)

	ctx := context.Background()

	data, err := ioutil.ReadFile(testSuiteFile)
	if err != nil {
		t.Fatalf("while reading test suite file %q, %v", testSuiteFile, err)
	}

	ts := &ComponentTestSuite{}
	if err := converter.FromFileName(testSuiteFile, data).ToObject(ts); err != nil {
		t.Fatalf("while parsing test-suite file %q, %v", testSuiteFile, err)
	}

	os.Chdir(filepath.Join(filepath.Dir(testSuiteFile), ts.RootDirectory))

	// Inlining expects an absolute parent path, so make the path absolute now.
	cfile := ts.ComponentFile
	if !filepath.IsAbs(cfile) {
		cfile, err = filepath.Abs(cfile)
		if err != nil {
			t.Fatalf("While making an absolute path out of %s: %v", cfile, err)
		}
	}

	cdata, err := ioutil.ReadFile(cfile)
	if err != nil {
		t.Fatalf("While reading component file %q, %v", cfile, err)
	}

	bw, err := wrapper.FromRaw(string(converter.YAML), cdata)
	if err != nil {
		t.Fatalf("While converting component file %q, %v", cfile, err)
	}

	if bw.Kind() != "Component" && bw.Kind() != "ComponentBuilder" {
		t.Fatalf("Got kind %q, but component kind must be \"Component\" or \"ComponentBuilder\"", bw.Kind())
	}

	var comp *bundle.Component
	if bw.Kind() == "ComponentBuilder" {
		inliner := build.NewLocalInliner(ts.RootDirectory)
		comp, err = inliner.ComponentFiles(ctx, bw.ComponentBuilder(), cfile)
		if err != nil {
			t.Fatalf("Inlining component files: %v", err)
		}
	} else {
		comp = bw.Component()
	}

	for _, tc := range ts.TestCases {
		tci := tc // necessary.
		t.Run(tc.Description, func(t *testing.T) {
			t.Parallel()
			runTest(t, comp.DeepCopy(), tci)
		})
	}
}