2011-12-13 23:26:58 +00:00
< div > Tests for some of the easily unittestable parts of code-review.js. You should see a series of "PASS" lines.< / div >
2011-02-02 00:00:36 +00:00
< div > FIXME: Run these as part of the layout test suite?< / div >
2011-12-13 23:26:58 +00:00
< script >
CODE_REVIEW_UNITTEST = true;
window.onerror = function(errorMsg, url, lineNumber) {
log('FAIL: Received an error at line ' + lineNumber);
return false;
}
< / script >
2018-05-22 16:34:23 +00:00
< script src = "https://webkit.org/ajax/libs/jquery/jquery-1.4.2.min.js" > < / script >
2011-02-02 00:00:36 +00:00
< script src = "code-review.js" > < / script >
< pre id = "output" > < / pre >
2011-12-13 23:26:58 +00:00
< div id = "diff-content" > < / div >
2011-02-02 00:00:36 +00:00
< script >
function inherits(childConstructor, parentConstructor) {
function tempConstructor() {};
tempConstructor.prototype = parentConstructor.prototype;
childConstructor.prototype = new tempConstructor();
childConstructor.prototype.constructor = childConstructor;
}
function log(msg) {
2012-12-04 22:47:59 +00:00
document.getElementById('output').textContent += msg + '\n\n';
2011-02-02 00:00:36 +00:00
}
2011-12-13 23:26:58 +00:00
function ASSERT(msg, assertion) {
if (assertion)
log('PASS');
else
log('FAIL: ' + msg);
}
2011-02-02 00:00:36 +00:00
function ASSERT_EQUAL(actual, expected) {
if (actual == expected)
2011-12-13 23:26:58 +00:00
log('PASS');
2011-02-02 00:00:36 +00:00
else
2011-12-13 23:26:58 +00:00
log('FAIL:\ngot:\n' + actual + '\nexpected:\n' + expected + '');
2011-02-02 00:00:36 +00:00
}
2011-12-14 00:07:22 +00:00
function testTracLinks() {
var links = tracLinks('foo/bar/baz.cpp', '');
2012-12-04 22:47:59 +00:00
ASSERT_EQUAL($('< div > ').append(links).html(),
'< a target = "_blank" href = "http://trac.webkit.org/log/trunk/foo/bar/baz.h" > header< / a > ' +
'< a target = "_blank" href = "http://trac.webkit.org/browser/trunk/foo/bar/baz.cpp?annotate=blame" > annotate< / a > ' +
'< a target = "_blank" href = "http://trac.webkit.org/log/trunk/foo/bar/baz.cpp" > revision log< / a > ');
2011-12-14 00:07:22 +00:00
var links = tracLinks('foo/bar.cpp/qux.mm', '');
2012-12-04 22:47:59 +00:00
ASSERT_EQUAL($('< div > ').append(links).html(),
'< a target = "_blank" href = "http://trac.webkit.org/log/trunk/foo/bar.cpp/qux.h" > header< / a > ' +
'< a target = "_blank" href = "http://trac.webkit.org/browser/trunk/foo/bar.cpp/qux.mm?annotate=blame" > annotate< / a > ' +
2012-12-05 00:06:02 +00:00
'< a target = "_blank" href = "http://trac.webkit.org/log/trunk/foo/bar.cpp/qux.mm" > revision log< / a > ');
2012-12-04 22:47:59 +00:00
var links = tracLinks('foo/bar.h', '');
ASSERT_EQUAL($('< div > ').append(links).html(),
'< a target = "_blank" href = "http://trac.webkit.org/browser/trunk/foo/bar.h?annotate=blame" > annotate< / a > ' +
'< a target = "_blank" href = "http://trac.webkit.org/log/trunk/foo/bar.h" > revision log< / a > ');
var links = tracLinks('foo/bar.gypi', '');
ASSERT_EQUAL($('< div > ').append(links).html(),
'< a target = "_blank" href = "http://trac.webkit.org/browser/trunk/foo/bar.gypi?annotate=blame" > annotate< / a > ' +
'< a target = "_blank" href = "http://trac.webkit.org/log/trunk/foo/bar.gypi" > revision log< / a > ');
var links = tracLinks('foo/ChangeLog', '');
ASSERT_EQUAL($('< div > ').append(links).html(),
'< a target = "_blank" href = "http://trac.webkit.org/browser/trunk/foo/ChangeLog?annotate=blame" > annotate< / a > ' +
'< a target = "_blank" href = "http://trac.webkit.org/log/trunk/foo/ChangeLog" > revision log< / a > ');
2011-02-02 00:00:36 +00:00
}
2011-12-14 00:07:22 +00:00
function testDraftCommentSaver() {
function MockLocalStorage() {
this.localStorageStore = {};
this.log = [];
this.getItem = function(key) {
this.log.push('getItem:' + key);
return this.localStorageStore[key];
};
this.setItem = function(key, value) {
// For testing sake, consider having more than 2 items to exceed the storage quota.
if (Object.keys(this.localStorageStore).length > 2) {
this.log.push('QuotaExceeded on setItem:' + key + ',' + value);
throw "QuotaExceeded";
}
this.log.push('setItem:' + key + ',' + value);
this.localStorageStore[key] = value;
};
this.removeItem = function(key) {
this.log.push('removeItem:' + key);
delete this.localStorageStore[key];
};
this.log_string = function() {
return this.log.join('\n');
};
this.key = function(i) {
return Object.keys(this.localStorageStore)[i];
};
this.__defineGetter__('length', function() {
return Object.keys(this.localStorageStore).length;
});
}
function MockDraftCommentSaver(attachment_id, opt_localStorage) {
DraftCommentSaver.call(this, attachment_id, opt_localStorage);
}
inherits(MockDraftCommentSaver, DraftCommentSaver)
MockDraftCommentSaver.prototype._json = function() {
return "{MOCK JSON}";
}
MockDraftCommentSaver.prototype._should_remove_comments = function(message) {
return false;
}
// Basic setItem.
var ls = new MockLocalStorage();
new MockDraftCommentSaver('1234', ls).save();
ASSERT_EQUAL(ls.log_string(), 'setItem:draft-comments-for-attachment-1234,{MOCK JSON}');
// Exceed quota, but succeed after erasing old reviews.
var ls = new MockLocalStorage();
ls.localStorageStore = {
'draft-comments-for-attachment-1': '{"born-on": 100, "comments":[]}',
'draft-comments-for-attachment-2': '{"born-on": 100, "comments":[]}',
'draft-comments-for-attachment-3': '{"born-on": 100, "comments":[]}',
'draft-comments-for-attachment-4': '{"born-on": ' + (Date.now() - 100) + ', "comments":[]}'
};
new MockDraftCommentSaver('1234', ls).save();
ASSERT_EQUAL(ls.log_string(), 'QuotaExceeded on setItem:draft-comments-for-attachment-1234,{MOCK JSON}\ngetItem:draft-comments-for-attachment-1\ngetItem:draft-comments-for-attachment-2\ngetItem:draft-comments-for-attachment-3\ngetItem:draft-comments-for-attachment-4\nremoveItem:draft-comments-for-attachment-1\nremoveItem:draft-comments-for-attachment-2\nremoveItem:draft-comments-for-attachment-3\nsetItem:draft-comments-for-attachment-1234,{MOCK JSON}');
// Exceed quota after erasing old reviews and fail after prompt.
var ls = new MockLocalStorage();
ls.localStorageStore = {
'draft-comments-for-attachment-1': '{"born-on": 100, "comments":[]}',
'draft-comments-for-attachment-2': '{"born-on": ' + (Date.now() - 100) + ', "comments":[]}',
'draft-comments-for-attachment-3': '{"born-on": ' + (Date.now() - 100) + ', "comments":[]}',
'draft-comments-for-attachment-4': '{"born-on": ' + (Date.now() - 100) + ', "comments":[]}'
};
var mockDraftSaver = new MockDraftCommentSaver('1234', ls);
mockDraftSaver.save();
// Second save to ensure that we stop trying to save when we fail the prompt.
mockDraftSaver.save();
ASSERT_EQUAL(ls.log_string(), 'QuotaExceeded on setItem:draft-comments-for-attachment-1234,{MOCK JSON}\ngetItem:draft-comments-for-attachment-1\ngetItem:draft-comments-for-attachment-2\ngetItem:draft-comments-for-attachment-3\ngetItem:draft-comments-for-attachment-4\nremoveItem:draft-comments-for-attachment-1\nQuotaExceeded on setItem:draft-comments-for-attachment-1234,{MOCK JSON}');
// Exceed quota after erasing old reviews, but succeed after prompt.
var ls = new MockLocalStorage();
ls.localStorageStore = {
'draft-comments-for-attachment-1': '{"born-on": 100, "comments":[]}',
'draft-comments-for-attachment-2': '{"born-on": ' + (Date.now() - 100) + ', "comments":[]}',
'draft-comments-for-attachment-3': '{"born-on": ' + (Date.now() - 100) + ', "comments":[]}',
'draft-comments-for-attachment-4': '{"born-on": ' + (Date.now() - 100) + ', "comments":[]}'
};
var mockDraftSaver = new MockDraftCommentSaver('1234', ls);
mockDraftSaver._should_remove_comments = function() { return true; };
mockDraftSaver.save();
ASSERT_EQUAL(ls.log_string(), 'QuotaExceeded on setItem:draft-comments-for-attachment-1234,{MOCK JSON}\ngetItem:draft-comments-for-attachment-1\ngetItem:draft-comments-for-attachment-2\ngetItem:draft-comments-for-attachment-3\ngetItem:draft-comments-for-attachment-4\nremoveItem:draft-comments-for-attachment-1\nQuotaExceeded on setItem:draft-comments-for-attachment-1234,{MOCK JSON}\nremoveItem:draft-comments-for-attachment-2\nremoveItem:draft-comments-for-attachment-3\nremoveItem:draft-comments-for-attachment-4\nsetItem:draft-comments-for-attachment-1234,{MOCK JSON}');
// Always exceeds quota, even after erasing all review comments. There should be no setItem calls.
var ls = new MockLocalStorage();
ls.setItem = function() {
this.log.push('QuotaExceeded on setItem:' + key + ',' + value);
throw "QuotaExceeded";
}
ls.localStorageStore = {
'draft-comments-for-attachment-1': '{"born-on": 100, "comments":[]}',
'draft-comments-for-attachment-2': '{"born-on": ' + (Date.now() - 100) + ', "comments":[]}',
'draft-comments-for-attachment-3': '{"born-on": ' + (Date.now() - 100) + ', "comments":[]}',
'draft-comments-for-attachment-4': '{"born-on": ' + (Date.now() - 100) + ', "comments":[]}'
};
var mockDraftSaver = new MockDraftCommentSaver('1234', ls);
mockDraftSaver._should_remove_comments = function() { return true; };
mockDraftSaver.save();
// Second save to ensure that we stop trying to save when we fail the prompt.
mockDraftSaver.save();
ASSERT_EQUAL(ls.log_string(), 'getItem:draft-comments-for-attachment-1\ngetItem:draft-comments-for-attachment-2\ngetItem:draft-comments-for-attachment-3\ngetItem:draft-comments-for-attachment-4\nremoveItem:draft-comments-for-attachment-1\nremoveItem:draft-comments-for-attachment-2\nremoveItem:draft-comments-for-attachment-3\nremoveItem:draft-comments-for-attachment-4');
var ls = new MockLocalStorage();
ls.localStorageStore = {
'draft-comments-for-attachment-1': '{"born-on": 100, "comments":[]}',
'draft-comments-for-attachment-2': '{"born-on": 100, "comments":[{"start_line_id": 1, "end_line_id": 2, "contents": "DUMMY CONTENTS"}, {"start_line_id": 3, "end_line_id": 4, "contents": "DUMMY CONTENTS 2"}]}'
};
var comments = new MockDraftCommentSaver('2', ls).saved_comments().comments;
ASSERT_EQUAL(comments.length, 2);
ASSERT_EQUAL(ls.log_string(), 'getItem:draft-comments-for-attachment-2');
var ls = new MockLocalStorage();
ls.localStorageStore = {
'draft-comments-for-attachment-1': 'corrupt comments'
};
var comments = new MockDraftCommentSaver('1', ls).saved_comments().comments;
ASSERT_EQUAL(ls.log_string(), 'getItem:draft-comments-for-attachment-1\nremoveItem:draft-comments-for-attachment-1');
var ls = new MockLocalStorage();
ls.localStorageStore = {
'draft-comments-for-attachment-1': '["also corrupt comments"]'
};
var comments = new MockDraftCommentSaver('1', ls).saved_comments().comments;
ASSERT_EQUAL(ls.log_string(), 'getItem:draft-comments-for-attachment-1\nremoveItem:draft-comments-for-attachment-1');
}
2011-02-02 00:00:36 +00:00
2011-12-13 23:26:58 +00:00
function stripBornOn(json) {
return json.replace(/\"born\-on\"\:\d+,/, "");
}
function strippedSavedComments() {
return stripBornOn(localStorage[g_draftCommentSaver.localStorageKey()]);
}
function syncSlideUp(type, handler) {
handler.call(this);
}
2015-12-10 03:42:46 +00:00
function testReadDiscardedCommentWithPreviousComment() {
2011-12-13 23:26:58 +00:00
document.getElementById('diff-content').innerHTML =
'< div class = "FileDiff" > ' +
'< h1 > < a href = "http://trac.webkit.org/browser/trunk/Source/WebCore/ChangeLog" > Source/WebCore/ChangeLog< / a > < / h1 > ' +
'< div class = "DiffSection" > ' +
'< div class = "DiffBlock" > ' +
'< div class = "DiffBlockPart add" > ' +
'< div class = "Line LineContainer add" > ' +
'< span class = "from lineNumber" > < / span > < span class = "to lineNumber" > 1< / span > < span class = "text" > first diff block first line< / span > ' +
'< / div > ' +
'< div class = "Line LineContainer add" > ' +
'< span class = "from lineNumber" > < / span > < span class = "to lineNumber" > 2< / span > < span class = "text" > < / span > ' +
'< / div > ' +
'< / div > ' +
'< div class = "clear_float" > < / div > ' +
'< / div > ' +
'< div class = "DiffBlock" > ' +
'< div class = "DiffBlockPart shared" > ' +
'< div class = "Line LineContainer" > ' +
'< span class = "from lineNumber" > 1< / span > < span class = "to lineNumber" > 12< / span > < span class = "text" > second diff block first line< / span > ' +
'< / div > ' +
'< / div > < div class = "clear_float" > ' +
'< / div > ' +
'< / div > ' +
'< / div > ' +
'< / div > ';
eraseDraftComments();
crawlDiff();
2012-12-04 21:11:01 +00:00
var line = document.getElementById('line0');
2011-12-13 23:26:58 +00:00
var author = "ojan@chromium.org";
var comment_text = "This change sux.";
addPreviousComment(line, author, comment_text);
var previous_comment = document.querySelector('.previousComment');
ASSERT("Line with only a previous comment should not have 'data-has-comment' attribute.", !line.getAttribute('data-has-comment'));
var new_comment = addCommentField(previous_comment);
new_comment.find('textarea').val("dummy content");
var frozen_comment = acceptComment(new_comment);
ASSERT_EQUAL(document.querySelectorAll('.comment').length, 1);
ASSERT_EQUAL(strippedSavedComments(), '{"comments":[{"start_line_id":"line0","end_line_id":"line0","contents":"dummy content"}],"overall-comments":""}');
unfreezeComment(frozen_comment);
// This is a hack to make slideUp synchronous so that we can keep this test from needing to be async.
jQuery.fn.slideUp = syncSlideUp;
discardComment(new_comment);
ASSERT('There should be no draft comments.', !document.querySelector('.comment'));
ASSERT_EQUAL(strippedSavedComments(), '{"comments":[],"overall-comments":""}');
ASSERT("Line with only a previous comment should not have 'data-has-comment' attribute.", !line.getAttribute('data-has-comment'));
new_comment = addCommentField(previous_comment);
new_comment.find('textarea').val("dummy content");
acceptComment(new_comment);
ASSERT_EQUAL(document.querySelectorAll('.comment').length, 1);
ASSERT_EQUAL(strippedSavedComments(), '{"comments":[{"start_line_id":"line0","end_line_id":"line0","contents":"dummy content"}],"overall-comments":""}');
document.getElementById('diff-content').innerHTML = '';
}
2011-12-14 00:07:22 +00:00
2012-12-04 21:11:01 +00:00
function testSideBySideDiffWithPreviousCommentsOnSharedLine() {
document.getElementById('diff-content').innerHTML =
'< div class = "FileDiff" > ' +
'< h1 > < a href = "http://trac.webkit.org/browser/trunk/Source/WebCore/ChangeLog" > Source/WebCore/ChangeLog< / a > < / h1 > ' +
'< div class = "DiffSection" > ' +
'< div class = "DiffBlock" > ' +
'< div class = "DiffBlockPart shared" > ' +
'< div class = "Line LineContainer" > ' +
'< span class = "from lineNumber" > 336< / span > < span class = "to lineNumber" > 338< / span > < span class = "text" > layoutFlexItems(*m_orderIterator, lineContexts);< / span > ' +
'< / div > ' +
'< div class = "Line LineContainer" > ' +
'< span class = "from lineNumber" > 337< / span > < span class = "to lineNumber" > 339< / span > < span class = "text" > < / span > ' +
'< / div > ' +
'< div class = "Line LineContainer" > ' +
'< span class = "from lineNumber" > 338< / span > < span class = "to lineNumber" > 340< / span > < span class = "text" > LayoutUnit oldClientAfterEdge = clientLogicalBottom();< / span > ' +
'< / div > ' +
'< / div > < div class = "clear_float" > ' +
'< / div > ' +
'< / div > ' +
'< / div > ';
eraseDraftComments();
crawlDiff();
convertAllFileDiffs('sidebyside', $('.FileDiff'));
displayPreviousComments([{
author: 'ojan@chromium.org',
file_name: 'Source/WebCore/ChangeLog',
line_number: 338,
comment_text: 'This change sux.'
}]);
var previous_comment = document.querySelector('.previousComment');
ASSERT_EQUAL(previous_comment.getAttribute('data-comment-for'), 'line0');
var new_comment = addCommentField(previous_comment);
ASSERT("New comment should exist and contain a textarea.", new_comment.find('textarea'));
document.getElementById('diff-content').innerHTML = '';
}
2012-12-05 23:39:09 +00:00
function testSanitizeFragmentForCopy() {
var fragment = document.createElement('div');
fragment.innerHTML = '< div class = "FileDiff" > ' +
'< h1 > < a href = "http://trac.webkit.org/browser/trunk/Source/WebCore/ChangeLog" > Source/WebCore/ChangeLog< / a > < / h1 > ' +
'< div class = "FileDiffLinkContainer LinkContainer" style = "opacity: 0;" > < a href = "javascript:" class = "unify-link cremed" style = "display: inline;" > unified< / a > < / div > ' +
'< div class = "DiffSection" > ' +
'< div class = "DiffBlock" > ' +
'< div class = "DiffBlockPart shared" > ' +
'< div class = "Line LineContainer" > ' +
'< span class = "from lineNumber" > 336< / span > < span class = "to lineNumber" > 338< / span > < span class = "text" > layoutFlexItems(*m_orderIterator, lineContexts);< / span > ' +
'< / div > ' +
'< div class = "Line LineContainer" > ' +
'< span class = "from lineNumber" > 337< / span > < span class = "to lineNumber" > 339< / span > < span class = "text" > < / span > ' +
'< / div > ' +
'< div class = "Line LineContainer" > ' +
'< span class = "from lineNumber" > 338< / span > < span class = "to lineNumber" > 340< / span > < span class = "text" > LayoutUnit oldClientAfterEdge = clientLogicalBottom();< / span > ' +
'< / div > ' +
'< / div > < div class = "clear_float" > < / div > ' +
'< / div > ' +
'< / div > ' +
'< / div > ';
var expectedWithLineNumbers = '< div class = "FileDiff" > ' +
'< h1 > < a href = "http://trac.webkit.org/browser/trunk/Source/WebCore/ChangeLog" > Source/WebCore/ChangeLog< / a > < / h1 > ' +
'< div class = "DiffSection" > ' +
'< div class = "DiffBlock" > ' +
'< div class = "DiffBlockPart shared" > ' +
'< div class = "Line LineContainer" > ' +
'< span class = "from lineNumber" > 336< / span > < span class = "to lineNumber" > 338< / span > < span class = "text" > layoutFlexItems(*m_orderIterator, lineContexts);< / span > ' +
'< / div > ' +
'< div class = "Line LineContainer" > ' +
'< span class = "from lineNumber" > 337< / span > < span class = "to lineNumber" > 339< / span > < span class = "text" > < br > < / span > ' +
'< / div > ' +
'< div class = "Line LineContainer" > ' +
'< span class = "from lineNumber" > 338< / span > < span class = "to lineNumber" > 340< / span > < span class = "text" > LayoutUnit oldClientAfterEdge = clientLogicalBottom();< / span > ' +
'< / div > ' +
'< / div > < div class = "clear_float" > < / div > ' +
'< / div > ' +
'< / div > ' +
'< / div > ';
var fragmentCopy = fragment.cloneNode(true);
sanitizeFragmentForCopy(fragmentCopy, false);
ASSERT_EQUAL(fragmentCopy.innerHTML, expectedWithLineNumbers);
var expectedWithOutLineNumbers = '< div class = "FileDiff" > ' +
'< h1 > < a href = "http://trac.webkit.org/browser/trunk/Source/WebCore/ChangeLog" > Source/WebCore/ChangeLog< / a > < / h1 > ' +
'< div class = "DiffSection" > ' +
'< div class = "DiffBlock" > ' +
'< div class = "DiffBlockPart shared" > ' +
'< div class = "Line LineContainer" > ' +
'< span class = "text" > layoutFlexItems(*m_orderIterator, lineContexts);< / span > ' +
'< / div > ' +
'< div class = "Line LineContainer" > ' +
'< span class = "text" > < br > < / span > ' +
'< / div > ' +
'< div class = "Line LineContainer" > ' +
'< span class = "text" > LayoutUnit oldClientAfterEdge = clientLogicalBottom();< / span > ' +
'< / div > ' +
'< / div > < div class = "clear_float" > < / div > ' +
'< / div > ' +
'< / div > ' +
'< / div > ';
var fragmentCopy = fragment.cloneNode(true);
sanitizeFragmentForCopy(fragmentCopy, true);
ASSERT_EQUAL(fragmentCopy.innerHTML, expectedWithOutLineNumbers);
}
2011-12-14 00:07:22 +00:00
function testIsChangeLog() {
ASSERT("Top-level ChangeLog file is a ChangeLog file", isChangeLog("ChangeLog"));
ASSERT("Second-level ChangeLog file is a ChangeLog file", isChangeLog("Tools/ChangeLog"));
ASSERT("prepare-ChangeLog is not a ChangeLog file", !isChangeLog("Tools/Scripts/prepare-ChangeLog"));
ASSERT("ChangeLog-script is not a ChangeLog file", !isChangeLog("Tools/Scripts/ChangeLog-script"));
}
2013-01-02 22:45:54 +00:00
function testSaveCommentsWithMissingLineIds() {
document.getElementById('diff-content').innerHTML =
'< div class = "FileDiff" > ' +
'< h1 > < a href = "http://trac.webkit.org/browser/trunk/Source/WebCore/ChangeLog" > Source/WebCore/dummy.txt< / a > < / h1 > ' +
'< div class = "DiffSection" > ' +
'< div class = "DiffBlock" > ' +
'< div class = "DiffBlockPart shared" > ' +
'< div class = "Line LineContainer" > ' +
'< span class = "from lineNumber" > 6< / span > < span class = "to lineNumber" > 8< / span > < span class = "text" > a< / span > ' +
'< / div > ' +
'< div class = "Line LineContainer" > ' +
'< span class = "from lineNumber" > 7< / span > < span class = "to lineNumber" > 9< / span > < span class = "text" > b< / span > ' +
'< / div > ' +
'< div class = "Line LineContainer" > ' +
'< span class = "from lineNumber" > 8< / span > < span class = "to lineNumber" > 10< / span > < span class = "text" > c< / span > ' +
'< / div > ' +
'< / div > < div class = "clear_float" > ' +
'< / div > ' +
'< / div > ' +
'< div class = "DiffSection" > ' +
'< div class = "Line LineContainer context" > ' +
'< span class = "from lineNumber" > @< / span > < span class = "to lineNumber" > @< / span > < span class = "text" > static void willRemoveChildren(ContainerNode* container)< / span > ' +
'< / div > ' +
'< div class = "DiffBlock" > ' +
'< div class = "DiffBlockPart shared" > ' +
'< div class = "Line LineContainer" > ' +
'< span class = "from lineNumber" > 15< / span > < span class = "to lineNumber" > 17< / span > < span class = "text" > d< / span > ' +
'< / div > ' +
'< / div > < div class = "clear_float" > < / div > < / div > ' +
'< / div > ' +
'< / div > ';
var file_name = "Source/WebCore/dummy.txt";
var file_contents = [];
for (var i = 0; i < 20 ; i + + )
file_contents[i] = i;
setFileContents(file_name, file_contents, file_contents);
eraseDraftComments();
crawlDiff();
var new_comment = addCommentFor($('#line4'));
new_comment.find('textarea').val("dummy content");
acceptComment(new_comment);
$('.ExpandLink')[0].click();
// Strip the link to the context since that points to window.location.
ASSERT_EQUAL(serializedComments().replace(/View in context.*code-review-test.html/, ''),
'\n\n' +
'> Source/WebCore/dummy.txt:17\n\n\n' +
'dummy content');
document.getElementById('diff-content').innerHTML = '';
}
2015-12-10 03:42:46 +00:00
var tests_to_run = [
window.testTracLinks,
window.testDraftCommentSaver,
window.testReadDiscardedCommentWithPreviousComment,
window.testSideBySideDiffWithPreviousCommentsOnSharedLine,
window.testSanitizeFragmentForCopy,
window.testIsChangeLog,
window.testSaveCommentsWithMissingLineIds,
];
appendToolbar();
for (var i = 0; i < tests_to_run.length ; + + i )
tests_to_run[i]();
2011-02-02 00:00:36 +00:00
< / script >