Skip to content

Commit 45ad4f2

Browse files
authored
leave allure results cleanup to build tools (via #1295)
1 parent 2354fb1 commit 45ad4f2

3 files changed

Lines changed: 3 additions & 124 deletions

File tree

allure-java-commons/src/main/java/io/qameta/allure/AllureLifecycle.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1190,13 +1190,7 @@ private void applyTo(final TestResult testResult) {
11901190
private static FileSystemResultsWriter getDefaultWriter() {
11911191
final Properties properties = PropertiesUtils.loadAllureProperties();
11921192
final String path = properties.getProperty("allure.results.directory", "allure-results");
1193-
final boolean cleanBeforeRun = Boolean.parseBoolean(
1194-
properties.getProperty("allure.results.clean.before.run", "false")
1195-
);
1196-
final boolean cleanOnlyOnce = Boolean.parseBoolean(
1197-
properties.getProperty("allure.results.clean.only.once", "true")
1198-
);
1199-
return new FileSystemResultsWriter(Paths.get(path), cleanBeforeRun, cleanOnlyOnce);
1193+
return new FileSystemResultsWriter(Paths.get(path));
12001194
}
12011195

12021196
private static LifecycleNotifier getDefaultNotifier() {

allure-java-commons/src/main/java/io/qameta/allure/FileSystemResultsWriter.java

Lines changed: 0 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,8 @@
3333
import java.nio.file.Path;
3434
import java.nio.file.StandardCopyOption;
3535
import java.nio.file.StandardOpenOption;
36-
import java.util.Comparator;
3736
import java.util.Objects;
3837
import java.util.UUID;
39-
import java.util.concurrent.atomic.AtomicBoolean;
40-
import java.util.stream.Stream;
4138

4239
/**
4340
* Writes Allure result model objects and attachments to the file system.
@@ -58,34 +55,13 @@ public class FileSystemResultsWriter implements AllureResultsWriter {
5855

5956
private final ObjectMapper mapper;
6057

61-
private final boolean cleanBeforeRun;
62-
63-
private final boolean cleanOnlyOnce;
64-
65-
private final AtomicBoolean cleaned = new AtomicBoolean(false);
66-
6758
/**
6859
* Creates a file system results writer with the supplied values.
6960
*
7061
* @param outputDirectory the output directory
7162
*/
7263
public FileSystemResultsWriter(final Path outputDirectory) {
73-
this(outputDirectory, false, true);
74-
}
75-
76-
/**
77-
* Creates a file system results writer with the supplied values.
78-
*
79-
* @param outputDirectory the output directory
80-
* @param cleanBeforeRun the clean before run
81-
* @param cleanOnlyOnce the clean only once
82-
*/
83-
public FileSystemResultsWriter(final Path outputDirectory,
84-
final boolean cleanBeforeRun,
85-
final boolean cleanOnlyOnce) {
8664
this.outputDirectory = outputDirectory;
87-
this.cleanBeforeRun = cleanBeforeRun;
88-
this.cleanOnlyOnce = cleanOnlyOnce;
8965
this.mapper = Allure2ModelJackson.createMapper();
9066
}
9167

@@ -182,31 +158,6 @@ private void createDirectories(final Path directory) {
182158

183159
private void ensureInitialized() {
184160
createDirectories(outputDirectory);
185-
if (cleanBeforeRun) {
186-
final boolean shouldClean = !cleanOnlyOnce || cleaned.compareAndSet(false, true);
187-
if (shouldClean) {
188-
cleanDirectoryContents(outputDirectory);
189-
}
190-
}
191-
}
192-
193-
private void cleanDirectoryContents(final Path directory) {
194-
if (!Files.exists(directory)) {
195-
return;
196-
}
197-
try (Stream<Path> stream = Files.walk(directory)) {
198-
stream.sorted(Comparator.reverseOrder())
199-
.filter(path -> !path.equals(directory))
200-
.forEach(path -> {
201-
try {
202-
Files.deleteIfExists(path);
203-
} catch (IOException e) {
204-
LOGGER.warn("Failed to delete {} during directory cleanup", path, e);
205-
}
206-
});
207-
} catch (IOException e) {
208-
LOGGER.warn("Failed to clean directory contents: {}", directory, e);
209-
}
210161
}
211162

212163
/**

allure-java-commons/src/test/java/io/qameta/allure/FileSystemResultsWriterTest.java

Lines changed: 2 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -143,11 +143,11 @@ void shouldNotCreateFinalAttachmentFileWhenStreamFails(@TempDir final Path folde
143143
}
144144

145145
@Test
146-
void shouldPreserveOldResultsWhenCleanIsDisabled(@TempDir final Path folder) throws IOException {
146+
void shouldPreserveExistingResults(@TempDir final Path folder) throws IOException {
147147
Path existingFile = folder.resolve("existing-result.json");
148148
Files.writeString(existingFile, "{}");
149149

150-
FileSystemResultsWriter writer = new FileSystemResultsWriter(folder, false, true);
150+
FileSystemResultsWriter writer = new FileSystemResultsWriter(folder);
151151
final String uuid = UUID.randomUUID().toString();
152152
final TestResult testResult = current().nextObject(TestResult.class, "steps").setUuid(uuid);
153153
writeTestResult(writer, testResult);
@@ -156,72 +156,6 @@ void shouldPreserveOldResultsWhenCleanIsDisabled(@TempDir final Path folder) thr
156156
assertThat(folder.resolve(generateTestResultName(uuid))).exists();
157157
}
158158

159-
@Test
160-
void shouldCleanDirectoryWhenCleanBeforeRunEnabled(@TempDir final Path folder) throws IOException {
161-
Path existingFile = folder.resolve("existing-result.json");
162-
Files.writeString(existingFile, "{}");
163-
164-
FileSystemResultsWriter writer = new FileSystemResultsWriter(folder, true, true);
165-
final String uuid = UUID.randomUUID().toString();
166-
final TestResult testResult = current().nextObject(TestResult.class, "steps").setUuid(uuid);
167-
writeTestResult(writer, testResult);
168-
169-
assertThat(existingFile).doesNotExist();
170-
assertThat(folder.resolve(generateTestResultName(uuid))).exists();
171-
}
172-
173-
@Test
174-
void shouldCleanOnlyOnceWhenCleanOnlyOnceEnabled(@TempDir final Path folder) throws IOException {
175-
Path existingFile = folder.resolve("existing-result.json");
176-
Files.writeString(existingFile, "{}");
177-
178-
FileSystemResultsWriter writer = new FileSystemResultsWriter(folder, true, true);
179-
180-
final String uuid1 = UUID.randomUUID().toString();
181-
final TestResult testResult1 = current().nextObject(TestResult.class, "steps").setUuid(uuid1);
182-
writeTestResult(writer, testResult1);
183-
184-
final String uuid2 = UUID.randomUUID().toString();
185-
final TestResult testResult2 = current().nextObject(TestResult.class, "steps").setUuid(uuid2);
186-
writeTestResult(writer, testResult2);
187-
188-
assertThat(folder.resolve(generateTestResultName(uuid1))).exists();
189-
assertThat(folder.resolve(generateTestResultName(uuid2))).exists();
190-
}
191-
192-
@Test
193-
void shouldCleanOnEveryFirstWriteWhenCleanOnlyOnceDisabled(@TempDir final Path folder) throws IOException {
194-
FileSystemResultsWriter writer1 = new FileSystemResultsWriter(folder, true, false);
195-
final String uuid1 = UUID.randomUUID().toString();
196-
final TestResult testResult1 = current().nextObject(TestResult.class, "steps").setUuid(uuid1);
197-
writeTestResult(writer1, testResult1);
198-
199-
Path intermediateFile = folder.resolve("intermediate-result.json");
200-
Files.writeString(intermediateFile, "{}");
201-
202-
FileSystemResultsWriter writer2 = new FileSystemResultsWriter(folder, true, false);
203-
final String uuid2 = UUID.randomUUID().toString();
204-
final TestResult testResult2 = current().nextObject(TestResult.class, "steps").setUuid(uuid2);
205-
writeTestResult(writer2, testResult2);
206-
207-
assertThat(intermediateFile).doesNotExist();
208-
assertThat(folder.resolve(generateTestResultName(uuid2))).exists();
209-
}
210-
211-
@Test
212-
void shouldNotDeleteDirectoryItself(@TempDir final Path folder) throws IOException {
213-
Path existingFile = folder.resolve("existing-result.json");
214-
Files.writeString(existingFile, "{}");
215-
216-
FileSystemResultsWriter writer = new FileSystemResultsWriter(folder, true, true);
217-
final String uuid = UUID.randomUUID().toString();
218-
final TestResult testResult = current().nextObject(TestResult.class, "steps").setUuid(uuid);
219-
writeTestResult(writer, testResult);
220-
221-
assertThat(folder).isDirectory();
222-
assertThat(folder.resolve(generateTestResultName(uuid))).exists();
223-
}
224-
225159
private static void writeTestResult(final FileSystemResultsWriter writer, final TestResult testResult) {
226160
Allure.step("Write test result JSON", step -> {
227161
step.parameter("uuid", testResult.getUuid());

0 commit comments

Comments
 (0)