diff --git a/src/js/graph/treeCompare.js b/src/js/graph/treeCompare.js index bef1ee71..716704b1 100644 --- a/src/js/graph/treeCompare.js +++ b/src/js/graph/treeCompare.js @@ -74,6 +74,8 @@ TreeCompare.dispatchShallow = function(levelBlob, goalTreeString, treeToCompare) return TreeCompare.compareBranchesWithinTreesHashAgnostic( treeToCompare, goalTreeString, ['main'] ) && TreeCompare.evalAsserts(treeToCompare, levelBlob.goalAsserts); + case !!levelBlob.onlyEvaluateAsserts: + return TreeCompare.evalAsserts(treeToCompare, levelBlob.goalAsserts); default: return TreeCompare.compareAllBranchesWithinTreesAndHEAD( treeToCompare, goalTreeString @@ -233,11 +235,14 @@ TreeCompare.evalAssertsOnBranch = function(tree, branchName, asserts) { var branch = tree.branches[branchName]; var queue = [branch.target]; var data = {}; + var numCommits = 0; while (queue.length) { var commitRef = queue.pop(); data[this.getBaseRef(commitRef)] = this.getNumHashes(commitRef); queue = queue.concat(tree.commits[commitRef].parents); + numCommits++; } + data['__num_commits_upstream'] = numCommits; var result = true; asserts.forEach(function(assert) { @@ -245,7 +250,6 @@ TreeCompare.evalAssertsOnBranch = function(tree, branchName, asserts) { result = result && assert(data); } catch (err) { console.warn('error during assert', err); - console.log(err); result = false; } }); diff --git a/src/levels/mixed/describe.js b/src/levels/mixed/describe.js index afe77305..bf780175 100644 --- a/src/levels/mixed/describe.js +++ b/src/levels/mixed/describe.js @@ -2,6 +2,14 @@ exports.level = { "goalTreeString": "{\"branches\":{\"main\":{\"target\":\"C2\",\"id\":\"main\",\"remoteTrackingBranchID\":null},\"side\":{\"target\":\"C4\",\"id\":\"side\",\"remoteTrackingBranchID\":null},\"bugFix\":{\"target\":\"C7\",\"id\":\"bugFix\",\"remoteTrackingBranchID\":null}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C3\"],\"id\":\"C4\"},\"C5\":{\"parents\":[\"C3\"],\"id\":\"C5\"},\"C6\":{\"parents\":[\"C5\"],\"id\":\"C6\"},\"C7\":{\"parents\":[\"C6\"],\"id\":\"C7\"}},\"tags\":{\"v0\":{\"target\":\"C0\",\"id\":\"v0\",\"type\":\"tag\"},\"v1\":{\"target\":\"C3\",\"id\":\"v1\",\"type\":\"tag\"}},\"HEAD\":{\"target\":\"bugFix\",\"id\":\"HEAD\"}}", "solutionCommand": "git commit ", "startTree": "{\"branches\":{\"main\":{\"target\":\"C2\",\"id\":\"main\",\"remoteTrackingBranchID\":null},\"side\":{\"target\":\"C4\",\"id\":\"side\",\"remoteTrackingBranchID\":null},\"bugFix\":{\"target\":\"C6\",\"id\":\"bugFix\",\"remoteTrackingBranchID\":null}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C3\"],\"id\":\"C4\"},\"C5\":{\"parents\":[\"C3\"],\"id\":\"C5\"},\"C6\":{\"parents\":[\"C5\"],\"id\":\"C6\"}},\"tags\":{\"v0\":{\"target\":\"C0\",\"id\":\"v0\",\"type\":\"tag\"},\"v1\":{\"target\":\"C3\",\"id\":\"v1\",\"type\":\"tag\"}},\"HEAD\":{\"target\":\"bugFix\",\"id\":\"HEAD\"}}", + "onlyEvaluateAsserts": true, + "goalAsserts": { + "bugfix": [ + function (data) { + return data.__num_commits_upstream > 5; + }, + ] + }, "name": { "en_US": "Git Describe", "fr_FR": "Git describe",