diff --git a/spec/base.js b/spec/base.js index e757be2b..99dbb722 100644 --- a/spec/base.js +++ b/spec/base.js @@ -1,10 +1,85 @@ +var TreeCompare = require('../src/js/git/treeCompare').TreeCompare; +var HeadlessGit = require('../src/js/git/headless').HeadlessGit; var loadTree = function(json) { return JSON.parse(unescape(json)); }; +var compareLevelTree = function(headless, levelBlob) { + var actualTree = headless.gitEngine.exportTree(); + return TreeCompare.dispatchFromLevel(levelBlob, actualTree); +}; + +var compareAnswer = function(headless, expectedJSON) { + var expectedTree = loadTree(expectedJSON); + var actualTree = headless.gitEngine.exportTree(); + + return TreeCompare.compareTrees(expectedTree, actualTree); +}; + +var expectLevelAsync = function(headless, levelBlob) { + var command = levelBlob.solutionCommand; + if (command.indexOf('git rebase -i') !== -1) { + // dont do interactive rebase levels + return; + } + + var start; + runs(function() { + start = Date.now(); + headless.sendCommand(command); + }); + waitsFor(function() { + var diff = (Date.now() - start); + if (diff > TIME - 10) { + console.log('not going to match', command); + } + var result = compareLevelTree(headless, levelBlob); + if (result) { + console.log('solved level ' + levelBlob.name.en_US); + } + return result; + }, 'trees should be equal', TIME); +}; + +var expectTreeAsync = function(command, expectedJSON) { + var headless = new HeadlessGit(); + var start = Date.now(); + var haveReported = false; + + runs(function() { + headless.sendCommand(command); + }); + waitsFor(function() { + var diff = (Date.now() - start); + if (diff > TIME - 50 && !haveReported) { + haveReported = true; + console.log('not going to match', command); + console.log('expected\n>>>>>>>>\n', loadTree(expectedJSON)); + console.log('\n<<<<<<<<<<<\nactual', headless.gitEngine.exportTree()); + } + return compareAnswer(headless, expectedJSON); + }, 'trees should be equal', 100); +}; + +var expectLevelSolved = function(levelBlob) { + var headless = new HeadlessGit(); + if (levelBlob.startTree) { + headless.gitEngine.loadTreeFromString(levelBlob.startTree); + } + expectLevelAsync(headless, levelBlob); +}; + var TIME = 150; // useful for throwing garbage and then expecting one commit -var oneCommit = '{"branches":{"master":{"target":"C2","id":"master"}},"commits":{"C0":{"parents":[],"id":"C0","rootCommit":true},"C1":{"parents":["C0"],"id":"C1"},"C2":{"parents":["C1"],"id":"C2"}},"HEAD":{"target":"master","id":"HEAD"}}'; +var ONE_COMMIT_TREE = '{"branches":{"master":{"target":"C2","id":"master"}},"commits":{"C0":{"parents":[],"id":"C0","rootCommit":true},"C1":{"parents":["C0"],"id":"C1"},"C2":{"parents":["C1"],"id":"C2"}},"HEAD":{"target":"master","id":"HEAD"}}'; +module.exports = { + loadTree: loadTree, + compareAnswer: compareAnswer, + TIME: TIME, + expectTreeAsync: expectTreeAsync, + expectLevelSolved: expectLevelSolved, + ONE_COMMIT_TREE: ONE_COMMIT_TREE +}; diff --git a/spec/git.spec.js b/spec/git.spec.js index b618d023..89e5ee52 100644 --- a/spec/git.spec.js +++ b/spec/git.spec.js @@ -1,40 +1,5 @@ -var HeadlessGit = require('../src/js/git/headless').HeadlessGit; -var TreeCompare = require('../src/js/git/treeCompare').TreeCompare; - -var TIME = 150; -// useful for throwing garbage and then expecting one commit -var oneCommit = '{"branches":{"master":{"target":"C2","id":"master"}},"commits":{"C0":{"parents":[],"id":"C0","rootCommit":true},"C1":{"parents":["C0"],"id":"C1"},"C2":{"parents":["C1"],"id":"C2"}},"HEAD":{"target":"master","id":"HEAD"}}'; - -var loadTree = function(json) { - return JSON.parse(unescape(json)); -}; - -var compareAnswer = function(headless, expectedJSON) { - var expectedTree = loadTree(expectedJSON); - var actualTree = headless.gitEngine.exportTree(); - - return TreeCompare.compareTrees(expectedTree, actualTree); -}; - -var expectTreeAsync = function(command, expectedJSON) { - var headless = new HeadlessGit(); - var start = Date.now(); - var haveReported = false; - - runs(function() { - headless.sendCommand(command); - }); - waitsFor(function() { - var diff = (Date.now() - start); - if (diff > TIME - 50 && !haveReported) { - haveReported = true; - console.log('not going to match', command); - console.log('expected\n>>>>>>>>\n', loadTree(expectedJSON)); - console.log('\n<<<<<<<<<<<\nactual', headless.gitEngine.exportTree()); - } - return compareAnswer(headless, expectedJSON); - }, 'trees should be equal', 100); -}; +var base = require('./base'); +var expectTreeAsync = base.expectTreeAsync; describe('GitEngine', function() { it('Commits', function() { @@ -54,7 +19,7 @@ describe('GitEngine', function() { it('throws with bad arg options', function() { expectTreeAsync( 'git commit foo; git commit -am -m; git commit -am -a; git commit -am "hi" "ho"; git commit', - oneCommit + base.ONE_COMMIT_TREE ); }); @@ -68,7 +33,7 @@ describe('GitEngine', function() { it('does add', function() { expectTreeAsync( 'git add; git commit', - oneCommit + base.ONE_COMMIT_TREE ); }); diff --git a/spec/levels.spec.js b/spec/levels.spec.js index 8c36b9bb..6661ee8b 100644 --- a/spec/levels.spec.js +++ b/spec/levels.spec.js @@ -1,50 +1,5 @@ -var HeadlessGit = require('../src/js/git/headless').HeadlessGit; -var TreeCompare = require('../src/js/git/treeCompare').TreeCompare; - var _ = require('underscore'); -var TIME = 150; - -var loadTree = function(json) { - return JSON.parse(unescape(json)); -}; - -var compareLevelTree = function(headless, levelBlob) { - var actualTree = headless.gitEngine.exportTree(); - return TreeCompare.dispatchFromLevel(levelBlob, actualTree); -}; - -var expectTreeAsync = function(headless, levelBlob) { - var command = levelBlob.solutionCommand; - if (command.indexOf('git rebase -i') !== -1) { - // dont do interactive rebase levels - return; - } - - var start; - runs(function() { - start = Date.now(); - headless.sendCommand(command); - }); - waitsFor(function() { - var diff = (Date.now() - start); - if (diff > TIME - 10) { - console.log('not going to match', command); - } - var result = compareLevelTree(headless, levelBlob); - if (result) { - console.log('solved level ' + levelBlob.name.en_US); - } - return result; - }, 'trees should be equal', TIME); -}; - -var expectLevelSolved = function(levelBlob) { - var headless = new HeadlessGit(); - if (levelBlob.startTree) { - headless.gitEngine.loadTreeFromString(levelBlob.startTree); - } - expectTreeAsync(headless, levelBlob); -}; +var base = require('./base'); describe('GitEngine Levels', function() { it('solves levels', function() { @@ -52,7 +7,7 @@ describe('GitEngine Levels', function() { _.each(Object.keys(sequences), function(sequenceKey) { var levels = sequences[sequenceKey]; _.each(levels, function(levelBlob) { - expectLevelSolved(levelBlob); + base.expectLevelSolved(levelBlob); }); }); }); diff --git a/spec/treeCompare.spec.js b/spec/treeCompare.spec.js index 9fa03173..b4395130 100644 --- a/spec/treeCompare.spec.js +++ b/spec/treeCompare.spec.js @@ -1,10 +1,6 @@ var TreeCompare = require('../src/js/git/treeCompare').TreeCompare; var _ = require('underscore'); -var loadTree = function(json) { - return JSON.parse(unescape(json)); -}; - var loadTree = function(treeString) { return TreeCompare.convertTreeSafe(treeString); }; diff --git a/src/js/app/index.js b/src/js/app/index.js index 5e458d0a..ea4c61dd 100644 --- a/src/js/app/index.js +++ b/src/js/app/index.js @@ -121,7 +121,6 @@ var initRootEvents = function(eventBaton) { var initDemo = function(sandbox) { var params = util.parseQueryString(window.location.href); - console.log(params); // being the smart programmer I am (not), I dont include a true value on demo, so // I have to check if the key exists here diff --git a/src/js/git/commands.js b/src/js/git/commands.js index 66e33418..048f2e89 100644 --- a/src/js/git/commands.js +++ b/src/js/git/commands.js @@ -425,7 +425,6 @@ var commandConfig = { return; } - console.log(generalArgs); command.validateArgBounds(generalArgs, 1, 1); engine.checkout(engine.crappyUnescape(generalArgs[0]));