You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by mm...@apache.org on 2013/12/10 19:43:54 UTC

[2/3] git commit: Moved hooker.spec.js to e2e

Moved hooker.spec.js to e2e

Checking whether moving and editing in 2 separate commits will produce
better diffs.


Project: http://git-wip-us.apache.org/repos/asf/cordova-cli/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-cli/commit/c5ac48dc
Tree: http://git-wip-us.apache.org/repos/asf/cordova-cli/tree/c5ac48dc
Diff: http://git-wip-us.apache.org/repos/asf/cordova-cli/diff/c5ac48dc

Branch: refs/heads/master
Commit: c5ac48dc99bcad8b3a56706548b2c600f514b30b
Parents: 6f5ebb8
Author: Mark Koudritsky <ka...@chromium.org>
Authored: Mon Dec 9 16:49:41 2013 -0500
Committer: Michal Mocny <mm...@gmail.com>
Committed: Tue Dec 10 13:24:49 2013 -0500

----------------------------------------------------------------------
 e2e/hooker.spec.js  | 264 +++++++++++++++++++++++++++++++++++++++++++++++
 spec/hooker.spec.js | 264 -----------------------------------------------
 2 files changed, 264 insertions(+), 264 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/c5ac48dc/e2e/hooker.spec.js
----------------------------------------------------------------------
diff --git a/e2e/hooker.spec.js b/e2e/hooker.spec.js
new file mode 100644
index 0000000..d4b073e
--- /dev/null
+++ b/e2e/hooker.spec.js
@@ -0,0 +1,264 @@
+ /**
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+**/
+
+var hooker = require('../src/hooker'),
+    util   = require('../src/util'),
+    shell  = require('shelljs'),
+    child_process = require('child_process'),
+    path   = require('path'),
+    fs     = require('fs'),
+    os     = require('os'),
+    Q      = require('q'),
+    tempDir= path.join(__dirname, '..', 'temp'),
+    hooks  = path.join(__dirname, 'fixtures', 'hooks'),
+    cordova= require('../cordova');
+
+var platform = os.platform();
+var cwd = process.cwd();
+
+// Note: because there are numerous issues with these tests on windows, the entire spec is skipped if we 
+// are in win32 ~jm
+
+if(platform != "win32" ) { 
+
+describe('hooker', function() {
+    it('should throw if provided directory is not a cordova project', function() {
+        spyOn(util, 'isCordova').andReturn(false);
+        expect(function() {
+            new hooker(tempDir);
+        }).toThrow('Not a Cordova project, can\'t use hooks.');
+    });
+    it('should not throw if provided directory is a cordova project', function() {
+        var root = '/some/root';
+        spyOn(util, 'isCordova').andReturn(root);
+        expect(function() {
+            var h = new hooker(tempDir);
+            expect(h.root).toEqual(root);
+        }).not.toThrow();
+    });
+
+    describe('global (static) fire method', function() {
+        it('should execute listeners serially', function(done) {
+            var timeout = 20;
+            var test_event = 'foo';
+            var h1_fired = false;
+            var h1 = function() {
+                h1_fired = true;
+                expect(h2_fired).toBe(false);
+                return Q();
+            };
+            var h2_fired = false;
+            var h2 = function() {
+                h2_fired = true;
+                expect(h1_fired).toBe(true);
+                return Q();
+            };
+
+            cordova.on(test_event, h1);
+            cordova.on(test_event, h2);
+            hooker.fire(test_event).then(function() {
+                expect(h1_fired).toBe(true);
+                expect(h2_fired).toBe(true);
+                done();
+            });
+        });
+    });
+    describe('project-level fire method', function() {
+        var h;
+        beforeEach(function() {
+            spyOn(util, 'isCordova').andReturn(tempDir);
+            h = new hooker(tempDir);
+        });
+
+        describe('failure', function() {
+            it('should not error if the hook is unrecognized', function() {
+                var p;
+                runs(function() {
+                    p = h.fire('CLEAN YOUR SHORTS GODDAMNIT LIKE A BIG BOY!');
+                });
+                waitsFor(function() { return !p.isPending() }, 'promise not resolved', 500);
+                runs(function() {
+                    expect(p.isFulfilled()).toBe(true);
+                });
+            });
+            it('should error if any script exits with non-zero code', function(done) {
+                var script = path.join(tempDir, '.cordova', 'hooks', 'before_build');
+                shell.mkdir('-p', script);
+                this.after(function() { shell.rm('-rf', tempDir); });
+                if (platform.match(/(win32|win64)/)) {
+                    script = path.join(script, 'fail.bat');
+                    shell.cp(path.join(hooks, 'fail', 'fail.bat'), script);
+                } else {
+                    script = path.join(script, 'fail.sh');
+                    shell.cp(path.join(hooks, 'fail', 'fail.sh'), script);
+                }
+                fs.chmodSync(script, '754');
+                h.fire('before_build').then(function() {
+                    expect('the call').toBe('a failure');
+                }, function(err) {
+                    expect(err).toBeDefined();
+                }).fin(done);
+            });
+        });
+
+        describe('success', function() {
+            describe('project-level hooks', function() {
+                var hook = path.join(tempDir, '.cordova', 'hooks', 'before_build'),
+                    s;
+                beforeEach(function() {
+                    shell.mkdir('-p', hook);
+                    if (platform.match(/(win32|win64)/)) {
+                        shell.cp(path.join(hooks, 'test', '1.bat'), hook);
+                        shell.cp(path.join(hooks, 'test', '07.bat'), hook);
+                    } else {
+                        shell.cp(path.join(hooks, 'test', '1.sh'), hook);
+                        shell.cp(path.join(hooks, 'test', '07.sh'), hook);
+                    }
+                    fs.readdirSync(hook).forEach(function(script) {
+                        fs.chmodSync(path.join(hook, script), '754');
+                    });
+                    s = spyOn(child_process, 'exec').andCallFake(function(cmd, opts, cb) {
+                        if (!cb) cb = opts;
+                        cb(0, '', '');
+                    });
+                });
+                afterEach(function() {
+                    shell.rm('-rf', tempDir);
+                });
+                it('should execute all scripts in order and fire callback', function(done) {
+                    h.fire('before_build').then(function() {
+                        if (platform.match(/(win32|win64)/)) {
+                            expect(s.calls[0].args[0]).toMatch(/1.bat/);
+                            expect(s.calls[1].args[0]).toMatch(/07.bat/);
+                        } else {
+                            expect(s.calls[0].args[0]).toMatch(/1.sh/);
+                            expect(s.calls[1].args[0]).toMatch(/07.sh/);
+                        }
+                    }, function(err) {
+                        expect(err).not.toBeDefined();
+                    }).fin(done);
+                });
+                it('should pass the project root folder as parameter into the project-level hooks', function(done) {
+                    h.fire('before_build').then(function() {
+                        var param_str;
+                        if (platform.match(/(win32|win64)/)) {
+                            param_str = '1.bat "'+tempDir+'"';
+                        } else {
+                            param_str = '1.sh "'+tempDir+'"';
+                        }
+                        expect(s.calls[0].args[0].indexOf(param_str)).not.toEqual(-1);
+                    }, function(err) {
+                        expect(err).toBeUndefined();
+                    }).fin(done);
+                });
+                it('should skip any files starting with a dot on the scripts', function(done) {
+                    shell.cp(path.join(hooks, 'test', '07.bat'), path.join(hook, '.swp.file'));
+                    h.fire('before_build').then(function() {
+                        expect(s).not.toHaveBeenCalledWith(path.join(tempDir, '.cordova', 'hooks', 'before_build', '.swp.file') + ' "' + tempDir + '"', jasmine.any(Object), jasmine.any(Function));
+                    }, function(err) {
+                        expect(err).not.toBeDefined();
+                    }).fin(done);
+                });
+            });
+            describe('module-level hooks', function() {
+                var handler = jasmine.createSpy().andReturn(Q());
+                var test_event = 'before_build';
+                afterEach(function() {
+                    cordova.removeAllListeners(test_event);
+                    handler.reset();
+                });
+
+                it('should fire handlers using cordova.on', function(done) {
+                    cordova.on(test_event, handler);
+                    h.fire(test_event).then(function() {
+                        expect(handler).toHaveBeenCalled();
+                    }, function(err) {
+                        expect(err).not.toBeDefined();
+                    }).fin(done);
+                });
+                it('should pass the project root folder as parameter into the module-level handlers', function(done) {
+                    cordova.on(test_event, handler);
+                    h.fire(test_event).then(function() {
+                        expect(handler).toHaveBeenCalledWith({root:tempDir});
+                    }, function(err) {
+                        expect(err).not.toBeDefined();
+                    }).fin(done);
+                });
+                it('should be able to stop listening to events using cordova.off', function(done) {
+                    cordova.on(test_event, handler);
+                    cordova.off(test_event, handler);
+                    h.fire(test_event).then(function() {
+                        expect(handler).not.toHaveBeenCalled();
+                    }, function(err) {
+                        expect(err).toBeUndefined();
+                    }).fin(done);
+                });
+                it('should allow for hook to opt into asynchronous execution and block further hooks from firing using the done callback', function(done) {
+                    var h1_fired = false;
+                    var h1 = function() {
+                        h1_fired = true;
+                        expect(h2_fired).toBe(false);
+                        return Q();
+                    };
+                    var h2_fired = false;
+                    var h2 = function() {
+                        h2_fired = true;
+                        expect(h1_fired).toBe(true);
+                        return Q();
+                    };
+
+                    cordova.on(test_event, h1);
+                    cordova.on(test_event, h2);
+                    h.fire(test_event).then(function() {
+                        expect(h1_fired).toBe(true);
+                        expect(h2_fired).toBe(true);
+                        done();
+                    });
+                });
+                it('should pass data object that fire calls into async handlers', function(done) {
+                    var data = {
+                        "hi":"ho",
+                        "offtowork":"wego"
+                    };
+                    var async = function(opts) {
+                        data.root = tempDir;
+                        expect(opts).toEqual(data);
+                        return Q();
+                    };
+                    cordova.on(test_event, async);
+                    h.fire(test_event, data).then(done);
+                });
+                it('should pass data object that fire calls into sync handlers', function(done) {
+                    var data = {
+                        "hi":"ho",
+                        "offtowork":"wego"
+                    };
+                    var async = function(opts) {
+                        data.root = tempDir;
+                        expect(opts).toEqual(data);
+                    };
+                    cordova.on(test_event, async);
+                    h.fire(test_event, data).then(done);
+                });
+            });
+        });
+    });
+});
+
+}

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/c5ac48dc/spec/hooker.spec.js
----------------------------------------------------------------------
diff --git a/spec/hooker.spec.js b/spec/hooker.spec.js
deleted file mode 100644
index d4b073e..0000000
--- a/spec/hooker.spec.js
+++ /dev/null
@@ -1,264 +0,0 @@
- /**
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.
-**/
-
-var hooker = require('../src/hooker'),
-    util   = require('../src/util'),
-    shell  = require('shelljs'),
-    child_process = require('child_process'),
-    path   = require('path'),
-    fs     = require('fs'),
-    os     = require('os'),
-    Q      = require('q'),
-    tempDir= path.join(__dirname, '..', 'temp'),
-    hooks  = path.join(__dirname, 'fixtures', 'hooks'),
-    cordova= require('../cordova');
-
-var platform = os.platform();
-var cwd = process.cwd();
-
-// Note: because there are numerous issues with these tests on windows, the entire spec is skipped if we 
-// are in win32 ~jm
-
-if(platform != "win32" ) { 
-
-describe('hooker', function() {
-    it('should throw if provided directory is not a cordova project', function() {
-        spyOn(util, 'isCordova').andReturn(false);
-        expect(function() {
-            new hooker(tempDir);
-        }).toThrow('Not a Cordova project, can\'t use hooks.');
-    });
-    it('should not throw if provided directory is a cordova project', function() {
-        var root = '/some/root';
-        spyOn(util, 'isCordova').andReturn(root);
-        expect(function() {
-            var h = new hooker(tempDir);
-            expect(h.root).toEqual(root);
-        }).not.toThrow();
-    });
-
-    describe('global (static) fire method', function() {
-        it('should execute listeners serially', function(done) {
-            var timeout = 20;
-            var test_event = 'foo';
-            var h1_fired = false;
-            var h1 = function() {
-                h1_fired = true;
-                expect(h2_fired).toBe(false);
-                return Q();
-            };
-            var h2_fired = false;
-            var h2 = function() {
-                h2_fired = true;
-                expect(h1_fired).toBe(true);
-                return Q();
-            };
-
-            cordova.on(test_event, h1);
-            cordova.on(test_event, h2);
-            hooker.fire(test_event).then(function() {
-                expect(h1_fired).toBe(true);
-                expect(h2_fired).toBe(true);
-                done();
-            });
-        });
-    });
-    describe('project-level fire method', function() {
-        var h;
-        beforeEach(function() {
-            spyOn(util, 'isCordova').andReturn(tempDir);
-            h = new hooker(tempDir);
-        });
-
-        describe('failure', function() {
-            it('should not error if the hook is unrecognized', function() {
-                var p;
-                runs(function() {
-                    p = h.fire('CLEAN YOUR SHORTS GODDAMNIT LIKE A BIG BOY!');
-                });
-                waitsFor(function() { return !p.isPending() }, 'promise not resolved', 500);
-                runs(function() {
-                    expect(p.isFulfilled()).toBe(true);
-                });
-            });
-            it('should error if any script exits with non-zero code', function(done) {
-                var script = path.join(tempDir, '.cordova', 'hooks', 'before_build');
-                shell.mkdir('-p', script);
-                this.after(function() { shell.rm('-rf', tempDir); });
-                if (platform.match(/(win32|win64)/)) {
-                    script = path.join(script, 'fail.bat');
-                    shell.cp(path.join(hooks, 'fail', 'fail.bat'), script);
-                } else {
-                    script = path.join(script, 'fail.sh');
-                    shell.cp(path.join(hooks, 'fail', 'fail.sh'), script);
-                }
-                fs.chmodSync(script, '754');
-                h.fire('before_build').then(function() {
-                    expect('the call').toBe('a failure');
-                }, function(err) {
-                    expect(err).toBeDefined();
-                }).fin(done);
-            });
-        });
-
-        describe('success', function() {
-            describe('project-level hooks', function() {
-                var hook = path.join(tempDir, '.cordova', 'hooks', 'before_build'),
-                    s;
-                beforeEach(function() {
-                    shell.mkdir('-p', hook);
-                    if (platform.match(/(win32|win64)/)) {
-                        shell.cp(path.join(hooks, 'test', '1.bat'), hook);
-                        shell.cp(path.join(hooks, 'test', '07.bat'), hook);
-                    } else {
-                        shell.cp(path.join(hooks, 'test', '1.sh'), hook);
-                        shell.cp(path.join(hooks, 'test', '07.sh'), hook);
-                    }
-                    fs.readdirSync(hook).forEach(function(script) {
-                        fs.chmodSync(path.join(hook, script), '754');
-                    });
-                    s = spyOn(child_process, 'exec').andCallFake(function(cmd, opts, cb) {
-                        if (!cb) cb = opts;
-                        cb(0, '', '');
-                    });
-                });
-                afterEach(function() {
-                    shell.rm('-rf', tempDir);
-                });
-                it('should execute all scripts in order and fire callback', function(done) {
-                    h.fire('before_build').then(function() {
-                        if (platform.match(/(win32|win64)/)) {
-                            expect(s.calls[0].args[0]).toMatch(/1.bat/);
-                            expect(s.calls[1].args[0]).toMatch(/07.bat/);
-                        } else {
-                            expect(s.calls[0].args[0]).toMatch(/1.sh/);
-                            expect(s.calls[1].args[0]).toMatch(/07.sh/);
-                        }
-                    }, function(err) {
-                        expect(err).not.toBeDefined();
-                    }).fin(done);
-                });
-                it('should pass the project root folder as parameter into the project-level hooks', function(done) {
-                    h.fire('before_build').then(function() {
-                        var param_str;
-                        if (platform.match(/(win32|win64)/)) {
-                            param_str = '1.bat "'+tempDir+'"';
-                        } else {
-                            param_str = '1.sh "'+tempDir+'"';
-                        }
-                        expect(s.calls[0].args[0].indexOf(param_str)).not.toEqual(-1);
-                    }, function(err) {
-                        expect(err).toBeUndefined();
-                    }).fin(done);
-                });
-                it('should skip any files starting with a dot on the scripts', function(done) {
-                    shell.cp(path.join(hooks, 'test', '07.bat'), path.join(hook, '.swp.file'));
-                    h.fire('before_build').then(function() {
-                        expect(s).not.toHaveBeenCalledWith(path.join(tempDir, '.cordova', 'hooks', 'before_build', '.swp.file') + ' "' + tempDir + '"', jasmine.any(Object), jasmine.any(Function));
-                    }, function(err) {
-                        expect(err).not.toBeDefined();
-                    }).fin(done);
-                });
-            });
-            describe('module-level hooks', function() {
-                var handler = jasmine.createSpy().andReturn(Q());
-                var test_event = 'before_build';
-                afterEach(function() {
-                    cordova.removeAllListeners(test_event);
-                    handler.reset();
-                });
-
-                it('should fire handlers using cordova.on', function(done) {
-                    cordova.on(test_event, handler);
-                    h.fire(test_event).then(function() {
-                        expect(handler).toHaveBeenCalled();
-                    }, function(err) {
-                        expect(err).not.toBeDefined();
-                    }).fin(done);
-                });
-                it('should pass the project root folder as parameter into the module-level handlers', function(done) {
-                    cordova.on(test_event, handler);
-                    h.fire(test_event).then(function() {
-                        expect(handler).toHaveBeenCalledWith({root:tempDir});
-                    }, function(err) {
-                        expect(err).not.toBeDefined();
-                    }).fin(done);
-                });
-                it('should be able to stop listening to events using cordova.off', function(done) {
-                    cordova.on(test_event, handler);
-                    cordova.off(test_event, handler);
-                    h.fire(test_event).then(function() {
-                        expect(handler).not.toHaveBeenCalled();
-                    }, function(err) {
-                        expect(err).toBeUndefined();
-                    }).fin(done);
-                });
-                it('should allow for hook to opt into asynchronous execution and block further hooks from firing using the done callback', function(done) {
-                    var h1_fired = false;
-                    var h1 = function() {
-                        h1_fired = true;
-                        expect(h2_fired).toBe(false);
-                        return Q();
-                    };
-                    var h2_fired = false;
-                    var h2 = function() {
-                        h2_fired = true;
-                        expect(h1_fired).toBe(true);
-                        return Q();
-                    };
-
-                    cordova.on(test_event, h1);
-                    cordova.on(test_event, h2);
-                    h.fire(test_event).then(function() {
-                        expect(h1_fired).toBe(true);
-                        expect(h2_fired).toBe(true);
-                        done();
-                    });
-                });
-                it('should pass data object that fire calls into async handlers', function(done) {
-                    var data = {
-                        "hi":"ho",
-                        "offtowork":"wego"
-                    };
-                    var async = function(opts) {
-                        data.root = tempDir;
-                        expect(opts).toEqual(data);
-                        return Q();
-                    };
-                    cordova.on(test_event, async);
-                    h.fire(test_event, data).then(done);
-                });
-                it('should pass data object that fire calls into sync handlers', function(done) {
-                    var data = {
-                        "hi":"ho",
-                        "offtowork":"wego"
-                    };
-                    var async = function(opts) {
-                        data.root = tempDir;
-                        expect(opts).toEqual(data);
-                    };
-                    cordova.on(test_event, async);
-                    h.fire(test_event, data).then(done);
-                });
-            });
-        });
-    });
-});
-
-}