WIP everything is horribly broken testa bunch before pushing but something in git is messed up if you do get tree quick who knows

This commit is contained in:
Peter Cottle 2013-07-07 23:29:28 -07:00
parent d2e418641f
commit 6c487cc053
3 changed files with 675 additions and 624 deletions

File diff suppressed because it is too large Load diff

51
spec/justRebase.spec.js Normal file
View file

@ -0,0 +1,51 @@
var HeadlessGit = require('../src/js/git/headless').HeadlessGit;
var TreeCompare = require('../src/js/git/treeCompare').TreeCompare;
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 compareAnswerExpect = function(headless, expectedJSON) {
var equal = compareAnswer(headless, expectedJSON);
if (!equal) {
var expectedTree = loadTree(expectedJSON);
var actualTree = headless.gitEngine.exportTree();
console.log('expected Tree', expectedTree);
console.log('actual Tree', actualTree);
console.log('~~~~~~~~~~~~~~~~~~~~~');
}
expect(equal).toBe(true);
};
var expectTree = function(command, expectedJSON) {
var headless = new HeadlessGit();
headless.sendCommand(command);
compareAnswerExpect(headless, expectedJSON);
};
var expectTreeAsync = function(command, expectedJSON) {
var headless = new HeadlessGit();
runs(function() {
headless.sendCommand(command);
});
waitsFor(function() {
return compareAnswer(headless, expectedJSON);
}, 'trees should be equal', 750);
};
describe('GitEngine', function() {
it('Rebases', function() {
expectTreeAsync(
'gc; git checkout -b side C1; gc; git rebase master',
'%7B%22branches%22%3A%7B%22master%22%3A%7B%22target%22%3A%22C2%22%2C%22id%22%3A%22master%22%7D%2C%22side%22%3A%7B%22target%22%3A%22C3%27%22%2C%22id%22%3A%22side%22%7D%7D%2C%22commits%22%3A%7B%22C0%22%3A%7B%22parents%22%3A%5B%5D%2C%22id%22%3A%22C0%22%2C%22rootCommit%22%3Atrue%7D%2C%22C1%22%3A%7B%22parents%22%3A%5B%22C0%22%5D%2C%22id%22%3A%22C1%22%7D%2C%22C2%22%3A%7B%22parents%22%3A%5B%22C1%22%5D%2C%22id%22%3A%22C2%22%7D%2C%22C3%22%3A%7B%22parents%22%3A%5B%22C1%22%5D%2C%22id%22%3A%22C3%22%7D%2C%22C3%27%22%3A%7B%22parents%22%3A%5B%22C2%22%5D%2C%22id%22%3A%22C3%27%22%7D%7D%2C%22HEAD%22%3A%7B%22target%22%3A%22side%22%2C%22id%22%3A%22HEAD%22%7D%7D'
);
});
});

View file

@ -11,6 +11,7 @@ var ModalTerminal = require('../views').ModalTerminal;
var ContainedBase = require('../views').ContainedBase;
var Visualization = require('../visuals/visualization').Visualization;
var HeadlessGit = require('../git/headless');
var GitDemonstrationView = ContainedBase.extend({
tagName: 'div',
@ -95,14 +96,12 @@ var GitDemonstrationView = ContainedBase.extend({
return;
}
// here we just split the command and push them through to the git engine
util.splitTextCommand(this.options.beforeCommand, function(commandStr) {
this.mainVis.gitEngine.dispatch(new Command({
rawStr: commandStr
}), Q.defer());
}, this);
// then harsh refresh
var whenHaveTree = Q.defer();
HeadlessGit.getTreeQuick(this.options.beforeCommand, whenHaveTree);
whenHaveTree.promise.then(_.bind(function(tree) {
this.mainVis.gitEngine.loadTree(tree);
this.mainVis.gitVisuals.refreshTreeHarsh();
}, this));
},
takeControl: function() {
@ -172,6 +171,7 @@ var GitDemonstrationView = ContainedBase.extend({
_.each(commands, function(command, index) {
chainPromise = chainPromise.then(_.bind(function() {
var myDefer = Q.defer();
console.log('dispatching', command);
this.mainVis.gitEngine.dispatch(command, myDefer);
return myDefer.promise;
}, this));