2015-11-04 11:14:54 -05:00
|
|
|
# PolyGerrit
|
|
|
|
|
2015-11-23 14:59:24 -05:00
|
|
|
## Installing [Node.js](https://nodejs.org/en/download/)
|
|
|
|
|
2017-05-20 11:30:39 +00:00
|
|
|
The minimum nodejs version supported is 6.x+
|
|
|
|
|
2015-11-23 14:59:24 -05:00
|
|
|
```sh
|
2017-05-20 11:30:39 +00:00
|
|
|
# Debian experimental
|
2015-11-23 14:59:24 -05:00
|
|
|
sudo apt-get install nodejs-legacy
|
|
|
|
|
|
|
|
# OS X with Homebrew
|
|
|
|
brew install node
|
|
|
|
```
|
|
|
|
|
|
|
|
All other platforms: [download from
|
|
|
|
nodejs.org](https://nodejs.org/en/download/).
|
|
|
|
|
2016-11-15 06:35:29 -08:00
|
|
|
## Installing [Bazel](https://bazel.build/)
|
2016-03-17 15:13:32 +01:00
|
|
|
|
2016-10-10 16:06:45 -07:00
|
|
|
Follow the instructions
|
2016-11-15 06:35:29 -08:00
|
|
|
[here](https://gerrit-review.googlesource.com/Documentation/dev-bazel.html#_installation)
|
|
|
|
to get and install Bazel.
|
2016-10-10 16:06:45 -07:00
|
|
|
|
|
|
|
## Local UI, Production Data
|
|
|
|
|
|
|
|
This is a quick and easy way to test your local changes against real data.
|
|
|
|
Unfortunately, you can't sign in, so testing certain features will require
|
|
|
|
you to use the "test data" technique described below.
|
|
|
|
|
|
|
|
### Installing [go](https://golang.org/)
|
|
|
|
|
|
|
|
This is required for running the `run-server.sh` script below.
|
2016-03-17 15:13:32 +01:00
|
|
|
|
|
|
|
```sh
|
|
|
|
# Debian/Ubuntu
|
|
|
|
sudo apt-get install golang
|
|
|
|
|
|
|
|
# OS X with Homebrew
|
|
|
|
brew install go
|
|
|
|
```
|
|
|
|
|
2016-09-22 11:35:28 +03:00
|
|
|
All other platforms: [download from golang.org](https://golang.org/)
|
2016-03-17 15:13:32 +01:00
|
|
|
|
2016-10-10 16:06:45 -07:00
|
|
|
Then add go to your path:
|
2016-03-17 15:13:32 +01:00
|
|
|
|
|
|
|
```
|
|
|
|
PATH=$PATH:/usr/local/go/bin
|
|
|
|
```
|
|
|
|
|
2016-10-10 16:06:45 -07:00
|
|
|
### Running the server
|
2015-11-18 08:21:49 -05:00
|
|
|
|
|
|
|
To test the local UI against gerrit-review.googlesource.com:
|
2015-11-04 11:14:54 -05:00
|
|
|
|
|
|
|
```sh
|
2016-10-10 16:06:45 -07:00
|
|
|
./run-server.sh
|
2015-11-04 11:14:54 -05:00
|
|
|
```
|
|
|
|
|
|
|
|
Then visit http://localhost:8081
|
2015-11-18 08:21:49 -05:00
|
|
|
|
|
|
|
## Local UI, Test Data
|
|
|
|
|
|
|
|
One-time setup:
|
|
|
|
|
2016-11-15 06:35:29 -08:00
|
|
|
1. [Build Gerrit](https://gerrit-review.googlesource.com/Documentation/dev-bazel.html#_gerrit_development_war_file)
|
2016-10-10 16:06:45 -07:00
|
|
|
2. Set up a local test site. Docs
|
2016-08-01 12:13:24 -04:00
|
|
|
[here](https://gerrit-review.googlesource.com/Documentation/install-quick.html) and
|
|
|
|
[here](https://gerrit-review.googlesource.com/Documentation/dev-readme.html#init).
|
2015-11-18 08:21:49 -05:00
|
|
|
|
2016-08-01 12:13:24 -04:00
|
|
|
When your project is set up and works using the classic UI, run a test server
|
|
|
|
that serves PolyGerrit:
|
2015-11-18 08:21:49 -05:00
|
|
|
|
|
|
|
```sh
|
2017-04-25 12:37:51 +02:00
|
|
|
bazel build polygerrit &&
|
|
|
|
$(bazel info output_base)/external/local_jdk/bin/java \
|
|
|
|
-jar bazel-bin/polygerrit.war daemon --polygerrit-dev \
|
|
|
|
-d ../gerrit_testsite --console-log --show-stack-trace
|
2015-11-18 08:21:49 -05:00
|
|
|
```
|
|
|
|
|
|
|
|
## Running Tests
|
|
|
|
|
2015-11-23 14:59:24 -05:00
|
|
|
One-time setup:
|
|
|
|
|
|
|
|
```sh
|
|
|
|
# Debian/Ubuntu
|
|
|
|
sudo apt-get install npm
|
|
|
|
|
|
|
|
# OS X with Homebrew
|
|
|
|
brew install npm
|
|
|
|
|
|
|
|
# All platforms (including those above)
|
|
|
|
sudo npm install -g web-component-tester
|
|
|
|
```
|
|
|
|
|
|
|
|
Run all web tests:
|
|
|
|
|
|
|
|
```sh
|
2016-11-15 06:35:29 -08:00
|
|
|
./polygerrit-ui/app/run_test.sh
|
2015-11-23 14:59:24 -05:00
|
|
|
```
|
|
|
|
|
2017-05-09 10:27:59 -04:00
|
|
|
To allow the tests to run in Safari:
|
|
|
|
|
|
|
|
* In the Advanced preferences tab, check "Show Develop menu in menu bar".
|
|
|
|
* In the Develop menu, enable the "Allow Remote Automation" option.
|
2017-03-30 15:49:53 +09:00
|
|
|
|
2015-11-23 14:59:24 -05:00
|
|
|
If you need to pass additional arguments to `wct`:
|
|
|
|
|
2015-11-18 08:21:49 -05:00
|
|
|
```sh
|
2016-11-15 06:35:29 -08:00
|
|
|
WCT_ARGS='-p --some-flag="foo bar"' ./polygerrit-ui/app/run_test.sh
|
2015-11-18 08:21:49 -05:00
|
|
|
```
|
2016-02-12 21:54:38 +01:00
|
|
|
|
2016-03-29 18:56:38 +02:00
|
|
|
For interactively working on a single test file, do the following:
|
|
|
|
|
|
|
|
```sh
|
|
|
|
./polygerrit-ui/run-server.sh
|
|
|
|
```
|
|
|
|
|
|
|
|
Then visit http://localhost:8081/elements/foo/bar_test.html
|
|
|
|
|
2016-02-12 21:54:38 +01:00
|
|
|
## Style guide
|
|
|
|
|
|
|
|
We follow the [Google JavaScript Style Guide](https://google.github.io/styleguide/javascriptguide.xml)
|
|
|
|
with a few exceptions. When in doubt, remain consistent with the code around you.
|
2017-04-27 10:01:37 +02:00
|
|
|
|
|
|
|
In addition, we encourage the use of [ESLint](http://eslint.org/).
|
|
|
|
It is available as a command line utility, as well as a plugin for most editors
|
|
|
|
and IDEs. It, along with a few dependencies, can also be installed through NPM:
|
|
|
|
|
|
|
|
```sh
|
|
|
|
sudo npm install -g eslint eslint-config-google eslint-plugin-html
|
|
|
|
```
|
|
|
|
|
|
|
|
`eslint-config-google` is a port of the Google JS Style Guide to an ESLint
|
|
|
|
config module, and `eslint-plugin-html` allows ESLint to lint scripts inside
|
|
|
|
HTML.
|
|
|
|
We have an .eslintrc.json config file in the polygerrit-ui/ directory configured
|
|
|
|
to enforce the preferred style of the PolyGerrit project.
|
|
|
|
After installing, you can use `eslint` on any new file you create.
|
|
|
|
In addition, you can supply the `--fix` flag to apply some suggested fixes for
|
|
|
|
simple style issues.
|
|
|
|
If you modify JS inside of `<script>` tags, like for test suites, you may have
|
|
|
|
to supply the `--ext .html` flag.
|
2017-05-12 11:31:44 -07:00
|
|
|
|
|
|
|
Some useful commands:
|
|
|
|
|
|
|
|
* To run ESLint on the whole app, less some dependency code:
|
|
|
|
`eslint --ignore-pattern 'bower_components/' --ignore-pattern 'gr-linked-text' --ignore-pattern 'scripts/vendor' --ext .html,.js polygerrit-ui/app`
|
|
|
|
* To run ESLint on just the subdirectory you modified:
|
|
|
|
`eslint --ext .html,.js polygerrit-ui/app/$YOUR_DIR_HERE`
|
|
|
|
* To run the linter on all of your local changes:
|
|
|
|
`git diff --name-only master | xargs eslint --ext .html,.js`
|
2017-05-17 17:45:17 -07:00
|
|
|
|
|
|
|
We also use the polylint tool to lint use of Polymer. To install polylint,
|
|
|
|
execute the following command.
|
|
|
|
|
|
|
|
```sh
|
|
|
|
npm install -g polylint
|
|
|
|
```
|
|
|
|
|
|
|
|
To run polylint, execute the following command.
|
|
|
|
|
|
|
|
```sh
|
|
|
|
bazel test //polygerrit-ui/app:polylint_test
|
|
|
|
```
|
|
|
|
|