From 0dd771351d50a8b82b40f4f42945d6494514d2f7 Mon Sep 17 00:00:00 2001 From: Kazuhito Yokoi Date: Sun, 6 Aug 2023 20:35:33 +0900 Subject: [PATCH 1/2] Fix handling in file nodes when number is specified as file name --- .../@node-red/nodes/core/storage/10-file.js | 7 ++++- test/nodes/core/storage/10-file_spec.js | 27 +++++++++++++++++-- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/packages/node_modules/@node-red/nodes/core/storage/10-file.js b/packages/node_modules/@node-red/nodes/core/storage/10-file.js index 601f5b46d..33a533ed6 100644 --- a/packages/node_modules/@node-red/nodes/core/storage/10-file.js +++ b/packages/node_modules/@node-red/nodes/core/storage/10-file.js @@ -68,6 +68,9 @@ module.exports = function(RED) { node.error(err,msg); return done(); } else { + if (value) { + value = value.toString(); + } processMsg2(msg,nodeSend,value,done); } }); @@ -278,7 +281,6 @@ module.exports = function(RED) { } RED.nodes.registerType("file",FileNode); - function FileInNode(n) { // Read a file RED.nodes.createNode(this,n); @@ -314,6 +316,9 @@ module.exports = function(RED) { node.error(err,msg); return done(); } else { + if (value) { + value = value.toString(); + } processMsg2(msg, nodeSend, (value || "").replace(/\t|\r|\n/g,''), nodeDone); } }); diff --git a/test/nodes/core/storage/10-file_spec.js b/test/nodes/core/storage/10-file_spec.js index 584aaffd5..57e32985c 100644 --- a/test/nodes/core/storage/10-file_spec.js +++ b/test/nodes/core/storage/10-file_spec.js @@ -121,7 +121,6 @@ describe('file Nodes', function() { }); }); - it('should write to a file using RED.settings.fileWorkingDirectory', function(done) { var flow = [{id:"fileNode1", type:"file", name: "fileNode", "filename":relativePathToFile, "appendNewline":false, "overwriteFile":true, wires: [["helperNode1"]]}, {id:"helperNode1", type:"helper"}]; @@ -145,7 +144,6 @@ describe('file Nodes', function() { }); }); - it('should write multi-byte string to a file', function(done) { var flow = [{id:"fileNode1", type:"file", name: "fileNode", "filename":fileToTest, "appendNewline":false, "overwriteFile":true, wires: [["helperNode1"]]}, {id:"helperNode1", type:"helper"}]; @@ -447,6 +445,31 @@ describe('file Nodes', function() { n1.receive({payload:"typedInput", _user_specified_filename:fileToTest}); }); }); + + it('should support number in msg._user_specified_filename', function (done) { + var flow = [{id:"fileNode1", type:"file", filename:"_user_specified_filename", filenameType:"msg", name:"fileNode", "appendNewline":false, "overwriteFile":true, wires:[["helperNode1"]]}, + {id:"helperNode1", type:"helper"}]; + helper.load(fileNode, flow, function () { + RED.settings.fileWorkingDirectory = resourcesDir; + var n1 = helper.getNode("fileNode1"); + var n2 = helper.getNode("helperNode1"); + n2.on("input", function (msg) { + try { + var fileToTest = path.join(resourcesDir, "123"); + var f = fs.readFileSync(fileToTest); + f.should.have.length(4); + fs.unlinkSync(fileToTest); + msg.should.have.property("payload", "test"); + done(); + } + catch (e) { + done(e); + } + }); + n1.receive({payload: "test", _user_specified_filename: 123}); + }); + }); + it('should use env.TEST_FILE set in nodes typedInput', function(done) { var flow = [{id:"fileNode1", type:"file", filename:"TEST_FILE", filenameType: "env", name: "fileNode", "appendNewline":true, "overwriteFile":true, wires: [["helperNode1"]]}, {id:"helperNode1", type:"helper"}]; From 8a4128defbc2ef8a59c44f1e819ae1e3d6b62723 Mon Sep 17 00:00:00 2001 From: Kazuhito Yokoi Date: Mon, 14 Aug 2023 19:53:00 +0900 Subject: [PATCH 2/2] Fix handling in file nodes when 0 is specified as file name --- packages/node_modules/@node-red/nodes/core/storage/10-file.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/node_modules/@node-red/nodes/core/storage/10-file.js b/packages/node_modules/@node-red/nodes/core/storage/10-file.js index 33a533ed6..fea8c490e 100644 --- a/packages/node_modules/@node-red/nodes/core/storage/10-file.js +++ b/packages/node_modules/@node-red/nodes/core/storage/10-file.js @@ -68,7 +68,7 @@ module.exports = function(RED) { node.error(err,msg); return done(); } else { - if (value) { + if (typeof value !== 'string' && value !== null && value !== undefined) { value = value.toString(); } processMsg2(msg,nodeSend,value,done); @@ -316,7 +316,7 @@ module.exports = function(RED) { node.error(err,msg); return done(); } else { - if (value) { + if (typeof value !== 'string' && value !== null && value !== undefined) { value = value.toString(); } processMsg2(msg, nodeSend, (value || "").replace(/\t|\r|\n/g,''), nodeDone);