Skip to content

Commit a8ab2e6

Browse files
committed
Add resolution for test suites for nodejs test run
1 parent 2fc0a7b commit a8ab2e6

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

test-suites/src/commonTest/kotlin/io/github/optimumcode/json/schema/suite/AbstractSchemaTestSuite.kt

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,13 @@ internal fun FunSpec.runTestSuites(
4646
excludeTests: Map<String, Set<String>> = emptyMap(),
4747
) {
4848
require(draftName.isNotBlank()) { "draftName is blank" }
49-
val testSuiteDir = TEST_SUITES_DIR / draftName
5049
val fs = fileSystem()
50+
val testSuiteDir = when {
51+
fs.exists(TEST_SUITES_DIR) -> TEST_SUITES_DIR
52+
fs.exists(TEST_SUITES_DIR_FROM_ROOT) -> TEST_SUITES_DIR_FROM_ROOT
53+
else -> fs.resolveRoot() ?: error("neither $TEST_SUITES_DIR or $TEST_SUITES_DIR_FROM_ROOT exist")
54+
}.resolve(draftName)
55+
5156
require(fs.exists(testSuiteDir)) { "folder $testSuiteDir does not exist" }
5257

5358
executeFromDirectory(fs, testSuiteDir, excludeSuites, excludeTests)
@@ -120,5 +125,18 @@ private class SchemaTest(
120125
)
121126

122127
private val TEST_SUITES_DIR: Path = "schema-test-suite/tests".toPath()
128+
private val TEST_SUITES_DIR_FROM_ROOT: Path = "test-suites".toPath() / TEST_SUITES_DIR
129+
130+
/**
131+
* This function tries to find the repo root using `build` folder as maker.
132+
*
133+
* This is done in order to execute NodeJS tests
134+
*/
135+
private fun FileSystem.resolveRoot(): Path? {
136+
val absolutePath = canonicalize(".".toPath())
137+
return generateSequence(absolutePath) {
138+
it.parent
139+
}.find { it.name == "build" }?.parent?.resolve(TEST_SUITES_DIR_FROM_ROOT)
140+
}
123141

124142
expect fun fileSystem(): FileSystem

0 commit comments

Comments
 (0)