Fix test execution bugs in proctor-go and proctor-python.
proctor-go had a bug where it would incorrectly identify a tool test as a disk test. Instead of searching for the test on disk as the identification method, we now check if the test name ends in ".go". If the test ends in ".go" it is run as a disk test, otherwise the test is run as a tool test. Python tests need to be run from within the directory they exist. Functionality to split the test name from it's parent directory has been added and a cmd.Dir argument has been set. PiperOrigin-RevId: 261021693
This commit is contained in:
parent
cbe145247a
commit
77833ece3b
|
@ -94,7 +94,8 @@ func (g goRunner) ListTests() ([]string, error) {
|
|||
func (g goRunner) RunTest(test string) error {
|
||||
// Check if test exists on disk by searching for file of the same name.
|
||||
// This will determine whether or not it is a Go test on disk.
|
||||
if _, err := os.Stat(test); err == nil {
|
||||
if strings.HasSuffix(test, ".go") {
|
||||
// Test has suffix ".go" which indicates a disk test, run it as such.
|
||||
relPath, err := filepath.Rel(testDir, test)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get rel path: %v", err)
|
||||
|
@ -105,15 +106,13 @@ func (g goRunner) RunTest(test string) error {
|
|||
if err := cmd.Run(); err != nil {
|
||||
return fmt.Errorf("failed to run test: %v", err)
|
||||
}
|
||||
} else if os.IsNotExist(err) {
|
||||
// File was not found, try running as Go tool test.
|
||||
} else {
|
||||
// No ".go" suffix, run as a tool test.
|
||||
cmd := exec.Command(goBin, "tool", "dist", "test", "-run", test)
|
||||
cmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr
|
||||
if err := cmd.Run(); err != nil {
|
||||
return fmt.Errorf("failed to run test: %v", err)
|
||||
}
|
||||
} else {
|
||||
return fmt.Errorf("error searching for test: %v", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -28,6 +28,7 @@ import (
|
|||
|
||||
var (
|
||||
dir = os.Getenv("LANG_DIR")
|
||||
testDir = filepath.Join(dir, "test")
|
||||
testRegEx = regexp.MustCompile(`^test-.+\.js$`)
|
||||
)
|
||||
|
||||
|
@ -42,16 +43,15 @@ func main() {
|
|||
|
||||
func (n nodejsRunner) ListTests() ([]string, error) {
|
||||
var testSlice []string
|
||||
root := filepath.Join(dir, "test")
|
||||
|
||||
err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
|
||||
err := filepath.Walk(testDir, func(path string, info os.FileInfo, err error) error {
|
||||
name := filepath.Base(path)
|
||||
|
||||
if info.IsDir() || !testRegEx.MatchString(name) {
|
||||
return nil
|
||||
}
|
||||
|
||||
relPath, err := filepath.Rel(root, path)
|
||||
relPath, err := filepath.Rel(testDir, path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ func (n nodejsRunner) ListTests() ([]string, error) {
|
|||
})
|
||||
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("walking %q: %v", root, err)
|
||||
return nil, fmt.Errorf("walking %q: %v", testDir, err)
|
||||
}
|
||||
|
||||
return testSlice, nil
|
||||
|
|
|
@ -28,6 +28,7 @@ import (
|
|||
|
||||
var (
|
||||
dir = os.Getenv("LANG_DIR")
|
||||
testDir = filepath.Join(dir, "Lib", "test")
|
||||
testRegEx = regexp.MustCompile(`^test_.+\.py$`)
|
||||
)
|
||||
|
||||
|
@ -42,16 +43,15 @@ func main() {
|
|||
|
||||
func (p pythonRunner) ListTests() ([]string, error) {
|
||||
var testSlice []string
|
||||
root := filepath.Join(dir, "Lib/test")
|
||||
|
||||
err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
|
||||
err := filepath.Walk(testDir, func(path string, info os.FileInfo, err error) error {
|
||||
name := filepath.Base(path)
|
||||
|
||||
if info.IsDir() || !testRegEx.MatchString(name) {
|
||||
return nil
|
||||
}
|
||||
|
||||
relPath, err := filepath.Rel(root, path)
|
||||
relPath, err := filepath.Rel(testDir, path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -60,15 +60,19 @@ func (p pythonRunner) ListTests() ([]string, error) {
|
|||
})
|
||||
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("walking %q: %v", root, err)
|
||||
return nil, fmt.Errorf("walking %q: %v", testDir, err)
|
||||
}
|
||||
|
||||
return testSlice, nil
|
||||
}
|
||||
|
||||
func (p pythonRunner) RunTest(test string) error {
|
||||
args := []string{"-m", "test", test}
|
||||
// Python tests need to be run in the directory in which they exist.
|
||||
// Split the filename from it's directory and execute in the correct directory.
|
||||
relDir, file := filepath.Split(test)
|
||||
args := []string{"-m", "test", file}
|
||||
cmd := exec.Command(filepath.Join(dir, "python"), args...)
|
||||
cmd.Dir = filepath.Join(testDir, relDir)
|
||||
cmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr
|
||||
if err := cmd.Run(); err != nil {
|
||||
return fmt.Errorf("failed to run: %v", err)
|
||||
|
|
Loading…
Reference in New Issue