vendor tsgo
This commit is contained in:
53
tools/tsgo/internal/fourslash/skip_if_failing.go
Normal file
53
tools/tsgo/internal/fourslash/skip_if_failing.go
Normal file
@@ -0,0 +1,53 @@
|
||||
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")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user