Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ jobs:
with:
name: test-results-${{ matrix.test }}
path: |
key.core/proofs/**
**/build/test-results/*/*.xml
key.core/build/reports/runallproofs/*
**/build/reports/
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,18 @@

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.zip.GZIPOutputStream;

import de.uka.ilkd.key.control.DefaultUserInterfaceControl;
import de.uka.ilkd.key.control.KeYEnvironment;
import de.uka.ilkd.key.nparser.KeyAst;
import de.uka.ilkd.key.pp.LogicPrinter;
import de.uka.ilkd.key.proof.Node;
import de.uka.ilkd.key.proof.Proof;
import de.uka.ilkd.key.proof.io.AbstractProblemLoader;
import de.uka.ilkd.key.proof.io.ProblemLoaderException;
Expand Down Expand Up @@ -138,6 +142,11 @@ private void runKey(String file, TestProperty testProperty) throws Exception {
LOGGER.info("({}) Finished proof: {}", caseId,
(closed ? "closed." : "open goal(s)"));
appendStatistics(loadedProof, keyFile.toFile());

var path = Paths.get("proofs",
loadedProof.getProofFile().getFileName() + ".proof.xml");
saveProofXml(loadedProof, path);

if (success) {
reload(proofFile, loadedProof);
}
Expand All @@ -162,6 +171,27 @@ private void runKey(String file, TestProperty testProperty) throws Exception {
}
}

public static void saveProofXml(Proof loadedProof, Path path) throws IOException {
Files.createDirectories(path.getParent());
try (var out = new PrintWriter(new GZIPOutputStream(Files.newOutputStream(path)))) {
toXml(out, loadedProof.root());
}
}

private static void toXml(PrintWriter out, Node node) {
out.format("\n<node label=\"%s\" taclet=\"%s\">", node.getNodeInfo().getBranchLabel(),
node.getAppliedRuleApp().rule().name());
out.format("\n<raw><![CDATA[%s]]>\n</raw>", node.sequent());
out.format("\n<lpr><![CDATA[%s]]>\n</lpr>",
LogicPrinter.quickPrintSequent(node.sequent(), node.proof().getServices()));
out.format("\n<children>\n");
for (Node child : node.children()) {
toXml(out, child);
}
out.format("</children>\n");
out.format("</node>\n");
}

/**
* Override this method in order to change reload behaviour.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import de.uka.ilkd.key.proof.io.AbstractProblemLoader.ReplayResult;
import de.uka.ilkd.key.proof.io.ProblemLoaderException;
import de.uka.ilkd.key.proof.io.ProofSaver;
import de.uka.ilkd.key.proof.runallproofs.ProveTest;
import de.uka.ilkd.key.proof.runallproofs.RunAllProofsTest;
import de.uka.ilkd.key.proof.runallproofs.TestResult;
import de.uka.ilkd.key.scripts.ProofScriptEngine;
Expand Down Expand Up @@ -166,6 +167,7 @@ public TestResult runKey() throws Exception {
loadedProof = env.getLoadedProof();
ReplayResult replayResult;


if (testProperty == TestProperty.NOTLOADABLE) {
try {
replayResult = env.getReplayResult();
Expand Down Expand Up @@ -205,6 +207,11 @@ public TestResult runKey() throws Exception {
|| testProperty == TestProperty.NOTPROVABLE) {
ProofSaver.saveToFile(new File(keyFile.toAbsolutePath() + ".save.proof"),
loadedProof);

var path = Paths.get("proofs",
loadedProof.getProofFile().getFileName() + ".proof.xml.gz");
ProveTest.saveProofXml(loadedProof, path);
LOGGER.info("Stored {}", path);
}
boolean closed = loadedProof.closed();
success = (testProperty == TestProperty.PROVABLE) == closed;
Expand Down
Loading