[testbox] bdd in coldfusion 11 throwing "Invalid construct: Either argument or name is missing."

Trying to run Sticker’s BDD tests in CF11 u2 and several (but not all) of the describe blocks throw a compile-time error:

Invalid construct: Either argument or name is missing.

This is definitely a CF bug not a Testbox one, but I’m wondering if anyone else has encountered it and has any workarounds?

I’ve tried adding named arguments and un-nesting inline structs, but neither of these changes anything, and the same constructs don’t throw an error in all cases.

For example, in BundleTest,getAssets compiles, but addAsset doesn’t - is there a syntax difference I’m missing?

Ok, figured out what it was - there were missing semi-colons on some lines, and it was throwing that error instead of the usual one you get for semi-colons.

I added a different type of syntax error and got the same message, so basically the error “Invalid construct: Either argument or name is missing.” means there’s something CF isn’t happy with, but with function expressions it’s not the message/line indicated by the error.

So is this a TestBox bug

So is this a TestBox bug

Nope, the missing semi-colons were in Sticker.

Script semicolons are optional in Railo. Whoever wrote the specs was probably using Railo at the time and didn’t notice. I’ve certainly done that.



ColdBox Platform Evangelist
Ortus Solutions, Corp

E-mail: brad@coldbox.org
ColdBox Platform: http://www.coldbox.org
Blog: http://www.codersrevolution.com

Yep, Sticker is currently a Railo/Lucee only project, but I needed to get it going on CF11.

(I’d much rather get our CF11 application running on Lucee, but anyhow…)

Oh, while I’m here, do you know if there’s an existing TestBox issue for showing complex data differences better - at the moment I have to copy JSON strings like the following into Beyond Compare to see what isn’t matching - it’d be nice to get TestBox doing a diff for me, or at least offering a standard dump.

Expected [{DEPENDENTS={[assetx, assety, assetz]},BEFORE={[assetx, assety, assetz]},MEDIA={},AFTER={[asset1, *]},DEPENDSON={[asset1, ]},PATH={/js/subfolder/fa56e8c-myfile.min.js},RENDEREDINCLUDE={},URL={/assets/js/subfolder/fa56e8c-myfile.min.js},TYPE={js},IE={}}] but received [{DEPENDENTS={[assetx, assety, assetz]},BEFORE={[assetz, assety, assetx]},MEDIA={},AFTER={[, asset1]},DEPENDSON={[asset1, *]},PATH={/js/subfolder/fa56e8c-myfile.min.js},RENDEREDINCLUDE={},URL={/assets/js/subfolder/fa56e8c-myfile.min.js},TYPE={js},IE={}}]

I’m guessing someone has already raised it as an issue, but if not I’ll do so tomorrow.