Go to file
Steve Howell 06225d1424 tests: Clean up calls to tools/webpack.
Before this change, the way we loaded
webpack for various tools was brittle.

First, I addressed test-api and test-help-documentation.

These tools used to be unable to run standalone on a
clean provision, because they were (indirectly)
calling tools/webpack without the `--test` option.

The problem was a bit obscure, since running things
like `./tools/test-backend` or `./tools/test-all` in
your workflow would create `./var/webpack-stats-test.json`
for the broken tools (and then they would work).

The tools themselves weren't broken; they were the
only relying on the common `test_server_running` helper.
And even that helper wasn't broken; it was just that
`run-dev.py` wasn't respecting the `--test` option.

So I made it so that `./tools/run-dev` passes in `--test` to
`./tools/webpack`.

To confuse matters even more, for some reason Casper
uses `./webpack-stats-production.json` via various
hacks for its webpack configuration, so when I fixed
the other tests, it broke Casper.

Here is the Casper-related hack in zproject/test_settings.py,
which was in place before my change and remains
after it:

    if CASPER_TESTS:
        WEBPACK_FILE = 'webpack-stats-production.json'
    else:
        WEBPACK_FILE = os.path.join('var', 'webpack-stats-test.json')

I added similar logic in tools/webpack:

    if "CASPER_TESTS" in os.environ:
        build_for_prod_or_casper(args.quiet)

I also made the helper functions in `./tools/webpack` have
nicer names.

So, now tools should all be able to run standalone and not
rely on previous tools creating webpack stats files for
them and leaving them in the file system.  That's good.

Things are still a bit janky, though.  It's not completely
clear to me why `test-js-with-casper` should work off of
a different webpack configuration than the other tests.

For now most of the jankiness is around Casper, and we have
hacks in two different places, `zproject/test_settings.py` and
`tools/webpack` to force it to use the production stats
file instead of the "test" one, even though Casper uses
test-like settings for other things like which database
you're using.
2018-09-07 11:39:55 -04:00
.circleci circleci: Add support for Ubuntu Bionic. 2018-06-01 18:02:50 -07:00
.github github: Suggest GIFs too in PR template. 2018-02-16 09:59:22 -08:00
.tx tx config: Update slug for mobile. 2018-06-17 17:32:25 -07:00
analytics populate_analytics_db: Make shylock an organization admin. 2018-08-31 15:26:15 -07:00
confirmation confirmation: Removed unused send_email import. 2018-06-16 05:27:04 -07:00
corporate corporate: Remove unused imports (F401). 2017-11-07 16:37:04 -08:00
docs auth: Use different defaults for name and email for fakeldap. 2018-08-31 17:07:02 +05:30
frontend_tests typeahead: Insert extended mention syntax for users with same full name. 2018-08-31 14:16:47 -07:00
pgroonga pgroonga: Upgrade to PGroonga 2 API. 2018-05-31 13:00:34 -07:00
puppet puppet: Fix puppet-lint warnings in various manifests. 2018-08-28 13:46:31 -07:00
requirements pypi: Upgrade to release 0.5.4. 2018-08-31 13:44:59 -07:00
scripts postgres-init-db: Throw an error if not run as root. 2018-08-21 11:36:50 -07:00
static portico: Change buttons on /plans to reflect current plan. 2018-09-05 13:44:35 -07:00
stubs billing: Fix mypy stubs to use keyword args instead of positional args. 2018-08-31 17:51:16 -07:00
templates portico: Change buttons on /plans to reflect current plan. 2018-09-05 13:44:35 -07:00
tools tests: Clean up calls to tools/webpack. 2018-09-07 11:39:55 -04:00
zerver billing: Hide /plans if Realm.plan_type=SELF_HOSTED. 2018-09-05 13:44:35 -07:00
zilencer billing: Fix RealmAuditLog accounting for downgrade. 2018-09-01 09:42:10 -07:00
zproject plans: Redirect to login if /plans is accessed from realm subdomain. 2018-09-05 13:44:35 -07:00
zthumbor thumbor: Make local_file_path logic more obvious. 2018-08-10 17:20:43 -07:00
.codecov.yml Try to avoid codecov spam. 2017-12-29 07:23:26 -05:00
.editorconfig editorconfig: Declare max line lengths for JS/Python code. 2018-08-08 09:48:17 -07:00
.eslintignore zulip_ops: Delete the long-disused `stats1.zulip.net` config and its dependencies. 2017-08-15 17:30:31 -07:00
.eslintrc.json frontend: Create data structure for starred messages. 2018-08-21 13:42:23 -07:00
.gitattributes gitattributes: Treat .ogg files as binary. 2018-04-27 09:59:19 -07:00
.gitignore mypy: Add basic support for invoking dmypy to run-mypy. 2018-05-21 22:41:08 -07:00
.gitlint lint: Allow revert commit messages in gitlint. 2018-02-13 09:21:01 -08:00
.isort.cfg tornado: Fix logging of tornado activity level. 2018-04-17 15:59:01 -07:00
.npmignore
.stylelintrc stylelint: Add more stylistic rules to lock down CSS a bit tighter. 2018-07-27 00:15:58 -07:00
.travis.yml travis: Disable most suites in favor of CircleCI! 2018-01-31 11:10:03 -08:00
CODE_OF_CONDUCT.md repository: Add CODE_OF_CONDUCT.md. 2017-06-14 18:43:08 -07:00
CONTRIBUTING.md docs: Add clarification for help wanted and good first issue labels. 2018-08-20 19:17:47 -07:00
Dockerfile-dev Move Dockerfile to Dockerfile-dev. 2017-09-25 12:32:33 -07:00
Dockerfile-postgresql docker: Add PGroonga support to Postgresql Dockerfile. 2018-05-23 11:53:32 -07:00
LICENSE docs: Move license declaration from README.md to LICENSE. 2017-11-14 16:04:23 -08:00
README.md README: Document support for Debian and Bionic. 2018-07-01 01:47:03 -07:00
Vagrantfile Vagrantfile: Fix typo in spelling of problems. 2018-06-01 11:58:09 -07:00
manage.py manage.py: Catch issue with users running manage.py as the wrong user. 2018-07-30 12:34:48 -07:00
mypy.ini mypy: Switch back to a blanket `ignore_missing_imports = True`. 2018-08-06 12:14:36 -07:00
package.json build_emoji: Add infrastructure for google-blob and twitter emojisets. 2018-08-31 11:52:24 -07:00
version.py version: Bump after 1.9.0-rc2 release. 2018-08-31 16:13:15 -07:00
yarn.lock build_emoji: Add infrastructure for google-blob and twitter emojisets. 2018-08-31 11:52:24 -07:00

README.md

Zulip overview

Zulip is a powerful, open source group chat application that combines the immediacy of real-time chat with the productivity benefits of threaded conversations. Zulip is used by open source projects, Fortune 500 companies, large standards bodies, and others who need a real-time chat system that allows users to easily process hundreds or thousands of messages a day. With over 300 contributors merging over 500 commits a month, Zulip is also the largest and fastest growing open source group chat project.

CircleCI Build Status Travis Build Status Coverage Status Mypy coverage docs Zulip chat Twitter

Getting started

Click on the appropriate link below. If nothing seems to apply, join us on the Zulip community server and tell us what's up!

You might be interested in:

You may also be interested in reading our blog or following us on twitter. Zulip is distributed under the Apache 2.0 license.