Merge "Merge branch 'stable-3.1'"
diff --git a/java/com/google/gerrit/server/project/RefUtil.java b/java/com/google/gerrit/server/project/RefUtil.java
index 1dac751..5d6379a 100644
--- a/java/com/google/gerrit/server/project/RefUtil.java
+++ b/java/com/google/gerrit/server/project/RefUtil.java
@@ -19,6 +19,7 @@
import com.google.common.collect.Iterables;
import com.google.common.flogger.FluentLogger;
+import com.google.gerrit.common.Nullable;
import com.google.gerrit.entities.Project;
import com.google.gerrit.entities.RefNames;
import com.google.gerrit.extensions.restapi.BadRequestException;
@@ -46,16 +47,15 @@
try {
ObjectId revid = repo.resolve(baseRevision);
if (revid == null) {
- throw new InvalidRevisionException();
+ throw new InvalidRevisionException(baseRevision);
}
return revid;
} catch (IOException err) {
logger.atSevere().withCause(err).log(
"Cannot resolve \"%s\" in project \"%s\"", baseRevision, projectName.get());
- throw new InvalidRevisionException();
+ throw new InvalidRevisionException(baseRevision);
} catch (RevisionSyntaxException err) {
- logger.atSevere().withCause(err).log("Invalid revision syntax \"%s\"", baseRevision);
- throw new InvalidRevisionException();
+ throw new InvalidRevisionException(baseRevision);
}
}
@@ -66,7 +66,7 @@
try {
rw.markStart(rw.parseCommit(revid));
} catch (IncorrectObjectTypeException err) {
- throw new InvalidRevisionException();
+ throw new InvalidRevisionException(revid.name());
}
RefDatabase refDb = repo.getRefDatabase();
Iterable<Ref> refs =
@@ -86,11 +86,11 @@
rw.checkConnectivity();
return rw;
} catch (IncorrectObjectTypeException | MissingObjectException err) {
- throw new InvalidRevisionException();
+ throw new InvalidRevisionException(revid.name());
} catch (IOException err) {
logger.atSevere().withCause(err).log(
"Repository \"%s\" may be corrupt; suggest running git fsck", repo.getDirectory());
- throw new InvalidRevisionException();
+ throw new InvalidRevisionException(revid.name());
}
}
@@ -125,8 +125,8 @@
public static final String MESSAGE = "Invalid Revision";
- InvalidRevisionException() {
- super(MESSAGE);
+ InvalidRevisionException(@Nullable String invalidRevision) {
+ super(MESSAGE + ": " + invalidRevision);
}
}
}
diff --git a/java/com/google/gerrit/server/restapi/project/CreateBranch.java b/java/com/google/gerrit/server/restapi/project/CreateBranch.java
index 56948c1..67213c5 100644
--- a/java/com/google/gerrit/server/restapi/project/CreateBranch.java
+++ b/java/com/google/gerrit/server/restapi/project/CreateBranch.java
@@ -16,6 +16,7 @@
import static com.google.gerrit.entities.RefNames.isConfigRef;
+import com.google.common.base.Strings;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.entities.BranchNameKey;
import com.google.gerrit.entities.RefNames;
@@ -93,7 +94,10 @@
if (input.ref != null && !ref.equals(input.ref)) {
throw new BadRequestException("ref must match URL");
}
- if (input.revision == null) {
+ if (input.revision != null) {
+ input.revision = input.revision.trim();
+ }
+ if (Strings.isNullOrEmpty(input.revision)) {
input.revision = Constants.HEAD;
}
while (ref.startsWith("/")) {
diff --git a/java/com/google/gerrit/server/restapi/project/CreateTag.java b/java/com/google/gerrit/server/restapi/project/CreateTag.java
index dca6e9a..8fdf5e4 100644
--- a/java/com/google/gerrit/server/restapi/project/CreateTag.java
+++ b/java/com/google/gerrit/server/restapi/project/CreateTag.java
@@ -88,7 +88,10 @@
if (input.ref != null && !ref.equals(input.ref)) {
throw new BadRequestException("ref must match URL");
}
- if (input.revision == null) {
+ if (input.revision != null) {
+ input.revision = input.revision.trim();
+ }
+ if (Strings.isNullOrEmpty(input.revision)) {
input.revision = Constants.HEAD;
}
diff --git a/javatests/com/google/gerrit/acceptance/rest/project/CreateBranchIT.java b/javatests/com/google/gerrit/acceptance/rest/project/CreateBranchIT.java
index e5ef5ba..85d383e 100644
--- a/javatests/com/google/gerrit/acceptance/rest/project/CreateBranchIT.java
+++ b/javatests/com/google/gerrit/acceptance/rest/project/CreateBranchIT.java
@@ -36,9 +36,11 @@
import com.google.gerrit.extensions.api.projects.BranchInfo;
import com.google.gerrit.extensions.api.projects.BranchInput;
import com.google.gerrit.extensions.restapi.AuthException;
+import com.google.gerrit.extensions.restapi.BadRequestException;
import com.google.gerrit.extensions.restapi.ResourceConflictException;
import com.google.gerrit.extensions.restapi.RestApiException;
import com.google.inject.Inject;
+import org.eclipse.jgit.revwalk.RevCommit;
import org.junit.Before;
import org.junit.Test;
@@ -146,6 +148,116 @@
"Not allowed to create group branch.");
}
+ @Test
+ public void createWithRevision() throws Exception {
+ RevCommit revision = projectOperations.project(project).getHead("master");
+
+ // update master so that points to a different revision than the revision on which we create the
+ // new branch
+ pushTo("refs/heads/master");
+ assertThat(projectOperations.project(project).getHead("master")).isNotEqualTo(revision);
+
+ BranchInput input = new BranchInput();
+ input.revision = revision.name();
+ BranchInfo created = branch(testBranch).create(input).get();
+ assertThat(created.ref).isEqualTo(testBranch.branch());
+ assertThat(created.revision).isEqualTo(revision.name());
+ assertThat(projectOperations.project(project).getHead(testBranch.branch())).isEqualTo(revision);
+ }
+
+ @Test
+ public void createWithoutSpecifyingRevision() throws Exception {
+ // If revision is not specified, the branch is created based on HEAD, which points to master.
+ RevCommit expectedRevision = projectOperations.project(project).getHead("master");
+
+ BranchInput input = new BranchInput();
+ input.revision = null;
+ BranchInfo created = branch(testBranch).create(input).get();
+ assertThat(created.ref).isEqualTo(testBranch.branch());
+ assertThat(created.revision).isEqualTo(expectedRevision.name());
+ assertThat(projectOperations.project(project).getHead(testBranch.branch()))
+ .isEqualTo(expectedRevision);
+ }
+
+ @Test
+ public void createWithEmptyRevision() throws Exception {
+ // If revision is not specified, the branch is created based on HEAD, which points to master.
+ RevCommit expectedRevision = projectOperations.project(project).getHead("master");
+
+ BranchInput input = new BranchInput();
+ input.revision = "";
+ BranchInfo created = branch(testBranch).create(input).get();
+ assertThat(created.ref).isEqualTo(testBranch.branch());
+ assertThat(created.revision).isEqualTo(expectedRevision.name());
+ assertThat(projectOperations.project(project).getHead(testBranch.branch()))
+ .isEqualTo(expectedRevision);
+ }
+
+ @Test
+ public void createRevisionIsTrimmed() throws Exception {
+ RevCommit revision = projectOperations.project(project).getHead("master");
+
+ BranchInput input = new BranchInput();
+ input.revision = "\t" + revision.name();
+ BranchInfo created = branch(testBranch).create(input).get();
+ assertThat(created.ref).isEqualTo(testBranch.branch());
+ assertThat(created.revision).isEqualTo(revision.name());
+ assertThat(projectOperations.project(project).getHead(testBranch.branch())).isEqualTo(revision);
+ }
+
+ @Test
+ public void createWithBranchNameAsRevision() throws Exception {
+ RevCommit expectedRevision = projectOperations.project(project).getHead("master");
+
+ BranchInput input = new BranchInput();
+ input.revision = "master";
+ BranchInfo created = branch(testBranch).create(input).get();
+ assertThat(created.ref).isEqualTo(testBranch.branch());
+ assertThat(created.revision).isEqualTo(expectedRevision.name());
+ assertThat(projectOperations.project(project).getHead(testBranch.branch()))
+ .isEqualTo(expectedRevision);
+ }
+
+ @Test
+ public void createWithFullBranchNameAsRevision() throws Exception {
+ RevCommit expectedRevision = projectOperations.project(project).getHead("master");
+
+ BranchInput input = new BranchInput();
+ input.revision = "refs/heads/master";
+ BranchInfo created = branch(testBranch).create(input).get();
+ assertThat(created.ref).isEqualTo(testBranch.branch());
+ assertThat(created.revision).isEqualTo(expectedRevision.name());
+ assertThat(projectOperations.project(project).getHead(testBranch.branch()))
+ .isEqualTo(expectedRevision);
+ }
+
+ @Test
+ public void cannotCreateWithNonExistingBranchNameAsRevision() throws Exception {
+ assertCreateFails(
+ testBranch,
+ "refs/heads/non-existing",
+ BadRequestException.class,
+ "invalid revision \"refs/heads/non-existing\"");
+ }
+
+ @Test
+ public void cannotCreateWithNonExistingRevision() throws Exception {
+ assertCreateFails(
+ testBranch,
+ "deadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
+ BadRequestException.class,
+ "invalid revision \"deadbeefdeadbeefdeadbeefdeadbeefdeadbeef\"");
+ }
+
+ @Test
+ public void cannotCreateWithInvalidRevision() throws Exception {
+ assertCreateFails(
+ testBranch,
+ "invalid\trevision",
+ BadRequestException.class,
+ "invalid revision \"invalid\trevision\"");
+ }
+
private void blockCreateReference() throws Exception {
projectOperations
.project(project)
diff --git a/javatests/com/google/gerrit/acceptance/rest/project/TagsIT.java b/javatests/com/google/gerrit/acceptance/rest/project/TagsIT.java
index 3d1a148..3becb81 100644
--- a/javatests/com/google/gerrit/acceptance/rest/project/TagsIT.java
+++ b/javatests/com/google/gerrit/acceptance/rest/project/TagsIT.java
@@ -41,6 +41,7 @@
import com.google.inject.Inject;
import java.sql.Timestamp;
import java.util.List;
+import org.eclipse.jgit.revwalk.RevCommit;
import org.junit.Test;
@NoHttpd
@@ -357,6 +358,53 @@
assertThat(thrown).hasMessageThat().contains("Invalid base revision");
}
+ @Test
+ public void noBaseRevision() throws Exception {
+ grantTagPermissions();
+
+ // If revision is not specified, the tag is created based on HEAD, which points to master.
+ RevCommit expectedRevision = projectOperations.project(project).getHead("master");
+
+ TagInput input = new TagInput();
+ input.ref = "test";
+ input.revision = null;
+
+ TagInfo result = tag(input.ref).create(input).get();
+ assertThat(result.ref).isEqualTo(R_TAGS + input.ref);
+ assertThat(result.revision).isEqualTo(expectedRevision.name());
+ }
+
+ @Test
+ public void emptyBaseRevision() throws Exception {
+ grantTagPermissions();
+
+ // If revision is not specified, the tag is created based on HEAD, which points to master.
+ RevCommit expectedRevision = projectOperations.project(project).getHead("master");
+
+ TagInput input = new TagInput();
+ input.ref = "test";
+ input.revision = "";
+
+ TagInfo result = tag(input.ref).create(input).get();
+ assertThat(result.ref).isEqualTo(R_TAGS + input.ref);
+ assertThat(result.revision).isEqualTo(expectedRevision.name());
+ }
+
+ @Test
+ public void baseRevisionIsTrimmed() throws Exception {
+ grantTagPermissions();
+
+ RevCommit revision = projectOperations.project(project).getHead("master");
+
+ TagInput input = new TagInput();
+ input.ref = "test";
+ input.revision = "\t" + revision.name();
+
+ TagInfo result = tag(input.ref).create(input).get();
+ assertThat(result.ref).isEqualTo(R_TAGS + input.ref);
+ assertThat(result.revision).isEqualTo(revision.name());
+ }
+
private void assertTagList(FluentIterable<String> expected, List<TagInfo> actual)
throws Exception {
assertThat(actual).hasSize(expected.size());
diff --git a/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view_test.html b/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view_test.html
index e6eef75..04bdab7 100644
--- a/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view_test.html
+++ b/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view_test.html
@@ -197,7 +197,10 @@
assert.equal(Polymer.dom(element.root)
.querySelectorAll('.sectionTitle').length, 3);
assert.equal(element.$$('.breadcrumbText').innerText, 'Test Repo');
- assert.equal(element.$$('#pageSelect').items.length, 6);
+ assert.equal(
+ element.shadowRoot.querySelector('#pageSelect').items.length,
+ 6
+ );
done();
});
});
@@ -439,13 +442,16 @@
element.reload().then(() => {
assert.deepEqual(element._filteredLinks, expectedFilteredLinks);
assert.deepEqual(element._subsectionLinks, expectedSubsectionLinks);
- assert.equal(element.$$('#pageSelect').value, 'repoaccess');
+ assert.equal(
+ element.shadowRoot.querySelector('#pageSelect').value,
+ 'repoaccess'
+ );
assert.isTrue(element._selectedIsCurrentPage.calledOnce);
// Doesn't trigger navigation from the page select menu.
assert.isFalse(Gerrit.Nav.navigateToRelativeUrl.called);
// When explicitly changed, navigation is called
- element.$$('#pageSelect').value = 'repo';
+ element.shadowRoot.querySelector('#pageSelect').value = 'repo';
assert.isTrue(element._selectedIsCurrentPage.calledTwice);
assert.isTrue(Gerrit.Nav.navigateToRelativeUrl.calledOnce);
done();
diff --git a/polygerrit-ui/app/elements/admin/gr-permission/gr-permission_test.html b/polygerrit-ui/app/elements/admin/gr-permission/gr-permission_test.html
index 6cb7e4a..7919b28 100644
--- a/polygerrit-ui/app/elements/admin/gr-permission/gr-permission_test.html
+++ b/polygerrit-ui/app/elements/admin/gr-permission/gr-permission_test.html
@@ -385,7 +385,8 @@
assert.isFalse(element._originalExclusiveValue);
assert.isNotOk(element.permission.value.modified);
- MockInteractions.tap(element.$$('#exclusiveToggle'));
+ MockInteractions.tap(element.shadowRoot
+ .querySelector('#exclusiveToggle'));
flushAsynchronousOperations();
assert.isTrue(element.permission.value.exclusive);
assert.isTrue(element.permission.value.modified);
@@ -405,21 +406,25 @@
});
test('Exclusive hidden for owner permission', () => {
- assert.equal(getComputedStyle(element.$$('#exclusiveToggle')).display,
- 'flex');
+ assert.equal(getComputedStyle(element.shadowRoot
+ .querySelector('#exclusiveToggle')).display,
+ 'flex');
element.set(['permission', 'id'], 'owner');
flushAsynchronousOperations();
- assert.equal(getComputedStyle(element.$$('#exclusiveToggle')).display,
- 'none');
+ assert.equal(getComputedStyle(element.shadowRoot
+ .querySelector('#exclusiveToggle')).display,
+ 'none');
});
test('Exclusive hidden for any global permissions', () => {
- assert.equal(getComputedStyle(element.$$('#exclusiveToggle')).display,
- 'flex');
+ assert.equal(getComputedStyle(element.shadowRoot
+ .querySelector('#exclusiveToggle')).display,
+ 'flex');
element.section = 'GLOBAL_CAPABILITIES';
flushAsynchronousOperations();
- assert.equal(getComputedStyle(element.$$('#exclusiveToggle')).display,
- 'none');
+ assert.equal(getComputedStyle(element.shadowRoot
+ .querySelector('#exclusiveToggle')).display,
+ 'none');
});
});
});
diff --git a/polygerrit-ui/app/elements/admin/gr-repo-access/gr-repo-access_test.html b/polygerrit-ui/app/elements/admin/gr-repo-access/gr-repo-access_test.html
index 90eaba5..fc7dea8 100644
--- a/polygerrit-ui/app/elements/admin/gr-repo-access/gr-repo-access_test.html
+++ b/polygerrit-ui/app/elements/admin/gr-repo-access/gr-repo-access_test.html
@@ -282,7 +282,8 @@
id: 'test-project',
};
flushAsynchronousOperations();
- assert.equal(getComputedStyle(element.$$('#editInheritFromInput'))
+ assert.equal(getComputedStyle(element.shadowRoot
+ .querySelector('#editInheritFromInput'))
.display, 'none');
MockInteractions.tap(element.$.editBtn);
@@ -300,7 +301,8 @@
assert.notEqual(getComputedStyle(element.$.saveBtn).display, 'none');
assert.isTrue(element.$.saveBtn.disabled);
}
- assert.notEqual(getComputedStyle(element.$$('#editInheritFromInput'))
+ assert.notEqual(getComputedStyle(element.shadowRoot
+ .querySelector('#editInheritFromInput'))
.display, 'none');
// Save button should be enabled after access is modified
@@ -365,7 +367,7 @@
id: 'test-project',
};
flushAsynchronousOperations();
- element.$$('#editInheritFromInput').fire('commit');
+ element.shadowRoot.querySelector('#editInheritFromInput').fire('commit');
sandbox.spy(element, '_handleAccessModified');
element.fire('access-modified');
assert.isTrue(element._handleAccessModified.called);
diff --git a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions_test.html b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions_test.html
index 532c573..d9b7986 100644
--- a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions_test.html
+++ b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions_test.html
@@ -466,7 +466,9 @@
element._handleDeleteEditTap();
assert.isFalse(element.$.confirmDeleteEditDialog.hidden);
MockInteractions.tap(
- element.$$('#confirmDeleteEditDialog').$$('gr-button[primary]'));
+ element.shadowRoot
+ .querySelector('#confirmDeleteEditDialog')
+ .$$('gr-button[primary]'));
flushAsynchronousOperations();
assert.equal(fireActionStub.lastCall.args[0], '/edit');
@@ -980,9 +982,12 @@
test('shows confirm dialog', () => {
element._handleDeleteTap();
- assert.isFalse(element.$$('#confirmDeleteDialog').hidden);
+ assert.isFalse(element.shadowRoot
+ .querySelector('#confirmDeleteDialog').hidden);
MockInteractions.tap(
- element.$$('#confirmDeleteDialog').$$('gr-button[primary]'));
+ element.shadowRoot
+ .querySelector('#confirmDeleteDialog')
+ .$$('gr-button[primary]'));
flushAsynchronousOperations();
assert.isTrue(fireActionStub.calledWith('/', deleteAction, false));
});
@@ -990,9 +995,12 @@
test('hides delete confirm on cancel', () => {
element._handleDeleteTap();
MockInteractions.tap(
- element.$$('#confirmDeleteDialog').$$('gr-button:not([primary])'));
+ element.shadowRoot
+ .querySelector('#confirmDeleteDialog')
+ .$$('gr-button:not([primary])'));
flushAsynchronousOperations();
- assert.isTrue(element.$$('#confirmDeleteDialog').hidden);
+ assert.isTrue(element.shadowRoot
+ .querySelector('#confirmDeleteDialog').hidden);
assert.isFalse(fireActionStub.called);
});
});
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js
index 5de378b..b9e9e6c 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js
@@ -437,7 +437,8 @@
}
_handleFileTabChange(e) {
- const selectedIndex = this.$$('#primaryTabs').selected;
+ const selectedIndex = this.shadowRoot
+ .querySelector('#primaryTabs').selected;
this._showFileTabContent = selectedIndex === 0;
// Initial tab is the static files list.
const newSelectedTab =
@@ -458,8 +459,8 @@
console.warn(e.detail.tab + ' tab not found');
return;
}
- this.$$('#primaryTabs').selected = idx + 1;
- this.$$('#primaryTabs').scrollIntoView();
+ this.shadowRoot.querySelector('#primaryTabs').selected = idx + 1;
+ this.shadowRoot.querySelector('#primaryTabs').scrollIntoView();
this.$.reporting.reportInteraction('show-tab', e.detail.tab);
}
@@ -799,7 +800,7 @@
// Selected has to be set after the paper-tabs are visible because
// the selected underline depends on calculations made by the browser.
this.$.commentTabs.selected = 0;
- const primaryTabs = this.$$('#primaryTabs');
+ const primaryTabs = this.shadowRoot.querySelector('#primaryTabs');
if (primaryTabs) primaryTabs.selected = 0;
}
diff --git a/polygerrit-ui/app/elements/change/gr-download-dialog/gr-download-dialog.js b/polygerrit-ui/app/elements/change/gr-download-dialog/gr-download-dialog.js
index ab849de..9329ba5 100644
--- a/polygerrit-ui/app/elements/change/gr-download-dialog/gr-download-dialog.js
+++ b/polygerrit-ui/app/elements/change/gr-download-dialog/gr-download-dialog.js
@@ -68,7 +68,8 @@
}
getFocusStops() {
- const links = this.$$('#archives').querySelectorAll('a');
+ const links = this.shadowRoot
+ .querySelector('#archives').querySelectorAll('a');
return {
start: this.$.closeButton,
end: links[links.length - 1],
diff --git a/polygerrit-ui/app/elements/change/gr-file-list-header/gr-file-list-header_test.html b/polygerrit-ui/app/elements/change/gr-file-list-header/gr-file-list-header_test.html
index ea7ea8f..10efaff 100644
--- a/polygerrit-ui/app/elements/change/gr-file-list-header/gr-file-list-header_test.html
+++ b/polygerrit-ui/app/elements/change/gr-file-list-header/gr-file-list-header_test.html
@@ -216,8 +216,8 @@
test('expand/collapse buttons are toggled correctly', () => {
element.shownFileCount = 10;
flushAsynchronousOperations();
- const expandBtn = element.$$('#expandBtn');
- const collapseBtn = element.$$('#collapseBtn');
+ const expandBtn = element.shadowRoot.querySelector('#expandBtn');
+ const collapseBtn = element.shadowRoot.querySelector('#collapseBtn');
assert.notEqual(getComputedStyle(expandBtn).display, 'none');
assert.equal(getComputedStyle(collapseBtn).display, 'none');
element.filesExpanded = GrFileListConstants.FilesExpandedState.SOME;
diff --git a/polygerrit-ui/app/elements/change/gr-messages-list/gr-messages-list_test.html b/polygerrit-ui/app/elements/change/gr-messages-list/gr-messages-list_test.html
index 9caf13d..b0747f4 100644
--- a/polygerrit-ui/app/elements/change/gr-messages-list/gr-messages-list_test.html
+++ b/polygerrit-ui/app/elements/change/gr-messages-list/gr-messages-list_test.html
@@ -231,7 +231,8 @@
.concat(_.times(11, randomMessage));
flushAsynchronousOperations();
- MockInteractions.tap(element.$$('#collapse-messages')); // Expand all.
+ MockInteractions.tap(element.shadowRoot
+ .querySelector('#collapse-messages')); // Expand all.
flushAsynchronousOperations();
let messages = getMessages();
@@ -255,8 +256,10 @@
.concat(_.times(11, randomMessage));
flushAsynchronousOperations();
- MockInteractions.tap(element.$$('#collapse-messages')); // Expand all.
- MockInteractions.tap(element.$$('#collapse-messages')); // Collapse all.
+ MockInteractions.tap(element.shadowRoot
+ .querySelector('#collapse-messages')); // Expand all.
+ MockInteractions.tap(element.shadowRoot
+ .querySelector('#collapse-messages')); // Collapse all.
flushAsynchronousOperations();
let messages = getMessages();
@@ -283,13 +286,15 @@
MockInteractions.tap(allMessageEls[1]);
assert.isTrue(allMessageEls[1]._expanded);
- MockInteractions.tap(element.$$('#collapse-messages'));
+ MockInteractions.tap(element.shadowRoot
+ .querySelector('#collapse-messages'));
allMessageEls = getMessages();
for (const message of allMessageEls) {
assert.isTrue(message._expanded);
}
- MockInteractions.tap(element.$$('#collapse-messages'));
+ MockInteractions.tap(element.shadowRoot
+ .querySelector('#collapse-messages'));
allMessageEls = getMessages();
for (const message of allMessageEls) {
assert.isFalse(message._expanded);
@@ -297,28 +302,33 @@
});
test('expand/collapse from external keypress', () => {
- MockInteractions.tap(element.$$('#collapse-messages'));
+ MockInteractions.tap(element.shadowRoot
+ .querySelector('#collapse-messages'));
let allMessageEls = getMessages();
for (const message of allMessageEls) {
assert.isTrue(message._expanded);
}
// Expand/collapse all text also changes.
- assert.equal(element.$$('#collapse-messages').textContent.trim(),
- 'Collapse all');
+ assert.equal(element.shadowRoot
+ .querySelector('#collapse-messages').textContent.trim(),
+ 'Collapse all');
- MockInteractions.tap(element.$$('#collapse-messages'));
+ MockInteractions.tap(element.shadowRoot
+ .querySelector('#collapse-messages'));
allMessageEls = getMessages();
for (const message of allMessageEls) {
assert.isFalse(message._expanded);
}
// Expand/collapse all text also changes.
- assert.equal(element.$$('#collapse-messages').textContent.trim(),
- 'Expand all');
+ assert.equal(element.shadowRoot
+ .querySelector('#collapse-messages').textContent.trim(),
+ 'Expand all');
});
test('hide messages does not appear when no automated messages', () => {
- assert.isOk(element.$$('#automatedMessageToggleContainer[hidden]'));
+ assert.isOk(element.shadowRoot
+ .querySelector('#automatedMessageToggleContainer[hidden]'));
});
test('scroll to message', () => {
@@ -476,7 +486,8 @@
});
test('hide autogenerated button is not hidden', () => {
- assert.isNotOk(element.$$('#automatedMessageToggle[hidden]'));
+ assert.isNotOk(element.shadowRoot
+ .querySelector('#automatedMessageToggle[hidden]'));
});
test('autogenerated messages are not hidden initially', () => {
diff --git a/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog_test.html b/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog_test.html
index badd62a..e44f669 100644
--- a/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog_test.html
+++ b/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog_test.html
@@ -187,7 +187,7 @@
});
test('keep drafts with reply', done => {
- MockInteractions.tap(element.$$('#includeComments'));
+ MockInteractions.tap(element.shadowRoot.querySelector('#includeComments'));
assert.equal(element._includeComments, false);
// Async tick is needed because iron-selector content is distributed and
@@ -460,7 +460,8 @@
flushAsynchronousOperations();
assert.isFalse(element._reviewersMutated);
assert.isTrue(element.$.ccs.allowAnyInput);
- assert.isFalse(element.$$('#reviewers').allowAnyInput);
+ assert.isFalse(element.shadowRoot
+ .querySelector('#reviewers').allowAnyInput);
element.$.ccs.dispatchEvent(new CustomEvent('account-text-changed',
{bubbles: true, composed: true}));
assert.isTrue(element._reviewersMutated);
diff --git a/polygerrit-ui/app/elements/edit/gr-edit-controls/gr-edit-controls_test.html b/polygerrit-ui/app/elements/edit/gr-edit-controls/gr-edit-controls_test.html
index 2d7dc9c..b7e52a1 100644
--- a/polygerrit-ui/app/elements/edit/gr-edit-controls/gr-edit-controls_test.html
+++ b/polygerrit-ui/app/elements/edit/gr-edit-controls/gr-edit-controls_test.html
@@ -82,7 +82,7 @@
});
test('open', () => {
- MockInteractions.tap(element.$$('#open'));
+ MockInteractions.tap(element.shadowRoot.querySelector('#open'));
element.patchNum = 1;
return showDialogSpy.lastCall.returnValue.then(() => {
assert.isTrue(element._hideAllDialogs.called);
@@ -101,7 +101,7 @@
});
test('cancel', () => {
- MockInteractions.tap(element.$$('#open'));
+ MockInteractions.tap(element.shadowRoot.querySelector('#open'));
return showDialogSpy.lastCall.returnValue.then(() => {
assert.isTrue(element.$.openDialog.disabled);
openAutoCcmplete.noDebounce = true;
@@ -129,7 +129,7 @@
test('delete', () => {
deleteStub.returns(Promise.resolve({ok: true}));
- MockInteractions.tap(element.$$('#delete'));
+ MockInteractions.tap(element.shadowRoot.querySelector('#delete'));
return showDialogSpy.lastCall.returnValue.then(() => {
assert.isTrue(element.$.deleteDialog.disabled);
assert.isFalse(queryStub.called);
@@ -152,7 +152,7 @@
test('delete fails', () => {
deleteStub.returns(Promise.resolve({ok: false}));
- MockInteractions.tap(element.$$('#delete'));
+ MockInteractions.tap(element.shadowRoot.querySelector('#delete'));
return showDialogSpy.lastCall.returnValue.then(() => {
assert.isTrue(element.$.deleteDialog.disabled);
assert.isFalse(queryStub.called);
@@ -173,7 +173,7 @@
});
test('cancel', () => {
- MockInteractions.tap(element.$$('#delete'));
+ MockInteractions.tap(element.shadowRoot.querySelector('#delete'));
return showDialogSpy.lastCall.returnValue.then(() => {
assert.isTrue(element.$.deleteDialog.disabled);
element.$.deleteDialog.querySelector('gr-autocomplete').text =
@@ -204,7 +204,7 @@
test('rename', () => {
renameStub.returns(Promise.resolve({ok: true}));
- MockInteractions.tap(element.$$('#rename'));
+ MockInteractions.tap(element.shadowRoot.querySelector('#rename'));
return showDialogSpy.lastCall.returnValue.then(() => {
assert.isTrue(element.$.renameDialog.disabled);
assert.isFalse(queryStub.called);
@@ -232,7 +232,7 @@
test('rename fails', () => {
renameStub.returns(Promise.resolve({ok: false}));
- MockInteractions.tap(element.$$('#rename'));
+ MockInteractions.tap(element.shadowRoot.querySelector('#rename'));
return showDialogSpy.lastCall.returnValue.then(() => {
assert.isTrue(element.$.renameDialog.disabled);
assert.isFalse(queryStub.called);
@@ -258,7 +258,7 @@
});
test('cancel', () => {
- MockInteractions.tap(element.$$('#rename'));
+ MockInteractions.tap(element.shadowRoot.querySelector('#rename'));
return showDialogSpy.lastCall.returnValue.then(() => {
assert.isTrue(element.$.renameDialog.disabled);
element.$.renameDialog.querySelector('gr-autocomplete').text =
@@ -285,13 +285,14 @@
});
test('restore hidden by default', () => {
- assert.isTrue(element.$$('#restore').classList.contains('invisible'));
+ assert.isTrue(element.shadowRoot
+ .querySelector('#restore').classList.contains('invisible'));
});
test('restore', () => {
restoreStub.returns(Promise.resolve({ok: true}));
element._path = 'src/test.cpp';
- MockInteractions.tap(element.$$('#restore'));
+ MockInteractions.tap(element.shadowRoot.querySelector('#restore'));
return showDialogSpy.lastCall.returnValue.then(() => {
MockInteractions.tap(element.$.restoreDialog.$$('gr-button[primary]'));
flushAsynchronousOperations();
@@ -309,7 +310,7 @@
test('restore fails', () => {
restoreStub.returns(Promise.resolve({ok: false}));
element._path = 'src/test.cpp';
- MockInteractions.tap(element.$$('#restore'));
+ MockInteractions.tap(element.shadowRoot.querySelector('#restore'));
return showDialogSpy.lastCall.returnValue.then(() => {
MockInteractions.tap(element.$.restoreDialog.$$('gr-button[primary]'));
flushAsynchronousOperations();
@@ -325,7 +326,7 @@
test('cancel', () => {
element._path = 'src/test.cpp';
- MockInteractions.tap(element.$$('#restore'));
+ MockInteractions.tap(element.shadowRoot.querySelector('#restore'));
return showDialogSpy.lastCall.returnValue.then(() => {
MockInteractions.tap(element.$.restoreDialog.$$('gr-button'));
assert.isFalse(navStub.called);
diff --git a/polygerrit-ui/app/elements/shared/gr-comment/gr-comment.js b/polygerrit-ui/app/elements/shared/gr-comment/gr-comment.js
index 053eeee..7951d20 100644
--- a/polygerrit-ui/app/elements/shared/gr-comment/gr-comment.js
+++ b/polygerrit-ui/app/elements/shared/gr-comment/gr-comment.js
@@ -196,14 +196,15 @@
}
get textarea() {
- return this.$$('#editTextarea');
+ return this.shadowRoot.querySelector('#editTextarea');
}
get confirmDeleteOverlay() {
if (!this._overlays.confirmDelete) {
this._enableOverlay = true;
Polymer.dom.flush();
- this._overlays.confirmDelete = this.$$('#confirmDeleteOverlay');
+ this._overlays.confirmDelete = this.shadowRoot
+ .querySelector('#confirmDeleteOverlay');
}
return this._overlays.confirmDelete;
}
@@ -212,7 +213,8 @@
if (!this._overlays.confirmDiscard) {
this._enableOverlay = true;
Polymer.dom.flush();
- this._overlays.confirmDiscard = this.$$('#confirmDiscardOverlay');
+ this._overlays.confirmDiscard = this.shadowRoot
+ .querySelector('#confirmDiscardOverlay');
}
return this._overlays.confirmDiscard;
}
diff --git a/polygerrit-ui/app/elements/shared/gr-list-view/gr-list-view_test.html b/polygerrit-ui/app/elements/shared/gr-list-view/gr-list-view_test.html
index 8f87b38..f99d5d9 100644
--- a/polygerrit-ui/app/elements/shared/gr-list-view/gr-list-view_test.html
+++ b/polygerrit-ui/app/elements/shared/gr-list-view/gr-list-view_test.html
@@ -126,11 +126,13 @@
});
test('createNew link appears correctly', () => {
- assert.isFalse(element.$$('#createNewContainer').classList
+ assert.isFalse(element.shadowRoot
+ .querySelector('#createNewContainer').classList
.contains('show'));
element.createNew = true;
flushAsynchronousOperations();
- assert.isTrue(element.$$('#createNewContainer').classList
+ assert.isTrue(element.shadowRoot
+ .querySelector('#createNewContainer').classList
.contains('show'));
});
@@ -139,7 +141,7 @@
element.addEventListener('create-clicked', clickHandler);
element.createNew = true;
flushAsynchronousOperations();
- MockInteractions.tap(element.$$('#createNew'));
+ MockInteractions.tap(element.shadowRoot.querySelector('#createNew'));
assert.isTrue(clickHandler.called);
});