johnson 1.2.0 → 2.0.0.pre0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.rdoc +8 -0
- data/Manifest.txt +762 -48
- data/README.rdoc +2 -1
- data/Rakefile +90 -18
- data/ext/spidermonkey/conversions.c +9 -2
- data/ext/spidermonkey/ruby_land_proxy.c +1 -1
- data/ext/spidermonkey/runtime.h +1 -1
- data/ext/tracemonkey/context.cc +125 -0
- data/ext/tracemonkey/context.h +19 -0
- data/ext/tracemonkey/conversions.cc +365 -0
- data/ext/tracemonkey/conversions.h +32 -0
- data/ext/tracemonkey/debugger.cc +234 -0
- data/ext/tracemonkey/debugger.h +10 -0
- data/ext/tracemonkey/extconf.rb +37 -0
- data/ext/tracemonkey/extensions.cc +37 -0
- data/ext/tracemonkey/extensions.h +12 -0
- data/ext/tracemonkey/global.cc +40 -0
- data/ext/tracemonkey/global.h +11 -0
- data/ext/tracemonkey/idhash.cc +16 -0
- data/ext/tracemonkey/idhash.h +8 -0
- data/ext/tracemonkey/immutable_node.cc +1199 -0
- data/ext/tracemonkey/immutable_node.cc.erb +559 -0
- data/ext/tracemonkey/immutable_node.h +22 -0
- data/ext/tracemonkey/jroot.h +215 -0
- data/ext/tracemonkey/js_land_proxy.cc +620 -0
- data/ext/tracemonkey/js_land_proxy.h +20 -0
- data/ext/tracemonkey/ruby_land_proxy.cc +618 -0
- data/ext/tracemonkey/ruby_land_proxy.h +38 -0
- data/ext/tracemonkey/runtime.cc +454 -0
- data/ext/tracemonkey/runtime.h +27 -0
- data/ext/tracemonkey/split_global.cc +392 -0
- data/ext/tracemonkey/split_global.h +11 -0
- data/ext/tracemonkey/tracemonkey.cc +23 -0
- data/ext/tracemonkey/tracemonkey.h +32 -0
- data/lib/johnson.rb +12 -4
- data/lib/johnson/error.rb +5 -0
- data/lib/johnson/js/prelude.js +16 -1
- data/lib/johnson/parser.rb +2 -1
- data/lib/johnson/runtime.rb +87 -26
- data/lib/johnson/spidermonkey/runtime.rb +7 -16
- data/lib/johnson/tracemonkey.rb +13 -0
- data/lib/johnson/tracemonkey/context.rb +10 -0
- data/lib/johnson/tracemonkey/debugger.rb +67 -0
- data/lib/johnson/tracemonkey/immutable_node.rb +282 -0
- data/lib/johnson/tracemonkey/js_land_proxy.rb +64 -0
- data/lib/johnson/tracemonkey/mutable_tree_visitor.rb +242 -0
- data/lib/johnson/tracemonkey/ruby_land_proxy.rb +17 -0
- data/lib/johnson/tracemonkey/runtime.rb +80 -0
- data/test/{johnson_test.rb → generic/johnson_test.rb} +1 -1
- data/test/{parser_test.rb → generic/parser_test.rb} +1 -1
- data/test/helper.rb +23 -4
- data/test/johnson/{browser_test.rb → generic/browser_test.rb} +1 -1
- data/test/johnson/{conversions → generic/conversions}/array_test.rb +1 -1
- data/test/johnson/{conversions → generic/conversions}/boolean_test.rb +1 -1
- data/test/johnson/{conversions → generic/conversions}/callable_test.rb +1 -1
- data/test/johnson/{conversions → generic/conversions}/file_test.rb +1 -1
- data/test/johnson/generic/conversions/helper.rb +1 -0
- data/test/johnson/{conversions → generic/conversions}/nil_test.rb +1 -1
- data/test/johnson/{conversions → generic/conversions}/number_test.rb +1 -1
- data/test/johnson/{conversions → generic/conversions}/regexp_test.rb +1 -1
- data/test/johnson/{conversions → generic/conversions}/string_test.rb +1 -1
- data/test/johnson/{conversions → generic/conversions}/struct_test.rb +1 -1
- data/test/johnson/{conversions → generic/conversions}/symbol_test.rb +1 -1
- data/test/johnson/{conversions → generic/conversions}/thread_test.rb +1 -1
- data/test/johnson/{custom_conversions_test.rb → generic/custom_conversions_test.rb} +1 -1
- data/test/johnson/generic/default_test.rb +12 -0
- data/test/johnson/{error_test.rb → generic/error_test.rb} +1 -1
- data/test/johnson/{extensions_test.rb → generic/extensions_test.rb} +1 -1
- data/test/johnson/generic/helper.rb +1 -0
- data/test/johnson/{nodes → generic/nodes}/array_literal_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/array_node_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/binary_node_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/bracket_access_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/delete_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/do_while_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/dot_accessor_test.rb +1 -1
- data/test/johnson/generic/nodes/export_test.rb +11 -0
- data/test/johnson/{nodes → generic/nodes}/for_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/function_test.rb +1 -1
- data/test/johnson/generic/nodes/helper.rb +1 -0
- data/test/johnson/{nodes → generic/nodes}/if_test.rb +16 -6
- data/test/johnson/generic/nodes/import_test.rb +15 -0
- data/test/johnson/{nodes → generic/nodes}/label_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/let_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/object_literal_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/return_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/semi_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/switch_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/ternary_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/throw_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/try_node_test.rb +36 -6
- data/test/johnson/{nodes → generic/nodes}/typeof_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/unary_node_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/void_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/while_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/with_test.rb +1 -1
- data/test/johnson/{prelude_test.rb → generic/prelude_test.rb} +1 -1
- data/test/johnson/{runtime_test.rb → generic/runtime_test.rb} +3 -6
- data/test/johnson/generic/version_test.rb +13 -0
- data/test/johnson/{visitors → generic/visitors}/dot_visitor_test.rb +1 -1
- data/test/johnson/{visitors → generic/visitors}/enumerating_visitor_test.rb +1 -1
- data/test/johnson/generic/visitors/helper.rb +1 -0
- data/test/johnson/spidermonkey/js_land_proxy_test.rb +1 -5
- data/test/johnson/spidermonkey/ruby_land_proxy_test.rb +11 -7
- data/test/johnson/tracemonkey/context_test.rb +21 -0
- data/test/johnson/tracemonkey/immutable_node_test.rb +34 -0
- data/test/johnson/tracemonkey/js_land_proxy_test.rb +273 -0
- data/test/johnson/tracemonkey/ruby_land_proxy_test.rb +274 -0
- data/test/johnson/tracemonkey/runtime_test.rb +41 -0
- data/test/johnson/tracemonkey/split_global_test.rb +32 -0
- data/vendor/spidermonkey/js.pkg +2 -0
- data/vendor/tracemonkey/Makefile.in +668 -0
- data/vendor/tracemonkey/Makefile.ref +483 -0
- data/vendor/tracemonkey/README.html +54 -0
- data/vendor/tracemonkey/SpiderMonkey.rsp +11 -0
- data/vendor/tracemonkey/Y.js +19 -0
- data/vendor/tracemonkey/aclocal.m4 +9 -0
- data/vendor/tracemonkey/bench.sh +5 -0
- data/vendor/tracemonkey/build/autoconf/acoutput-fast.pl +202 -0
- data/vendor/tracemonkey/build/autoconf/altoptions.m4 +154 -0
- data/vendor/tracemonkey/build/autoconf/config.guess +1537 -0
- data/vendor/tracemonkey/build/autoconf/config.sub +1595 -0
- data/vendor/tracemonkey/build/autoconf/install-sh +119 -0
- data/vendor/tracemonkey/build/autoconf/make-makefile +315 -0
- data/vendor/tracemonkey/build/autoconf/match-dir.sh +101 -0
- data/vendor/tracemonkey/build/autoconf/moznbytetype.m4 +136 -0
- data/vendor/tracemonkey/build/autoconf/nspr.m4 +82 -0
- data/vendor/tracemonkey/build/autoconf/pkg.m4 +59 -0
- data/vendor/tracemonkey/build/autoconf/update-makefile.sh +118 -0
- data/vendor/tracemonkey/build/cygwin-wrapper +75 -0
- data/vendor/tracemonkey/build/hcc +111 -0
- data/vendor/tracemonkey/build/hcpp +155 -0
- data/vendor/tracemonkey/build/unix/mddepend.pl +165 -0
- data/vendor/tracemonkey/build/unix/uniq.pl +63 -0
- data/vendor/tracemonkey/build/win32/pgomerge.py +40 -0
- data/vendor/tracemonkey/builtins.tbl +91 -0
- data/vendor/tracemonkey/call.js +13 -0
- data/vendor/tracemonkey/config.mk +206 -0
- data/vendor/tracemonkey/config/Makefile.in +106 -0
- data/vendor/tracemonkey/config/Moz/Milestone.pm +232 -0
- data/vendor/tracemonkey/config/autoconf.mk.in +362 -0
- data/vendor/tracemonkey/config/check-sync-dirs.py +103 -0
- data/vendor/tracemonkey/config/check-sync-exceptions +7 -0
- data/vendor/tracemonkey/config/config.mk +881 -0
- data/vendor/tracemonkey/config/fastcwd.pl +66 -0
- data/vendor/tracemonkey/config/gcc_hidden.h +2 -0
- data/vendor/tracemonkey/config/insure.mk +53 -0
- data/vendor/tracemonkey/config/make-system-wrappers.pl +59 -0
- data/vendor/tracemonkey/config/milestone.pl +112 -0
- data/vendor/tracemonkey/config/milestone.txt +13 -0
- data/vendor/tracemonkey/config/mkdepend/Makefile.in +84 -0
- data/vendor/tracemonkey/config/mkdepend/cppsetup.c +233 -0
- data/vendor/tracemonkey/config/mkdepend/def.h +184 -0
- data/vendor/tracemonkey/config/mkdepend/ifparser.c +551 -0
- data/vendor/tracemonkey/config/mkdepend/ifparser.h +83 -0
- data/vendor/tracemonkey/config/mkdepend/imakemdep.h +733 -0
- data/vendor/tracemonkey/config/mkdepend/include.c +337 -0
- data/vendor/tracemonkey/config/mkdepend/main.c +860 -0
- data/vendor/tracemonkey/config/mkdepend/mkdepend.man +382 -0
- data/vendor/tracemonkey/config/mkdepend/parse.c +686 -0
- data/vendor/tracemonkey/config/mkdepend/pr.c +124 -0
- data/vendor/tracemonkey/config/nfspwd.pl +50 -0
- data/vendor/tracemonkey/config/nsinstall.c +481 -0
- data/vendor/tracemonkey/config/nsinstall.py +155 -0
- data/vendor/tracemonkey/config/pathsub.c +247 -0
- data/vendor/tracemonkey/config/pathsub.h +74 -0
- data/vendor/tracemonkey/config/preprocessor.pl +671 -0
- data/vendor/tracemonkey/config/revdepth-nt.pl +48 -0
- data/vendor/tracemonkey/config/revdepth.pl +51 -0
- data/vendor/tracemonkey/config/rules.mk +2310 -0
- data/vendor/tracemonkey/config/static-checking-config.mk +21 -0
- data/vendor/tracemonkey/config/static-checking.js +92 -0
- data/vendor/tracemonkey/config/string-format.js +61 -0
- data/vendor/tracemonkey/config/system-headers +1035 -0
- data/vendor/tracemonkey/config/version.mk +85 -0
- data/vendor/tracemonkey/config/version_win.pl +442 -0
- data/vendor/tracemonkey/configure +14183 -0
- data/vendor/tracemonkey/configure.in +5363 -0
- data/vendor/tracemonkey/correct.sh +23 -0
- data/vendor/tracemonkey/correct/check-3d-morph.js +55 -0
- data/vendor/tracemonkey/correct/check-3d-raytrace.js +445 -0
- data/vendor/tracemonkey/correct/check-access-binary-trees.js +52 -0
- data/vendor/tracemonkey/correct/check-access-fannkuch.js +66 -0
- data/vendor/tracemonkey/correct/check-access-nbody.js +171 -0
- data/vendor/tracemonkey/correct/check-access-nsieve.js +40 -0
- data/vendor/tracemonkey/correct/check-bitops-3bit-bits-in-byte.js +35 -0
- data/vendor/tracemonkey/correct/check-bitops-bits-in-byte.js +24 -0
- data/vendor/tracemonkey/correct/check-bitops-bitwise-and.js +29 -0
- data/vendor/tracemonkey/correct/check-bitops-nsieve-bits.js +40 -0
- data/vendor/tracemonkey/correct/check-controlflow-recursive.js +27 -0
- data/vendor/tracemonkey/correct/check-date-format-tofte.js +302 -0
- data/vendor/tracemonkey/correct/check-date-format-xparb.js +421 -0
- data/vendor/tracemonkey/correct/check-mont.js +119 -0
- data/vendor/tracemonkey/dtoa.c +3335 -0
- data/vendor/tracemonkey/editline/Makefile.in +55 -0
- data/vendor/tracemonkey/editline/Makefile.ref +143 -0
- data/vendor/tracemonkey/editline/README +83 -0
- data/vendor/tracemonkey/editline/editline.3 +175 -0
- data/vendor/tracemonkey/editline/editline.c +1371 -0
- data/vendor/tracemonkey/editline/editline.h +135 -0
- data/vendor/tracemonkey/editline/sysunix.c +182 -0
- data/vendor/tracemonkey/editline/unix.h +82 -0
- data/vendor/tracemonkey/if.js +13 -0
- data/vendor/tracemonkey/imacro_asm.js.in +396 -0
- data/vendor/tracemonkey/imacros.c.out +1034 -0
- data/vendor/tracemonkey/imacros.jsasm +770 -0
- data/vendor/tracemonkey/javascript-trace.d +73 -0
- data/vendor/tracemonkey/jitstats.tbl +55 -0
- data/vendor/tracemonkey/js-config.h.in +82 -0
- data/vendor/tracemonkey/js-config.in +111 -0
- data/vendor/tracemonkey/js.mdp +0 -0
- data/vendor/tracemonkey/js.msg +312 -0
- data/vendor/tracemonkey/js3240.rc +79 -0
- data/vendor/tracemonkey/jsOS240.def +654 -0
- data/vendor/tracemonkey/jsapi.cpp +6005 -0
- data/vendor/tracemonkey/jsapi.h +2727 -0
- data/vendor/tracemonkey/jsarena.cpp +450 -0
- data/vendor/tracemonkey/jsarena.h +318 -0
- data/vendor/tracemonkey/jsarray.cpp +3664 -0
- data/vendor/tracemonkey/jsarray.h +238 -0
- data/vendor/tracemonkey/jsatom.cpp +1244 -0
- data/vendor/tracemonkey/jsatom.h +493 -0
- data/vendor/tracemonkey/jsbit.h +249 -0
- data/vendor/tracemonkey/jsbool.cpp +184 -0
- data/vendor/tracemonkey/jsbool.h +88 -0
- data/vendor/tracemonkey/jsbuiltins.cpp +415 -0
- data/vendor/tracemonkey/jsbuiltins.h +456 -0
- data/vendor/tracemonkey/jsclist.h +139 -0
- data/vendor/tracemonkey/jscntxt.cpp +1816 -0
- data/vendor/tracemonkey/jscntxt.h +1541 -0
- data/vendor/tracemonkey/jscompat.h +57 -0
- data/vendor/tracemonkey/jsconfig.mk +181 -0
- data/vendor/tracemonkey/jscpucfg.cpp +194 -0
- data/vendor/tracemonkey/jscpucfg.h +91 -0
- data/vendor/tracemonkey/jsdate.cpp +2465 -0
- data/vendor/tracemonkey/jsdate.h +129 -0
- data/vendor/tracemonkey/jsdbgapi.cpp +2017 -0
- data/vendor/tracemonkey/jsdbgapi.h +500 -0
- data/vendor/tracemonkey/jsdhash.cpp +876 -0
- data/vendor/tracemonkey/jsdhash.h +588 -0
- data/vendor/tracemonkey/jsdtoa.cpp +572 -0
- data/vendor/tracemonkey/jsdtoa.h +131 -0
- data/vendor/tracemonkey/jsdtracef.c +318 -0
- data/vendor/tracemonkey/jsdtracef.h +81 -0
- data/vendor/tracemonkey/jsemit.cpp +7292 -0
- data/vendor/tracemonkey/jsemit.h +802 -0
- data/vendor/tracemonkey/jsexn.cpp +1337 -0
- data/vendor/tracemonkey/jsexn.h +96 -0
- data/vendor/tracemonkey/jsfile.cpp +2747 -0
- data/vendor/tracemonkey/jsfile.h +56 -0
- data/vendor/tracemonkey/jsfile.msg +90 -0
- data/vendor/tracemonkey/jsfun.cpp +3089 -0
- data/vendor/tracemonkey/jsfun.h +366 -0
- data/vendor/tracemonkey/jsgc.cpp +3816 -0
- data/vendor/tracemonkey/jsgc.h +429 -0
- data/vendor/tracemonkey/jshash.cpp +477 -0
- data/vendor/tracemonkey/jshash.h +151 -0
- data/vendor/tracemonkey/jsify.pl +483 -0
- data/vendor/tracemonkey/jsinterp.cpp +7441 -0
- data/vendor/tracemonkey/jsinterp.h +666 -0
- data/vendor/tracemonkey/jsinvoke.cpp +42 -0
- data/vendor/tracemonkey/jsiter.cpp +1040 -0
- data/vendor/tracemonkey/jsiter.h +140 -0
- data/vendor/tracemonkey/jskeyword.tbl +124 -0
- data/vendor/tracemonkey/jskwgen.cpp +460 -0
- data/vendor/tracemonkey/jslibmath.h +69 -0
- data/vendor/tracemonkey/jslock.cpp +1512 -0
- data/vendor/tracemonkey/jslock.h +325 -0
- data/vendor/tracemonkey/jslocko.asm +60 -0
- data/vendor/tracemonkey/jslog2.cpp +111 -0
- data/vendor/tracemonkey/jslong.h +167 -0
- data/vendor/tracemonkey/jsmath.cpp +806 -0
- data/vendor/tracemonkey/jsmath.h +63 -0
- data/vendor/tracemonkey/jsnum.cpp +1374 -0
- data/vendor/tracemonkey/jsnum.h +280 -0
- data/vendor/tracemonkey/jsobj.cpp +6165 -0
- data/vendor/tracemonkey/jsobj.h +870 -0
- data/vendor/tracemonkey/json.cpp +1338 -0
- data/vendor/tracemonkey/json.h +108 -0
- data/vendor/tracemonkey/jsopcode.cpp +5484 -0
- data/vendor/tracemonkey/jsopcode.h +434 -0
- data/vendor/tracemonkey/jsopcode.tbl +591 -0
- data/vendor/tracemonkey/jsoplengen.cpp +121 -0
- data/vendor/tracemonkey/jsotypes.h +202 -0
- data/vendor/tracemonkey/jsparse.cpp +9257 -0
- data/vendor/tracemonkey/jsparse.h +900 -0
- data/vendor/tracemonkey/jsprf.cpp +1262 -0
- data/vendor/tracemonkey/jsprf.h +150 -0
- data/vendor/tracemonkey/jsproto.tbl +117 -0
- data/vendor/tracemonkey/jsprvtd.h +366 -0
- data/vendor/tracemonkey/jspubtd.h +585 -0
- data/vendor/tracemonkey/jsregexp.cpp +5051 -0
- data/vendor/tracemonkey/jsregexp.h +199 -0
- data/vendor/tracemonkey/jsreops.tbl +145 -0
- data/vendor/tracemonkey/jsscan.cpp +2040 -0
- data/vendor/tracemonkey/jsscan.h +467 -0
- data/vendor/tracemonkey/jsscope.cpp +1966 -0
- data/vendor/tracemonkey/jsscope.h +487 -0
- data/vendor/tracemonkey/jsscript.cpp +1932 -0
- data/vendor/tracemonkey/jsscript.h +345 -0
- data/vendor/tracemonkey/jsshell.msg +54 -0
- data/vendor/tracemonkey/jsstack.js +167 -0
- data/vendor/tracemonkey/jsstaticcheck.h +69 -0
- data/vendor/tracemonkey/jsstddef.h +87 -0
- data/vendor/tracemonkey/jsstdint.h +96 -0
- data/vendor/tracemonkey/jsstr.cpp +5277 -0
- data/vendor/tracemonkey/jsstr.h +702 -0
- data/vendor/tracemonkey/jstracer.cpp +10991 -0
- data/vendor/tracemonkey/jstracer.h +794 -0
- data/vendor/tracemonkey/jstypes.h +481 -0
- data/vendor/tracemonkey/jsutil.cpp +361 -0
- data/vendor/tracemonkey/jsutil.h +178 -0
- data/vendor/tracemonkey/jsversion.h +243 -0
- data/vendor/tracemonkey/jswince.asm +44 -0
- data/vendor/tracemonkey/jsxdrapi.cpp +800 -0
- data/vendor/tracemonkey/jsxdrapi.h +220 -0
- data/vendor/tracemonkey/jsxml.cpp +8327 -0
- data/vendor/tracemonkey/jsxml.h +305 -0
- data/vendor/tracemonkey/liveconnect/LiveConnect.dsp +157 -0
- data/vendor/tracemonkey/liveconnect/LiveConnectShell.dsp +120 -0
- data/vendor/tracemonkey/liveconnect/LiveConnectShell.dsw +44 -0
- data/vendor/tracemonkey/liveconnect/Makefile.in +105 -0
- data/vendor/tracemonkey/liveconnect/Makefile.ref +169 -0
- data/vendor/tracemonkey/liveconnect/README.html +712 -0
- data/vendor/tracemonkey/liveconnect/_jni/netscape_javascript_JSException.h +14 -0
- data/vendor/tracemonkey/liveconnect/_jni/netscape_javascript_JSObject.h +155 -0
- data/vendor/tracemonkey/liveconnect/classes/Makefile.in +89 -0
- data/vendor/tracemonkey/liveconnect/classes/Makefile.ref +57 -0
- data/vendor/tracemonkey/liveconnect/classes/netscape/Makefile.ref +47 -0
- data/vendor/tracemonkey/liveconnect/classes/netscape/javascript/JSException.java +140 -0
- data/vendor/tracemonkey/liveconnect/classes/netscape/javascript/JSObject.java +183 -0
- data/vendor/tracemonkey/liveconnect/classes/netscape/javascript/JSProxy.java +58 -0
- data/vendor/tracemonkey/liveconnect/classes/netscape/javascript/JSRunnable.java +70 -0
- data/vendor/tracemonkey/liveconnect/classes/netscape/javascript/JSUtil.java +59 -0
- data/vendor/tracemonkey/liveconnect/classes/netscape/javascript/Makefile.ref +53 -0
- data/vendor/tracemonkey/liveconnect/config/AIX4.1.mk +45 -0
- data/vendor/tracemonkey/liveconnect/config/AIX4.2.mk +45 -0
- data/vendor/tracemonkey/liveconnect/config/AIX4.3.mk +50 -0
- data/vendor/tracemonkey/liveconnect/config/HP-UXB.10.10.mk +43 -0
- data/vendor/tracemonkey/liveconnect/config/HP-UXB.10.20.mk +43 -0
- data/vendor/tracemonkey/liveconnect/config/HP-UXB.11.00.mk +43 -0
- data/vendor/tracemonkey/liveconnect/config/IRIX6.2.mk +43 -0
- data/vendor/tracemonkey/liveconnect/config/IRIX6.3.mk +43 -0
- data/vendor/tracemonkey/liveconnect/config/IRIX6.5.mk +43 -0
- data/vendor/tracemonkey/liveconnect/config/Linux_All.mk +73 -0
- data/vendor/tracemonkey/liveconnect/config/OSF1V4.0.mk +65 -0
- data/vendor/tracemonkey/liveconnect/config/OSF1V5.0.mk +62 -0
- data/vendor/tracemonkey/liveconnect/config/SunOS5.5.1.mk +55 -0
- data/vendor/tracemonkey/liveconnect/config/SunOS5.6.mk +39 -0
- data/vendor/tracemonkey/liveconnect/config/SunOS5.7.mk +39 -0
- data/vendor/tracemonkey/liveconnect/config/SunOS5.8.mk +39 -0
- data/vendor/tracemonkey/liveconnect/config/WINNT4.0.mk +53 -0
- data/vendor/tracemonkey/liveconnect/jsj.c +886 -0
- data/vendor/tracemonkey/liveconnect/jsj.msg +98 -0
- data/vendor/tracemonkey/liveconnect/jsj_JSObject.c +1377 -0
- data/vendor/tracemonkey/liveconnect/jsj_JavaArray.c +474 -0
- data/vendor/tracemonkey/liveconnect/jsj_JavaClass.c +737 -0
- data/vendor/tracemonkey/liveconnect/jsj_JavaMember.c +191 -0
- data/vendor/tracemonkey/liveconnect/jsj_JavaObject.c +1079 -0
- data/vendor/tracemonkey/liveconnect/jsj_JavaPackage.c +569 -0
- data/vendor/tracemonkey/liveconnect/jsj_array.c +207 -0
- data/vendor/tracemonkey/liveconnect/jsj_class.c +770 -0
- data/vendor/tracemonkey/liveconnect/jsj_convert.c +902 -0
- data/vendor/tracemonkey/liveconnect/jsj_field.c +421 -0
- data/vendor/tracemonkey/liveconnect/jsj_hash.c +488 -0
- data/vendor/tracemonkey/liveconnect/jsj_hash.h +161 -0
- data/vendor/tracemonkey/liveconnect/jsj_method.c +1825 -0
- data/vendor/tracemonkey/liveconnect/jsj_nodl.c +1 -0
- data/vendor/tracemonkey/liveconnect/jsj_private.h +677 -0
- data/vendor/tracemonkey/liveconnect/jsj_simpleapi.c +219 -0
- data/vendor/tracemonkey/liveconnect/jsj_utils.c +513 -0
- data/vendor/tracemonkey/liveconnect/jsjava.h +316 -0
- data/vendor/tracemonkey/liveconnect/netscape_javascript_JSObject.h +155 -0
- data/vendor/tracemonkey/liveconnect/nsCLiveconnect.cpp +785 -0
- data/vendor/tracemonkey/liveconnect/nsCLiveconnect.h +197 -0
- data/vendor/tracemonkey/liveconnect/nsCLiveconnectFactory.cpp +118 -0
- data/vendor/tracemonkey/liveconnect/nsCLiveconnectFactory.h +76 -0
- data/vendor/tracemonkey/liveconnect/nsILiveconnect.h +197 -0
- data/vendor/tracemonkey/liveconnect/nsISecureLiveconnect.h +94 -0
- data/vendor/tracemonkey/liveconnect/nsISecurityContext.h +136 -0
- data/vendor/tracemonkey/lock_SunOS.s +119 -0
- data/vendor/tracemonkey/mandelbrot-results.js +3 -0
- data/vendor/tracemonkey/math-partial-sums.js +32 -0
- data/vendor/tracemonkey/math-trace-tests.js +507 -0
- data/vendor/tracemonkey/md5.js +289 -0
- data/vendor/tracemonkey/nanojit/Assembler.cpp +1984 -0
- data/vendor/tracemonkey/nanojit/Assembler.h +375 -0
- data/vendor/tracemonkey/nanojit/Fragmento.cpp +651 -0
- data/vendor/tracemonkey/nanojit/Fragmento.h +237 -0
- data/vendor/tracemonkey/nanojit/LIR.cpp +2314 -0
- data/vendor/tracemonkey/nanojit/LIR.h +879 -0
- data/vendor/tracemonkey/nanojit/LIRopcode.tbl +252 -0
- data/vendor/tracemonkey/nanojit/Native.h +127 -0
- data/vendor/tracemonkey/nanojit/NativeARM.cpp +1742 -0
- data/vendor/tracemonkey/nanojit/NativeARM.h +844 -0
- data/vendor/tracemonkey/nanojit/NativeSparc.cpp +1130 -0
- data/vendor/tracemonkey/nanojit/NativeSparc.h +948 -0
- data/vendor/tracemonkey/nanojit/NativeThumb.cpp +1322 -0
- data/vendor/tracemonkey/nanojit/NativeThumb.h +525 -0
- data/vendor/tracemonkey/nanojit/Nativei386.cpp +1748 -0
- data/vendor/tracemonkey/nanojit/Nativei386.h +857 -0
- data/vendor/tracemonkey/nanojit/RegAlloc.cpp +183 -0
- data/vendor/tracemonkey/nanojit/RegAlloc.h +95 -0
- data/vendor/tracemonkey/nanojit/TraceTreeDrawer.cpp +306 -0
- data/vendor/tracemonkey/nanojit/TraceTreeDrawer.h +88 -0
- data/vendor/tracemonkey/nanojit/avmplus.cpp +56 -0
- data/vendor/tracemonkey/nanojit/avmplus.h +1016 -0
- data/vendor/tracemonkey/nanojit/nanojit.h +253 -0
- data/vendor/tracemonkey/perfect.js +39 -0
- data/vendor/tracemonkey/plify_jsdhash.sed +35 -0
- data/vendor/tracemonkey/prmjtime.cpp +869 -0
- data/vendor/tracemonkey/prmjtime.h +103 -0
- data/vendor/tracemonkey/ref-config/AIX4.1.mk +65 -0
- data/vendor/tracemonkey/ref-config/AIX4.2.mk +64 -0
- data/vendor/tracemonkey/ref-config/AIX4.3.mk +65 -0
- data/vendor/tracemonkey/ref-config/Darwin.mk +85 -0
- data/vendor/tracemonkey/ref-config/Darwin1.3.mk +81 -0
- data/vendor/tracemonkey/ref-config/Darwin1.4.mk +41 -0
- data/vendor/tracemonkey/ref-config/Darwin5.2.mk +81 -0
- data/vendor/tracemonkey/ref-config/Darwin5.3.mk +81 -0
- data/vendor/tracemonkey/ref-config/Darwin64.mk +72 -0
- data/vendor/tracemonkey/ref-config/HP-UXB.10.10.mk +77 -0
- data/vendor/tracemonkey/ref-config/HP-UXB.10.20.mk +77 -0
- data/vendor/tracemonkey/ref-config/HP-UXB.11.00.mk +80 -0
- data/vendor/tracemonkey/ref-config/IRIX.mk +87 -0
- data/vendor/tracemonkey/ref-config/IRIX5.3.mk +44 -0
- data/vendor/tracemonkey/ref-config/IRIX6.1.mk +44 -0
- data/vendor/tracemonkey/ref-config/IRIX6.2.mk +44 -0
- data/vendor/tracemonkey/ref-config/IRIX6.3.mk +44 -0
- data/vendor/tracemonkey/ref-config/IRIX6.5.mk +44 -0
- data/vendor/tracemonkey/ref-config/Linux_All.mk +105 -0
- data/vendor/tracemonkey/ref-config/Mac_OS10.0.mk +82 -0
- data/vendor/tracemonkey/ref-config/OSF1V4.0.mk +72 -0
- data/vendor/tracemonkey/ref-config/OSF1V5.0.mk +69 -0
- data/vendor/tracemonkey/ref-config/SunOS4.1.4.mk +101 -0
- data/vendor/tracemonkey/ref-config/SunOS5.10.mk +50 -0
- data/vendor/tracemonkey/ref-config/SunOS5.3.mk +91 -0
- data/vendor/tracemonkey/ref-config/SunOS5.4.mk +92 -0
- data/vendor/tracemonkey/ref-config/SunOS5.5.1.mk +44 -0
- data/vendor/tracemonkey/ref-config/SunOS5.5.mk +87 -0
- data/vendor/tracemonkey/ref-config/SunOS5.6.mk +89 -0
- data/vendor/tracemonkey/ref-config/SunOS5.7.mk +44 -0
- data/vendor/tracemonkey/ref-config/SunOS5.8.mk +44 -0
- data/vendor/tracemonkey/ref-config/SunOS5.9.mk +44 -0
- data/vendor/tracemonkey/ref-config/WINNT4.0.mk +118 -0
- data/vendor/tracemonkey/ref-config/WINNT5.0.mk +118 -0
- data/vendor/tracemonkey/ref-config/WINNT5.1.mk +118 -0
- data/vendor/tracemonkey/ref-config/WINNT5.2.mk +118 -0
- data/vendor/tracemonkey/ref-config/WINNT6.0.mk +118 -0
- data/vendor/tracemonkey/ref-config/dgux.mk +64 -0
- data/vendor/tracemonkey/resource.h +15 -0
- data/vendor/tracemonkey/rules.mk +206 -0
- data/vendor/tracemonkey/shell/Makefile.in +72 -0
- data/vendor/tracemonkey/shell/js.cpp +4719 -0
- data/vendor/tracemonkey/t/3d-cube.js +337 -0
- data/vendor/tracemonkey/t/3d-morph.js +54 -0
- data/vendor/tracemonkey/t/3d-raytrace.js +441 -0
- data/vendor/tracemonkey/t/access-binary-trees.js +50 -0
- data/vendor/tracemonkey/t/access-fannkuch.js +66 -0
- data/vendor/tracemonkey/t/access-nbody.js +169 -0
- data/vendor/tracemonkey/t/access-nsieve.js +38 -0
- data/vendor/tracemonkey/t/bitops-3bit-bits-in-byte.js +32 -0
- data/vendor/tracemonkey/t/bitops-bits-in-byte.js +21 -0
- data/vendor/tracemonkey/t/bitops-bitwise-and.js +28 -0
- data/vendor/tracemonkey/t/bitops-nsieve-bits.js +32 -0
- data/vendor/tracemonkey/t/controlflow-recursive.js +25 -0
- data/vendor/tracemonkey/t/crypto-aes.js +422 -0
- data/vendor/tracemonkey/t/crypto-md5.js +286 -0
- data/vendor/tracemonkey/t/crypto-sha1.js +224 -0
- data/vendor/tracemonkey/t/date-format-tofte.js +299 -0
- data/vendor/tracemonkey/t/date-format-xparb.js +417 -0
- data/vendor/tracemonkey/t/math-cordic.js +95 -0
- data/vendor/tracemonkey/t/math-partial-sums.js +33 -0
- data/vendor/tracemonkey/t/math-spectral-norm.js +51 -0
- data/vendor/tracemonkey/t/regexp-dna.js +1712 -0
- data/vendor/tracemonkey/t/string-base64.js +135 -0
- data/vendor/tracemonkey/t/string-fasta.js +85 -0
- data/vendor/tracemonkey/t/string-tagcloud.js +265 -0
- data/vendor/tracemonkey/t/string-unpack-code.js +68 -0
- data/vendor/tracemonkey/t/string-validate-input.js +89 -0
- data/vendor/tracemonkey/time.sh +13 -0
- data/vendor/tracemonkey/trace-test.js +5564 -0
- data/vendor/tracemonkey/v8/base.js +187 -0
- data/vendor/tracemonkey/v8/crypto.js +1689 -0
- data/vendor/tracemonkey/v8/deltablue.js +880 -0
- data/vendor/tracemonkey/v8/earley-boyer.js +4682 -0
- data/vendor/tracemonkey/v8/raytrace.js +3418 -0
- data/vendor/tracemonkey/v8/richards.js +539 -0
- data/vendor/tracemonkey/v8/run-crypto.js +44 -0
- data/vendor/tracemonkey/v8/run-deltablue.js +44 -0
- data/vendor/tracemonkey/v8/run-earley-boyer.js +44 -0
- data/vendor/tracemonkey/v8/run-raytrace.js +44 -0
- data/vendor/tracemonkey/v8/run-richards.js +44 -0
- data/vendor/tracemonkey/v8/run.js +49 -0
- data/vendor/tracemonkey/vprof/readme.txt +93 -0
- data/vendor/tracemonkey/vprof/vprof.cpp +360 -0
- data/vendor/tracemonkey/vprof/vprof.h +245 -0
- data/vendor/tracemonkey/xpconnect/Makefile.in +67 -0
- data/vendor/tracemonkey/xpconnect/crashtests/117307-1.html +20 -0
- data/vendor/tracemonkey/xpconnect/crashtests/193710.html +11 -0
- data/vendor/tracemonkey/xpconnect/crashtests/290162-1.html +5 -0
- data/vendor/tracemonkey/xpconnect/crashtests/326615-1.html +16 -0
- data/vendor/tracemonkey/xpconnect/crashtests/328553-1.html +13 -0
- data/vendor/tracemonkey/xpconnect/crashtests/346258-1.html +12 -0
- data/vendor/tracemonkey/xpconnect/crashtests/346512-1-frame1.xhtml +16 -0
- data/vendor/tracemonkey/xpconnect/crashtests/346512-1-frame2.xhtml +15 -0
- data/vendor/tracemonkey/xpconnect/crashtests/346512-1.xhtml +30 -0
- data/vendor/tracemonkey/xpconnect/crashtests/382133-1.html +3 -0
- data/vendor/tracemonkey/xpconnect/crashtests/386680-1.html +22 -0
- data/vendor/tracemonkey/xpconnect/crashtests/394810-1.html +4 -0
- data/vendor/tracemonkey/xpconnect/crashtests/400349-1.html +20 -0
- data/vendor/tracemonkey/xpconnect/crashtests/403356-1.html +13 -0
- data/vendor/tracemonkey/xpconnect/crashtests/418139-1.svg +22 -0
- data/vendor/tracemonkey/xpconnect/crashtests/420513-1.html +11 -0
- data/vendor/tracemonkey/xpconnect/crashtests/453935-1.html +37 -0
- data/vendor/tracemonkey/xpconnect/crashtests/462926.html +12 -0
- data/vendor/tracemonkey/xpconnect/crashtests/468552-1.html +18 -0
- data/vendor/tracemonkey/xpconnect/crashtests/471366-1.html +12 -0
- data/vendor/tracemonkey/xpconnect/crashtests/475185-1.html +13 -0
- data/vendor/tracemonkey/xpconnect/crashtests/475291-1.html +14 -0
- data/vendor/tracemonkey/xpconnect/crashtests/503286-1.html +23 -0
- data/vendor/tracemonkey/xpconnect/crashtests/crashtests.list +21 -0
- data/vendor/tracemonkey/xpconnect/idl/Makefile.in +78 -0
- data/vendor/tracemonkey/xpconnect/idl/XPCIDispatch.idl +51 -0
- data/vendor/tracemonkey/xpconnect/idl/mozIJSSubScriptLoader.idl +64 -0
- data/vendor/tracemonkey/xpconnect/idl/nsIActiveXSecurityPolicy.idl +67 -0
- data/vendor/tracemonkey/xpconnect/idl/nsIDispatchSupport.idl +119 -0
- data/vendor/tracemonkey/xpconnect/idl/nsIJSContextStack.idl +85 -0
- data/vendor/tracemonkey/xpconnect/idl/nsIJSRuntimeService.idl +51 -0
- data/vendor/tracemonkey/xpconnect/idl/nsIScriptError.idl +102 -0
- data/vendor/tracemonkey/xpconnect/idl/nsIScriptableInterfaces.idl +67 -0
- data/vendor/tracemonkey/xpconnect/idl/nsIXPCScriptNotify.idl +66 -0
- data/vendor/tracemonkey/xpconnect/idl/nsIXPCScriptable.idl +183 -0
- data/vendor/tracemonkey/xpconnect/idl/nsIXPCSecurityManager.idl +114 -0
- data/vendor/tracemonkey/xpconnect/idl/nsIXPConnect.idl +819 -0
- data/vendor/tracemonkey/xpconnect/idl/xpcIJSModuleLoader.idl +95 -0
- data/vendor/tracemonkey/xpconnect/idl/xpcIJSWeakReference.idl +49 -0
- data/vendor/tracemonkey/xpconnect/idl/xpccomponents.idl +254 -0
- data/vendor/tracemonkey/xpconnect/idl/xpcexception.idl +66 -0
- data/vendor/tracemonkey/xpconnect/idl/xpcjsid.idl +83 -0
- data/vendor/tracemonkey/xpconnect/loader/ISO8601DateUtils.jsm +176 -0
- data/vendor/tracemonkey/xpconnect/loader/Makefile.in +63 -0
- data/vendor/tracemonkey/xpconnect/loader/XPCOMUtils.jsm +267 -0
- data/vendor/tracemonkey/xpconnect/loader/mozJSComponentLoader.cpp +1717 -0
- data/vendor/tracemonkey/xpconnect/loader/mozJSComponentLoader.h +172 -0
- data/vendor/tracemonkey/xpconnect/loader/mozJSLoaderConstructors.h +101 -0
- data/vendor/tracemonkey/xpconnect/loader/mozJSSubScriptLoader.cpp +360 -0
- data/vendor/tracemonkey/xpconnect/loader/mozJSSubScriptLoader.h +66 -0
- data/vendor/tracemonkey/xpconnect/public/Makefile.in +54 -0
- data/vendor/tracemonkey/xpconnect/public/nsAXPCNativeCallContext.h +89 -0
- data/vendor/tracemonkey/xpconnect/public/nsAutoJSValHolder.h +168 -0
- data/vendor/tracemonkey/xpconnect/public/xpc_map_end.h +327 -0
- data/vendor/tracemonkey/xpconnect/sample/Makefile.in +71 -0
- data/vendor/tracemonkey/xpconnect/sample/README +39 -0
- data/vendor/tracemonkey/xpconnect/sample/xpcsample1.cpp +337 -0
- data/vendor/tracemonkey/xpconnect/sample/xpcsample1.idl +82 -0
- data/vendor/tracemonkey/xpconnect/sample/xpcsample1.js +21 -0
- data/vendor/tracemonkey/xpconnect/shell/Makefile.in +106 -0
- data/vendor/tracemonkey/xpconnect/shell/jsshell.msg +50 -0
- data/vendor/tracemonkey/xpconnect/shell/xpcshell.cpp +1817 -0
- data/vendor/tracemonkey/xpconnect/shell/xpcshellMacUtils.h +43 -0
- data/vendor/tracemonkey/xpconnect/shell/xpcshellMacUtils.mm +54 -0
- data/vendor/tracemonkey/xpconnect/src/Makefile.in +228 -0
- data/vendor/tracemonkey/xpconnect/src/README +3 -0
- data/vendor/tracemonkey/xpconnect/src/XPCCrossOriginWrapper.cpp +1186 -0
- data/vendor/tracemonkey/xpconnect/src/XPCDispConvert.cpp +593 -0
- data/vendor/tracemonkey/xpconnect/src/XPCDispInlines.h +667 -0
- data/vendor/tracemonkey/xpconnect/src/XPCDispInterface.cpp +383 -0
- data/vendor/tracemonkey/xpconnect/src/XPCDispObject.cpp +516 -0
- data/vendor/tracemonkey/xpconnect/src/XPCDispParamPropJSClass.cpp +223 -0
- data/vendor/tracemonkey/xpconnect/src/XPCDispParams.cpp +103 -0
- data/vendor/tracemonkey/xpconnect/src/XPCDispPrivate.h +1401 -0
- data/vendor/tracemonkey/xpconnect/src/XPCDispTearOff.cpp +547 -0
- data/vendor/tracemonkey/xpconnect/src/XPCDispTypeInfo.cpp +471 -0
- data/vendor/tracemonkey/xpconnect/src/XPCIDispatchClassInfo.cpp +139 -0
- data/vendor/tracemonkey/xpconnect/src/XPCIDispatchExtension.cpp +362 -0
- data/vendor/tracemonkey/xpconnect/src/XPCNativeWrapper.cpp +1350 -0
- data/vendor/tracemonkey/xpconnect/src/XPCNativeWrapper.h +88 -0
- data/vendor/tracemonkey/xpconnect/src/XPCSafeJSObjectWrapper.cpp +1148 -0
- data/vendor/tracemonkey/xpconnect/src/XPCSystemOnlyWrapper.cpp +718 -0
- data/vendor/tracemonkey/xpconnect/src/XPCWrapper.cpp +850 -0
- data/vendor/tracemonkey/xpconnect/src/XPCWrapper.h +394 -0
- data/vendor/tracemonkey/xpconnect/src/dom_quickstubs.qsconf +568 -0
- data/vendor/tracemonkey/xpconnect/src/nsDispatchSupport.cpp +348 -0
- data/vendor/tracemonkey/xpconnect/src/nsScriptError.cpp +201 -0
- data/vendor/tracemonkey/xpconnect/src/nsXPConnect.cpp +2609 -0
- data/vendor/tracemonkey/xpconnect/src/qsgen.py +1487 -0
- data/vendor/tracemonkey/xpconnect/src/xpc.msg +217 -0
- data/vendor/tracemonkey/xpconnect/src/xpcJSWeakReference.cpp +148 -0
- data/vendor/tracemonkey/xpconnect/src/xpcJSWeakReference.h +56 -0
- data/vendor/tracemonkey/xpconnect/src/xpccallcontext.cpp +579 -0
- data/vendor/tracemonkey/xpconnect/src/xpccomponents.cpp +4144 -0
- data/vendor/tracemonkey/xpconnect/src/xpccontext.cpp +115 -0
- data/vendor/tracemonkey/xpconnect/src/xpcconvert.cpp +2298 -0
- data/vendor/tracemonkey/xpconnect/src/xpcdebug.cpp +481 -0
- data/vendor/tracemonkey/xpconnect/src/xpcexception.cpp +502 -0
- data/vendor/tracemonkey/xpconnect/src/xpcforwards.h +114 -0
- data/vendor/tracemonkey/xpconnect/src/xpcinlines.h +772 -0
- data/vendor/tracemonkey/xpconnect/src/xpcjsid.cpp +1025 -0
- data/vendor/tracemonkey/xpconnect/src/xpcjsruntime.cpp +1342 -0
- data/vendor/tracemonkey/xpconnect/src/xpclog.cpp +128 -0
- data/vendor/tracemonkey/xpconnect/src/xpclog.h +101 -0
- data/vendor/tracemonkey/xpconnect/src/xpcmaps.cpp +761 -0
- data/vendor/tracemonkey/xpconnect/src/xpcmaps.h +713 -0
- data/vendor/tracemonkey/xpconnect/src/xpcmodule.cpp +136 -0
- data/vendor/tracemonkey/xpconnect/src/xpcprivate.h +4138 -0
- data/vendor/tracemonkey/xpconnect/src/xpcquickstubs.cpp +1128 -0
- data/vendor/tracemonkey/xpconnect/src/xpcquickstubs.h +480 -0
- data/vendor/tracemonkey/xpconnect/src/xpcruntimesvc.cpp +179 -0
- data/vendor/tracemonkey/xpconnect/src/xpcstack.cpp +342 -0
- data/vendor/tracemonkey/xpconnect/src/xpcstring.cpp +139 -0
- data/vendor/tracemonkey/xpconnect/src/xpcthreadcontext.cpp +599 -0
- data/vendor/tracemonkey/xpconnect/src/xpcthrower.cpp +399 -0
- data/vendor/tracemonkey/xpconnect/src/xpcvariant.cpp +850 -0
- data/vendor/tracemonkey/xpconnect/src/xpcwrappedjs.cpp +670 -0
- data/vendor/tracemonkey/xpconnect/src/xpcwrappedjsclass.cpp +2015 -0
- data/vendor/tracemonkey/xpconnect/src/xpcwrappednative.cpp +3482 -0
- data/vendor/tracemonkey/xpconnect/src/xpcwrappednativeinfo.cpp +945 -0
- data/vendor/tracemonkey/xpconnect/src/xpcwrappednativejsops.cpp +2003 -0
- data/vendor/tracemonkey/xpconnect/src/xpcwrappednativeproto.cpp +302 -0
- data/vendor/tracemonkey/xpconnect/src/xpcwrappednativescope.cpp +991 -0
- data/vendor/tracemonkey/xpconnect/tests/Makefile.in +75 -0
- data/vendor/tracemonkey/xpconnect/tests/TestXPC.cpp +785 -0
- data/vendor/tracemonkey/xpconnect/tests/chrome/Makefile.in +51 -0
- data/vendor/tracemonkey/xpconnect/tests/chrome/test_bug500931.xul +43 -0
- data/vendor/tracemonkey/xpconnect/tests/components/Makefile.in +85 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_array.cpp +388 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_attributes.cpp +305 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_calljs.cpp +135 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_child.cpp +225 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_const.cpp +76 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_domstring.cpp +118 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_echo.cpp +616 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_in.cpp +204 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_inout.cpp +171 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_module.cpp +77 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_multiple.cpp +554 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_noisy.cpp +154 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_out.cpp +335 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_overloaded.cpp +250 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_private.h +192 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_string.cpp +185 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_variant.cpp +355 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/StdAfx.cpp +12 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/StdAfx.h +28 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/XPCDispUtilities.h +28 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/XPCIDispatchTest.cpp +86 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/XPCIDispatchTest.def +9 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/XPCIDispatchTest.dsp +318 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/XPCIDispatchTest.dsw +29 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/XPCIDispatchTest.idl +454 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/XPCIDispatchTest.rc +145 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispSimple.cpp +44 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispSimple.h +56 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispSimple.rgs +23 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestArrays.cpp +221 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestArrays.h +53 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestArrays.rgs +23 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestMethods.cpp +699 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestMethods.h +138 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestMethods.rgs +23 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestNoIDispatch.cpp +23 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestNoIDispatch.h +41 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestNoIDispatch.rgs +23 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestProperties.cpp +256 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestProperties.h +88 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestProperties.rgs +23 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestScriptOff.cpp +23 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestScriptOff.h +43 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestScriptOff.rgs +23 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestScriptOn.cpp +29 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestScriptOn.h +45 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestScriptOn.rgs +23 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestWrappedJS.cpp +177 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestWrappedJS.h +50 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestWrappedJS.rgs +23 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/resource.h +36 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedCOM/Arrays/XPCIDispatchArrayTests.js +54 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedCOM/Attributes/XPCIDispatchAttributeTests.js +150 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedCOM/General/XPCIDispatchInstantiations.js +122 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedCOM/General/XPCStress.js +58 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedCOM/Methods/XPCIDispatchMethodTests.js +376 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedCOM/shell.js +377 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedJS/General/XPCIDispatchTestWrappedJS.js +76 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedJS/shell.js +377 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/exectests.cmd +1 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/jsDriver.pl +1288 -0
- data/vendor/tracemonkey/xpconnect/tests/idl/Makefile.in +61 -0
- data/vendor/tracemonkey/xpconnect/tests/idl/xpctest.idl +312 -0
- data/vendor/tracemonkey/xpconnect/tests/idl/xpctest2.idl +51 -0
- data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_attributes.idl +67 -0
- data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_calljs.idl +59 -0
- data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_const.idl +61 -0
- data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_domstring.idl +59 -0
- data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_in.idl +88 -0
- data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_inout.idl +86 -0
- data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_multiple.idl +77 -0
- data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_out.idl +142 -0
- data/vendor/tracemonkey/xpconnect/tests/js/checkid.js +82 -0
- data/vendor/tracemonkey/xpconnect/tests/js/evaluate.js +311 -0
- data/vendor/tracemonkey/xpconnect/tests/js/exceptions-2.js +153 -0
- data/vendor/tracemonkey/xpconnect/tests/js/exceptions-3.js +194 -0
- data/vendor/tracemonkey/xpconnect/tests/js/exceptions-4.js +297 -0
- data/vendor/tracemonkey/xpconnect/tests/js/exceptions-5.js +343 -0
- data/vendor/tracemonkey/xpconnect/tests/js/exceptions.js +230 -0
- data/vendor/tracemonkey/xpconnect/tests/js/javascript.js +96 -0
- data/vendor/tracemonkey/xpconnect/tests/js/multiple-2.js +151 -0
- data/vendor/tracemonkey/xpconnect/tests/js/multiple-3.js +148 -0
- data/vendor/tracemonkey/xpconnect/tests/js/multiple-4.js +152 -0
- data/vendor/tracemonkey/xpconnect/tests/js/multiple.js +137 -0
- data/vendor/tracemonkey/xpconnect/tests/js/notscriptable.js +104 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/simpletest.js +36 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/speed.js +60 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/testxpc.js +464 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/threads.js +74 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/try.js +27 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_array.js +308 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_callcontext.js +68 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_echo.js +636 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_enum_and_sort.js +28 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_enum_constants.js +15 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_enum_create.js +200 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_exceptions.js +167 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_ids.js +135 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_observer.js +36 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_overloaded.js +14 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_primitives.js +141 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_propertybag.js +36 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_variant.js +339 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_variant_array.js +30 -0
- data/vendor/tracemonkey/xpconnect/tests/js/readonlyattributes.js +74 -0
- data/vendor/tracemonkey/xpconnect/tests/js/readwriteattributes.js +101 -0
- data/vendor/tracemonkey/xpconnect/tests/js/scriptable.js +120 -0
- data/vendor/tracemonkey/xpconnect/tests/js/testin.js +203 -0
- data/vendor/tracemonkey/xpconnect/tests/js/xpcfun.js +234 -0
- data/vendor/tracemonkey/xpconnect/tests/js/xpctest_primitives.js +200 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/Makefile.in +66 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/bug500931_helper.html +7 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/inner.html +7 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug361111.xul +29 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug384632.html +32 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug390488.html +65 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug393269.html +46 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug396851.html +43 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug428021.html +41 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug446584.html +49 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug448587.html +31 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug462428.html +42 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug478438.html +66 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug484107.html +100 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug484459.html +36 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug500691.html +28 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/test_wrappers.html +116 -0
- data/vendor/tracemonkey/xpconnect/tests/unit/bogus_element_type.jsm +1 -0
- data/vendor/tracemonkey/xpconnect/tests/unit/bogus_exports_type.jsm +1 -0
- data/vendor/tracemonkey/xpconnect/tests/unit/bug451678_subscript.js +2 -0
- data/vendor/tracemonkey/xpconnect/tests/unit/component_import.js +144 -0
- data/vendor/tracemonkey/xpconnect/tests/unit/recursive_importA.jsm +44 -0
- data/vendor/tracemonkey/xpconnect/tests/unit/recursive_importB.jsm +45 -0
- data/vendor/tracemonkey/xpconnect/tests/unit/syntax_error.jsm +1 -0
- data/vendor/tracemonkey/xpconnect/tests/unit/test_bogus_files.js +88 -0
- data/vendor/tracemonkey/xpconnect/tests/unit/test_bug408412.js +51 -0
- data/vendor/tracemonkey/xpconnect/tests/unit/test_bug451678.js +52 -0
- data/vendor/tracemonkey/xpconnect/tests/unit/test_bug_442086.js +68 -0
- data/vendor/tracemonkey/xpconnect/tests/unit/test_import.js +127 -0
- data/vendor/tracemonkey/xpconnect/tests/unit/test_js_weak_references.js +63 -0
- data/vendor/tracemonkey/xpconnect/tests/unit/test_recursive_import.js +62 -0
- data/vendor/tracemonkey/xpconnect/tools/Makefile.in +49 -0
- data/vendor/tracemonkey/xpconnect/tools/idl/Makefile.in +53 -0
- data/vendor/tracemonkey/xpconnect/tools/idl/nsIXPCToolsCompiler.idl +60 -0
- data/vendor/tracemonkey/xpconnect/tools/idl/nsIXPCToolsProfiler.idl +57 -0
- data/vendor/tracemonkey/xpconnect/tools/js/CompileJSFiles.js +28 -0
- data/vendor/tracemonkey/xpconnect/tools/js/ListJSFiles.js +18 -0
- data/vendor/tracemonkey/xpconnect/tools/src/Makefile.in +76 -0
- data/vendor/tracemonkey/xpconnect/tools/src/nsXPCToolsCompiler.cpp +161 -0
- data/vendor/tracemonkey/xpconnect/tools/src/nsXPCToolsModule.cpp +65 -0
- data/vendor/tracemonkey/xpconnect/tools/src/nsXPCToolsProfiler.cpp +370 -0
- data/vendor/tracemonkey/xpconnect/tools/src/xpctools_private.h +236 -0
- metadata +782 -107
- data/test/johnson/nodes/export_test.rb +0 -9
- data/test/johnson/nodes/import_test.rb +0 -13
- data/test/johnson/version_test.rb +0 -13
|
@@ -0,0 +1 @@
|
|
|
1
|
+
perl jsDriver.pl -e xpcshell %1 %2 %3 %4 %5 %6 %7 %8 %9
|
|
@@ -0,0 +1,1288 @@
|
|
|
1
|
+
#!/usr/bin/perl
|
|
2
|
+
#
|
|
3
|
+
# ***** BEGIN LICENSE BLOCK *****
|
|
4
|
+
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
5
|
+
#
|
|
6
|
+
# The contents of this file are subject to the Mozilla Public License Version
|
|
7
|
+
# 1.1 (the "License"); you may not use this file except in compliance with
|
|
8
|
+
# the License. You may obtain a copy of the License at
|
|
9
|
+
# http://www.mozilla.org/MPL/
|
|
10
|
+
#
|
|
11
|
+
# Software distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
13
|
+
# for the specific language governing rights and limitations under the
|
|
14
|
+
# License.
|
|
15
|
+
#
|
|
16
|
+
# The Original Code is JavaScript Core Tests.
|
|
17
|
+
#
|
|
18
|
+
# The Initial Developer of the Original Code is
|
|
19
|
+
# Netscape Communications Corporation.
|
|
20
|
+
# Portions created by the Initial Developer are Copyright (C) 1997-1999
|
|
21
|
+
# the Initial Developer. All Rights Reserved.
|
|
22
|
+
#
|
|
23
|
+
# Contributor(s):
|
|
24
|
+
#
|
|
25
|
+
# Alternatively, the contents of this file may be used under the terms of
|
|
26
|
+
# either of the GNU General Public License Version 2 or later (the "GPL"),
|
|
27
|
+
# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
28
|
+
# in which case the provisions of the GPL or the LGPL are applicable instead
|
|
29
|
+
# of those above. If you wish to allow use of your version of this file only
|
|
30
|
+
# under the terms of either the GPL or the LGPL, and not to allow others to
|
|
31
|
+
# use your version of this file under the terms of the MPL, indicate your
|
|
32
|
+
# decision by deleting the provisions above and replace them with the notice
|
|
33
|
+
# and other provisions required by the GPL or the LGPL. If you do not delete
|
|
34
|
+
# the provisions above, a recipient may use your version of this file under
|
|
35
|
+
# the terms of any one of the MPL, the GPL or the LGPL.
|
|
36
|
+
#
|
|
37
|
+
# ***** END LICENSE BLOCK *****
|
|
38
|
+
|
|
39
|
+
use strict;
|
|
40
|
+
use Getopt::Mixed "nextOption";
|
|
41
|
+
|
|
42
|
+
my $os_type = &get_os_type;
|
|
43
|
+
my $unixish = (($os_type ne "WIN") && ($os_type ne "MAC"));
|
|
44
|
+
my $path_sep = ($os_type eq "MAC") ? ":" : "/";
|
|
45
|
+
my $win_sep = ($os_type eq "WIN")? &get_win_sep : "";
|
|
46
|
+
my $redirect_command = ($os_type ne "MAC") ? " 2>&1" : "";
|
|
47
|
+
|
|
48
|
+
# command line option defaults
|
|
49
|
+
my $opt_suite_path;
|
|
50
|
+
my $opt_trace = 0;
|
|
51
|
+
my $opt_classpath = "";
|
|
52
|
+
my $opt_rhino_opt = 0;
|
|
53
|
+
my $opt_rhino_ms = 0;
|
|
54
|
+
my @opt_engine_list;
|
|
55
|
+
my $opt_engine_type = "";
|
|
56
|
+
my $opt_engine_params = "";
|
|
57
|
+
my $opt_user_output_file = 0;
|
|
58
|
+
my $opt_output_file = "";
|
|
59
|
+
my @opt_test_list_files;
|
|
60
|
+
my @opt_neg_list_files;
|
|
61
|
+
my $opt_shell_path = "";
|
|
62
|
+
my $opt_java_path = "";
|
|
63
|
+
my $opt_bug_url = "http://bugzilla.mozilla.org/show_bug.cgi?id=";
|
|
64
|
+
my $opt_console_failures = 0;
|
|
65
|
+
my $opt_lxr_url = "http://lxr.mozilla.org/mozilla/source/js/tests/";
|
|
66
|
+
my $opt_exit_munge = ($os_type ne "MAC") ? 1 : 0;
|
|
67
|
+
|
|
68
|
+
# command line option definition
|
|
69
|
+
my $options = "b=s bugurl>b c=s classpath>c e=s engine>e f=s file>f " .
|
|
70
|
+
"h help>h i j=s javapath>j k confail>k l=s list>l L=s neglist>L " .
|
|
71
|
+
"o=s opt>o p=s testpath>p s=s shellpath>s t trace>t u=s lxrurl>u " .
|
|
72
|
+
"x noexitmunge>x";
|
|
73
|
+
|
|
74
|
+
if ($os_type eq "MAC") {
|
|
75
|
+
$opt_suite_path = `directory`;
|
|
76
|
+
$opt_suite_path =~ s/[\n\r]//g;
|
|
77
|
+
$opt_suite_path .= ":";
|
|
78
|
+
} else {
|
|
79
|
+
$opt_suite_path = "./";
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
&parse_args;
|
|
83
|
+
|
|
84
|
+
my $user_exit = 0;
|
|
85
|
+
my ($engine_command, $html, $failures_reported, $tests_completed,
|
|
86
|
+
$exec_time_string);
|
|
87
|
+
my @failed_tests;
|
|
88
|
+
my @test_list = &get_test_list;
|
|
89
|
+
|
|
90
|
+
if ($#test_list == -1) {
|
|
91
|
+
die ("Nothing to test.\n");
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if ($unixish) {
|
|
95
|
+
# on unix, ^C pauses the tests, and gives the user a chance to quit but
|
|
96
|
+
# report on what has been done, to just quit, or to continue (the
|
|
97
|
+
# interrupted test will still be skipped.)
|
|
98
|
+
# windows doesn't handle the int handler they way we want it to,
|
|
99
|
+
# so don't even pretend to let the user continue.
|
|
100
|
+
$SIG{INT} = 'int_handler';
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
&main;
|
|
104
|
+
|
|
105
|
+
#End.
|
|
106
|
+
|
|
107
|
+
sub main {
|
|
108
|
+
my $start_time;
|
|
109
|
+
|
|
110
|
+
while ($opt_engine_type = pop (@opt_engine_list)) {
|
|
111
|
+
dd ("Testing engine '$opt_engine_type'");
|
|
112
|
+
|
|
113
|
+
$engine_command = &get_engine_command;
|
|
114
|
+
$html = "";
|
|
115
|
+
@failed_tests = ();
|
|
116
|
+
$failures_reported = 0;
|
|
117
|
+
$tests_completed = 0;
|
|
118
|
+
$start_time = time;
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
&execute_tests (@test_list);
|
|
122
|
+
|
|
123
|
+
my $exec_time = (time - $start_time);
|
|
124
|
+
my $exec_hours = int($exec_time / 60 / 60);
|
|
125
|
+
$exec_time -= $exec_hours * 60 * 60;
|
|
126
|
+
my $exec_mins = int($exec_time / 60);
|
|
127
|
+
$exec_time -= $exec_mins * 60;
|
|
128
|
+
my $exec_secs = ($exec_time % 60);
|
|
129
|
+
|
|
130
|
+
if ($exec_hours > 0) {
|
|
131
|
+
$exec_time_string = "$exec_hours hours, $exec_mins minutes, " .
|
|
132
|
+
"$exec_secs seconds";
|
|
133
|
+
} elsif ($exec_mins > 0) {
|
|
134
|
+
$exec_time_string = "$exec_mins minutes, $exec_secs seconds";
|
|
135
|
+
} else {
|
|
136
|
+
$exec_time_string = "$exec_secs seconds";
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
if (!$opt_user_output_file) {
|
|
140
|
+
$opt_output_file = &get_tempfile_name;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
&write_results;
|
|
144
|
+
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
sub execute_tests {
|
|
149
|
+
my (@test_list) = @_;
|
|
150
|
+
my ($test, $shell_command, $line, @output, $path);
|
|
151
|
+
my $file_param = " -f ";
|
|
152
|
+
my ($last_suite, $last_test_dir);
|
|
153
|
+
|
|
154
|
+
&status ("Executing " . ($#test_list + 1) . " test(s).");
|
|
155
|
+
|
|
156
|
+
foreach $test (@test_list) {
|
|
157
|
+
my ($suite, $test_dir, $test_file) = split($path_sep, $test);
|
|
158
|
+
# *-n.js is a negative test, expect exit code 3 (runtime error)
|
|
159
|
+
my $expected_exit = ($test =~ /\-n\.js$/) ? 3 : 0;
|
|
160
|
+
my ($got_exit, $exit_signal);
|
|
161
|
+
my $failure_lines;
|
|
162
|
+
my $bug_number;
|
|
163
|
+
my $status_lines;
|
|
164
|
+
|
|
165
|
+
# user selected [Q]uit from ^C handler.
|
|
166
|
+
if ($user_exit) {
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
# Append the shell.js files to the shell_command if they're there.
|
|
171
|
+
# (only check for their existance if the suite or test_dir has changed
|
|
172
|
+
# since the last time we looked.)
|
|
173
|
+
if ($last_suite ne $suite || $last_test_dir ne $test_dir) {
|
|
174
|
+
$shell_command = &xp_path($engine_command);
|
|
175
|
+
|
|
176
|
+
$path = &xp_path($opt_suite_path . $suite . "/shell.js");
|
|
177
|
+
if (-f $path) {
|
|
178
|
+
$shell_command .= $file_param . $path;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
$path = &xp_path($opt_suite_path . $suite . "/" .
|
|
182
|
+
$test_dir . "/shell.js");
|
|
183
|
+
if (-f $path) {
|
|
184
|
+
$shell_command .= $file_param . $path;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
$last_suite = $suite;
|
|
188
|
+
$last_test_dir = $test_dir;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
$path = &xp_path($opt_suite_path . $test);
|
|
192
|
+
&dd ("executing: " . $shell_command . $file_param . $path);
|
|
193
|
+
|
|
194
|
+
open (OUTPUT, $shell_command . $file_param . $path .
|
|
195
|
+
$redirect_command . " |");
|
|
196
|
+
@output = <OUTPUT>;
|
|
197
|
+
close (OUTPUT);
|
|
198
|
+
|
|
199
|
+
@output = grep (!/js\>/, @output);
|
|
200
|
+
|
|
201
|
+
if ($opt_exit_munge == 1) {
|
|
202
|
+
# signal information in the lower 8 bits, exit code above that
|
|
203
|
+
$got_exit = ($? >> 8);
|
|
204
|
+
$exit_signal = ($? & 255);
|
|
205
|
+
} else {
|
|
206
|
+
# user says not to munge the exit code
|
|
207
|
+
$got_exit = $?;
|
|
208
|
+
$exit_signal = 0;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
$failure_lines = "";
|
|
212
|
+
$bug_number = "";
|
|
213
|
+
$status_lines = "";
|
|
214
|
+
|
|
215
|
+
foreach $line (@output) {
|
|
216
|
+
|
|
217
|
+
# watch for testcase to proclaim what exit code it expects to
|
|
218
|
+
# produce (0 by default)
|
|
219
|
+
if ($line =~ /expect(ed)?\s*exit\s*code\s*\:?\s*(\d+)/i) {
|
|
220
|
+
$expected_exit = $2;
|
|
221
|
+
&dd ("Test case expects exit code $expected_exit");
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
# watch for failures
|
|
225
|
+
if ($line =~ /failed!/i) {
|
|
226
|
+
$failure_lines .= $line;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
# and watch for bugnumbers
|
|
230
|
+
# XXX This only allows 1 bugnumber per testfile, should be
|
|
231
|
+
# XXX modified to allow for multiple.
|
|
232
|
+
if ($line =~ /bugnumber\s*\:?\s*(.*)/i) {
|
|
233
|
+
$1 =~ /(\n+)/;
|
|
234
|
+
$bug_number = $1;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
# and watch for status
|
|
238
|
+
if ($line =~ /status/i) {
|
|
239
|
+
$status_lines .= $line;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
if (!@output) {
|
|
245
|
+
@output = ("Testcase produced no output!");
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
if ($got_exit != $expected_exit) {
|
|
249
|
+
# full testcase output dumped on mismatched exit codes,
|
|
250
|
+
&report_failure ($test, "Expected exit code " .
|
|
251
|
+
"$expected_exit, got $got_exit\n" .
|
|
252
|
+
"Testcase terminated with signal $exit_signal\n" .
|
|
253
|
+
"Complete testcase output was:\n" .
|
|
254
|
+
join ("\n",@output), $bug_number);
|
|
255
|
+
} elsif ($failure_lines) {
|
|
256
|
+
# only offending lines if exit codes matched
|
|
257
|
+
&report_failure ($test, "$status_lines\n".
|
|
258
|
+
"Failure messages were:\n$failure_lines",
|
|
259
|
+
$bug_number);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
&dd ("exit code $got_exit, exit signal $exit_signal.");
|
|
263
|
+
|
|
264
|
+
$tests_completed++;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
sub write_results {
|
|
269
|
+
my ($list_name, $neglist_name);
|
|
270
|
+
my $completion_date = localtime;
|
|
271
|
+
my $failure_pct = int(($failures_reported / $tests_completed) * 10000) /
|
|
272
|
+
100;
|
|
273
|
+
&dd ("Writing output to $opt_output_file.");
|
|
274
|
+
|
|
275
|
+
if ($#opt_test_list_files == -1) {
|
|
276
|
+
$list_name = "All tests";
|
|
277
|
+
} elsif ($#opt_test_list_files < 10) {
|
|
278
|
+
$list_name = join (", ", @opt_test_list_files);
|
|
279
|
+
} else {
|
|
280
|
+
$list_name = "($#opt_test_list_files test files specified)";
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
if ($#opt_neg_list_files == -1) {
|
|
284
|
+
$neglist_name = "(none)";
|
|
285
|
+
} elsif ($#opt_test_list_files < 10) {
|
|
286
|
+
$neglist_name = join (", ", @opt_neg_list_files);
|
|
287
|
+
} else {
|
|
288
|
+
$neglist_name = "($#opt_neg_list_files skip files specified)";
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
open (OUTPUT, "> $opt_output_file") ||
|
|
292
|
+
die ("Could not create output file $opt_output_file");
|
|
293
|
+
|
|
294
|
+
print OUTPUT
|
|
295
|
+
("<html><head>\n" .
|
|
296
|
+
"<title>Test results, $opt_engine_type</title>\n" .
|
|
297
|
+
"</head>\n" .
|
|
298
|
+
"<body bgcolor='white'>\n" .
|
|
299
|
+
"<a name='tippy_top'></a>\n" .
|
|
300
|
+
"<h2>Test results, $opt_engine_type</h2><br>\n" .
|
|
301
|
+
"<p class='results_summary'>\n" .
|
|
302
|
+
"Test List: $list_name<br>\n" .
|
|
303
|
+
"Skip List: $neglist_name<br>\n" .
|
|
304
|
+
($#test_list + 1) . " test(s) selected, $tests_completed test(s) " .
|
|
305
|
+
"completed, $failures_reported failures reported " .
|
|
306
|
+
"($failure_pct% failed)<br>\n" .
|
|
307
|
+
"Engine command line: $engine_command<br>\n" .
|
|
308
|
+
"OS type: $os_type<br>\n");
|
|
309
|
+
|
|
310
|
+
if ($opt_engine_type =~ /^rhino/) {
|
|
311
|
+
open (JAVAOUTPUT, $opt_java_path . "java -fullversion " .
|
|
312
|
+
$redirect_command . " |");
|
|
313
|
+
print OUTPUT <JAVAOUTPUT>;
|
|
314
|
+
print OUTPUT "<BR>";
|
|
315
|
+
close (JAVAOUTPUT);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
print OUTPUT
|
|
319
|
+
("Testcase execution time: $exec_time_string.<br>\n" .
|
|
320
|
+
"Tests completed on $completion_date.<br><br>\n");
|
|
321
|
+
|
|
322
|
+
if ($failures_reported > 0) {
|
|
323
|
+
print OUTPUT
|
|
324
|
+
("[ <a href='#fail_detail'>Failure Details</a> | " .
|
|
325
|
+
"<a href='#retest_list'>Retest List</a> | " .
|
|
326
|
+
"<a href='menu.html'>Test Selection Page</a> ]<br>\n" .
|
|
327
|
+
"<hr>\n" .
|
|
328
|
+
"<a name='fail_detail'></a>\n" .
|
|
329
|
+
"<h2>Failure Details</h2><br>\n<dl>" .
|
|
330
|
+
$html .
|
|
331
|
+
"</dl>\n[ <a href='#tippy_top'>Top of Page</a> | " .
|
|
332
|
+
"<a href='#fail_detail'>Top of Failures</a> ]<br>\n" .
|
|
333
|
+
"<hr>\n" .
|
|
334
|
+
"<a name='retest_list'></a>\n" .
|
|
335
|
+
"<h2>Retest List</h2><br>\n" .
|
|
336
|
+
"<pre>\n" .
|
|
337
|
+
"# Retest List, $opt_engine_type, " .
|
|
338
|
+
"generated $completion_date.\n" .
|
|
339
|
+
"# Original test base was: $list_name.\n" .
|
|
340
|
+
"# $tests_completed of " . ($#test_list + 1) .
|
|
341
|
+
" test(s) were completed, " .
|
|
342
|
+
"$failures_reported failures reported.\n" .
|
|
343
|
+
join ("\n", @failed_tests) .
|
|
344
|
+
"</pre>\n" .
|
|
345
|
+
"[ <a href='#tippy_top'>Top of Page</a> | " .
|
|
346
|
+
"<a href='#retest_list'>Top of Retest List</a> ]<br>\n");
|
|
347
|
+
} else {
|
|
348
|
+
print OUTPUT
|
|
349
|
+
("<h1>Whoop-de-doo, nothing failed!</h1>\n");
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
print OUTPUT "</body>";
|
|
353
|
+
|
|
354
|
+
close (OUTPUT);
|
|
355
|
+
|
|
356
|
+
&status ("Wrote results to '$opt_output_file'.");
|
|
357
|
+
|
|
358
|
+
if ($opt_console_failures) {
|
|
359
|
+
&status ("$failures_reported test(s) failed");
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
sub parse_args {
|
|
365
|
+
my ($option, $value, $lastopt);
|
|
366
|
+
|
|
367
|
+
&dd ("checking command line options.");
|
|
368
|
+
|
|
369
|
+
Getopt::Mixed::init ($options);
|
|
370
|
+
$Getopt::Mixed::order = $Getopt::Mixed::RETURN_IN_ORDER;
|
|
371
|
+
|
|
372
|
+
while (($option, $value) = nextOption()) {
|
|
373
|
+
|
|
374
|
+
if ($option eq "b") {
|
|
375
|
+
&dd ("opt: setting bugurl to '$value'.");
|
|
376
|
+
$opt_bug_url = $value;
|
|
377
|
+
|
|
378
|
+
} elsif ($option eq "c") {
|
|
379
|
+
&dd ("opt: setting classpath to '$value'.");
|
|
380
|
+
$opt_classpath = $value;
|
|
381
|
+
|
|
382
|
+
} elsif (($option eq "e") || (($option eq "") && ($lastopt eq "e"))) {
|
|
383
|
+
&dd ("opt: adding engine $value.");
|
|
384
|
+
push (@opt_engine_list, $value);
|
|
385
|
+
|
|
386
|
+
} elsif ($option eq "f") {
|
|
387
|
+
if (!$value) {
|
|
388
|
+
die ("Output file cannot be null.\n");
|
|
389
|
+
}
|
|
390
|
+
&dd ("opt: setting output file to '$value'.");
|
|
391
|
+
$opt_user_output_file = 1;
|
|
392
|
+
$opt_output_file = $value;
|
|
393
|
+
|
|
394
|
+
} elsif ($option eq "h") {
|
|
395
|
+
&usage;
|
|
396
|
+
|
|
397
|
+
} elsif ($option eq "j") {
|
|
398
|
+
if (!($value =~ /[\/\\]$/)) {
|
|
399
|
+
$value .= "/";
|
|
400
|
+
}
|
|
401
|
+
&dd ("opt: setting java path to '$value'.");
|
|
402
|
+
$opt_java_path = $value;
|
|
403
|
+
|
|
404
|
+
} elsif ($option eq "k") {
|
|
405
|
+
&dd ("opt: displaying failures on console.");
|
|
406
|
+
$opt_console_failures=1;
|
|
407
|
+
|
|
408
|
+
} elsif ($option eq "l" || (($option eq "") && ($lastopt eq "l"))) {
|
|
409
|
+
$option = "l";
|
|
410
|
+
&dd ("opt: adding test list '$value'.");
|
|
411
|
+
push (@opt_test_list_files, $value);
|
|
412
|
+
|
|
413
|
+
} elsif ($option eq "L" || (($option eq "") && ($lastopt eq "L"))) {
|
|
414
|
+
$option = "L";
|
|
415
|
+
&dd ("opt: adding negative list '$value'.");
|
|
416
|
+
push (@opt_neg_list_files, $value);
|
|
417
|
+
|
|
418
|
+
} elsif ($option eq "o") {
|
|
419
|
+
$opt_engine_params = $value;
|
|
420
|
+
&dd ("opt: setting engine params to '$opt_engine_params'.");
|
|
421
|
+
|
|
422
|
+
} elsif ($option eq "p") {
|
|
423
|
+
$opt_suite_path = $value;
|
|
424
|
+
|
|
425
|
+
if ($os_type eq "MAC") {
|
|
426
|
+
if (!($opt_suite_path =~ /\:$/)) {
|
|
427
|
+
$opt_suite_path .= ":";
|
|
428
|
+
}
|
|
429
|
+
} else {
|
|
430
|
+
if (!($opt_suite_path =~ /[\/\\]$/)) {
|
|
431
|
+
$opt_suite_path .= "/";
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
&dd ("opt: setting suite path to '$opt_suite_path'.");
|
|
436
|
+
|
|
437
|
+
} elsif ($option eq "s") {
|
|
438
|
+
$opt_shell_path = $value;
|
|
439
|
+
&dd ("opt: setting shell path to '$opt_shell_path'.");
|
|
440
|
+
|
|
441
|
+
} elsif ($option eq "t") {
|
|
442
|
+
&dd ("opt: tracing output. (console failures at no extra charge.)");
|
|
443
|
+
$opt_console_failures = 1;
|
|
444
|
+
$opt_trace = 1;
|
|
445
|
+
|
|
446
|
+
} elsif ($option eq "u") {
|
|
447
|
+
&dd ("opt: setting lxr url to '$value'.");
|
|
448
|
+
$opt_lxr_url = $value;
|
|
449
|
+
|
|
450
|
+
} elsif ($option eq "x") {
|
|
451
|
+
&dd ("opt: turning off exit munging.");
|
|
452
|
+
$opt_exit_munge = 0;
|
|
453
|
+
|
|
454
|
+
} else {
|
|
455
|
+
&usage;
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
$lastopt = $option;
|
|
459
|
+
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
Getopt::Mixed::cleanup();
|
|
463
|
+
|
|
464
|
+
if ($#opt_engine_list == -1) {
|
|
465
|
+
die "You must select a shell to test in.\n";
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
#
|
|
471
|
+
# print the arguments that this script expects
|
|
472
|
+
#
|
|
473
|
+
sub usage {
|
|
474
|
+
print STDERR
|
|
475
|
+
("\nusage: $0 [<options>] \n" .
|
|
476
|
+
"(-b|--bugurl) Bugzilla URL.\n" .
|
|
477
|
+
" (default is $opt_bug_url)\n" .
|
|
478
|
+
"(-c|--classpath) Classpath (Rhino only.)\n" .
|
|
479
|
+
"(-e|--engine) <type> ... Specify the type of engine(s) to test.\n" .
|
|
480
|
+
" <type> is one or more of\n" .
|
|
481
|
+
" (smopt|smdebug|lcopt|lcdebug|xpcshell|" .
|
|
482
|
+
"rhino|rhinoi|rhinoms|rhinomsi|rhino9|rhinoms9).\n" .
|
|
483
|
+
"(-f|--file) <file> Redirect output to file named <file>.\n" .
|
|
484
|
+
" (default is " .
|
|
485
|
+
"results-<engine-type>-<date-stamp>.html)\n" .
|
|
486
|
+
"(-h|--help) Print this message.\n" .
|
|
487
|
+
"(-j|--javapath) Location of java executable.\n" .
|
|
488
|
+
"(-k|--confail) Log failures to console (also.)\n" .
|
|
489
|
+
"(-l|--list) <file> ... List of tests to execute.\n" .
|
|
490
|
+
"(-L|--neglist) <file> ... List of tests to skip.\n" .
|
|
491
|
+
"(-o|--opt) <options> Options to pass to the JavaScript engine.\n" .
|
|
492
|
+
" (Make sure to quote them!)\n" .
|
|
493
|
+
"(-p|--testpath) <path> Root of the test suite. (default is ./)\n" .
|
|
494
|
+
"(-s|--shellpath) <path> Location of JavaScript shell.\n" .
|
|
495
|
+
"(-t|--trace) Trace script execution.\n" .
|
|
496
|
+
"(-u|--lxrurl) <url> Complete URL to tests subdirectory on lxr.\n" .
|
|
497
|
+
" (default is $opt_lxr_url)\n" .
|
|
498
|
+
"(-x|--noexitmunge) Don't do exit code munging (try this if it\n" .
|
|
499
|
+
" seems like your exit codes are turning up\n" .
|
|
500
|
+
" as exit signals.)\n");
|
|
501
|
+
exit (1);
|
|
502
|
+
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
#
|
|
506
|
+
# get the shell command used to start the (either) engine
|
|
507
|
+
#
|
|
508
|
+
sub get_engine_command {
|
|
509
|
+
|
|
510
|
+
my $retval;
|
|
511
|
+
|
|
512
|
+
if ($opt_engine_type eq "rhino") {
|
|
513
|
+
&dd ("getting rhino engine command.");
|
|
514
|
+
$opt_rhino_opt = 0;
|
|
515
|
+
$opt_rhino_ms = 0;
|
|
516
|
+
$retval = &get_rhino_engine_command;
|
|
517
|
+
} elsif ($opt_engine_type eq "rhinoi") {
|
|
518
|
+
&dd ("getting rhinoi engine command.");
|
|
519
|
+
$opt_rhino_opt = -1;
|
|
520
|
+
$opt_rhino_ms = 0;
|
|
521
|
+
$retval = &get_rhino_engine_command;
|
|
522
|
+
} elsif ($opt_engine_type eq "rhino9") {
|
|
523
|
+
&dd ("getting rhino engine command.");
|
|
524
|
+
$opt_rhino_opt = 9;
|
|
525
|
+
$opt_rhino_ms = 0;
|
|
526
|
+
$retval = &get_rhino_engine_command;
|
|
527
|
+
} elsif ($opt_engine_type eq "rhinoms") {
|
|
528
|
+
&dd ("getting rhinoms engine command.");
|
|
529
|
+
$opt_rhino_opt = 0;
|
|
530
|
+
$opt_rhino_ms = 1;
|
|
531
|
+
$retval = &get_rhino_engine_command;
|
|
532
|
+
} elsif ($opt_engine_type eq "rhinomsi") {
|
|
533
|
+
&dd ("getting rhinomsi engine command.");
|
|
534
|
+
$opt_rhino_opt = -1;
|
|
535
|
+
$opt_rhino_ms = 1;
|
|
536
|
+
$retval = &get_rhino_engine_command;
|
|
537
|
+
} elsif ($opt_engine_type eq "rhinoms9") {
|
|
538
|
+
&dd ("getting rhinomsi engine command.");
|
|
539
|
+
$opt_rhino_opt = 9;
|
|
540
|
+
$opt_rhino_ms = 1;
|
|
541
|
+
$retval = &get_rhino_engine_command;
|
|
542
|
+
} elsif ($opt_engine_type eq "xpcshell") {
|
|
543
|
+
&dd ("getting xpcshell engine command.");
|
|
544
|
+
$retval = &get_xpc_engine_command;
|
|
545
|
+
} elsif ($opt_engine_type =~ /^lc(opt|debug)$/) {
|
|
546
|
+
&dd ("getting liveconnect engine command.");
|
|
547
|
+
$retval = &get_lc_engine_command;
|
|
548
|
+
} elsif ($opt_engine_type =~ /^sm(opt|debug)$/) {
|
|
549
|
+
&dd ("getting spidermonkey engine command.");
|
|
550
|
+
$retval = &get_sm_engine_command;
|
|
551
|
+
} elsif ($opt_engine_type =~ /^ep(opt|debug)$/) {
|
|
552
|
+
&dd ("getting epimetheus engine command.");
|
|
553
|
+
$retval = &get_ep_engine_command;
|
|
554
|
+
} else {
|
|
555
|
+
die ("Unknown engine type selected, '$opt_engine_type'.\n");
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
$retval .= " $opt_engine_params";
|
|
559
|
+
|
|
560
|
+
&dd ("got '$retval'");
|
|
561
|
+
|
|
562
|
+
return $retval;
|
|
563
|
+
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
#
|
|
567
|
+
# get the shell command used to run rhino
|
|
568
|
+
#
|
|
569
|
+
sub get_rhino_engine_command {
|
|
570
|
+
my $retval = $opt_java_path . ($opt_rhino_ms ? "jview " : "java ");
|
|
571
|
+
|
|
572
|
+
if ($opt_shell_path) {
|
|
573
|
+
$opt_classpath = ($opt_classpath) ?
|
|
574
|
+
$opt_classpath . ":" . $opt_shell_path :
|
|
575
|
+
$opt_shell_path;
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
if ($opt_classpath) {
|
|
579
|
+
$retval .= ($opt_rhino_ms ? "/cp:p" : "-classpath") . " $opt_classpath ";
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
$retval .= "org.mozilla.javascript.tools.shell.Main";
|
|
583
|
+
|
|
584
|
+
if ($opt_rhino_opt) {
|
|
585
|
+
$retval .= " -opt $opt_rhino_opt";
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
return $retval;
|
|
589
|
+
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
#
|
|
593
|
+
# get the shell command used to run xpcshell
|
|
594
|
+
#
|
|
595
|
+
sub get_xpc_engine_command {
|
|
596
|
+
my $retval;
|
|
597
|
+
my $m5_home = @ENV{"MOZILLA_FIVE_HOME"} ||
|
|
598
|
+
die ("You must set MOZILLA_FIVE_HOME to use the xpcshell" ,
|
|
599
|
+
(!$unixish) ? "." : ", also " .
|
|
600
|
+
"setting LD_LIBRARY_PATH to the same directory may get rid of " .
|
|
601
|
+
"any 'library not found' errors.\n");
|
|
602
|
+
|
|
603
|
+
if (($unixish) && (!@ENV{"LD_LIBRARY_PATH"})) {
|
|
604
|
+
print STDERR "-#- WARNING: LD_LIBRARY_PATH is not set, xpcshell may " .
|
|
605
|
+
"not be able to find the required components.\n";
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
if (!($m5_home =~ /[\/\\]$/)) {
|
|
609
|
+
$m5_home .= "/";
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
$retval = $m5_home . "xpcshell";
|
|
613
|
+
|
|
614
|
+
if ($os_type eq "WIN") {
|
|
615
|
+
$retval .= ".exe";
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
$retval = &xp_path($retval);
|
|
619
|
+
|
|
620
|
+
if (($os_type ne "MAC") && !(-x $retval)) {
|
|
621
|
+
# mac doesn't seem to deal with -x correctly
|
|
622
|
+
die ($retval . " is not a valid executable on this system.\n");
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
return $retval;
|
|
626
|
+
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
#
|
|
630
|
+
# get the shell command used to run spidermonkey
|
|
631
|
+
#
|
|
632
|
+
sub get_sm_engine_command {
|
|
633
|
+
my $retval;
|
|
634
|
+
|
|
635
|
+
# Look for Makefile.ref style make first.
|
|
636
|
+
# (On Windows, spidermonkey can be made by two makefiles, each putting the
|
|
637
|
+
# executable in a diferent directory, under a different name.)
|
|
638
|
+
|
|
639
|
+
if ($opt_shell_path) {
|
|
640
|
+
# if the user provided a path to the shell, return that.
|
|
641
|
+
$retval = $opt_shell_path;
|
|
642
|
+
|
|
643
|
+
} else {
|
|
644
|
+
|
|
645
|
+
if ($os_type eq "MAC") {
|
|
646
|
+
$retval = $opt_suite_path . ":src:macbuild:JS";
|
|
647
|
+
} else {
|
|
648
|
+
$retval = $opt_suite_path . "../src/";
|
|
649
|
+
opendir (SRC_DIR_FILES, $retval);
|
|
650
|
+
my @src_dir_files = readdir(SRC_DIR_FILES);
|
|
651
|
+
closedir (SRC_DIR_FILES);
|
|
652
|
+
|
|
653
|
+
my ($dir, $object_dir);
|
|
654
|
+
my $pattern = ($opt_engine_type eq "smdebug") ?
|
|
655
|
+
'DBG.OBJ' : 'OPT.OBJ';
|
|
656
|
+
|
|
657
|
+
# scan for the first directory matching
|
|
658
|
+
# the pattern expected to hold this type (debug or opt) of engine
|
|
659
|
+
foreach $dir (@src_dir_files) {
|
|
660
|
+
if ($dir =~ $pattern) {
|
|
661
|
+
$object_dir = $dir;
|
|
662
|
+
last;
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
if (!$object_dir && $os_type ne "WIN") {
|
|
667
|
+
die ("Could not locate an object directory in $retval " .
|
|
668
|
+
"matching the pattern *$pattern. Have you built the " .
|
|
669
|
+
"engine?\n");
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
if (!(-x $retval . $object_dir . "/js.exe") && ($os_type eq "WIN")) {
|
|
673
|
+
# On windows, you can build with js.mak as well as Makefile.ref
|
|
674
|
+
# (Can you say WTF boys and girls? I knew you could.)
|
|
675
|
+
# So, if the exe the would have been built by Makefile.ref isn't
|
|
676
|
+
# here, check for the js.mak version before dying.
|
|
677
|
+
if ($opt_shell_path) {
|
|
678
|
+
$retval = $opt_shell_path;
|
|
679
|
+
if (!($retval =~ /[\/\\]$/)) {
|
|
680
|
+
$retval .= "/";
|
|
681
|
+
}
|
|
682
|
+
} else {
|
|
683
|
+
if ($opt_engine_type eq "smopt") {
|
|
684
|
+
$retval = "../src/Release/";
|
|
685
|
+
} else {
|
|
686
|
+
$retval = "../src/Debug/";
|
|
687
|
+
}
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
$retval .= "jsshell.exe";
|
|
691
|
+
|
|
692
|
+
} else {
|
|
693
|
+
$retval .= $object_dir . "/js";
|
|
694
|
+
if ($os_type eq "WIN") {
|
|
695
|
+
$retval .= ".exe";
|
|
696
|
+
}
|
|
697
|
+
}
|
|
698
|
+
} # mac/ not mac
|
|
699
|
+
|
|
700
|
+
$retval = &xp_path($retval);
|
|
701
|
+
|
|
702
|
+
} # (user provided a path)
|
|
703
|
+
|
|
704
|
+
|
|
705
|
+
if (($os_type ne "MAC") && !(-x $retval)) {
|
|
706
|
+
# mac doesn't seem to deal with -x correctly
|
|
707
|
+
die ($retval . " is not a valid executable on this system.\n");
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
return $retval;
|
|
711
|
+
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
#
|
|
715
|
+
# get the shell command used to run epimetheus
|
|
716
|
+
#
|
|
717
|
+
sub get_ep_engine_command {
|
|
718
|
+
my $retval;
|
|
719
|
+
|
|
720
|
+
if ($opt_shell_path) {
|
|
721
|
+
# if the user provided a path to the shell, return that -
|
|
722
|
+
$retval = $opt_shell_path;
|
|
723
|
+
|
|
724
|
+
} else {
|
|
725
|
+
my $dir;
|
|
726
|
+
my $os;
|
|
727
|
+
my $debug;
|
|
728
|
+
my $opt;
|
|
729
|
+
my $exe;
|
|
730
|
+
|
|
731
|
+
$dir = $opt_suite_path . "../../js2/src/";
|
|
732
|
+
|
|
733
|
+
if ($os_type eq "MAC") {
|
|
734
|
+
#
|
|
735
|
+
# On the Mac, the debug and opt builds lie in the same directory -
|
|
736
|
+
#
|
|
737
|
+
$os = "macbuild:";
|
|
738
|
+
$debug = "";
|
|
739
|
+
$opt = "";
|
|
740
|
+
$exe = "JS2";
|
|
741
|
+
} elsif ($os_type eq "WIN") {
|
|
742
|
+
$os = "winbuild/Epimetheus/";
|
|
743
|
+
$debug = "Debug/";
|
|
744
|
+
$opt = "Release/";
|
|
745
|
+
$exe = "Epimetheus.exe";
|
|
746
|
+
} else {
|
|
747
|
+
$os = "";
|
|
748
|
+
$debug = "";
|
|
749
|
+
$opt = ""; # <<<----- XXX THIS IS NOT RIGHT! CHANGE IT!
|
|
750
|
+
$exe = "epimetheus";
|
|
751
|
+
}
|
|
752
|
+
|
|
753
|
+
|
|
754
|
+
if ($opt_engine_type eq "epdebug") {
|
|
755
|
+
$retval = $dir . $os . $debug . $exe;
|
|
756
|
+
} else {
|
|
757
|
+
$retval = $dir . $os . $opt . $exe;
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
$retval = &xp_path($retval);
|
|
761
|
+
|
|
762
|
+
}# (user provided a path)
|
|
763
|
+
|
|
764
|
+
|
|
765
|
+
if (($os_type ne "MAC") && !(-x $retval)) {
|
|
766
|
+
# mac doesn't seem to deal with -x correctly
|
|
767
|
+
die ($retval . " is not a valid executable on this system.\n");
|
|
768
|
+
}
|
|
769
|
+
|
|
770
|
+
return $retval;
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
#
|
|
774
|
+
# get the shell command used to run the liveconnect shell
|
|
775
|
+
#
|
|
776
|
+
sub get_lc_engine_command {
|
|
777
|
+
my $retval;
|
|
778
|
+
|
|
779
|
+
if ($opt_shell_path) {
|
|
780
|
+
$retval = $opt_shell_path;
|
|
781
|
+
} else {
|
|
782
|
+
if ($os_type eq "MAC") {
|
|
783
|
+
die "Don't know how to run the lc shell on the mac yet.\n";
|
|
784
|
+
} else {
|
|
785
|
+
$retval = $opt_suite_path . "../src/liveconnect/";
|
|
786
|
+
opendir (SRC_DIR_FILES, $retval);
|
|
787
|
+
my @src_dir_files = readdir(SRC_DIR_FILES);
|
|
788
|
+
closedir (SRC_DIR_FILES);
|
|
789
|
+
|
|
790
|
+
my ($dir, $object_dir);
|
|
791
|
+
my $pattern = ($opt_engine_type eq "lcdebug") ?
|
|
792
|
+
'DBG.OBJ' : 'OPT.OBJ';
|
|
793
|
+
|
|
794
|
+
foreach $dir (@src_dir_files) {
|
|
795
|
+
if ($dir =~ $pattern) {
|
|
796
|
+
$object_dir = $dir;
|
|
797
|
+
last;
|
|
798
|
+
}
|
|
799
|
+
}
|
|
800
|
+
|
|
801
|
+
if (!$object_dir) {
|
|
802
|
+
die ("Could not locate an object directory in $retval " .
|
|
803
|
+
"matching the pattern *$pattern. Have you built the " .
|
|
804
|
+
"engine?\n");
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
$retval .= $object_dir . "/";
|
|
808
|
+
|
|
809
|
+
if ($os_type eq "WIN") {
|
|
810
|
+
$retval .= "lcshell.exe";
|
|
811
|
+
} else {
|
|
812
|
+
$retval .= "lcshell";
|
|
813
|
+
}
|
|
814
|
+
} # mac/ not mac
|
|
815
|
+
|
|
816
|
+
$retval = &xp_path($retval);
|
|
817
|
+
|
|
818
|
+
} # (user provided a path)
|
|
819
|
+
|
|
820
|
+
|
|
821
|
+
if (($os_type ne "MAC") && !(-x $retval)) {
|
|
822
|
+
# mac doesn't seem to deal with -x correctly
|
|
823
|
+
die ("$retval is not a valid executable on this system.\n");
|
|
824
|
+
}
|
|
825
|
+
|
|
826
|
+
return $retval;
|
|
827
|
+
|
|
828
|
+
}
|
|
829
|
+
|
|
830
|
+
sub get_os_type {
|
|
831
|
+
|
|
832
|
+
if ("\n" eq "\015") {
|
|
833
|
+
return "MAC";
|
|
834
|
+
}
|
|
835
|
+
|
|
836
|
+
my $uname = `uname -a`;
|
|
837
|
+
|
|
838
|
+
if ($uname =~ /WIN/) {
|
|
839
|
+
$uname = "WIN";
|
|
840
|
+
} else {
|
|
841
|
+
chop $uname;
|
|
842
|
+
}
|
|
843
|
+
|
|
844
|
+
&dd ("get_os_type returning '$uname'.");
|
|
845
|
+
return $uname;
|
|
846
|
+
|
|
847
|
+
}
|
|
848
|
+
|
|
849
|
+
sub get_test_list {
|
|
850
|
+
my @test_list;
|
|
851
|
+
my @neg_list;
|
|
852
|
+
|
|
853
|
+
if ($#opt_test_list_files > -1) {
|
|
854
|
+
my $list_file;
|
|
855
|
+
|
|
856
|
+
&dd ("getting test list from user specified source.");
|
|
857
|
+
|
|
858
|
+
foreach $list_file (@opt_test_list_files) {
|
|
859
|
+
push (@test_list, &expand_user_test_list($list_file));
|
|
860
|
+
}
|
|
861
|
+
} else {
|
|
862
|
+
&dd ("no list file, groveling in '$opt_suite_path'.");
|
|
863
|
+
|
|
864
|
+
@test_list = &get_default_test_list($opt_suite_path);
|
|
865
|
+
}
|
|
866
|
+
|
|
867
|
+
if ($#opt_neg_list_files > -1) {
|
|
868
|
+
my $list_file;
|
|
869
|
+
my $orig_size = $#test_list + 1;
|
|
870
|
+
my $actually_skipped;
|
|
871
|
+
|
|
872
|
+
&dd ("getting negative list from user specified source.");
|
|
873
|
+
|
|
874
|
+
foreach $list_file (@opt_neg_list_files) {
|
|
875
|
+
push (@neg_list, &expand_user_test_list($list_file));
|
|
876
|
+
}
|
|
877
|
+
|
|
878
|
+
@test_list = &subtract_arrays (\@test_list, \@neg_list);
|
|
879
|
+
|
|
880
|
+
$actually_skipped = $orig_size - ($#test_list + 1);
|
|
881
|
+
|
|
882
|
+
&dd ($actually_skipped . " of " . $orig_size .
|
|
883
|
+
" tests will be skipped.");
|
|
884
|
+
&dd ((($#neg_list + 1) - $actually_skipped) . " skip tests were " .
|
|
885
|
+
"not actually part of the test list.");
|
|
886
|
+
|
|
887
|
+
}
|
|
888
|
+
|
|
889
|
+
|
|
890
|
+
# Don't run any shell.js files as tests; they are only utility files
|
|
891
|
+
@test_list = grep (!/shell\.js$/, @test_list);
|
|
892
|
+
|
|
893
|
+
return @test_list;
|
|
894
|
+
|
|
895
|
+
}
|
|
896
|
+
|
|
897
|
+
#
|
|
898
|
+
# reads $list_file, storing non-comment lines into an array.
|
|
899
|
+
# lines in the form suite_dir/[*] or suite_dir/test_dir/[*] are expanded
|
|
900
|
+
# to include all test files under the specified directory
|
|
901
|
+
#
|
|
902
|
+
sub expand_user_test_list {
|
|
903
|
+
my ($list_file) = @_;
|
|
904
|
+
my @retval = ();
|
|
905
|
+
|
|
906
|
+
#
|
|
907
|
+
# Trim off the leading path separator that begins relative paths on the Mac.
|
|
908
|
+
# Each path will get concatenated with $opt_suite_path, which ends in one.
|
|
909
|
+
#
|
|
910
|
+
# Also note:
|
|
911
|
+
#
|
|
912
|
+
# We will call expand_test_list_entry(), which does pattern-matching on $list_file.
|
|
913
|
+
# This will make the pattern-matching the same as it would be on Linux/Windows -
|
|
914
|
+
#
|
|
915
|
+
if ($os_type eq "MAC") {
|
|
916
|
+
$list_file =~ s/^$path_sep//;
|
|
917
|
+
}
|
|
918
|
+
|
|
919
|
+
if ($list_file =~ /\.js$/ || -d $opt_suite_path . $list_file) {
|
|
920
|
+
|
|
921
|
+
push (@retval, &expand_test_list_entry($list_file));
|
|
922
|
+
|
|
923
|
+
} else {
|
|
924
|
+
|
|
925
|
+
open (TESTLIST, $list_file) ||
|
|
926
|
+
die("Error opening test list file '$list_file': $!\n");
|
|
927
|
+
|
|
928
|
+
while (<TESTLIST>) {
|
|
929
|
+
s/\r*\n*$//;
|
|
930
|
+
if (!(/\s*\#/)) {
|
|
931
|
+
# It's not a comment, so process it
|
|
932
|
+
push (@retval, &expand_test_list_entry($_));
|
|
933
|
+
}
|
|
934
|
+
}
|
|
935
|
+
|
|
936
|
+
close (TESTLIST);
|
|
937
|
+
|
|
938
|
+
}
|
|
939
|
+
|
|
940
|
+
return @retval;
|
|
941
|
+
|
|
942
|
+
}
|
|
943
|
+
|
|
944
|
+
|
|
945
|
+
#
|
|
946
|
+
# Currently expect all paths to be RELATIVE to the top-level tests directory.
|
|
947
|
+
# One day, this should be improved to allow absolute paths as well -
|
|
948
|
+
#
|
|
949
|
+
sub expand_test_list_entry {
|
|
950
|
+
my ($entry) = @_;
|
|
951
|
+
my @retval;
|
|
952
|
+
|
|
953
|
+
if ($entry =~ /\.js$/) {
|
|
954
|
+
# it's a regular entry, add it to the list
|
|
955
|
+
if (-f $opt_suite_path . $entry) {
|
|
956
|
+
push (@retval, $entry);
|
|
957
|
+
} else {
|
|
958
|
+
status ("testcase '$entry' not found.");
|
|
959
|
+
}
|
|
960
|
+
} elsif ($entry =~ /(.*$path_sep[^\*][^$path_sep]*)$path_sep?\*?$/) {
|
|
961
|
+
# Entry is in the form suite_dir/test_dir[/*]
|
|
962
|
+
# so iterate all tests under it
|
|
963
|
+
my $suite_and_test_dir = $1;
|
|
964
|
+
my @test_files = &get_js_files ($opt_suite_path .
|
|
965
|
+
$suite_and_test_dir);
|
|
966
|
+
my $i;
|
|
967
|
+
|
|
968
|
+
foreach $i (0 .. $#test_files) {
|
|
969
|
+
$test_files[$i] = $suite_and_test_dir . $path_sep .
|
|
970
|
+
$test_files[$i];
|
|
971
|
+
}
|
|
972
|
+
|
|
973
|
+
splice (@retval, $#retval + 1, 0, @test_files);
|
|
974
|
+
|
|
975
|
+
} elsif ($entry =~ /([^\*][^$path_sep]*)$path_sep?\*?$/) {
|
|
976
|
+
# Entry is in the form suite_dir[/*]
|
|
977
|
+
# so iterate all test dirs and tests under it
|
|
978
|
+
my $suite = $1;
|
|
979
|
+
my @test_dirs = &get_subdirs ($opt_suite_path . $suite);
|
|
980
|
+
my $test_dir;
|
|
981
|
+
|
|
982
|
+
foreach $test_dir (@test_dirs) {
|
|
983
|
+
my @test_files = &get_js_files ($opt_suite_path . $suite .
|
|
984
|
+
$path_sep . $test_dir);
|
|
985
|
+
my $i;
|
|
986
|
+
|
|
987
|
+
foreach $i (0 .. $#test_files) {
|
|
988
|
+
$test_files[$i] = $suite . $path_sep . $test_dir . $path_sep .
|
|
989
|
+
$test_files[$i];
|
|
990
|
+
}
|
|
991
|
+
|
|
992
|
+
splice (@retval, $#retval + 1, 0, @test_files);
|
|
993
|
+
}
|
|
994
|
+
|
|
995
|
+
} else {
|
|
996
|
+
die ("Don't know what to do with list entry '$entry'.\n");
|
|
997
|
+
}
|
|
998
|
+
|
|
999
|
+
return @retval;
|
|
1000
|
+
|
|
1001
|
+
}
|
|
1002
|
+
|
|
1003
|
+
#
|
|
1004
|
+
# Grovels through $suite_path, searching for *all* test files. Used when the
|
|
1005
|
+
# user doesn't supply a test list.
|
|
1006
|
+
#
|
|
1007
|
+
sub get_default_test_list {
|
|
1008
|
+
my ($suite_path) = @_;
|
|
1009
|
+
my @suite_list = &get_subdirs($suite_path);
|
|
1010
|
+
my $suite;
|
|
1011
|
+
my @retval;
|
|
1012
|
+
|
|
1013
|
+
foreach $suite (@suite_list) {
|
|
1014
|
+
my @test_dir_list = get_subdirs ($suite_path . $suite);
|
|
1015
|
+
my $test_dir;
|
|
1016
|
+
|
|
1017
|
+
foreach $test_dir (@test_dir_list) {
|
|
1018
|
+
my @test_list = get_js_files ($suite_path . $suite . $path_sep .
|
|
1019
|
+
$test_dir);
|
|
1020
|
+
my $test;
|
|
1021
|
+
|
|
1022
|
+
foreach $test (@test_list) {
|
|
1023
|
+
$retval[$#retval + 1] = $suite . $path_sep . $test_dir .
|
|
1024
|
+
$path_sep . $test;
|
|
1025
|
+
}
|
|
1026
|
+
}
|
|
1027
|
+
}
|
|
1028
|
+
|
|
1029
|
+
return @retval;
|
|
1030
|
+
|
|
1031
|
+
}
|
|
1032
|
+
|
|
1033
|
+
#
|
|
1034
|
+
# generate an output file name based on the date
|
|
1035
|
+
#
|
|
1036
|
+
sub get_tempfile_name {
|
|
1037
|
+
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) =
|
|
1038
|
+
&get_padded_time (localtime);
|
|
1039
|
+
my $rv;
|
|
1040
|
+
|
|
1041
|
+
if ($os_type ne "MAC") {
|
|
1042
|
+
$rv = "results-" . $year . "-" . $mon . "-" . $mday . "-" . $hour .
|
|
1043
|
+
$min . $sec . "-" . $opt_engine_type;
|
|
1044
|
+
} else {
|
|
1045
|
+
$rv = "res-" . $year . $mon . $mday . $hour . $min . $sec . "-" .
|
|
1046
|
+
$opt_engine_type
|
|
1047
|
+
}
|
|
1048
|
+
|
|
1049
|
+
return $rv . ".html";
|
|
1050
|
+
}
|
|
1051
|
+
|
|
1052
|
+
sub get_padded_time {
|
|
1053
|
+
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = @_;
|
|
1054
|
+
|
|
1055
|
+
$mon++;
|
|
1056
|
+
$mon = &zero_pad($mon);
|
|
1057
|
+
$year += 1900;
|
|
1058
|
+
$mday= &zero_pad($mday);
|
|
1059
|
+
$sec = &zero_pad($sec);
|
|
1060
|
+
$min = &zero_pad($min);
|
|
1061
|
+
$hour = &zero_pad($hour);
|
|
1062
|
+
|
|
1063
|
+
return ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst);
|
|
1064
|
+
|
|
1065
|
+
}
|
|
1066
|
+
|
|
1067
|
+
sub zero_pad {
|
|
1068
|
+
my ($string) = @_;
|
|
1069
|
+
|
|
1070
|
+
$string = ($string < 10) ? "0" . $string : $string;
|
|
1071
|
+
return $string;
|
|
1072
|
+
}
|
|
1073
|
+
|
|
1074
|
+
sub subtract_arrays {
|
|
1075
|
+
my ($whole_ref, $part_ref) = @_;
|
|
1076
|
+
my @whole = @$whole_ref;
|
|
1077
|
+
my @part = @$part_ref;
|
|
1078
|
+
my $line;
|
|
1079
|
+
|
|
1080
|
+
foreach $line (@part) {
|
|
1081
|
+
@whole = grep (!/$line/, @whole);
|
|
1082
|
+
}
|
|
1083
|
+
|
|
1084
|
+
return @whole;
|
|
1085
|
+
|
|
1086
|
+
}
|
|
1087
|
+
|
|
1088
|
+
#
|
|
1089
|
+
# Convert unix path to mac style.
|
|
1090
|
+
#
|
|
1091
|
+
sub unix_to_mac {
|
|
1092
|
+
my ($path) = @_;
|
|
1093
|
+
my @path_elements = split ("/", $path);
|
|
1094
|
+
my $rv = "";
|
|
1095
|
+
my $i;
|
|
1096
|
+
|
|
1097
|
+
foreach $i (0 .. $#path_elements) {
|
|
1098
|
+
if ($path_elements[$i] eq ".") {
|
|
1099
|
+
if (!($rv =~ /\:$/)) {
|
|
1100
|
+
$rv .= ":";
|
|
1101
|
+
}
|
|
1102
|
+
} elsif ($path_elements[$i] eq "..") {
|
|
1103
|
+
if (!($rv =~ /\:$/)) {
|
|
1104
|
+
$rv .= "::";
|
|
1105
|
+
} else {
|
|
1106
|
+
$rv .= ":";
|
|
1107
|
+
}
|
|
1108
|
+
} elsif ($path_elements[$i] ne "") {
|
|
1109
|
+
$rv .= $path_elements[$i] . ":";
|
|
1110
|
+
}
|
|
1111
|
+
|
|
1112
|
+
}
|
|
1113
|
+
|
|
1114
|
+
$rv =~ s/\:$//;
|
|
1115
|
+
|
|
1116
|
+
return $rv;
|
|
1117
|
+
}
|
|
1118
|
+
|
|
1119
|
+
#
|
|
1120
|
+
# Convert unix path to win style.
|
|
1121
|
+
#
|
|
1122
|
+
sub unix_to_win {
|
|
1123
|
+
my ($path) = @_;
|
|
1124
|
+
|
|
1125
|
+
if ($path_sep ne $win_sep) {
|
|
1126
|
+
$path =~ s/$path_sep/$win_sep/g;
|
|
1127
|
+
}
|
|
1128
|
+
|
|
1129
|
+
return $path;
|
|
1130
|
+
}
|
|
1131
|
+
|
|
1132
|
+
#
|
|
1133
|
+
# Windows shells require "/" or "\" as path separator.
|
|
1134
|
+
# Find out the one used in the current Windows shell.
|
|
1135
|
+
#
|
|
1136
|
+
sub get_win_sep {
|
|
1137
|
+
my $path = $ENV{"PATH"} || $ENV{"Path"} || $ENV{"path"};
|
|
1138
|
+
$path =~ /\\|\//;
|
|
1139
|
+
return $&;
|
|
1140
|
+
}
|
|
1141
|
+
|
|
1142
|
+
#
|
|
1143
|
+
# Convert unix path to correct style based on platform.
|
|
1144
|
+
#
|
|
1145
|
+
sub xp_path {
|
|
1146
|
+
my ($path) = @_;
|
|
1147
|
+
|
|
1148
|
+
if ($os_type eq "MAC") {
|
|
1149
|
+
return &unix_to_mac($path);
|
|
1150
|
+
} elsif($os_type eq "WIN") {
|
|
1151
|
+
return &unix_to_win($path);
|
|
1152
|
+
} else {
|
|
1153
|
+
return $path;
|
|
1154
|
+
}
|
|
1155
|
+
}
|
|
1156
|
+
|
|
1157
|
+
#
|
|
1158
|
+
# given a directory, return an array of all subdirectories
|
|
1159
|
+
#
|
|
1160
|
+
sub get_subdirs {
|
|
1161
|
+
my ($dir) = @_;
|
|
1162
|
+
my @subdirs;
|
|
1163
|
+
|
|
1164
|
+
if ($os_type ne "MAC") {
|
|
1165
|
+
if (!($dir =~ /\/$/)) {
|
|
1166
|
+
$dir = $dir . "/";
|
|
1167
|
+
}
|
|
1168
|
+
} else {
|
|
1169
|
+
if (!($dir =~ /\:$/)) {
|
|
1170
|
+
$dir = $dir . ":";
|
|
1171
|
+
}
|
|
1172
|
+
}
|
|
1173
|
+
opendir (DIR, $dir) || die ("couldn't open directory $dir: $!");
|
|
1174
|
+
my @testdir_contents = readdir(DIR);
|
|
1175
|
+
closedir(DIR);
|
|
1176
|
+
|
|
1177
|
+
foreach (@testdir_contents) {
|
|
1178
|
+
if ((-d ($dir . $_)) && ($_ ne 'CVS') && ($_ ne '.') && ($_ ne '..')) {
|
|
1179
|
+
@subdirs[$#subdirs + 1] = $_;
|
|
1180
|
+
}
|
|
1181
|
+
}
|
|
1182
|
+
|
|
1183
|
+
return @subdirs;
|
|
1184
|
+
}
|
|
1185
|
+
|
|
1186
|
+
#
|
|
1187
|
+
# given a directory, return an array of all the js files that are in it.
|
|
1188
|
+
#
|
|
1189
|
+
sub get_js_files {
|
|
1190
|
+
my ($test_subdir) = @_;
|
|
1191
|
+
my (@js_file_array, @subdir_files);
|
|
1192
|
+
|
|
1193
|
+
opendir (TEST_SUBDIR, $test_subdir) || die ("couldn't open directory " .
|
|
1194
|
+
"$test_subdir: $!");
|
|
1195
|
+
@subdir_files = readdir(TEST_SUBDIR);
|
|
1196
|
+
closedir( TEST_SUBDIR );
|
|
1197
|
+
|
|
1198
|
+
foreach (@subdir_files) {
|
|
1199
|
+
if ($_ =~ /\.js$/) {
|
|
1200
|
+
$js_file_array[$#js_file_array+1] = $_;
|
|
1201
|
+
}
|
|
1202
|
+
}
|
|
1203
|
+
|
|
1204
|
+
return @js_file_array;
|
|
1205
|
+
}
|
|
1206
|
+
|
|
1207
|
+
sub report_failure {
|
|
1208
|
+
my ($test, $message, $bug_number) = @_;
|
|
1209
|
+
my $bug_line = "";
|
|
1210
|
+
|
|
1211
|
+
$failures_reported++;
|
|
1212
|
+
|
|
1213
|
+
$message =~ s/\n+/\n/g;
|
|
1214
|
+
$test =~ s/\:/\//g;
|
|
1215
|
+
|
|
1216
|
+
if ($opt_console_failures) {
|
|
1217
|
+
if($bug_number) {
|
|
1218
|
+
print STDERR ("*-* Testcase $test failed:\nBug Number $bug_number".
|
|
1219
|
+
"\n$message\n");
|
|
1220
|
+
} else {
|
|
1221
|
+
print STDERR ("*-* Testcase $test failed:\n$message\n");
|
|
1222
|
+
}
|
|
1223
|
+
}
|
|
1224
|
+
|
|
1225
|
+
$message =~ s/\n/<br>\n/g;
|
|
1226
|
+
$html .= "<a name='failure$failures_reported'></a>";
|
|
1227
|
+
|
|
1228
|
+
if ($bug_number) {
|
|
1229
|
+
$bug_line = "<a href='$opt_bug_url$bug_number' target='other_window'>".
|
|
1230
|
+
"Bug Number $bug_number</a>";
|
|
1231
|
+
}
|
|
1232
|
+
|
|
1233
|
+
if ($opt_lxr_url) {
|
|
1234
|
+
$test =~ /\/?([^\/]+\/[^\/]+\/[^\/]+)$/;
|
|
1235
|
+
$test = $1;
|
|
1236
|
+
$html .= "<dd><b>".
|
|
1237
|
+
"Testcase <a target='other_window' href='$opt_lxr_url$test'>$1</a> " .
|
|
1238
|
+
"failed</b> $bug_line<br>\n";
|
|
1239
|
+
} else {
|
|
1240
|
+
$html .= "<dd><b>".
|
|
1241
|
+
"Testcase $test failed</b> $bug_line<br>\n";
|
|
1242
|
+
}
|
|
1243
|
+
|
|
1244
|
+
$html .= " [ ";
|
|
1245
|
+
if ($failures_reported > 1) {
|
|
1246
|
+
$html .= "<a href='#failure" . ($failures_reported - 1) . "'>" .
|
|
1247
|
+
"Previous Failure</a> | ";
|
|
1248
|
+
}
|
|
1249
|
+
|
|
1250
|
+
$html .= "<a href='#failure" . ($failures_reported + 1) . "'>" .
|
|
1251
|
+
"Next Failure</a> | " .
|
|
1252
|
+
"<a href='#tippy_top'>Top of Page</a> ]<br>\n" .
|
|
1253
|
+
"<tt>$message</tt><br>\n";
|
|
1254
|
+
|
|
1255
|
+
@failed_tests[$#failed_tests + 1] = $test;
|
|
1256
|
+
|
|
1257
|
+
}
|
|
1258
|
+
|
|
1259
|
+
sub dd {
|
|
1260
|
+
|
|
1261
|
+
if ($opt_trace) {
|
|
1262
|
+
print ("-*- ", @_ , "\n");
|
|
1263
|
+
}
|
|
1264
|
+
|
|
1265
|
+
}
|
|
1266
|
+
|
|
1267
|
+
sub status {
|
|
1268
|
+
|
|
1269
|
+
print ("-#- ", @_ , "\n");
|
|
1270
|
+
|
|
1271
|
+
}
|
|
1272
|
+
|
|
1273
|
+
sub int_handler {
|
|
1274
|
+
my $resp;
|
|
1275
|
+
|
|
1276
|
+
do {
|
|
1277
|
+
print ("\n*** User Break: Just [Q]uit, Quit and [R]eport, [C]ontinue ?");
|
|
1278
|
+
$resp = <STDIN>;
|
|
1279
|
+
} until ($resp =~ /[QqRrCc]/);
|
|
1280
|
+
|
|
1281
|
+
if ($resp =~ /[Qq]/) {
|
|
1282
|
+
print ("User Exit. No results were generated.\n");
|
|
1283
|
+
exit;
|
|
1284
|
+
} elsif ($resp =~ /[Rr]/) {
|
|
1285
|
+
$user_exit = 1;
|
|
1286
|
+
}
|
|
1287
|
+
|
|
1288
|
+
}
|