@@ -30,26 +30,31 @@ proc extractTestInfo*(rawOutput: string): TestProjectInfo =
30
30
# echo "Adding test: ", testInfo.name, " to suite: ", suiteName
31
31
result .suites[suiteName].tests.add (testInfo)
32
32
33
+ proc getFullPath * (entryPoint: string , workspaceRoot: string ): string =
34
+ if not fileExists (entryPoint):
35
+ let absolutePath = joinPath (workspaceRoot, entryPoint)
36
+ if fileExists (absolutePath):
37
+ return absolutePath
38
+ return entryPoint
39
+
33
40
proc listTests * (
34
- entryPoints: seq [string ], nimPath: string
41
+ entryPoints: seq [string ],
42
+ nimPath: string ,
43
+ workspaceRoot: string
35
44
): Future [TestProjectInfo ] {.async .} =
36
- # For now only one entry point is supported
37
45
assert entryPoints.len == 1
38
- let entryPoint = entryPoints[0 ]
39
- if not fileExists (entryPoint):
40
- error " Entry point does not exist" , entryPoint = entryPoint
41
- return TestProjectInfo ()
46
+ var entryPoint = getFullPath (entryPoints[0 ], workspaceRoot)
42
47
let process = await startProcess (
43
48
nimPath,
44
- arguments = @ [" c" , " -d:unittest2ListTests" , " -r" , " --listFullPaths" , entryPoints[ 0 ] ],
49
+ arguments = @ [" c" , " -d:unittest2ListTests" , " -r" , " --listFullPaths" , entryPoint ],
45
50
options = {UsePath },
46
51
stderrHandle = AsyncProcess .Pipe ,
47
52
stdoutHandle = AsyncProcess .Pipe ,
48
53
)
49
54
try :
50
55
let res = await process.waitForExit (15 .seconds)
51
56
if res != 0 :
52
- error " Failed to list tests" , nimPath = nimPath, entryPoint = entryPoints[ 0 ] , res = res
57
+ error " Failed to list tests" , nimPath = nimPath, entryPoint = entryPoint , res = res
53
58
error " An error occurred while listing tests" , error = string .fromBytes (process.stderrStream.read ().await)
54
59
else :
55
60
let rawOutput = string .fromBytes (process.stdoutStream.read ().await)
@@ -86,16 +91,20 @@ proc parseTestResults*(xmlContent: string): RunTestProjectResult =
86
91
if suite.testResults.len > 0 :
87
92
result .suites.add (suite)
88
93
89
- proc runTests * (entryPoints: seq [string ], nimPath: string , suiteName: Option [string ], testNames: seq [string ]): Future [RunTestProjectResult ] {.async .} =
90
- # For now only one entry point is supported
94
+ proc runTests * (
95
+ entryPoints: seq [string ],
96
+ nimPath: string ,
97
+ suiteName: Option [string ],
98
+ testNames: seq [string ],
99
+ workspaceRoot: string
100
+ ): Future [RunTestProjectResult ] {.async .} =
91
101
assert entryPoints.len == 1
92
- let entryPoint = entryPoints[0 ]
93
- let resultFile = (getTempDir () / " result.xml" ).absolutePath
102
+ var entryPoint = getFullPath (entryPoints[0 ], workspaceRoot)
94
103
if not fileExists (entryPoint):
95
- error " Entry point does not exist" , entryPoint = entryPoint
104
+ error " Entry point does not exist" , entryPoint = entryPoint
96
105
return RunTestProjectResult ()
97
-
98
- var args = @ [" c" , " -r" , entryPoints[ 0 ] , fmt" --xml:{ resultFile} " ]
106
+ let resultFile = ( getTempDir () / " result.xml " ).absolutePath
107
+ var args = @ [" c" , " -r" , entryPoint , fmt" --xml:{ resultFile} " ]
99
108
if suiteName.isSome:
100
109
args.add (fmt" { suiteName.get ()} ::" )
101
110
else :
0 commit comments