blacklist certain tests
Some checks failed
Build / build (push) Failing after 6m10s
Publish Image / publish (push) Failing after 24s
Test / build (push) Failing after 6m1s

This commit is contained in:
Chuck Smith
2024-03-28 15:14:05 -04:00
parent 138df71cc8
commit 834de04635
3 changed files with 74 additions and 5 deletions

1
.gitignore vendored
View File

@@ -87,4 +87,5 @@ fabric.properties
.DS_Store
/dist
/.vscode
/monkey-lang

View File

@@ -8,10 +8,16 @@ import (
"monkey/parser"
"monkey/utils"
"os"
"path"
"path/filepath"
"strings"
"testing"
)
var BlacklistedExamples = map[string]bool{
"echoserver": true,
}
func assertEvaluated(t *testing.T, expected interface{}, actual object.Object) {
t.Helper()
@@ -884,17 +890,26 @@ func TestImportSearchPaths(t *testing.T) {
}
func TestExamples(t *testing.T) {
matches, err := filepath.Glob("../examples/*.monkey")
matches, err := filepath.Glob("./examples/*.monkey")
if err != nil {
t.Error(err)
}
for _, match := range matches {
b, err := os.ReadFile(match)
if err != nil {
t.Error(err)
basename := path.Base(match)
name := strings.TrimSuffix(basename, filepath.Ext(basename))
if BlacklistedExamples[name] {
t.Skipf("not testing blacklisted example %s", name)
}
testEval(string(b))
t.Run(name, func(t *testing.T) {
b, err := os.ReadFile(match)
if err != nil {
t.Error(err)
}
testEval(string(b))
})
}
}

View File

@@ -15,6 +15,10 @@ import (
"testing"
)
var BlacklistedExamples = map[string]bool{
"echoserver": true,
}
type vmTestCase struct {
input string
expected interface{}
@@ -1051,6 +1055,55 @@ func TestIntegration(t *testing.T) {
}
}
func TestExamples(t *testing.T) {
if testing.Short() {
t.Skip("skipping test in short mode.")
}
matches, err := filepath.Glob("../examples/*.monkey")
if err != nil {
t.Error(err)
}
for _, match := range matches {
basename := path.Base(match)
name := strings.TrimSuffix(basename, filepath.Ext(basename))
if BlacklistedExamples[name] {
t.Skipf("not testing blacklisted example %s", name)
}
t.Run(name, func(t *testing.T) {
b, err := os.ReadFile(match)
if err != nil {
t.Error(err)
}
input := string(b)
program := parse(input)
c := compiler.New()
err = c.Compile(program)
if err != nil {
t.Log(input)
t.Fatalf("compiler error: %s", err)
}
vm := New(c.Bytecode())
err = vm.Run()
if err != nil {
t.Log(input)
t.Fatalf("vm error: %s", err)
}
if vm.sp != 0 {
t.Log(input)
t.Fatal("vm stack pointer non-zero")
}
})
}
}
func BenchmarkFibonacci(b *testing.B) {
tests := map[string]string{
"iterative": `