diff --git a/Gruntfile.js b/Gruntfile.js index e3b4940e12..dd04aa2d13 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -53,7 +53,9 @@ module.exports = function(grunt) { grunt.registerTask('build:min', ['jsx:release', 'browserify:min']); grunt.registerTask('build:test', [ 'jsx:debug', + 'jsx:jasmine', 'jsx:test', + 'browserify:jasmine', 'browserify:test' ]); diff --git a/grunt/config/browserify.js b/grunt/config/browserify.js index 35ffef9d80..ed98282a42 100644 --- a/grunt/config/browserify.js +++ b/grunt/config/browserify.js @@ -76,6 +76,17 @@ var transformer = { after: [simpleBannerify] }; +var jasmine = { + entries: [ + "./build/jasmine/all.js" + ], + requires: { + "jasmine": "./build/jasmine/all.js" + }, + outfile: "./build/jasmine.js", + debug: false +}; + var test = { entries: [ "./build/modules/test/all.js", @@ -88,6 +99,7 @@ var test = { module.exports = { basic: basic, + jasmine: jasmine, test: test, min: min, transformer: transformer diff --git a/grunt/config/jsx/jsx.js b/grunt/config/jsx/jsx.js index 4245cc7aa1..34fe98c166 100644 --- a/grunt/config/jsx/jsx.js +++ b/grunt/config/jsx/jsx.js @@ -11,6 +11,15 @@ var debug = { outputDir: "build/modules" }; +var jasmine = { + rootIDs: [ + "all" + ], + configFile: debug.configFile, + sourceDir: "vendor/jasmine", + outputDir: "build/jasmine" +}; + var test = { rootIDs: rootIDs.concat([ "test/all.js", @@ -30,6 +39,7 @@ var release = { module.exports = { debug: debug, + jasmine: jasmine, test: test, release: release }; diff --git a/src/test/all.js b/src/test/all.js index c6511b9f0a..80dec80e4f 100644 --- a/src/test/all.js +++ b/src/test/all.js @@ -2,17 +2,8 @@ // modules in src/test and to specify an ordering on those modules, since // some still have implicit dependencies on others. -require("./phantom"); -require("./console"); require("ReactTestUtils"); require("reactComponentExpect"); -require("./diff"); -require("./PrintReporter"); -require("./HtmlReporter"); -require("./ReporterView"); -require("./SpecView"); -require("./SuiteView"); -require("./jasmine-support"); require("mocks"); require("mock-modules"); require("./mock-timers"); diff --git a/test/index.html b/test/index.html index a609479571..aded089904 100644 --- a/test/index.html +++ b/test/index.html @@ -3,11 +3,10 @@
- diff --git a/test/phantom-harness.js b/test/phantom-harness.js index 0350e5c9cd..677079a5dd 100644 --- a/test/phantom-harness.js +++ b/test/phantom-harness.js @@ -45,10 +45,12 @@ server.listen(port, function(req, res) { break; case "jasmine.css": - case "jasmine.js": - case "jasmine-html.js": file = "../vendor/jasmine/" + file; break; + + case "jasmine.js": + file = "../build/" + file; + break; } if (/\.css$/i.test(file)) { diff --git a/src/test/HtmlReporter.js b/vendor/jasmine/HtmlReporter.js similarity index 99% rename from src/test/HtmlReporter.js rename to vendor/jasmine/HtmlReporter.js index fd2a5e4f3b..8ed3d3742d 100644 --- a/src/test/HtmlReporter.js +++ b/vendor/jasmine/HtmlReporter.js @@ -1,3 +1,5 @@ +var jasmine = require("./jasmine"); + exports.HtmlReporter = jasmine.HtmlReporter = function(_doc) { var self = this; diff --git a/src/test/PrintReporter.js b/vendor/jasmine/PrintReporter.js similarity index 97% rename from src/test/PrintReporter.js rename to vendor/jasmine/PrintReporter.js index 4a76c0e932..9ffd94a1dc 100644 --- a/src/test/PrintReporter.js +++ b/vendor/jasmine/PrintReporter.js @@ -1,3 +1,4 @@ +var jasmine = require("./jasmine"); var diff = require('./diff'); var red = '\u001b[1;41m'; @@ -54,7 +55,7 @@ PrintReporter.prototype.reportRunnerResults = function(runner) { this.failCount + " fail" ].join(" ")); - require("test/phantom").exit(this.failCount); + require("./phantom").exit(this.failCount); }; diff --git a/src/test/ReporterView.js b/vendor/jasmine/ReporterView.js similarity index 99% rename from src/test/ReporterView.js rename to vendor/jasmine/ReporterView.js index 419accecc6..21790dfd5a 100644 --- a/src/test/ReporterView.js +++ b/vendor/jasmine/ReporterView.js @@ -1,3 +1,5 @@ +var jasmine = require("jasmine"); + jasmine.HtmlReporter.ReporterView = function(dom) { this.startedAt = new Date(); this.runningSpecCount = 0; diff --git a/src/test/SpecView.js b/vendor/jasmine/SpecView.js similarity index 98% rename from src/test/SpecView.js rename to vendor/jasmine/SpecView.js index b9bcf08ac2..8580bd2a59 100644 --- a/src/test/SpecView.js +++ b/vendor/jasmine/SpecView.js @@ -1,3 +1,5 @@ +var jasmine = require("./jasmine"); + jasmine.HtmlReporter.SpecView = function(spec, dom, views) { this.spec = spec; this.dom = dom; diff --git a/src/test/SuiteView.js b/vendor/jasmine/SuiteView.js similarity index 94% rename from src/test/SuiteView.js rename to vendor/jasmine/SuiteView.js index a7f433f553..917609e5f5 100644 --- a/src/test/SuiteView.js +++ b/vendor/jasmine/SuiteView.js @@ -1,3 +1,5 @@ +var jasmine = require("./jasmine"); + jasmine.HtmlReporter.SuiteView = function(suite, dom, views) { this.suite = suite; this.dom = dom; diff --git a/vendor/jasmine/all.js b/vendor/jasmine/all.js new file mode 100644 index 0000000000..2efe39c514 --- /dev/null +++ b/vendor/jasmine/all.js @@ -0,0 +1,38 @@ +require("./phantom"); +require("./console"); + +// TODO Also bundle jasmine.css here. +var jasmine = require("./jasmine"); +require("./jasmine-html"); +require("./jasmine-support"); + +require("./HtmlReporter"); +require("./PrintReporter"); +require("./ReporterView"); +require("./SpecView"); +require("./SuiteView"); + +var env = jasmine.getEnv(); +env.addReporter(new jasmine.HtmlReporter); +env.addReporter(new jasmine.PrintReporter); + +function exposeFrom(obj) { + obj.spyOn = jasmine.spyOn; + obj.it = jasmine.it; + obj.xit = jasmine.xit; + obj.expect = jasmine.expect; + obj.runs = jasmine.runs; + obj.waits = jasmine.waits; + obj.waitsFor = jasmine.waitsFor; + obj.beforeEach = jasmine.beforeEach; + obj.afterEach = jasmine.afterEach; + obj.describe = jasmine.describe; + obj.xdescribe = jasmine.xdescribe; + obj.jasmine = jasmine; + return obj; +} +jasmine.exposeFrom = exposeFrom; +var global = Function("return this")(); +exposeFrom(global); + +module.exports = jasmine; diff --git a/src/test/console.js b/vendor/jasmine/console.js similarity index 100% rename from src/test/console.js rename to vendor/jasmine/console.js diff --git a/src/test/diff.js b/vendor/jasmine/diff.js similarity index 100% rename from src/test/diff.js rename to vendor/jasmine/diff.js diff --git a/vendor/jasmine/jasmine-html.js b/vendor/jasmine/jasmine-html.js index 543d56963e..86688f3275 100644 --- a/vendor/jasmine/jasmine-html.js +++ b/vendor/jasmine/jasmine-html.js @@ -1,3 +1,5 @@ +var jasmine = require("./jasmine"); + jasmine.HtmlReporterHelpers = {}; jasmine.HtmlReporterHelpers.createDom = function(type, attrs, childrenVarArgs) { diff --git a/src/test/jasmine-support.js b/vendor/jasmine/jasmine-support.js similarity index 93% rename from src/test/jasmine-support.js rename to vendor/jasmine/jasmine-support.js index 07f47e622f..dc3d807520 100644 --- a/src/test/jasmine-support.js +++ b/vendor/jasmine/jasmine-support.js @@ -1,5 +1,4 @@ -var global = Function("return this")(); -var jasmine = global.jasmine; +var jasmine = require("./jasmine"); var spec = false; // TODO // Add some matcher for mock functions @@ -126,9 +125,3 @@ if (typeof WeakMap !== "undefined") { return (mismatchKeys.length == 0 && mismatchValues.length == 0); }; } - -var HtmlReporter = require("./HtmlReporter").HtmlReporter; -var PrintReporter = require("./PrintReporter").PrintReporter; - -jasmine.getEnv().addReporter(new HtmlReporter); -jasmine.getEnv().addReporter(new PrintReporter); diff --git a/vendor/jasmine/jasmine.js b/vendor/jasmine/jasmine.js index faee8f3eb1..684c7cdf5b 100644 --- a/vendor/jasmine/jasmine.js +++ b/vendor/jasmine/jasmine.js @@ -1,12 +1,10 @@ -var isCommonJS = typeof window == "undefined" && typeof exports == "object"; - /** * Top level namespace for Jasmine, a lightweight JavaScript BDD/spec/testing framework. * * @namespace */ var jasmine = {}; -if (isCommonJS) exports.jasmine = jasmine; +exports = module.exports = jasmine; /** * @private */ @@ -480,7 +478,7 @@ jasmine.log = function() { var spyOn = function(obj, methodName) { return jasmine.getEnv().currentSpec.spyOn(obj, methodName); }; -if (isCommonJS) exports.spyOn = spyOn; +exports.spyOn = spyOn; /** * Creates a Jasmine spec that will be added to the current suite. @@ -498,7 +496,7 @@ if (isCommonJS) exports.spyOn = spyOn; var it = function(desc, func) { return jasmine.getEnv().it(desc, func); }; -if (isCommonJS) exports.it = it; +exports.it = it; /** * Creates a disabled Jasmine spec. @@ -511,7 +509,7 @@ if (isCommonJS) exports.it = it; var xit = function(desc, func) { return jasmine.getEnv().xit(desc, func); }; -if (isCommonJS) exports.xit = xit; +exports.xit = xit; /** * Starts a chain for a Jasmine expectation. @@ -525,7 +523,7 @@ if (isCommonJS) exports.xit = xit; var expect = function(actual) { return jasmine.getEnv().currentSpec.expect(actual); }; -if (isCommonJS) exports.expect = expect; +exports.expect = expect; /** * Defines part of a jasmine spec. Used in cominbination with waits or waitsFor in asynchrnous specs. @@ -535,7 +533,7 @@ if (isCommonJS) exports.expect = expect; var runs = function(func) { jasmine.getEnv().currentSpec.runs(func); }; -if (isCommonJS) exports.runs = runs; +exports.runs = runs; /** * Waits a fixed time period before moving to the next block. @@ -546,7 +544,7 @@ if (isCommonJS) exports.runs = runs; var waits = function(timeout) { jasmine.getEnv().currentSpec.waits(timeout); }; -if (isCommonJS) exports.waits = waits; +exports.waits = waits; /** * Waits for the latchFunction to return true before proceeding to the next block. @@ -558,7 +556,7 @@ if (isCommonJS) exports.waits = waits; var waitsFor = function(latchFunction, optional_timeoutMessage, optional_timeout) { jasmine.getEnv().currentSpec.waitsFor.apply(jasmine.getEnv().currentSpec, arguments); }; -if (isCommonJS) exports.waitsFor = waitsFor; +exports.waitsFor = waitsFor; /** * A function that is called before each spec in a suite. @@ -570,7 +568,7 @@ if (isCommonJS) exports.waitsFor = waitsFor; var beforeEach = function(beforeEachFunction) { jasmine.getEnv().beforeEach(beforeEachFunction); }; -if (isCommonJS) exports.beforeEach = beforeEach; +exports.beforeEach = beforeEach; /** * A function that is called after each spec in a suite. @@ -582,7 +580,7 @@ if (isCommonJS) exports.beforeEach = beforeEach; var afterEach = function(afterEachFunction) { jasmine.getEnv().afterEach(afterEachFunction); }; -if (isCommonJS) exports.afterEach = afterEach; +exports.afterEach = afterEach; /** * Defines a suite of specifications. @@ -602,7 +600,7 @@ if (isCommonJS) exports.afterEach = afterEach; var describe = function(description, specDefinitions) { return jasmine.getEnv().describe(description, specDefinitions); }; -if (isCommonJS) exports.describe = describe; +exports.describe = describe; /** * Disables a suite of specifications. Used to disable some suites in a file, or files, temporarily during development. @@ -613,7 +611,7 @@ if (isCommonJS) exports.describe = describe; var xdescribe = function(description, specDefinitions) { return jasmine.getEnv().xdescribe(description, specDefinitions); }; -if (isCommonJS) exports.xdescribe = xdescribe; +exports.xdescribe = xdescribe; // Provide the XMLHttpRequest class for IE 5.x-6.x: diff --git a/src/test/phantom.js b/vendor/jasmine/phantom.js similarity index 100% rename from src/test/phantom.js rename to vendor/jasmine/phantom.js