I'm happy to add tests for bug fixes etc. that I push, so I tried compiling<div>and running the PS test suite. It requires the Arnesi and FiveAM libraries,</div><div>so I downloaded and asdf-loaded those, then called (RUN-TESTS).</div>
<div>The output I got seems to include many failures. How many of these</div><div>are actual failures in the official tests, and how many are glitches local</div><div>to me?</div><div><br></div><div>Since we have many custom PS macros, I was careful to run</div>
<div>these in a Lisp that only loaded the PARENSCRIPT-TEST package.</div><div><br></div><div>Daniel</div><div><br></div><div><br></div><div><br></div><div><div>Running reference tests:</div><div>...............f....................................................................f....</div>
<div> Did 89 checks.</div><div> Pass: 87 (97%)</div><div> Skip: 0 ( 0%)</div><div> Fail: 2 ( 2%)</div><div><br></div><div> Failure Details:</div><div> --------------------------------</div><div> THE-HTML-GENERATOR-3 []: </div>
<div> (NORMALIZE-JS-CODE "document.write('<A HREF=\"#\" ONCLICK=\"' + 'javascript:' + 'transport()' + '\">link</A>');") evaluated to "document.write('<A HREF=\"#\" ONCLICK=\"' + 'javascript:' + 'transport()' + '\">link</A>');", which is not STRING= to "document.write('<A HREF=\"#\" ONCLICK=\"' + ['javascript:', 'transport()'].join('') + '\">link</A>');"..</div>
<div> --------------------------------</div><div> --------------------------------</div><div> ASSIGNMENT-11 []: </div><div> (NORMALIZE-JS-CODE "var _js2 = someDiv;</div><div>var _js1 = 123 + 'px';</div>
<div>
_js2.style.left = _js1;") evaluated to "var _js2 = someDiv; var _js1 = 123 + 'px'; _js2.style.left = _js1;", which is not STRING= to "left(someDiv) = 123 + 'px';"..</div><div> --------------------------------</div>
<div><br></div><div>Running other tests:</div><div>.................................................................................................f............ff.....f...............f.......................................................................f.f....</div>
<div>;Compiler warnings :</div><div>; In an anonymous lambda form: Undeclared free variable X..f.......f........</div><div> Did 231 checks.</div><div> Pass: 222 (96%)</div><div> Skip: 0 ( 0%)</div><div> Fail: 9 ( 3%)</div>
<div><br></div><div> Failure Details:</div><div> --------------------------------</div><div> VALUES2 []: </div><div> (NORMALIZE-JS-CODE "var val1_1 = x;</div><div>var valrest2 = [y];</div><div>if (undefined !== arguments['callee']['caller']['mv']) {</div>
<div> arguments['callee']['caller']['mv'] = valrest2;</div><div>};</div><div>val1_1;") evaluated to "var val1_1 = x; var valrest2 = [y]; if (undefined !== arguments['callee']['caller']['mv']) { arguments['callee']['caller']['mv'] = valrest2; }; val1_1;", which is not STRING= to "var val1_1 = x; var valrest2 = [y]; if (undefined !== <a href="http://arguments.callee.caller.mv">arguments.callee.caller.mv</a>) { <a href="http://arguments.callee.caller.mv">arguments.callee.caller.mv</a> = valrest2; }; val1_1;"..</div>
<div> --------------------------------</div><div> --------------------------------</div><div> VALUES3 []: </div><div> (NORMALIZE-JS-CODE "var val1_1 = x;</div><div>var valrest2 = [y, z];</div><div>if (undefined !== arguments['callee']['caller']['mv']) {</div>
<div> arguments['callee']['caller']['mv'] = valrest2;</div><div>};</div><div>val1_1;") evaluated to "var val1_1 = x; var valrest2 = [y, z]; if (undefined !== arguments['callee']['caller']['mv']) { arguments['callee']['caller']['mv'] = valrest2; }; val1_1;", which is not STRING= to "var val1_1 = x; var valrest2 = [y, z]; if (undefined !== <a href="http://arguments.callee.caller.mv">arguments.callee.caller.mv</a>) { <a href="http://arguments.callee.caller.mv">arguments.callee.caller.mv</a> = valrest2; }; val1_1;"..</div>
<div> --------------------------------</div><div> --------------------------------</div><div> VALUES-RETURN []: </div><div> (NORMALIZE-JS-CODE "var val1_1 = x;</div><div>var valrest2 = [y];</div><div>if (undefined !== arguments['callee']['caller']['mv']) {</div>
<div> arguments['callee']['caller']['mv'] = valrest2;</div><div>};</div><div>return val1_1;") evaluated to "var val1_1 = x; var valrest2 = [y]; if (undefined !== arguments['callee']['caller']['mv']) { arguments['callee']['caller']['mv'] = valrest2; }; return val1_1;", which is not STRING= to "var val1_1 = x; var valrest2 = [y]; if (undefined !== <a href="http://arguments.callee.caller.mv">arguments.callee.caller.mv</a>) { <a href="http://arguments.callee.caller.mv">arguments.callee.caller.mv</a> = valrest2; }; return val1_1;"..</div>
<div> --------------------------------</div><div> --------------------------------</div><div> EVAL-WHEN-MACROLET-EXPANSION []: </div><div> *LISP-OUTPUT* evaluated to ORIGINAL-VALUE, which is not EQL to :CL-USER..</div>
<div> --------------------------------</div><div> --------------------------------</div><div> EVAL-WHEN-MACRO-EXPANSION []: </div><div> *LISP-OUTPUT* evaluated to ORIGINAL-VALUE, which is not EQL to :CL-USER..</div>
<div>
--------------------------------</div><div> --------------------------------</div><div> MV-BIND1 []: </div><div> (NORMALIZE-JS-CODE "returnsMv();</div><div>var prevmv2 = arguments['callee']['mv'];</div>
<div>try {</div><div> arguments['callee']['mv'] = true;</div><div> var a = doesnt();</div><div> var mv1 = typeof arguments['callee']['mv'] === 'object' ? arguments['callee']['mv'] : new Array(1);</div>
<div> var b = mv1[0];</div><div> alert(a);</div><div> alert(b);</div><div>} finally {</div><div> if (undefined === prevmv2) {</div><div> delete arguments['callee']['mv'];</div><div> } else {</div>
<div> arguments['callee']['mv'] = prevmv2;</div><div> };</div><div>};") evaluated to "returnsMv(); var prevmv2 = arguments['callee']['mv']; try { arguments['callee']['mv'] = true; var a = doesnt(); var mv1 = typeof arguments['callee']['mv'] === 'object' ? arguments['callee']['mv'] : new Array(1); var b = mv1[0]; alert(a); alert(b); } finally { if (undefined === prevmv2) { delete arguments['callee']['mv']; } else { arguments['callee']['mv'] = prevmv2; }; };", which is not STRING= to "returnsMv(); var prevmv2 = <a href="http://arguments.callee.mv">arguments.callee.mv</a>; try { <a href="http://arguments.callee.mv">arguments.callee.mv</a> = true; var a = doesnt(); var mv1 = typeof <a href="http://arguments.callee.mv">arguments.callee.mv</a> === 'object' ? <a href="http://arguments.callee.mv">arguments.callee.mv</a> : new Array(1); var b = mv1[0]; alert(a); alert(b); } finally { if (undefined === prevmv2) { delete <a href="http://arguments.callee.mv">arguments.callee.mv</a>; } else { <a href="http://arguments.callee.mv">arguments.callee.mv</a> = prevmv2; }; };"..</div>
<div> --------------------------------</div><div> --------------------------------</div><div> EVAL-WHEN-LISP-SIDE []: </div><div> *LISP-OUTPUT* evaluated to ORIGINAL-VALUE, which is not EQL to IT-WORKS..</div><div> --------------------------------</div>
<div> --------------------------------</div><div> EVAL-WHEN-LISP-SIDE []: </div><div> JS-OUTPUT evaluated to "LISPOUTPUT = 'itWorks';", which is not STRING= to ""..</div><div> --------------------------------</div>
<div> --------------------------------</div><div> FUNCALL-IF-EXPRESSION []: </div><div> (NORMALIZE-JS-CODE "document.write(LINKORNOT === 1 ? '<A HREF=\"#\" ONCLICK=\"' + 'javascript:' + 'transport()' + '\">' + img + '</A>' : img);") evaluated to "document.write(LINKORNOT === 1 ? '<A HREF=\"#\" ONCLICK=\"' + 'javascript:' + 'transport()' + '\">' + img + '</A>' : img);", which is not STRING= to "document.write(LINKORNOT === 1 ? '<A HREF=\"#\" ONCLICK=\"' + ['javascript:', 'transport()'].join('') + '\">' + img + '</A>' : img);"..</div>
<div> --------------------------------</div><div><br></div><div>Running Package System tests:</div><div>f.f..f..</div><div> Did 8 checks.</div><div> Pass: 5 (62%)</div><div> Skip: 0 ( 0%)</div><div> Fail: 3 (37%)</div>
<div><br></div><div> Failure Details:</div><div> --------------------------------</div><div> NAMESPACE-AND-SPECIAL-FORMS []: </div><div> (PARENSCRIPT-TEST::NORMALIZE-JS-CODE "var prefix_foo = { prefix_bar : 1, prefix_notAKeyword : prefix_something };</div>
<div>return !prefix_foo && prefix_foo.prefix_bar + prefix_someOtherVar;") evaluated to "var prefix_foo = { prefix_bar : 1, prefix_notAKeyword : prefix_something }; return !prefix_foo && prefix_foo.prefix_bar + prefix_someOtherVar;", which is not COMMON-LISP:STRING= to "var foo = { bar : 1, notAKeyword : something }; return !foo && foo.bar + someOtherVar;"..</div>
<div> --------------------------------</div><div> --------------------------------</div><div> OBFUSCATION1 []: </div><div> (NORMALIZE-JS-CODE "function g1(a, b, g2) {</div><div> return a + my_library_libraryFunction(b, g2);</div>
<div>};") evaluated to "function g1(a, b, g2) { return a + my_library_libraryFunction(b, g2); };", which is not STRING= to "function g1(a, b, g1) { return a + my_library_libraryFunction(b, g1); };"..</div>
<div> --------------------------------</div><div> --------------------------------</div><div> EXPORTED-INTERFACE []: </div><div> (PARENSCRIPT-TEST::NORMALIZE-JS-CODE "function interfaceFunction(prefix_baz) {</div>
<div> return prefix_baz + g2;</div><div>};") evaluated to "function interfaceFunction(prefix_baz) { return prefix_baz + g2; };", which is not COMMON-LISP:STRING= to "function interfaceFunction(baz) { return baz + g1; };"..</div>
<div> --------------------------------</div><div><br></div><div>NIL</div><div>PS-TEST> </div></div>