blob: 68226c46c18af08ce404e8c92ab8f647dc0d788d [file] [log] [blame]
package common
import (
"bytes"
"context"
"fmt"
"os/exec"
"strings"
)
// GenTestList queries the CTS for the newline delimited list of test names
func GenTestList(ctx context.Context, ctsDir, node string) (string, error) {
// Run 'src/common/runtime/cmdline.ts' to obtain the full test list
cmd := exec.CommandContext(ctx, node,
"-e", "require('./src/common/tools/setup-ts-in-node.js');require('./src/common/runtime/cmdline.ts');",
"--", // Start of arguments
// src/common/runtime/helper/sys.ts expects 'node file.js <args>'
// and slices away the first two arguments. When running with '-e', args
// start at 1, so just inject a placeholder argument.
"placeholder-arg",
"--list",
"webgpu:*",
)
cmd.Dir = ctsDir
stderr := bytes.Buffer{}
cmd.Stderr = &stderr
out, err := cmd.Output()
if err != nil {
return "", fmt.Errorf("failed to generate test list: %w\n%v", err, stderr.String())
}
tests := []string{}
for _, test := range strings.Split(string(out), "\n") {
if test != "" {
tests = append(tests, test)
}
}
return strings.Join(tests, "\n"), nil
}