From a8b10ea3cb18143bb995a7637fc381c702c92d00 Mon Sep 17 00:00:00 2001 From: Michael Merickel <github@m.merickel.org> Date: Tue, 16 Oct 2018 02:56:45 +0200 Subject: [PATCH] Merge pull request #3389 from Pylons/remove-sudo-from-hacking --- HACKING.txt | 155 +++++++------------------------------- contributing.md | 69 ---------------- 2 files changed, 30 insertions(+), 194 deletions(-) diff --git a/HACKING.txt b/HACKING.txt index 032d98f..8129e9c 100644 --- a/HACKING.txt +++ b/HACKING.txt @@ -7,78 +7,12 @@ Using a Development Checkout ---------------------------- -You'll have to create a development environment to hack on Pyramid, using a -Pyramid checkout. You can either do this by hand, or if you have `tox` -installed, you can use it to set up a working development environment. +You will have to create a development environment to hack on Pyramid, using a +Pyramid checkout. We use `tox` to run tests, run test coverage, and build +documentation. -tox docs: http://tox.readthedocs.org/en/latest/ +tox docs: https://tox.readthedocs.io/en/latest/ tox on PyPI: https://pypi.org/project/tox/ - -Each installation method is described below. - - -By Hand -+++++++ - -- While logged into your GitHub account, navigate to the Pyramid repo on - GitHub. - - https://github.com/Pylons/pyramid - -- Fork and clone the Pyramid repository to your GitHub account by clicking - the "Fork" button. - -- Clone your fork of Pyramid from your GitHub account to your local computer, - substituting your account username and specifying the destination as - "hack-on-pyramid". - - $ cd ~ - $ git clone git@github.com:USERNAME/pyramid.git hack-on-pyramid - $ cd hack-on-pyramid - # Configure remotes such that you can pull changes from the Pyramid - # repository into your local repository. - $ git remote add upstream https://github.com/Pylons/pyramid.git - # fetch and merge changes from upstream into master - $ git fetch upstream - $ git merge upstream/master - -Now your local repo is set up such that you will push changes to your GitHub -repo, from which you can submit a pull request. - -- Create a virtual environment in which to install Pyramid: - - $ cd ~/hack-on-pyramid - $ python3 -m venv env - - From here on in within these instructions, the `~/hack-on-pyramid/env` - virtual environment you created above will be referred to as `$VENV`. - To use the instructions in the steps that follow literally, use the - `export VENV=~/hack-on-pyramid/env` command. - -- Install Pyramid from the checkout into the virtual environment, where the - current working directory is the `pyramid` checkout directory. We will - install Pyramid in editable (development) mode as well as its testing - requirements. - - $ cd ~/hack-on-pyramid - $ $VENV/bin/pip install -e ".[testing,docs]" - -- Optionally create a new Pyramid project using `pcreate`: - - $ cd $VENV - $ bin/pcreate -s starter starter - -- ...and install the new project into the virtual environment: - - $ cd $VENV/starter - $ $VENV/bin/pip install -e . - - -Using `Tox` -+++++++++++ - -Alternatively, if you already have `tox` installed, there is an easier -way to get going. - Create a new directory somewhere and `cd` to it: @@ -90,22 +24,6 @@ $ git clone git://github.com/Pylons/pyramid.git . Alternatively, create a writeable fork on GitHub and clone it. - -Since Pyramid is a framework and not an application, it can be convenient to -work against a sample application, preferably in its own virtual environment. A -quick way to achieve this is to use `tox` with a custom configuration file -that is part of the checkout: - - $ tox -c hacking-tox.ini - -This will create a python-2.7 based virtual environment named `env27` -(Pyramid's `.gitconfig` ignores all top-level folders that start with `env` -specifically in our use case), and inside that a simple pyramid application -named `hacking` that you can then fire up like so: - - $ cd env27/hacking - $ ../bin/pip install -e ".[testing,docs]" - $ ../bin/pserve development.ini Adding Features @@ -136,26 +54,30 @@ Coding Style ------------ -- PEP8 compliance. Whitespace rules are relaxed: not necessary to put two - newlines between classes. But 79-column lines, in particular, are mandatory. - See https://pylonsproject.org/community-coding-style-standards.html for more - information. +- Pyramid uses Black for code formatting style. + https://pypi.org/project/black/ + To run Black: -- Please do not remove trailing whitespace. Configure your editor to reduce - diff noise. See https://github.com/Pylons/pyramid/issues/788 for more. + $ tox -e black Running Tests ------------- -- To run all tests for Pyramid on a single Python version from your development - virtual environment (See *Using a Development Checkout* above), run - `nosetests`: +- The `tox.ini` uses `nose` and `coverage`. As such `tox` may be used + to run groups of tests or only a specific version of Python. For example, the + following command will run tests on Python 3.7 only without coverage: - $ $VENV/bin/nosetests + $ tox -e py37 + + This command will run tests on the latest versions of Python 2 and 3 with + coverage totaled for both versions. + + $ tox -e py2-cover,py3-cover,coverage - To run individual tests (i.e., during development), you can use `nosetests` - syntax as follows: + syntax as follows, where `$VENV` is an environment variable set to the path + to your virtual environment: # run a single test $ $VENV/bin/nosetests pyramid.tests.test_module:ClassName.test_mytestname @@ -163,46 +85,25 @@ # run all tests in a class $ $VENV/bin/nosetests pyramid.tests.test_module:ClassName - Optionally you can install a nose plugin, `nose-selecttests` - ( https://pypi.org/project/nose-selecttests/ ), and use a regular - expression with the `-t` parameter to run tests. + Optionally you can install a nose plugin `nose-selecttests` to run specific + tests. + https://pypi.org/project/nose-selecttests/ + For example, use a regular expression with the `-t` parameter to run tests. # run a single test $ $VENV/bin/nosetests -t test_mytestname -- The `tox.ini` uses `nose` and `coverage`. As such `tox` may be used - to run groups of tests or only a specific version of Python. For example, the - following command will run tests on Python 2.7 only without coverage: - - $ tox -e py27 - - This command will run tests on the latest versions of Python 2 and 3 with - coverage totaled for both versions. - - $ tox -e py2-cover,py3-cover,coverage - -- To run the full set of Pyramid tests on all platforms, install `tox` into a - system Python. The `tox` console script will be installed into the scripts - location for that Python. While `cd`'ed to the Pyramid checkout root - directory (it contains `tox.ini`), invoke the `tox` console script. This - will read the `tox.ini` file and execute the tests on multiple Python - versions and platforms. While it runs, it creates a virtual environment - for each version/platform combination. For example: - - $ sudo /usr/bin/pip install tox - $ cd ~/hack-on-pyramid/ - $ /usr/bin/tox - -- The tests can also be run using `pytest` ( http://pytest.org/ ). This is - intended as a convenience for people who are more used to or fond of - `pytest`. Run the tests like so: +- The tests can also be run using `pytest`. + https://docs.pytest.org/en/latest/ + This is intended as a convenience for people who prefer `pytest`. Run the + tests like so: $ $VENV/bin/pip install pytest $ $VENV/bin/pytest --strict pyramid/ To run individual tests (i.e., during development), see "pytest usage - Specifying tests / selecting tests": - http://pytest.org/latest/usage.html#specifying-tests-selecting-tests + https://docs.pytest.org/en/latest/usage.html#specifying-tests-selecting-tests - Functional tests related to the "scaffolds" (starter, zodb, alchemy) which create a virtual environment, install the scaffold package and its diff --git a/contributing.md b/contributing.md index aa0f107..734f014 100644 --- a/contributing.md +++ b/contributing.md @@ -22,71 +22,6 @@ Older branches are not actively maintained. In general, two stable branches and one or two development branches are actively maintained. -## Prerequisites +## Developing -Follow the instructions in HACKING.txt for your version or branch located in -the [root of the Pyramid repository](https://github.com/Pylons/pyramid/) to -install Pyramid and the tools needed to run its tests and build its -documentation. - -## Building documentation for a Pylons Project project - -*Note:* These instructions might not work for Windows users. Suggestions to -improve the process for Windows users are welcome by submitting an issue or a -pull request. Windows users may find it helpful to follow the guide [Installing -Pyramid on a Windows -System](https://docs.pylonsproject.org/projects/pyramid/en/latest/narr/install.html#installing-pyramid-on-a-windows-system). - -1. Fork the repo on GitHub by clicking the [Fork] button. -2. Clone your fork into a workspace on your local machine. - - git clone git@github.com:<username>/pyramid.git - -3. Change directories into the cloned repository - - cd pyramid - -4. Add a git remote "upstream" for the cloned fork. - - git remote add upstream git@github.com:Pylons/pyramid.git - -5. Create a virtual environment and set an environment variable as instructed in the - [prerequisites](https://github.com/Pylons/pyramid/blob/master/HACKING.txt#L48-L56). - - # Mac and Linux - $ export VENV=~/hack-on-pyramid/env - - # Windows - set VENV=c:\hack-on-pyramid\env - -6. Install `tox` into your virtual environment. - - $ $VENV/bin/pip install tox - -7. Try to build the docs in your workspace. - - $ $VENV/bin/tox -e docs - - When the build finishes, you'll find HTML documentation rendered in - `.tox/docs/html`. An `epub` version will be in `.tox/docs/epub`. And the - result of the tests that are run on the documentation will be in - `.tox/docs/doctest`. - -8. From this point forward, follow the typical [git - workflow](https://help.github.com/articles/what-is-a-good-git-workflow/). - *Always* start by pulling from the upstream to get the most current changes. - - git pull upstream master - -9. Make a branch, make changes to the docs, and rebuild them as indicated above. - -10. Once you are satisfied with your changes and the documentation builds - successfully without errors or warnings, then git commit and push them to - your "origin" repository on GitHub. - - git commit -m "commit message" - git push -u origin --all # first time only, subsequent can be just 'git push'. - -11. Create a [pull request](https://help.github.com/articles/using-pull-requests/). - -12. Repeat the process starting from Step 8. +Follow the instructions in [HACKING.txt](https://github.com/Pylons/pyramid/blob/master/HACKING.txt) to install Pyramid and the tools needed to run its tests and build its documentation. -- Gitblit v1.9.3