From 750d2aa86116af596cdd5cd7bec6530e6be68bd7 Mon Sep 17 00:00:00 2001 From: David Greenspan Date: Thu, 10 Jul 2014 14:02:14 -0700 Subject: [PATCH] Fix compile output tests in Firefox 12 with Coffee --- packages/spacebars-compiler/compile_tests.js | 218 +-------------- .../compiler_output_tests.coffee | 253 ++++++++++++++++++ packages/spacebars-compiler/package.js | 2 + 3 files changed, 261 insertions(+), 212 deletions(-) create mode 100644 packages/spacebars-compiler/compiler_output_tests.coffee diff --git a/packages/spacebars-compiler/compile_tests.js b/packages/spacebars-compiler/compile_tests.js index 4e02383a6c..9acf1c915e 100644 --- a/packages/spacebars-compiler/compile_tests.js +++ b/packages/spacebars-compiler/compile_tests.js @@ -40,220 +40,14 @@ Tinytest.add("spacebars-compiler - compiler output", function (test) { } }; - - - run("abc", - function () { - var view = this; - return "abc"; - }); - - run("{{foo}}", - function() { - var view = this; - return Blaze.View(function() { - return Spacebars.mustache(view.lookup("foo")); - }); - }); - - run("{{foo bar}}", - function() { - var view = this; - return Blaze.View(function() { - return Spacebars.mustache(view.lookup("foo"), - view.lookup("bar")); - }); - }); - - run("{{foo x=bar}}", - function() { - var view = this; - return Blaze.View(function() { - return Spacebars.mustache(view.lookup("foo"), Spacebars.kw({ - x: view.lookup("bar") - })); - }); - }); - - run("{{foo.bar baz}}", - function() { - var view = this; - return Blaze.View(function() { - return Spacebars.mustache(Spacebars.dot( - view.lookup("foo"), "bar"), - view.lookup("baz")); - }); - }); - - run("{{foo bar.baz}}", - function() { - var view = this; - return Blaze.View(function() { - return Spacebars.mustache(view.lookup("foo"), - Spacebars.dot(view.lookup("bar"), "baz")); - }); - }); - - run("{{foo x=bar.baz}}", - function() { - var view = this; - return Blaze.View(function() { - return Spacebars.mustache(view.lookup("foo"), Spacebars.kw({ - x: Spacebars.dot(view.lookup("bar"), "baz") - })); - }); - }); - - run("{{#foo}}abc{{/foo}}", - function() { - var view = this; - return Spacebars.include(view.lookupTemplate("foo"), (function() { - return "abc"; - })); - }); - - run("{{#if cond}}aaa{{else}}bbb{{/if}}", - function() { - var view = this; - return Blaze.If(function () { - return Spacebars.call(view.lookup("cond")); - }, (function() { - return "aaa"; - }), (function() { - return "bbb"; - })); - }); - - run("{{!-- --}}{{#if cond}}aaa{{!\n}}{{else}}{{!}}bbb{{!-- --}}{{/if}}{{!}}", - function() { - var view = this; - return Blaze.If(function () { - return Spacebars.call(view.lookup("cond")); - }, (function() { - return "aaa"; - }), (function() { - return "bbb"; - })); - }); - - run("{{> foo bar}}", - function() { - var view = this; - return Spacebars.TemplateWith(function() { - return Spacebars.call(view.lookup("bar")); - }, function() { - return Spacebars.include(view.lookupTemplate("foo")); - }); - }); - - run("{{> foo x=bar}}", - function() { - var view = this; - return Spacebars.TemplateWith(function() { - return { - x: Spacebars.call(view.lookup("bar")) - }; - }, function() { - return Spacebars.include(view.lookupTemplate("foo")); - }); - } - ); - - run("{{> foo bar.baz}}", - function() { - var view = this; - return Spacebars.TemplateWith(function() { - return Spacebars.call(Spacebars.dot(view.lookup("bar"), "baz")); - }, function() { - return Spacebars.include(view.lookupTemplate("foo")); - }); - }); - - run("{{> foo x=bar.baz}}", - function() { - var view = this; - return Spacebars.TemplateWith(function() { - return { - x: Spacebars.call(Spacebars.dot(view.lookup("bar"), "baz")) - }; - }, function() { - return Spacebars.include(view.lookupTemplate("foo")); - }); - }); - - run("{{> foo bar baz}}", - function() { - var view = this; - return Spacebars.TemplateWith(function() { - return Spacebars.dataMustache(view.lookup("bar"), view.lookup("baz")); - }, function() { - return Spacebars.include(view.lookupTemplate("foo")); - }); - } - ); - - run("{{#foo bar baz}}aaa{{/foo}}", - function() { - var view = this; - return Spacebars.TemplateWith(function() { - return Spacebars.dataMustache(view.lookup("bar"), view.lookup("baz")); - }, function() { - return Spacebars.include(view.lookupTemplate("foo"), (function() { - return "aaa"; - })); - }); - }); - - run("{{#foo p.q r.s}}aaa{{/foo}}", - function() { - var view = this; - return Spacebars.TemplateWith(function() { - return Spacebars.dataMustache(Spacebars.dot(view.lookup("p"), "q"), Spacebars.dot(view.lookup("r"), "s")); - }, function() { - return Spacebars.include(view.lookupTemplate("foo"), (function() { - return "aaa"; - })); - }); - }); - - run("", - function() { - var view = this; - return HTML.A(HTML.Attrs(function() { - return Spacebars.attrMustache(view.lookup("b")); - })); - }); - - run("", - function() { - var view = this; - return HTML.A(HTML.Attrs({ - c: (function() { return [ - "d", - Spacebars.mustache(view.lookup("e")), - "f" ]; }) - }, function() { - return Spacebars.attrMustache(view.lookup("b")); - })); - }); - - run("{{foo}}", - function() { - var view = this; - return HTML.getTag("asdf")(Blaze.View(function() { - return Spacebars.mustache(view.lookup("foo")); - })); - }); - - run("", - function() { - var view = this; - return HTML.TEXTAREA({value: (function () { - return Spacebars.mustache(view.lookup("foo")); - }) }); - }); + coffee.runCompilerOutputTests(run); }); +coffee = { + runCompilerOutputTests: null // implemented in compiler_output_tests.coffee +}; + + Tinytest.add("spacebars-compiler - compiler errors", function (test) { var getError = function (input) { diff --git a/packages/spacebars-compiler/compiler_output_tests.coffee b/packages/spacebars-compiler/compiler_output_tests.coffee new file mode 100644 index 0000000000..3ce1183248 --- /dev/null +++ b/packages/spacebars-compiler/compiler_output_tests.coffee @@ -0,0 +1,253 @@ +coffee.runCompilerOutputTests = (run) -> + run "abc", + """ + function () { + var view = this; + return "abc"; + } + """ + + run "{{foo}}", + """ + function() { + var view = this; + return Blaze.View(function() { + return Spacebars.mustache(view.lookup("foo")); + }); + } + """ + + run "{{foo bar}}", + """ + function() { + var view = this; + return Blaze.View(function() { + return Spacebars.mustache(view.lookup("foo"), + view.lookup("bar")); + }); + } + """ + + run "{{foo x=bar}}", + """ + function() { + var view = this; + return Blaze.View(function() { + return Spacebars.mustache(view.lookup("foo"), Spacebars.kw({ + x: view.lookup("bar") + })); + }); + } + """ + + run "{{foo.bar baz}}", + """ + function() { + var view = this; + return Blaze.View(function() { + return Spacebars.mustache(Spacebars.dot( + view.lookup("foo"), "bar"), + view.lookup("baz")); + }); + } + """ + + run "{{foo bar.baz}}", + """ + function() { + var view = this; + return Blaze.View(function() { + return Spacebars.mustache(view.lookup("foo"), + Spacebars.dot(view.lookup("bar"), "baz")); + }); + } + """ + + run "{{foo x=bar.baz}}", + """ + function() { + var view = this; + return Blaze.View(function() { + return Spacebars.mustache(view.lookup("foo"), Spacebars.kw({ + x: Spacebars.dot(view.lookup("bar"), "baz") + })); + }); + } + """ + + run "{{#foo}}abc{{/foo}}", + """ + function() { + var view = this; + return Spacebars.include(view.lookupTemplate("foo"), (function() { + return "abc"; + })); + } + """ + + run "{{#if cond}}aaa{{else}}bbb{{/if}}", + """ + function() { + var view = this; + return Blaze.If(function () { + return Spacebars.call(view.lookup("cond")); + }, (function() { + return "aaa"; + }), (function() { + return "bbb"; + })); + } + """ + + run "{{!-- --}}{{#if cond}}aaa{{!\n}}{{else}}{{!}}bbb{{!-- --}}{{/if}}{{!}}", + """ +function() { + var view = this; + return Blaze.If(function () { + return Spacebars.call(view.lookup("cond")); + }, (function() { + return "aaa"; + }), (function() { + return "bbb"; + })); +} + """ + + run "{{> foo bar}}", + """ + function() { + var view = this; + return Spacebars.TemplateWith(function() { + return Spacebars.call(view.lookup("bar")); + }, function() { + return Spacebars.include(view.lookupTemplate("foo")); + }); + } + """ + + run "{{> foo x=bar}}", + """ + function() { + var view = this; + return Spacebars.TemplateWith(function() { + return { + x: Spacebars.call(view.lookup("bar")) + }; + }, function() { + return Spacebars.include(view.lookupTemplate("foo")); + }); + } + + """ + + run "{{> foo bar.baz}}", + """ + function() { + var view = this; + return Spacebars.TemplateWith(function() { + return Spacebars.call(Spacebars.dot(view.lookup("bar"), "baz")); + }, function() { + return Spacebars.include(view.lookupTemplate("foo")); + }); + } + """ + + run "{{> foo x=bar.baz}}", + """ + function() { + var view = this; + return Spacebars.TemplateWith(function() { + return { + x: Spacebars.call(Spacebars.dot(view.lookup("bar"), "baz")) + }; + }, function() { + return Spacebars.include(view.lookupTemplate("foo")); + }); + } + """ + + run "{{> foo bar baz}}", + """ + function() { + var view = this; + return Spacebars.TemplateWith(function() { + return Spacebars.dataMustache(view.lookup("bar"), view.lookup("baz")); + }, function() { + return Spacebars.include(view.lookupTemplate("foo")); + }); + } + + """ + + run "{{#foo bar baz}}aaa{{/foo}}", + """ + function() { + var view = this; + return Spacebars.TemplateWith(function() { + return Spacebars.dataMustache(view.lookup("bar"), view.lookup("baz")); + }, function() { + return Spacebars.include(view.lookupTemplate("foo"), (function() { + return "aaa"; + })); + }); + } + """ + + run "{{#foo p.q r.s}}aaa{{/foo}}", + """ + function() { + var view = this; + return Spacebars.TemplateWith(function() { + return Spacebars.dataMustache(Spacebars.dot(view.lookup("p"), "q"), Spacebars.dot(view.lookup("r"), "s")); + }, function() { + return Spacebars.include(view.lookupTemplate("foo"), (function() { + return "aaa"; + })); + }); + } + """ + + run "", + """ + function() { + var view = this; + return HTML.A(HTML.Attrs(function() { + return Spacebars.attrMustache(view.lookup("b")); + })); + } + """ + + run "", + """ + function() { + var view = this; + return HTML.A(HTML.Attrs({ + c: (function() { return [ + "d", + Spacebars.mustache(view.lookup("e")), + "f" ]; }) + }, function() { + return Spacebars.attrMustache(view.lookup("b")); + })); + } + """ + + run "{{foo}}", + """ + function() { + var view = this; + return HTML.getTag("asdf")(Blaze.View(function() { + return Spacebars.mustache(view.lookup("foo")); + })); + } + """ + + run "", + """ + function() { + var view = this; + return HTML.TEXTAREA({value: (function () { + return Spacebars.mustache(view.lookup("foo")); + }) }); + } + """ diff --git a/packages/spacebars-compiler/package.js b/packages/spacebars-compiler/package.js index 783791cad2..2477e7c3c1 100644 --- a/packages/spacebars-compiler/package.js +++ b/packages/spacebars-compiler/package.js @@ -22,6 +22,8 @@ Package.on_test(function (api) { api.use('spacebars-compiler'); api.use('tinytest'); api.use('blaze-tools'); + api.use('coffeescript'); api.add_files('spacebars_tests.js'); api.add_files('compile_tests.js'); + api.add_files('compiler_output_tests.coffee'); });