Create parent directory when writing test report ()

* Create parent directory when writing test report

* Change access modifier to package-private

* Add a wee bit of documentation
This commit is contained in:
Jonathan Coates 2022-10-16 15:08:44 +01:00 committed by GitHub
parent bd290a2e19
commit 704e47e9d7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 48 additions and 2 deletions
fabric-gametest-api-v1/src/main/java/net/fabricmc/fabric/impl/gametest

View file

@ -37,7 +37,6 @@ import net.minecraft.test.TestFunction;
import net.minecraft.test.TestFunctions;
import net.minecraft.test.TestServer;
import net.minecraft.test.TestUtil;
import net.minecraft.test.XmlReportingTestCompletionListener;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.level.storage.LevelStorage;
@ -56,7 +55,7 @@ public final class FabricGameTestHelper {
if (reportPath != null) {
try {
TestFailureLogger.setCompletionListener(new XmlReportingTestCompletionListener(new File(reportPath)));
TestFailureLogger.setCompletionListener(new SavingXmlReportingTestCompletionListener(new File(reportPath)));
} catch (ParserConfigurationException e) {
throw new RuntimeException(e);
}

View file

@ -0,0 +1,47 @@
/*
* Copyright (c) 2016, 2017, 2018, 2019 FabricMC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.fabricmc.fabric.impl.gametest;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerException;
import net.minecraft.test.XmlReportingTestCompletionListener;
/**
* An extension of {@link XmlReportingTestCompletionListener} which creates the destination directory before saving
* the report.
*/
final class SavingXmlReportingTestCompletionListener extends XmlReportingTestCompletionListener {
SavingXmlReportingTestCompletionListener(File file) throws ParserConfigurationException {
super(file);
}
@Override
public void saveReport(File file) throws TransformerException {
try {
Files.createDirectories(file.toPath().getParent());
} catch (IOException e) {
throw new TransformerException("Failed to create parent directory", e);
}
super.saveReport(file);
}
}