@@ -13,8 +13,8 @@ import ch.tutteli.atrium.api.fluent.en_GB.startsWith
1313import ch.tutteli.atrium.api.fluent.en_GB.toBe
1414import ch.tutteli.atrium.api.fluent.en_GB.toThrow
1515import ch.tutteli.atrium.api.verbs.expect
16- import ch.tutteli.niok.deleteRecursively
1716import de.joshuagleitze.test.spek.testfiles.DefaultTestFiles
17+ import de.joshuagleitze.test.spek.testfiles.DefaultTestFiles.Companion.determineTestFilesRootDirectory
1818import de.joshuagleitze.test.spek.testfiles.DeletionMode.ALWAYS
1919import de.joshuagleitze.test.spek.testfiles.DeletionMode.IF_SUCCESSFUL
2020import de.joshuagleitze.test.spek.testfiles.DeletionMode.NEVER
@@ -27,26 +27,47 @@ import org.spekframework.spek2.style.specification.describe
2727import java.nio.file.Files.createDirectories
2828import java.nio.file.Files.createDirectory
2929import java.nio.file.Files.createFile
30- import java.nio.file.Paths
3130
3231object DefaultTestFilesSpec: Spek({
33- val expectedRootFolder = Paths .get("build/test-outputs" )
32+ val fileRoot = freezeFileRoot( )
3433 lateinit var testFiles : DefaultTestFiles
3534
36- beforeGroup {
37- expectedRootFolder.deleteRecursively()
38- }
39-
4035 beforeEachTest {
4136 testFiles = DefaultTestFiles ()
4237 }
4338
4439 describe("DefaultTestFiles ") {
45- describe("Housekeeping ") {
40+ describe("root folder") {
41+ beforeEachTest { deletePotentialTargetDirectories() }
42+
43+ it("uses the build directory if present") {
44+ createDirectories(buildDir)
45+ createDirectories(targetDir)
46+ createDirectories(testOutputsDir)
47+ expect(determineTestFilesRootDirectory()).toBe(buildDir.resolve("test-outputs"))
48+ }
49+
50+ it("uses the target directory if present") {
51+ createDirectories(targetDir)
52+ createDirectories(testOutputsDir)
53+ expect(determineTestFilesRootDirectory()).toBe(targetDir.resolve("test-outputs"))
54+ }
55+
56+ it("uses the test-outputs directory if present") {
57+ createDirectories(testOutputsDir)
58+ expect(determineTestFilesRootDirectory()).toBe(testOutputsDir)
59+ }
60+
61+ it("falls back to the tmpdir") {
62+ expect(determineTestFilesRootDirectory()).toBe(tmpDir.resolve("spek-test-outputs"))
63+ }
64+ }
65+
66+ describe("housekeeping") {
4667 it("clears pre-existing files when entering a group") {
4768 val mockGroup = mockScope<GroupScopeImpl >("delete pre-existing group")
4869
49- val scopeDir = createDirectories(expectedRootFolder .resolve("[delete pre-existing group]"))
70+ val scopeDir = createDirectories(fileRoot .resolve("[delete pre-existing group]"))
5071 val testDir = createDirectory(scopeDir.resolve("pre-existing dir"))
5172 val subTestFile = createFile(testDir.resolve("sub"))
5273 val testFile = createFile(scopeDir.resolve("pre-existing file"))
@@ -64,7 +85,7 @@ object DefaultTestFilesSpec: Spek({
6485 it("clears pre-existing files when entering a test") {
6586 val mockTest = mockScope<TestScopeImpl >("delete pre-existing test")
6687
67- val scopeDir = createDirectories(expectedRootFolder .resolve("[delete pre-existing test]"))
88+ val scopeDir = createDirectories(fileRoot .resolve("[delete pre-existing test]"))
6889 val testDir = createDirectory(scopeDir.resolve("pre-existing dir"))
6990 val subTestFile = createFile(testDir.resolve("deeper pre-existing file"))
7091 val testFile = createFile(scopeDir.resolve("pre-existing file"))
@@ -82,7 +103,7 @@ object DefaultTestFilesSpec: Spek({
82103 it("retains existing group directories when entering a group") {
83104 val mockGroup = mockScope<GroupScopeImpl >("retain pre-existing group")
84105
85- val scopeDir = createDirectories(expectedRootFolder .resolve("[retain pre-existing group]"))
106+ val scopeDir = createDirectories(fileRoot .resolve("[retain pre-existing group]"))
86107 val groupTestDir = createDirectory(scopeDir.resolve("[test]"))
87108 val subTestFile = createFile(groupTestDir.resolve("deeper pre-existing file"))
88109 val testFile = createFile(scopeDir.resolve("pre-existing file"))
@@ -100,7 +121,7 @@ object DefaultTestFilesSpec: Spek({
100121 it("retains existing group directories when entering a test") {
101122 val mockTest = mockScope<TestScopeImpl >("retain pre-existing test")
102123
103- val scopeDir = createDirectories(expectedRootFolder .resolve("[retain pre-existing test]"))
124+ val scopeDir = createDirectories(fileRoot .resolve("[retain pre-existing test]"))
104125 val groupTestDir = createDirectory(scopeDir.resolve("[test]"))
105126 val subTestFile = createFile(groupTestDir.resolve("deeper pre-existing file"))
106127 val testFile = createFile(scopeDir.resolve("pre-existing file"))
@@ -117,7 +138,7 @@ object DefaultTestFilesSpec: Spek({
117138
118139 it("does not create a group or test folder if not necessary") {
119140 val mockGroup = mockScope<GroupScopeImpl >("no premature creation group")
120- val mockGroupTarget = expectedRootFolder .resolve("[no premature creation group]")
141+ val mockGroupTarget = fileRoot .resolve("[no premature creation group]")
121142 val mockSubGroup = mockScope<GroupScopeImpl >("sub")
122143 val mockSubGroupTarget = mockGroupTarget.resolve("[sub]")
123144 val mockTest = mockScope<TestScopeImpl >("test")
@@ -143,7 +164,7 @@ object DefaultTestFilesSpec: Spek({
143164 describe("file creation") {
144165 it("creates an empty file with the provided name") {
145166 val mockGroup = mockScope<GroupScopeImpl >("named file creation group")
146- val mockGroupTarget = expectedRootFolder .resolve("[named file creation group]")
167+ val mockGroupTarget = fileRoot .resolve("[named file creation group]")
147168 val mockTest = mockScope<TestScopeImpl >("test")
148169 val mockTestTarget = mockGroupTarget.resolve("[test]")
149170
@@ -170,7 +191,7 @@ object DefaultTestFilesSpec: Spek({
170191
171192 it("creates an empty directory with the provided name") {
172193 val mockGroup = mockScope<GroupScopeImpl >("named directory creation group")
173- val mockGroupTarget = expectedRootFolder .resolve("[named directory creation group]")
194+ val mockGroupTarget = fileRoot .resolve("[named directory creation group]")
174195 val mockTest = mockScope<TestScopeImpl >("test")
175196 val mockTestTarget = mockGroupTarget.resolve("[test]")
176197
@@ -215,7 +236,7 @@ object DefaultTestFilesSpec: Spek({
215236
216237 it("creates an empty file with a generated name") {
217238 val mockGroup = mockScope<GroupScopeImpl >("unnamed file creation group")
218- val mockGroupTarget = expectedRootFolder .resolve("[unnamed file creation group]")
239+ val mockGroupTarget = fileRoot .resolve("[unnamed file creation group]")
219240 val mockTest = mockScope<TestScopeImpl >("test")
220241 val mockTestTarget = mockGroupTarget.resolve("[test]")
221242
@@ -242,7 +263,7 @@ object DefaultTestFilesSpec: Spek({
242263
243264 it("creates an empty directory with a generated name") {
244265 val mockGroup = mockScope<GroupScopeImpl >("unnamed directory creation group")
245- val mockGroupTarget = expectedRootFolder .resolve("[unnamed directory creation group]")
266+ val mockGroupTarget = fileRoot .resolve("[unnamed directory creation group]")
246267 val mockTest = mockScope<TestScopeImpl >("test")
247268 val mockTestTarget = mockGroupTarget.resolve("[test]")
248269
0 commit comments