Go to file
Tim Abbott 602077f75b We're no longer using the review script.
(imported from commit 9840ebdfdacee6e3cb32934b81502c70c133e2b0)
2015-09-20 00:10:54 -07:00
analytics Simplify analytics code to not filter certain low-interest users/realms. 2015-09-19 23:42:28 -07:00
api Change API example usernames to use example.com domain. 2015-09-19 18:12:02 -07:00
assets Allow enterprise deployments to disable the use of Gravatar. 2013-11-18 11:48:53 -05:00
bin logging: Log management commands that are run. 2013-11-20 14:31:08 -05:00
bots Change API example usernames to use example.com domain. 2015-09-19 18:12:02 -07:00
confirmation enterprise => voyager 2015-08-21 10:33:35 -07:00
corporate Remove corporate beta signup form 2015-08-20 18:40:34 -07:00
docs Add backend tests location 2015-08-22 13:08:11 -07:00
node_modules Upgrade handlebars to 1.3.0. 2014-01-15 16:07:20 -05:00
puppet Fix existing tab-based whitespace in the codebase. 2015-09-19 23:23:02 -07:00
scripts Connect to the zulip database correctly in postgres-init-db 2015-08-29 12:07:33 -07:00
static Clarify the left_side_userlist comment. 2015-09-19 23:39:54 -07:00
templates Remove the send_to_prod hack. 2015-09-19 21:54:51 -07:00
tools We're no longer using the review script. 2015-09-20 00:10:54 -07:00
zerver Simplify analytics code to not filter certain low-interest users/realms. 2015-09-19 23:42:28 -07:00
zilencer Modernize management command for deactivating a realm. 2015-09-19 19:10:27 -07:00
zproject Add UserProfile flag to control whether we have a left side userlist. 2015-09-19 23:22:59 -07:00
.gitattributes enterprise: Don't include templates/zilencer in our tarballs 2013-11-15 11:53:49 -05:00
.gitignore Add dev-secrets.conf generated by latest version of dev VM to gitignore 2015-08-20 17:33:17 -07:00
LICENSE Add license not referring to Zulip Enterprise license agreement. 2013-11-14 11:16:15 -05:00
README.dev Fix some test-related documentation in the README. 2015-09-19 15:51:26 -07:00
Vagrantfile Run provision.py as a provisioner. 2015-08-19 21:07:22 -07:00
manage.py logging: Log management commands that are run. 2013-11-20 14:31:08 -05:00
provision.py Add puppet to provision.py 2015-08-23 21:35:14 -07:00
requirements.txt Remove OpenID authentication 2015-08-20 23:52:48 -07:00
zulip_tools.py Move su_to_zulip into zulip_tools.py 2013-11-13 16:56:59 -05:00

README.dev

Getting started
===============

Using Vagrant
-------------

This is the recommended approach, and is tested on OS X 10.10 as well as Ubuntu 14.04.

If your host is OS X, download VirtualBox from <http://download.virtualbox.org/virtualbox/4.3.30/VirtualBox-4.3.30-101610-OSX.dmg> and install it.

If your host is Ubuntu 14.04:
  sudo apt-get install vagrant lxc lxc-templates cgroup-lite redir

Once that's done, simply change to your zulip directory and run `vagrant up` in your terminal. You can now visit <http://localhost:9991/> in your browser.  To get shell access to the virtual machine running the server, use `vagrant ssh`.

By hand
-------

Install the following non-Python dependencies:
 * libffi-dev — needed for some Python extensions
 * postgresql 9.1 or later — our database (also install development headers)
 * memcached (and headers)
 * rabbitmq-server
 * libldap2-dev
 * python-dev
 * redis-server — rate limiting
 * tsearch-extras — better text search

On Debian or Ubuntu systems:
  sudo apt-get install libffi-dev memcached rabbitmq-server libldap2-dev redis-server postgresql-server-dev-all libmemcached-dev

  # If on 12.04 or wheezy:
  sudo apt-get install postgresql-9.1
  wget https://dl.dropboxusercontent.com/u/283158365/zuliposs/postgresql-9.1-tsearch-extras_0.1.2_amd64.deb
  sudo dpkg -i postgresql-9.1-tsearch-extras_0.1.2_amd64.deb

  # If on 14.04:
  sudo apt-get install postgresql-9.3
  wget https://dl.dropboxusercontent.com/u/283158365/zuliposs/postgresql-9.3-tsearch-extras_0.1.2_amd64.deb
  sudo dpkg -i postgresql-9.3-tsearch-extras_0.1.2_amd64.deb

  # If on 15.04 or jessie:
  sudo apt-get install postgresql-9.4
  wget https://dl.dropboxusercontent.com/u/283158365/zuliposs/postgresql-9.4-tsearch-extras_0.1_amd64.deb
  sudo dpkg -i postgresql-9.4-tsearch-extras_0.1_amd64.deb

  # Then, all versions:
  pip install -r requirements.txt
  ./scripts/setup/configure-rabbitmq
  ./tools/postgres-init-db
  ./tools/do-destroy-rebuild-database

To start the development server:
  ./tools/run-dev.py

… and hit http://localhost:9991/.


Running the test suite
======================

One-time setup of test databases:
  ./tools/postgres-init-test-db
  ./tools/do-destroy-rebuild-test-database

Run all tests:
  ./tools/test-all

This runs the linter plus all of our test suites; they can all be run
separately (just read `tools/test-all` to see them).  You can also run
individual tests, e.g.:
  ./tools/test-backend zerver.test_bugdown.BugdownTest.test_inline_youtube
  ./tools/test-js-with-casper 10-navigation.js

Possible issues
===============

The Casper tests are flaky on the Virtualbox environment (probably due
to some performance-sensitive races).  Until this issue is debugged,
you may need to rerun them to get them to pass.

When running the test suite, if you get an error like this:
    sqlalchemy.exc.ProgrammingError: (ProgrammingError) function ts_match_locs_array(unknown, text, tsquery) does not exist
    LINE 2: ...ECT message_id, flags, subject, rendered_content, ts_match_l...
                                                                 ^
… then you need to install tsearch-extras, described above. Afterwards, re-run the init*-db and the do-destroy-rebuild*-database scripts.