54 lines
1.3 KiB
Go
54 lines
1.3 KiB
Go
package fourslash
|
|
|
|
import (
|
|
"bufio"
|
|
"os"
|
|
"path/filepath"
|
|
"runtime"
|
|
"strings"
|
|
"sync"
|
|
"testing"
|
|
)
|
|
|
|
var failingTests = sync.OnceValue(func() map[string]struct{} {
|
|
failingTestsSet := make(map[string]struct{})
|
|
|
|
// Get the path to failingTests.txt relative to this source file
|
|
_, thisFile, _, ok := runtime.Caller(0)
|
|
if !ok {
|
|
return failingTestsSet
|
|
}
|
|
|
|
failingTestsPath := filepath.Join(filepath.Dir(thisFile), "_scripts", "failingTests.txt") //nolint:forbidigo
|
|
|
|
file, err := os.Open(failingTestsPath) //nolint:forbidigo
|
|
if err != nil {
|
|
return failingTestsSet
|
|
}
|
|
defer file.Close() //nolint:forbidigo
|
|
|
|
scanner := bufio.NewScanner(file)
|
|
for scanner.Scan() {
|
|
line := strings.TrimSpace(scanner.Text())
|
|
if line != "" {
|
|
failingTestsSet[line] = struct{}{}
|
|
}
|
|
}
|
|
return failingTestsSet
|
|
})
|
|
|
|
// SkipIfFailing checks if the current test is in the failingTests.txt file
|
|
// and skips it unless the TSGO_FOURSLASH_IGNORE_FAILING environment variable is set.
|
|
// This allows tests to be marked as failing without modifying the test files themselves.
|
|
func SkipIfFailing(t *testing.T) {
|
|
t.Helper()
|
|
|
|
if os.Getenv("TSGO_FOURSLASH_IGNORE_FAILING") != "" { //nolint:forbidigo
|
|
return
|
|
}
|
|
|
|
if _, found := failingTests()[t.Name()]; found {
|
|
t.Skip("Test is in failingTests.txt")
|
|
}
|
|
}
|