diff --git a/test/test_framework_test.go b/test/test_framework_test.go index d0115d24..739cd89d 100644 --- a/test/test_framework_test.go +++ b/test/test_framework_test.go @@ -5498,3 +5498,28 @@ func TestEnvironmentForUnitTests(t *testing.T) { assert.NoError(t, result.Error) } } +func TestGetTests(t *testing.T) { + t.Parallel() + + const code = ` + import Test + + pub fun test1() { + log("test1") + } + + pub fun test2() { + log("test2") + } + + pub fun test3() { + log("test3") + } + ` + + runner := NewTestRunner() + tests, err := runner.GetTests(code) + require.NoError(t, err) + + assert.ElementsMatch(t, []string{"test1", "test2", "test3"}, tests) +} diff --git a/test/test_runner.go b/test/test_runner.go index 23e51933..10635fa6 100644 --- a/test/test_runner.go +++ b/test/test_runner.go @@ -284,6 +284,25 @@ func (r *TestRunner) RunTests(script string) (results Results, err error) { return results, err } +func (r *TestRunner) GetTests(script string) ([]string, error) { + program, _, err := r.parseCheckAndInterpret(script) + if err != nil { + return nil, err + } + + tests := make([]string, 0) + + for _, funcDecl := range program.Program.FunctionDeclarations() { + funcName := funcDecl.Identifier.Identifier + + if strings.HasPrefix(funcName, testFunctionPrefix) { + tests = append(tests, funcName) + } + } + + return tests, nil +} + func (r *TestRunner) replaceImports(code string) string { return r.backend.replaceImports(code) }