Fix parsing of some parameter formats in argscheck.checkArgs (#200)
diff --git a/src/common/argscheck.js b/src/common/argscheck.js
index 07a2297..06d465e 100644
--- a/src/common/argscheck.js
+++ b/src/common/argscheck.js
@@ -33,7 +33,7 @@
};
function extractParamName (callee, argIndex) {
- return (/.*?\((.*?)\)/).exec(callee)[1].split(', ')[argIndex];
+ return (/\(\s*([^)]*?)\s*\)/).exec(callee)[1].split(/\s*,\s*/)[argIndex];
}
function checkArgs (spec, functionName, args, opt_callee) {
diff --git a/test/test.argscheck.js b/test/test.argscheck.js
index 7f4392c..60fd02f 100644
--- a/test/test.argscheck.js
+++ b/test/test.argscheck.js
@@ -78,4 +78,22 @@
argscheck.enableChecks = false;
testFunc();
});
+ it('Test#012 : should be able to extract from all kinds of parameter formats', () => {
+ const check = args => argscheck.checkArgs('ss', 'testFn', args);
+
+ function sparse (
+ a,
+ b
+ ) { check(arguments); }
+ expect(() => sparse(null, '')).toThrowError(/parameter "a"/);
+ expect(() => sparse('', null)).toThrowError(/parameter "b"/);
+
+ // eslint-disable-next-line comma-spacing
+ function dense (a,b) { check(arguments); }
+ expect(() => dense('', null)).toThrowError(/parameter "b"/);
+
+ // eslint-disable-next-line comma-spacing, space-in-parens
+ function funky ( a ,b ) { check(arguments); }
+ expect(() => funky(null, '')).toThrowError(/parameter "a"/);
+ });
});