Merge "Bump rules_nodejs version to 1.2.4"
diff --git a/Documentation/dev-bazel.txt b/Documentation/dev-bazel.txt
index 9b43a29..103ae0a 100644
--- a/Documentation/dev-bazel.txt
+++ b/Documentation/dev-bazel.txt
@@ -376,6 +376,21 @@
Note that Bazel currently does not show
link:https://github.com/bazelbuild/bazel/issues/3476[the skipped tests,role=external,window=_blank].
+[[debug]]
+=== Index Query Tests
+
+The `DEBUG` log level can optionally be enabled for the index query tests. That log level applies to
+both Elasticsearch and Lucene tests.
+
+In Eclipse, set `-Ddebug=true` as a VM argument under the Run Configuration's `Arguments` tab.
+
+With `bazel`, here is an example for the Lucene `account` test:
+
+----
+bazel test --jvmopt='-Ddebug=true' \
+javatests/com/google/gerrit/server/query/account:lucene_query_test
+----
+
== Dependencies
Dependency JARs are normally downloaded as needed, but you can
diff --git a/Documentation/dev-e2e-tests.txt b/Documentation/dev-e2e-tests.txt
index 628a0ec..9a62f01 100644
--- a/Documentation/dev-e2e-tests.txt
+++ b/Documentation/dev-e2e-tests.txt
@@ -106,12 +106,14 @@
Valid commands are:
+* `clone`
* `fetch`
* `pull`
* `push`
-* `clone`
-The example above assumes that the `loadtest-repo` project exists in the Gerrit under test.
+The example above assumes that the `loadtest-repo` project exists in the Gerrit under test. The
+`HTTP Credentials` or password obtained from test user's `Settings` (in Gerrit) may be required, in
+`src/test/resources/application.conf`, depending on the above commands used.
== How to run tests
diff --git a/Documentation/dev-eclipse.txt b/Documentation/dev-eclipse.txt
index 5f69cd3..9596a55 100644
--- a/Documentation/dev-eclipse.txt
+++ b/Documentation/dev-eclipse.txt
@@ -81,6 +81,13 @@
== Testing
+=== PolyGerrit UI is served by `server.go` process. To launch it,
+run this command:
+
+----
+ $ bazel run polygerrit-ui:devserver
+----
+
=== Running the Daemon
Duplicate the existing launch configuration:
diff --git a/Documentation/js_licenses.txt b/Documentation/js_licenses.txt
index 05f2929..bd26190 100644
--- a/Documentation/js_licenses.txt
+++ b/Documentation/js_licenses.txt
@@ -664,6 +664,9 @@
* @polymer/neon-animation
* @polymer/paper-behaviors
* @polymer/paper-button
+* @polymer/paper-dialog
+* @polymer/paper-dialog-behavior
+* @polymer/paper-dialog-scrollable
* @polymer/paper-icon-button
* @polymer/paper-input
* @polymer/paper-item
diff --git a/Documentation/licenses.txt b/Documentation/licenses.txt
index dfb66ec..db2cd7d 100644
--- a/Documentation/licenses.txt
+++ b/Documentation/licenses.txt
@@ -3620,6 +3620,9 @@
* @polymer/neon-animation
* @polymer/paper-behaviors
* @polymer/paper-button
+* @polymer/paper-dialog
+* @polymer/paper-dialog-behavior
+* @polymer/paper-dialog-scrollable
* @polymer/paper-icon-button
* @polymer/paper-input
* @polymer/paper-item
diff --git a/java/com/google/gerrit/server/permissions/PermissionCollection.java b/java/com/google/gerrit/server/permissions/PermissionCollection.java
index b23b5a9..1f0370b 100644
--- a/java/com/google/gerrit/server/permissions/PermissionCollection.java
+++ b/java/com/google/gerrit/server/permissions/PermissionCollection.java
@@ -15,6 +15,7 @@
package com.google.gerrit.server.permissions;
import static com.google.gerrit.common.data.PermissionRule.Action.BLOCK;
+import static com.google.gerrit.server.project.RefPattern.containsParameters;
import static com.google.gerrit.server.project.RefPattern.isRE;
import static java.util.stream.Collectors.mapping;
import static java.util.stream.Collectors.toList;
@@ -131,7 +132,9 @@
Iterable<SectionMatcher> matcherList, String ref, CurrentUser user) {
try (Timer0.Context ignored = filterLatency.start()) {
if (isRE(ref)) {
- ref = RefPattern.shortestExample(ref);
+ if (!containsParameters(ref)) {
+ ref = RefPattern.shortestExample(ref);
+ }
} else if (ref.endsWith("/*")) {
ref = ref.substring(0, ref.length() - 1);
}
diff --git a/java/com/google/gerrit/server/project/RefPattern.java b/java/com/google/gerrit/server/project/RefPattern.java
index 0e916fb..c52914b 100644
--- a/java/com/google/gerrit/server/project/RefPattern.java
+++ b/java/com/google/gerrit/server/project/RefPattern.java
@@ -18,9 +18,12 @@
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
+import com.google.common.collect.ImmutableMap;
import com.google.gerrit.common.data.AccessSection;
+import com.google.gerrit.common.data.ParameterizedString;
import com.google.gerrit.exceptions.InvalidNameException;
import dk.brics.automaton.RegExp;
+import java.util.Map;
import java.util.concurrent.ExecutionException;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
@@ -69,11 +72,21 @@
return refPattern.startsWith(AccessSection.REGEX_PREFIX);
}
+ public static boolean containsParameters(String refPattern) {
+ return refPattern.contains("${");
+ }
+
public static RegExp toRegExp(String refPattern) {
if (isRE(refPattern)) {
refPattern = refPattern.substring(1);
}
- return new RegExp(refPattern, RegExp.NONE);
+ ParameterizedString template = new ParameterizedString(refPattern);
+ String replacement = "_PLACEHOLDER_";
+ Map<String, String> params =
+ ImmutableMap.of(
+ RefPattern.USERID_SHARDED, replacement,
+ RefPattern.USERNAME, replacement);
+ return new RegExp(template.replace(params), RegExp.NONE);
}
public static void validate(String refPattern) throws InvalidNameException {
diff --git a/java/com/google/gerrit/server/project/RefPatternMatcher.java b/java/com/google/gerrit/server/project/RefPatternMatcher.java
index f00e98e..b9076b3 100644
--- a/java/com/google/gerrit/server/project/RefPatternMatcher.java
+++ b/java/com/google/gerrit/server/project/RefPatternMatcher.java
@@ -15,6 +15,7 @@
package com.google.gerrit.server.project;
import static com.google.common.collect.ImmutableSet.toImmutableSet;
+import static com.google.gerrit.server.project.RefPattern.containsParameters;
import static com.google.gerrit.server.project.RefPattern.isRE;
import com.google.common.collect.ImmutableMap;
@@ -32,7 +33,7 @@
public abstract class RefPatternMatcher {
public static RefPatternMatcher getMatcher(String pattern) {
- if (pattern.contains("${")) {
+ if (containsParameters(pattern)) {
return new ExpandParameters(pattern);
} else if (isRE(pattern)) {
return new Regexp(pattern);
@@ -80,7 +81,7 @@
@Override
public boolean match(String ref, CurrentUser user) {
- return pattern.matcher(ref).matches();
+ return pattern.matcher(ref).matches() || (isRE(ref) && pattern.pattern().equals(ref));
}
}
@@ -112,7 +113,11 @@
@Override
public boolean match(String ref, CurrentUser user) {
- if (!ref.startsWith(prefix)) {
+ if (isRE(ref)) {
+ if (!ref.substring(1).startsWith(prefix)) {
+ return false;
+ }
+ } else if (!ref.startsWith(prefix)) {
return false;
}
@@ -142,6 +147,9 @@
}
public boolean matchPrefix(String ref) {
+ if (isRE(ref)) {
+ return ref.substring(1).startsWith(prefix);
+ }
return ref.startsWith(prefix);
}
diff --git a/javatests/com/google/gerrit/server/permissions/RefControlTest.java b/javatests/com/google/gerrit/server/permissions/RefControlTest.java
index 08b008d..43a3f10 100644
--- a/javatests/com/google/gerrit/server/permissions/RefControlTest.java
+++ b/javatests/com/google/gerrit/server/permissions/RefControlTest.java
@@ -477,6 +477,21 @@
}
@Test
+ public void usernamePatternRegExpCanUploadToAnyRef() throws Exception {
+ projectOperations
+ .project(localKey)
+ .forUpdate()
+ .add(
+ allow(PUSH)
+ .ref("^refs/heads/users/${username}/(public|private)/.+")
+ .group(REGISTERED_USERS))
+ .update();
+ ProjectControl u = user(localKey, "a-registered-user");
+ assertCanUpload(u);
+ assertCanUpdate("refs/heads/users/a-registered-user/private/a", u);
+ }
+
+ @Test
public void usernamePatternNonRegex() throws Exception {
projectOperations
.project(localKey)
@@ -500,6 +515,8 @@
ProjectControl u = user(localKey, "d.v", DEVS);
ProjectControl d = user(localKey, "dev", DEVS);
+ assertCanAccess(u);
+ assertCanAccess(d);
assertCannotRead("refs/sb/dev/heads/foobar", u);
assertCanRead("refs/sb/dev/heads/foobar", d);
}
@@ -1127,6 +1144,7 @@
RefPattern.validate("^refs/heads/*");
RefPattern.validate("^refs/tags/[0-9a-zA-Z-_.]+");
RefPattern.validate("refs/heads/review/${username}/*");
+ RefPattern.validate("^refs/heads/review/${username}/.+");
}
@Test
diff --git a/javatests/com/google/gerrit/server/query/account/AbstractQueryAccountsTest.java b/javatests/com/google/gerrit/server/query/account/AbstractQueryAccountsTest.java
index e7f0812..31d2048 100644
--- a/javatests/com/google/gerrit/server/query/account/AbstractQueryAccountsTest.java
+++ b/javatests/com/google/gerrit/server/query/account/AbstractQueryAccountsTest.java
@@ -91,10 +91,14 @@
import java.util.Iterator;
import java.util.List;
import java.util.Optional;
+import org.apache.log4j.Level;
+import org.apache.log4j.LogManager;
import org.eclipse.jgit.lib.PersonIdent;
import org.eclipse.jgit.lib.Repository;
import org.junit.After;
+import org.junit.AfterClass;
import org.junit.Before;
+import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
@@ -146,6 +150,20 @@
protected abstract Injector createInjector();
+ @BeforeClass
+ public static void setLogLevel() {
+ if (Boolean.getBoolean("debug")) {
+ LogManager.getRootLogger().setLevel(Level.DEBUG);
+ }
+ }
+
+ @AfterClass
+ public static void resetLogLevel() {
+ if (Boolean.getBoolean("debug")) {
+ LogManager.getRootLogger().setLevel(Level.INFO);
+ }
+ }
+
@Before
public void setUpInjector() throws Exception {
lifecycle = new LifecycleManager();
diff --git a/javatests/com/google/gerrit/server/query/account/BUILD b/javatests/com/google/gerrit/server/query/account/BUILD
index 5c910a0..da37f26 100644
--- a/javatests/com/google/gerrit/server/query/account/BUILD
+++ b/javatests/com/google/gerrit/server/query/account/BUILD
@@ -23,8 +23,10 @@
"//lib:guava",
"//lib:jgit",
"//lib/guice",
+ "//lib/log:log4j",
"//lib/truth",
"//lib/truth:truth-java8-extension",
+ "//resources:log4j-config",
],
)
diff --git a/javatests/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java b/javatests/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java
index 38e4ca4..71bdd69 100644
--- a/javatests/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java
+++ b/javatests/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java
@@ -132,6 +132,8 @@
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
+import org.apache.log4j.Level;
+import org.apache.log4j.LogManager;
import org.eclipse.jgit.junit.TestRepository;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.ObjectInserter;
@@ -143,7 +145,9 @@
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.util.SystemReader;
import org.junit.After;
+import org.junit.AfterClass;
import org.junit.Before;
+import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
@@ -206,6 +210,20 @@
protected abstract Injector createInjector();
+ @BeforeClass
+ public static void setLogLevel() {
+ if (Boolean.getBoolean("debug")) {
+ LogManager.getRootLogger().setLevel(Level.DEBUG);
+ }
+ }
+
+ @AfterClass
+ public static void resetLogLevel() {
+ if (Boolean.getBoolean("debug")) {
+ LogManager.getRootLogger().setLevel(Level.INFO);
+ }
+ }
+
@Before
public void setUpInjector() throws Exception {
lifecycle = new LifecycleManager();
diff --git a/javatests/com/google/gerrit/server/query/change/BUILD b/javatests/com/google/gerrit/server/query/change/BUILD
index e5b51e7..520e65a 100644
--- a/javatests/com/google/gerrit/server/query/change/BUILD
+++ b/javatests/com/google/gerrit/server/query/change/BUILD
@@ -34,7 +34,9 @@
"//lib:jgit",
"//lib:jgit-junit",
"//lib/guice",
+ "//lib/log:log4j",
"//lib/truth",
+ "//resources:log4j-config",
],
)
diff --git a/javatests/com/google/gerrit/server/query/group/AbstractQueryGroupsTest.java b/javatests/com/google/gerrit/server/query/group/AbstractQueryGroupsTest.java
index d80eac0..9b01f8d 100644
--- a/javatests/com/google/gerrit/server/query/group/AbstractQueryGroupsTest.java
+++ b/javatests/com/google/gerrit/server/query/group/AbstractQueryGroupsTest.java
@@ -68,8 +68,12 @@
import java.util.List;
import java.util.Locale;
import java.util.Optional;
+import org.apache.log4j.Level;
+import org.apache.log4j.LogManager;
import org.junit.After;
+import org.junit.AfterClass;
import org.junit.Before;
+import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
@@ -115,6 +119,20 @@
protected abstract Injector createInjector();
+ @BeforeClass
+ public static void setLogLevel() {
+ if (Boolean.getBoolean("debug")) {
+ LogManager.getRootLogger().setLevel(Level.DEBUG);
+ }
+ }
+
+ @AfterClass
+ public static void resetLogLevel() {
+ if (Boolean.getBoolean("debug")) {
+ LogManager.getRootLogger().setLevel(Level.INFO);
+ }
+ }
+
@Before
public void setUpInjector() throws Exception {
lifecycle = new LifecycleManager();
diff --git a/javatests/com/google/gerrit/server/query/group/BUILD b/javatests/com/google/gerrit/server/query/group/BUILD
index e14350f..8f6fd6d 100644
--- a/javatests/com/google/gerrit/server/query/group/BUILD
+++ b/javatests/com/google/gerrit/server/query/group/BUILD
@@ -20,8 +20,10 @@
"//lib:guava",
"//lib:jgit",
"//lib/guice",
+ "//lib/log:log4j",
"//lib/truth",
"//lib/truth:truth-java8-extension",
+ "//resources:log4j-config",
],
)
diff --git a/javatests/com/google/gerrit/server/query/project/AbstractQueryProjectsTest.java b/javatests/com/google/gerrit/server/query/project/AbstractQueryProjectsTest.java
index dfd7928..e142e0c 100644
--- a/javatests/com/google/gerrit/server/query/project/AbstractQueryProjectsTest.java
+++ b/javatests/com/google/gerrit/server/query/project/AbstractQueryProjectsTest.java
@@ -68,8 +68,12 @@
import java.util.List;
import java.util.Locale;
import java.util.Set;
+import org.apache.log4j.Level;
+import org.apache.log4j.LogManager;
import org.junit.After;
+import org.junit.AfterClass;
import org.junit.Before;
+import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
@@ -111,6 +115,20 @@
protected abstract Injector createInjector();
+ @BeforeClass
+ public static void setLogLevel() {
+ if (Boolean.getBoolean("debug")) {
+ LogManager.getRootLogger().setLevel(Level.DEBUG);
+ }
+ }
+
+ @AfterClass
+ public static void resetLogLevel() {
+ if (Boolean.getBoolean("debug")) {
+ LogManager.getRootLogger().setLevel(Level.INFO);
+ }
+ }
+
@Before
public void setUpInjector() throws Exception {
lifecycle = new LifecycleManager();
diff --git a/javatests/com/google/gerrit/server/query/project/BUILD b/javatests/com/google/gerrit/server/query/project/BUILD
index 984d824..996be2f 100644
--- a/javatests/com/google/gerrit/server/query/project/BUILD
+++ b/javatests/com/google/gerrit/server/query/project/BUILD
@@ -21,7 +21,9 @@
"//lib:guava",
"//lib:jgit",
"//lib/guice",
+ "//lib/log:log4j",
"//lib/truth",
+ "//resources:log4j-config",
],
)
diff --git a/polygerrit-ui/app/node_modules_licenses/licenses.ts b/polygerrit-ui/app/node_modules_licenses/licenses.ts
index f5af70f..fe07569 100644
--- a/polygerrit-ui/app/node_modules_licenses/licenses.ts
+++ b/polygerrit-ui/app/node_modules_licenses/licenses.ts
@@ -197,6 +197,18 @@
license: SharedLicenses.Polymer2015
},
{
+ name: "@polymer/paper-dialog",
+ license: SharedLicenses.Polymer2015
+ },
+ {
+ name: "@polymer/paper-dialog-behavior",
+ license: SharedLicenses.Polymer2015
+ },
+ {
+ name: "@polymer/paper-dialog-scrollable",
+ license: SharedLicenses.Polymer2015
+ },
+ {
name: "@polymer/paper-icon-button",
license: SharedLicenses.Polymer2015
},
diff --git a/polygerrit-ui/app/package.json b/polygerrit-ui/app/package.json
index 06e2764..491920d 100644
--- a/polygerrit-ui/app/package.json
+++ b/polygerrit-ui/app/package.json
@@ -14,6 +14,9 @@
"@polymer/iron-overlay-behavior": "^3.0.2",
"@polymer/iron-selector": "^3.0.1",
"@polymer/paper-button": "^3.0.1",
+ "@polymer/paper-dialog": "^3.0.1",
+ "@polymer/paper-dialog-behavior": "^3.0.1",
+ "@polymer/paper-dialog-scrollable": "^3.0.1",
"@polymer/paper-input": "^3.0.2",
"@polymer/paper-item": "^3.0.1",
"@polymer/paper-listbox": "^3.0.1",
diff --git a/polygerrit-ui/app/yarn.lock b/polygerrit-ui/app/yarn.lock
index ec00b7a..06b0e96 100644
--- a/polygerrit-ui/app/yarn.lock
+++ b/polygerrit-ui/app/yarn.lock
@@ -188,6 +188,35 @@
"@polymer/paper-styles" "^3.0.0-pre.26"
"@polymer/polymer" "^3.0.0"
+"@polymer/paper-dialog-behavior@^3.0.0-pre.26", "@polymer/paper-dialog-behavior@^3.0.1":
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/@polymer/paper-dialog-behavior/-/paper-dialog-behavior-3.0.1.tgz#819b2fbb9444c1c318ddf55f02819bb29a85657b"
+ integrity sha512-wbI4kCK8le/9MHT+IXzvHjoatxf3kd3Yn0tgozAiAwfSZ7N4Ubpi5MHrK0m9S9PeIxKokAgBYdTUrezSE5378A==
+ dependencies:
+ "@polymer/iron-overlay-behavior" "^3.0.0-pre.27"
+ "@polymer/paper-styles" "^3.0.0-pre.26"
+ "@polymer/polymer" "^3.0.0"
+
+"@polymer/paper-dialog-scrollable@^3.0.1":
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/@polymer/paper-dialog-scrollable/-/paper-dialog-scrollable-3.0.1.tgz#42fd30380320e6dd6d4d68b2ac4e45ee9e5e024f"
+ integrity sha512-1E8B9kNdL58jUrJ/BwqJeOoNVcxNrB559z//d1V0rVHWT5bWCCZegwS3G06iFK5MjxWFbIKzleVTLrT0opiZkA==
+ dependencies:
+ "@polymer/iron-flex-layout" "^3.0.0-pre.26"
+ "@polymer/paper-dialog-behavior" "^3.0.0-pre.26"
+ "@polymer/paper-styles" "^3.0.0-pre.26"
+ "@polymer/polymer" "^3.0.0"
+
+"@polymer/paper-dialog@^3.0.1":
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/@polymer/paper-dialog/-/paper-dialog-3.0.1.tgz#728ebdbfc4d35ec1485e543434cef5dba476f15e"
+ integrity sha512-KvglYbEq7AWJvui2j6WKLnOvgVMeGjovAydGrPRj7kVzCiD49Eq/hpYFJTRV5iDcalWH+mORUpw+jrFnG9+Kgw==
+ dependencies:
+ "@polymer/iron-overlay-behavior" "^3.0.0-pre.27"
+ "@polymer/neon-animation" "^3.0.0-pre.26"
+ "@polymer/paper-dialog-behavior" "^3.0.0-pre.26"
+ "@polymer/polymer" "^3.0.0"
+
"@polymer/paper-icon-button@^3.0.0-pre.26":
version "3.0.2"
resolved "https://registry.yarnpkg.com/@polymer/paper-icon-button/-/paper-icon-button-3.0.2.tgz#a1254faadc2c8dd135ce1ae33bcc161a94c31f65"
diff --git a/polygerrit-ui/server.go b/polygerrit-ui/server.go
index 7fa6eb2..ad03e51 100644
--- a/polygerrit-ui/server.go
+++ b/polygerrit-ui/server.go
@@ -137,7 +137,7 @@
}
func getFinalPath(redirects []redirects, originalPath string) string {
- testComponentsPrefix := "/components/";
+ testComponentsPrefix := "/components/"
if strings.HasPrefix(originalPath, testComponentsPrefix) {
return "/../node_modules/" + originalPath[len(testComponentsPrefix):]
}
@@ -179,12 +179,12 @@
writer.WriteHeader(500)
return
}
- if (parsedUrl.Path != "/" && strings.HasSuffix(parsedUrl.Path, "/")) {
+ if parsedUrl.Path != "/" && strings.HasSuffix(parsedUrl.Path, "/") {
dirListingMux.ServeHTTP(writer, originalRequest)
- return;
+ return
}
if parsedUrl.Path == "/bower_components/web-component-tester/browser.js" {
- http.Redirect(writer, originalRequest, "/bower_components/wct-browser-legacy/browser.js", 301);
+ http.Redirect(writer, originalRequest, "/bower_components/wct-browser-legacy/browser.js", 301)
return
}
@@ -214,7 +214,7 @@
}
func readFile(originalPath string, redirectedPath string) ([]byte, error) {
- pathsToTry := [] string{"app" + redirectedPath}
+ pathsToTry := []string{"app" + redirectedPath}
bowerComponentsSuffix := "/bower_components/"
nodeModulesPrefix := "/node_modules/"
@@ -463,6 +463,7 @@
return
}
w.Header().Set("Content-Encoding", "gzip")
+ addDevHeaders(w)
gzw := newGzipResponseWriter(w)
defer gzw.Close()
http.DefaultServeMux.ServeHTTP(gzw, r)
diff --git a/polymer-bridges b/polymer-bridges
index b689bef..855f478 160000
--- a/polymer-bridges
+++ b/polymer-bridges
@@ -1 +1 @@
-Subproject commit b689bef776647b4cef3148e538c211331295caf8
+Subproject commit 855f4781b702de120953a64da5c277ea4908deaa
diff --git a/tools/eclipse/gerrit_daemon.launch b/tools/eclipse/gerrit_daemon.launch
index d00f7bf..4f6c599 100644
--- a/tools/eclipse/gerrit_daemon.launch
+++ b/tools/eclipse/gerrit_daemon.launch
@@ -11,7 +11,7 @@
</listAttribute>
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="Main"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="daemon --console-log --show-stack-trace -d ${resource_loc:/gerrit}/../gerrit_testsite"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="daemon --console-log --show-stack-trace --dev-cdn http://localhost:8081 -d ${resource_loc:/gerrit}/../gerrit_testsite"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="gerrit"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dgerrit.plugin-classes=${resource_loc:/gerrit/eclipse-out}/plugins"/>
</launchConfiguration>