mirror of
https://github.com/pcottle/learnGitBranching.git
synced 2025-06-25 23:48:34 +02:00
58 lines
1.6 KiB
JavaScript
58 lines
1.6 KiB
JavaScript
var HeadlessGit = require('../src/js/git/headless').HeadlessGit;
|
|
var TreeCompare = require('../src/js/git/treeCompare').TreeCompare;
|
|
|
|
var _ = require('underscore');
|
|
|
|
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 = Date.now();
|
|
|
|
runs(function() {
|
|
headless.sendCommand(command);
|
|
});
|
|
waitsFor(function() {
|
|
var diff = (Date.now() - start);
|
|
if (diff > 700) {
|
|
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', 750);
|
|
};
|
|
|
|
var expectLevelSolved = function(levelBlob) {
|
|
var headless = new HeadlessGit();
|
|
if (levelBlob.startTree) {
|
|
headless.gitEngine.loadTreeFromString(levelBlob.startTree);
|
|
}
|
|
expectTreeAsync(headless, levelBlob);
|
|
};
|
|
|
|
describe('GitEngine Levels', function() {
|
|
it('solves levels', function() {
|
|
var sequences = require('../src/levels/index').levelSequences;
|
|
_.each(Object.keys(sequences), function(sequenceKey) {
|
|
var levels = sequences[sequenceKey];
|
|
_.each(levels, function(levelBlob) {
|
|
expectLevelSolved(levelBlob);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|