Modified: trunk/Websites/perf.webkit.org/public/v3/commit-set-range-bisector.js (233454 => 233455)
--- trunk/Websites/perf.webkit.org/public/v3/commit-set-range-bisector.js 2018-07-03 01:07:19 UTC (rev 233454)
+++ trunk/Websites/perf.webkit.org/public/v3/commit-set-range-bisector.js 2018-07-03 03:55:21 UTC (rev 233455)
@@ -29,10 +29,10 @@
}
const [startCommit, endCommit] = CommitLog.orderTwoCommits(firstCommit, secondCommit);
- const commits = startCommit === endCommit ? [startCommit] : await CommitLog.fetchBetweenRevisions(repository, startCommit.revision(), endCommit.revision());
+ const commitsExcludingStartCommit = startCommit === endCommit ? [] : await CommitLog.fetchBetweenRevisions(repository, startCommit.revision(), endCommit.revision());
if (startCommit.hasCommitTime()) {
- allCommitsWithCommitTime.push(startCommit, ...commits);
+ allCommitsWithCommitTime.push(startCommit, ...commitsExcludingStartCommit);
commitRangeByRepository.set(repository, (commit) =>
commit.hasCommitTime() && startCommit.time() <= commit.time() && commit.time() <= endCommit.time());
repositoriesWithCommitTime.add(repository);
@@ -39,7 +39,7 @@
} else {
const indexByCommit = new Map;
indexByCommit.set(startCommit, 0);
- commits.forEach((commit, index) => indexByCommit.set(commit, index + 1));
+ commitsExcludingStartCommit.forEach((commit, index) => indexByCommit.set(commit, index + 1));
indexForAllTimelessCommitsWithOrderByRepository.set(repository, indexByCommit);
commitRangeByRepository.set(repository, (commit) =>
commit.hasCommitOrder() && startCommit.order() <= commit.order() && commit.order() <= endCommit.order());
Modified: trunk/Websites/perf.webkit.org/unit-tests/commit-set-range-bisector-tests.js (233454 => 233455)
--- trunk/Websites/perf.webkit.org/unit-tests/commit-set-range-bisector-tests.js 2018-07-03 01:07:19 UTC (rev 233454)
+++ trunk/Websites/perf.webkit.org/unit-tests/commit-set-range-bisector-tests.js 2018-07-03 03:55:21 UTC (rev 233455)
@@ -315,6 +315,36 @@
];
}
+ function commitSetsWithTime()
+ {
+ return [
+ CommitSet.ensureSingleton(28, {
+ revisionItems: [
+ { commit: makeCommit(1, MockModels.webkit, 'webkit-commit-1', 10), requiresBuild: false },
+ { commit: makeCommit(201, MockModels.osx, 'osx-commit-201', 8), requiresBuild: false }
+ ],
+ customRoots: []}),
+ CommitSet.ensureSingleton(29, {
+ revisionItems: [
+ { commit: makeCommit(1, MockModels.webkit, 'webkit-commit-1', 10), requiresBuild: false },
+ { commit: makeCommit(203, MockModels.osx, 'osx-commit-203', 11), requiresBuild: false }
+ ],
+ customRoots: []}),
+ CommitSet.ensureSingleton(30, {
+ revisionItems: [
+ { commit: makeCommit(1, MockModels.webkit, 'webkit-commit-1', 10), requiresBuild: false },
+ { commit: makeCommit(204, MockModels.osx, 'osx-commit-204', 12), requiresBuild: false }
+ ],
+ customRoots: []}),
+ CommitSet.ensureSingleton(31, {
+ revisionItems: [
+ { commit: makeCommit(1, MockModels.webkit, 'webkit-commit-1', 10), requiresBuild: false },
+ { commit: makeCommit(205, MockModels.osx, 'osx-commit-205', 13), requiresBuild: false }
+ ],
+ customRoots: []}),
+ ];
+ }
+
function createRoot()
{
return UploadedFile.ensureSingleton(456, {'createdAt': new Date('2017-05-01T21:03:27Z'), 'filename': 'root.dat', 'extension': '.dat', 'author': 'some user',
@@ -987,6 +1017,51 @@
assert.equal(await promise, allCommitSets[3]);
});
+
+ it('should not double count a commit if start and end commits are the same', async () => {
+ const allCommitSets = commitSetsWithTime();
+ const startCommitSet = allCommitSets[0];
+ const endCommitSet = allCommitSets[allCommitSets.length - 1];
+ const promise = CommitSetRangeBisector.commitSetClosestToMiddleOfAllCommits([startCommitSet, endCommitSet], allCommitSets);
+ assert.equal(requests.length, 1);
+ const osxFetchRequest = requests[0];
+ assert.equal(osxFetchRequest.url, '/api/commits/9/?precedingRevision=osx-commit-201&lastRevision=osx-commit-205');
+ const osxId = MockModels.osx.id();
+ osxFetchRequest.resolve({
+ 'commits': [
+ {
+ repository: osxId,
+ id: 202,
+ revision: 'osx-commit-202',
+ ownsCommits: false,
+ time: 9
+ },
+ {
+ repository: osxId,
+ id: 203,
+ revision: 'osx-commit-203',
+ ownsCommits: false,
+ time: 11
+ },
+ {
+ repository: osxId,
+ id: 204,
+ revision: 'osx-commit-204',
+ ownsCommits: false,
+ time: 12
+ },
+ {
+ repository: osxId,
+ id: 205,
+ revision: 'osx-commit-205',
+ ownsCommits: false,
+ time: 13
+ }
+ ]
+ });
+
+ assert.equal(await promise, allCommitSets[1]);
+ });
});
describe('_orderCommitSetsByTimeAndOrderThenDeduplicate', () => {