diff --git a/actions/setup/js/write_large_content_to_file.cjs b/actions/setup/js/write_large_content_to_file.cjs index f8e6a6aec9c..d386a9326c7 100644 --- a/actions/setup/js/write_large_content_to_file.cjs +++ b/actions/setup/js/write_large_content_to_file.cjs @@ -1,5 +1,4 @@ // @ts-check -/// const fs = require("fs"); const path = require("path"); @@ -18,7 +17,7 @@ function writeLargeContentToFile(content) { try { fs.mkdirSync(logsDir, { recursive: true }); } catch (err) { - throw new Error(`Failed to create directory ${logsDir}: ${String(err)}`, { cause: err }); + throw new Error(`Failed to create directory ${logsDir}: ${err.message}`, { cause: err }); } // Generate SHA256 hash of content @@ -31,7 +30,7 @@ function writeLargeContentToFile(content) { try { fs.writeFileSync(filepath, content, "utf8"); } catch (err) { - throw new Error(`Failed to write file ${filepath}: ${String(err)}`, { cause: err }); + throw new Error(`Failed to write file ${filepath}: ${err.message}`, { cause: err }); } const description = generateCompactSchema(content); diff --git a/actions/setup/js/write_large_content_to_file.test.cjs b/actions/setup/js/write_large_content_to_file.test.cjs index 9dc9e3c7c6a..bd954d6b9be 100644 --- a/actions/setup/js/write_large_content_to_file.test.cjs +++ b/actions/setup/js/write_large_content_to_file.test.cjs @@ -228,4 +228,38 @@ describe("writeLargeContentToFile", () => { expect(result).toHaveProperty("description"); expect(Object.keys(result)).toHaveLength(2); }); + + it("should include err.message (not String(err)) in directory creation error", async () => { + const { writeLargeContentToFile } = await import("./write_large_content_to_file.cjs"); + const origMkdirSync = fs.mkdirSync; + // @ts-ignore + fs.mkdirSync = () => { + throw new Error("permission denied"); + }; + try { + const fn = () => writeLargeContentToFile("{}"); + expect(fn).toThrow("Failed to create directory"); + expect(fn).toThrow(": permission denied"); + expect(fn).not.toThrow(": Error: permission denied"); + } finally { + fs.mkdirSync = origMkdirSync; + } + }); + + it("should include err.message (not String(err)) in file write error", async () => { + const { writeLargeContentToFile } = await import("./write_large_content_to_file.cjs"); + const origWriteFileSync = fs.writeFileSync; + // @ts-ignore + fs.writeFileSync = () => { + throw new Error("disk full"); + }; + try { + const fn = () => writeLargeContentToFile("{}"); + expect(fn).toThrow("Failed to write file"); + expect(fn).toThrow(": disk full"); + expect(fn).not.toThrow(": Error: disk full"); + } finally { + fs.writeFileSync = origWriteFileSync; + } + }); });