From dbfefa28c27223aa3de778ce1c8499bac05bd304 Mon Sep 17 00:00:00 2001 From: megagrump Date: Sun, 11 Jul 2021 19:40:44 +0200 Subject: [PATCH] check argument type in newFile(), fixes #4 --- nativefs.lua | 3 +++ test/main.lua | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/nativefs.lua b/nativefs.lua index 0712f05..ef95c44 100644 --- a/nativefs.lua +++ b/nativefs.lua @@ -216,6 +216,9 @@ local nativefs = {} local loveC = ffi.os == 'Windows' and ffi.load('love') or C function nativefs.newFile(name) + if type(name) ~= 'string' then + error("bad argument #1 to 'newFile' (string expected, got " .. type(name) .. ")") + end return setmetatable({ _name = name, _mode = 'c', diff --git a/test/main.lua b/test/main.lua index 9ccedaf..9ba0ee7 100644 --- a/test/main.lua +++ b/test/main.lua @@ -7,6 +7,7 @@ local fs local equals, notEquals = lu.assertEquals, lu.assertNotEquals local contains = lu.assertStrContains +local errorContains = lu.assertErrorMsgContains local function notFailed(ok, err) equals(ok, true) @@ -27,6 +28,11 @@ local testFile1, testSize1 = 'data/ümläüt.txt', 446 local testFile2, testSize2 = 'data/𠆢ßЩ.txt', 450 function test_fs_newFile() + errorContains('bad argument', fs.newFile) + for _, v in ipairs({ 1, true, false, function() end, {} }) do + errorContains(type(v), fs.newFile, v) + end + local file = fs.newFile('test.file') notEquals(file, nil) equals(file:type(), 'File')