From ca9c1bfcc1aa7936f6abcbec0888219a8e0a366e Mon Sep 17 00:00:00 2001 From: Alexander Milster Date: Sun, 25 Feb 2024 13:46:57 +0100 Subject: [PATCH 1/2] Fixed wrong paths in results.zip with multiple root directories. --- .../main/java/de/jplag/reporting/FilePathUtil.java | 6 +++--- .../reporting/jsonfactory/ComparisonReportWriter.java | 5 +++-- .../reporting/reportobject/ReportObjectFactory.java | 11 +++-------- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/core/src/main/java/de/jplag/reporting/FilePathUtil.java b/core/src/main/java/de/jplag/reporting/FilePathUtil.java index dc81ac3ac..b5d6f2342 100644 --- a/core/src/main/java/de/jplag/reporting/FilePathUtil.java +++ b/core/src/main/java/de/jplag/reporting/FilePathUtil.java @@ -20,11 +20,11 @@ private FilePathUtil() { * @param submissionToIdFunction Function to map names to ids * @return Relative path */ - public static String getRelativeSubmissionPath(File file, Submission submission, Function submissionToIdFunction) { + public static Path getRelativeSubmissionPath(File file, Submission submission, Function submissionToIdFunction) { if (file.toPath().equals(submission.getRoot().toPath())) { - return Path.of(submissionToIdFunction.apply(submission), submissionToIdFunction.apply(submission)).toString(); + return Path.of(submissionToIdFunction.apply(submission), submissionToIdFunction.apply(submission)); } - return Path.of(submissionToIdFunction.apply(submission), submission.getRoot().toPath().relativize(file.toPath()).toString()).toString(); + return Path.of(submissionToIdFunction.apply(submission), submission.getRoot().toPath().relativize(file.toPath()).toString()); } /** diff --git a/core/src/main/java/de/jplag/reporting/jsonfactory/ComparisonReportWriter.java b/core/src/main/java/de/jplag/reporting/jsonfactory/ComparisonReportWriter.java index de599fd09..914d58672 100644 --- a/core/src/main/java/de/jplag/reporting/jsonfactory/ComparisonReportWriter.java +++ b/core/src/main/java/de/jplag/reporting/jsonfactory/ComparisonReportWriter.java @@ -105,8 +105,9 @@ private Match convertMatchToReportMatch(JPlagComparison comparison, de.jplag.Mat Token startOfSecond = tokensSecond.stream().min(lineComparator).orElseThrow(); Token endOfSecond = tokensSecond.stream().max(lineComparator).orElseThrow(); - return new Match(FilePathUtil.getRelativeSubmissionPath(startOfFirst.getFile(), comparison.firstSubmission(), submissionToIdFunction), - FilePathUtil.getRelativeSubmissionPath(startOfSecond.getFile(), comparison.secondSubmission(), submissionToIdFunction), + return new Match( + FilePathUtil.getRelativeSubmissionPath(startOfFirst.getFile(), comparison.firstSubmission(), submissionToIdFunction).toString(), + FilePathUtil.getRelativeSubmissionPath(startOfSecond.getFile(), comparison.secondSubmission(), submissionToIdFunction).toString(), startOfFirst.getLine(), endOfFirst.getLine(), startOfSecond.getLine(), endOfSecond.getLine(), match.length()); } diff --git a/core/src/main/java/de/jplag/reporting/reportobject/ReportObjectFactory.java b/core/src/main/java/de/jplag/reporting/reportobject/ReportObjectFactory.java index f35ff058d..8ce7d205a 100644 --- a/core/src/main/java/de/jplag/reporting/reportobject/ReportObjectFactory.java +++ b/core/src/main/java/de/jplag/reporting/reportobject/ReportObjectFactory.java @@ -107,14 +107,9 @@ private void copySubmissionFilesToReport(JPlagResult result) { Set submissions = getSubmissions(comparisons); Language language = result.getOptions().language(); for (Submission submission : submissions) { - Path submissionRootPath = SUBMISSIONS_ROOT_PATH - .resolve(FilePathUtil.forceRelativePath(Path.of(submissionToIdFunction.apply(submission)))); for (File file : submission.getFiles()) { - Path relativeFilePath = Path.of(submission.getRoot().getAbsolutePath()).relativize(Path.of(file.getAbsolutePath())); - if (relativeFilePath.getNameCount() == 0 || relativeFilePath.equals(Path.of(""))) { - relativeFilePath = Path.of(file.getName()); - } - Path zipPath = submissionRootPath.resolve(relativeFilePath); + Path filePath = FilePathUtil.getRelativeSubmissionPath(file, submission, submissionToIdFunction); + Path zipPath = SUBMISSIONS_ROOT_PATH.resolve(filePath); File fileToCopy = getFileToCopy(language, file); this.resultWriter.addFileContentEntry(zipPath, fileToCopy); @@ -177,7 +172,7 @@ private void writeSubmissionIndexFile(JPlagResult result) { List>> submissionTokenCountList = submissions.stream().parallel().map(submission -> { Map tokenCounts = new HashMap<>(); for (Map.Entry entry : submission.getTokenCountPerFile().entrySet()) { - String key = FilePathUtil.getRelativeSubmissionPath(entry.getKey(), submission, submissionToIdFunction); + String key = FilePathUtil.getRelativeSubmissionPath(entry.getKey(), submission, submissionToIdFunction).toString(); tokenCounts.put(key, new SubmissionFile(entry.getValue())); } return Map.of(submissionNameToIdMap.get(submission.getName()), tokenCounts); From 6373131be70e46985abff481f3aaee50c09884ac Mon Sep 17 00:00:00 2001 From: Alex | Kronox Date: Tue, 12 Mar 2024 14:28:08 +0100 Subject: [PATCH 2/2] reenable e2e test --- report-viewer/tests/e2e/OpenComparisonTest.spec.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/report-viewer/tests/e2e/OpenComparisonTest.spec.ts b/report-viewer/tests/e2e/OpenComparisonTest.spec.ts index 5a3976e7c..4dcdf4783 100644 --- a/report-viewer/tests/e2e/OpenComparisonTest.spec.ts +++ b/report-viewer/tests/e2e/OpenComparisonTest.spec.ts @@ -19,8 +19,7 @@ const testSets: DataSet[] = [ firstSubmissionName: '0', secondSubmissionName: '1' }, - // Disabled due to https://github.com/jplag/JPlag/issues/1610 - /*{ + { datasetName: 'fileMultiRoot-report.zip', firstSubmissionName: 'f0\\\\|/0.java', secondSubmissionName: 'f1\\\\|/1.java' @@ -34,7 +33,7 @@ const testSets: DataSet[] = [ datasetName: 'mixedBaseFolder-report.zip', firstSubmissionName: 'f0\\\\|/0.java', secondSubmissionName: 'f1\\\\|/1' - },*/ + }, { datasetName: 'folderMultiRoot-report.zip', firstSubmissionName: 'f0\\\\|/0',