Skip to content

Commit e20584f

Browse files
committed
Better path
1 parent 90a131d commit e20584f

File tree

2 files changed

+28
-17
lines changed

2 files changed

+28
-17
lines changed

routes.nim

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -856,7 +856,8 @@ proc listTests*(
856856
if nimPath.isNone:
857857
error "Nim path not found when listing tests"
858858
return ListTestsResult(projectInfo: TestProjectInfo(entryPoints: params.entryPoints, suites: initTable[string, TestSuiteInfo]()))
859-
let testProjectInfo = await listTests(params.entryPoints, nimPath.get())
859+
let workspaceRoot = ls.initializeParams.getRootPath
860+
let testProjectInfo = await listTests(params.entryPoints, nimPath.get(), workspaceRoot)
860861
result.projectInfo = testProjectInfo
861862

862863
proc runTests*(
@@ -868,7 +869,8 @@ proc runTests*(
868869
error "Nim path not found when running tests"
869870
return RunTestProjectResult()
870871
let suiteName = if params.suiteName == "": none(string) else: some(params.suiteName)
871-
await runTests(params.entryPoints, nimPath.get(), suiteName, params.testNames)
872+
let workspaceRoot = ls.initializeParams.getRootPath
873+
await runTests(params.entryPoints, nimPath.get(), suiteName, params.testNames, workspaceRoot)
872874

873875
#Notifications
874876
proc initialized*(ls: LanguageServer, _: JsonNode): Future[void] {.async.} =

testrunner.nim

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,26 +30,31 @@ proc extractTestInfo*(rawOutput: string): TestProjectInfo =
3030
# echo "Adding test: ", testInfo.name, " to suite: ", suiteName
3131
result.suites[suiteName].tests.add(testInfo)
3232

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+
3340
proc listTests*(
34-
entryPoints: seq[string], nimPath: string
41+
entryPoints: seq[string],
42+
nimPath: string,
43+
workspaceRoot: string
3544
): Future[TestProjectInfo] {.async.} =
36-
#For now only one entry point is supported
3745
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)
4247
let process = await startProcess(
4348
nimPath,
44-
arguments = @["c", "-d:unittest2ListTests", "-r", "--listFullPaths", entryPoints[0]],
49+
arguments = @["c", "-d:unittest2ListTests", "-r", "--listFullPaths", entryPoint],
4550
options = {UsePath},
4651
stderrHandle = AsyncProcess.Pipe,
4752
stdoutHandle = AsyncProcess.Pipe,
4853
)
4954
try:
5055
let res = await process.waitForExit(15.seconds)
5156
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
5358
error "An error occurred while listing tests", error = string.fromBytes(process.stderrStream.read().await)
5459
else:
5560
let rawOutput = string.fromBytes(process.stdoutStream.read().await)
@@ -86,16 +91,20 @@ proc parseTestResults*(xmlContent: string): RunTestProjectResult =
8691
if suite.testResults.len > 0:
8792
result.suites.add(suite)
8893

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.} =
91101
assert entryPoints.len == 1
92-
let entryPoint = entryPoints[0]
93-
let resultFile = (getTempDir() / "result.xml").absolutePath
102+
var entryPoint = getFullPath(entryPoints[0], workspaceRoot)
94103
if not fileExists(entryPoint):
95-
error "Entry point does not exist", entryPoint = entryPoint
104+
error "Entry point does not exist", entryPoint = entryPoint
96105
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}"]
99108
if suiteName.isSome:
100109
args.add(fmt"{suiteName.get()}::")
101110
else:

0 commit comments

Comments
 (0)