diff --git a/bundles/com.espressif.idf.core/src/com/espressif/idf/core/bug/BugReportGenerator.java b/bundles/com.espressif.idf.core/src/com/espressif/idf/core/bug/BugReportGenerator.java index 31f3ea425..03187ba7c 100644 --- a/bundles/com.espressif.idf.core/src/com/espressif/idf/core/bug/BugReportGenerator.java +++ b/bundles/com.espressif.idf.core/src/com/espressif/idf/core/bug/BugReportGenerator.java @@ -61,6 +61,7 @@ public class BugReportGenerator private static final String ECLIPSE_LOG_FILE_NAME = ".log"; //$NON-NLS-1$ private static final String ECLIPSE_METADATA_DIRECTORY = ".metadata"; //$NON-NLS-1$ + private static final String IDE_LOG_REPORT_NAME_PREFIX = "ide_error_log"; //$NON-NLS-1$ private static final String UNKNOWN = "Unknown"; //$NON-NLS-1$ private static final String BUG_REPORT_DIRECTORY_PREFIX = "bug_report_"; //$NON-NLS-1$ private File bugReportDirectory; @@ -189,6 +190,16 @@ private List getIdeMetadataLogsFile() return logFiles; } + // Eclipse stores the IDE error log as ".log" (hidden on macOS/Linux); rename so it stays visible in the report. + public static String getReportLogFileName(String metadataFileName) + { + if (metadataFileName.startsWith(".")) //$NON-NLS-1$ + { + return IDE_LOG_REPORT_NAME_PREFIX + metadataFileName; + } + return metadataFileName; + } + private File createBasicSystemInfoFile() throws IOException { String osName = System.getProperty("os.name", UNKNOWN); //$NON-NLS-1$ @@ -282,7 +293,8 @@ public String generateBugReport() for (File logFile : metadataLogsFile) { - FileUtil.copyFile(logFile, new File(ideLogDir.getAbsolutePath() + File.separator + logFile.getName())); + FileUtil.copyFile(logFile, new File( + ideLogDir.getAbsolutePath() + File.separator + getReportLogFileName(logFile.getName()))); } File eimLogPath = getEimLogPath(); Logger.log("EIM log path: " + eimLogPath.getAbsolutePath()); //$NON-NLS-1$ diff --git a/tests/com.espressif.idf.core.test/src/com/espressif/idf/core/bug/test/BugReportGeneratorTest.java b/tests/com.espressif.idf.core.test/src/com/espressif/idf/core/bug/test/BugReportGeneratorTest.java new file mode 100644 index 000000000..41d0dfd38 --- /dev/null +++ b/tests/com.espressif.idf.core.test/src/com/espressif/idf/core/bug/test/BugReportGeneratorTest.java @@ -0,0 +1,44 @@ +/******************************************************************************* + * Copyright 2026 Espressif Systems (Shanghai) PTE LTD. + * All rights reserved. Use is subject to license terms. + *******************************************************************************/ +package com.espressif.idf.core.bug.test; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.DisplayNameGeneration; +import org.junit.jupiter.api.DisplayNameGenerator; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; + +import com.espressif.idf.core.bug.BugReportGenerator; + +@DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class) +public class BugReportGeneratorTest +{ + + @ParameterizedTest(name = "''{0}'' is collected as ''{1}''") + @CsvSource({ ".log, ide_error_log.log", ".bak_0.log, ide_error_log.bak_0.log", + ".bak_1.log, ide_error_log.bak_1.log" }) + void test_hidden_ide_log_gets_a_visible_name(String metadataFileName, String expectedReportFileName) + { + String reportFileName = BugReportGenerator.getReportLogFileName(metadataFileName); + + Assertions.assertEquals(expectedReportFileName, reportFileName); + } + + @ParameterizedTest(name = "''{0}'' is collected unchanged") + @CsvSource({ "version.ini", "workspace.log" }) + void test_already_visible_file_name_is_kept(String metadataFileName) + { + String reportFileName = BugReportGenerator.getReportLogFileName(metadataFileName); + + Assertions.assertEquals(metadataFileName, reportFileName); + } + + @Test + void test_no_collected_file_stays_hidden() + { + Assertions.assertFalse(BugReportGenerator.getReportLogFileName(".log").startsWith(".")); + } +}