diff --git a/README.md b/README.md index 7c9a5f4a84..349b82d2c2 100644 --- a/README.md +++ b/README.md @@ -148,6 +148,10 @@ After using this generator, your new project (the directory created) will contai ### Next release +* Fix locations of scripts in generated README. PR [#19](https://github.com/tiangolo/full-stack-fastapi-postgresql/pull/19) by [@ebreton](https://github.com/ebreton). + +* Forward arguments from script to `pytest` inside container. PR [#17](https://github.com/tiangolo/full-stack-fastapi-postgresql/pull/17) by [@ebreton](https://github.com/ebreton). + * Update development scripts. * Read Alembic configs from env vars. PR #9 by @ebreton. diff --git a/{{cookiecutter.project_slug}}/README.md b/{{cookiecutter.project_slug}}/README.md index bc75538feb..defd2dd47e 100644 --- a/{{cookiecutter.project_slug}}/README.md +++ b/{{cookiecutter.project_slug}}/README.md @@ -123,10 +123,10 @@ Nevertheless, if it doesn't detect a change but a syntax error, it will just sto To test the backend run: ```bash -DOMAIN=backend sh ./script-test.sh +DOMAIN=backend sh ./scripts/test.sh ``` -The file `./script-test.sh` has the commands to generate a testing `docker-stack.yml` file from the needed Docker Compose files, start the stack and test it. +The file `./scripts/test.sh` has the commands to generate a testing `docker-stack.yml` file from the needed Docker Compose files, start the stack and test it. The tests run with Pytest, modify and add tests to `./backend/app/app/tests/`. @@ -134,6 +134,22 @@ If you need to install any additional package for the tests, add it to the file If you use GitLab CI the tests will run automatically. +#### Test running stack + +If your stack is already up and you just want to run the tests, you can use: + +```bash +docker-compose exec backend-tests /tests-start.sh +``` + +That `/tests-start.sh` script inside the `backend-tests` container calls `pytest`. If you need to pass extra arguments to `pytest`, you can pass them to that command and they will be forwarded. + +For example, to stop on first error: + +```bash +docker-compose exec backend-tests /tests-start.sh -x +``` + ### Live development with Python Jupyter Notebooks If you know about Python [Jupyter Notebooks](http://jupyter.org/), you can take advantage of them during local development. @@ -384,7 +400,7 @@ Then you need to have those constraints in your deployment Docker Compose file f To be able to use different environments, like `prod` and `stag`, you should pass the name of the stack as an environment variable. Like: ```bash -STACK_NAME={{cookiecutter.docker_swarm_stack_name_staging}} sh ./script-deploy.sh +STACK_NAME={{cookiecutter.docker_swarm_stack_name_staging}} sh ./scripts/deploy.sh ``` To use and expand that environment variable inside the `docker-compose.deploy.volumes-placement.yml` files you can add the constraints to the services like: @@ -401,7 +417,7 @@ services: - node.labels.${STACK_NAME}.app-db-data == true ``` -note the `${STACK_NAME}`. In the script `./script-deploy.sh`, that `docker-compose.deploy.volumes-placement.yml` would be converted, and saved to a file `docker-stack.yml` containing: +note the `${STACK_NAME}`. In the script `./scripts/deploy.sh`, that `docker-compose.deploy.volumes-placement.yml` would be converted, and saved to a file `docker-stack.yml` containing: ```yaml version: '3' @@ -490,10 +506,10 @@ Here are the steps in detail: * Set these environment variables, prepended to the next command: * `TAG=prod` * `FRONTEND_ENV=production` -* Use the provided `script-build.sh` file with those environment variables: +* Use the provided `scripts/build.sh` file with those environment variables: ```bash -TAG=prod FRONTEND_ENV=production bash ./script-build.sh +TAG=prod FRONTEND_ENV=production bash ./scripts/build.sh ``` 2. **Optionally, push your images to a Docker Registry** @@ -505,10 +521,10 @@ If you are using a registry and pushing your images, you can omit running the pr * Set these environment variables: * `TAG=prod` * `FRONTEND_ENV=production` -* Use the provided `script-build-push.sh` file with those environment variables: +* Use the provided `scripts/build-push.sh` file with those environment variables: ```bash -TAG=prod FRONTEND_ENV=production bash ./script-build.sh +TAG=prod FRONTEND_ENV=production bash ./scripts/build-push.sh ``` 3. **Deploy your stack** @@ -518,14 +534,14 @@ TAG=prod FRONTEND_ENV=production bash ./script-build.sh * `TRAEFIK_TAG={{cookiecutter.traefik_constraint_tag}}` * `STACK_NAME={{cookiecutter.docker_swarm_stack_name_main}}` * `TAG=prod` -* Use the provided `script-deploy.sh` file with those environment variables: +* Use the provided `scripts/deploy.sh` file with those environment variables: ```bash DOMAIN={{cookiecutter.domain_main}} \ TRAEFIK_TAG={{cookiecutter.traefik_constraint_tag}} \ STACK_NAME={{cookiecutter.docker_swarm_stack_name_main}} \ TAG=prod \ -bash ./script-deploy.sh +bash ./scripts/deploy.sh ``` --- diff --git a/{{cookiecutter.project_slug}}/backend/app/tests-start.sh b/{{cookiecutter.project_slug}}/backend/app/tests-start.sh index 1065fdc57a..a500dfb2e5 100644 --- a/{{cookiecutter.project_slug}}/backend/app/tests-start.sh +++ b/{{cookiecutter.project_slug}}/backend/app/tests-start.sh @@ -3,4 +3,4 @@ set -e python /app/app/tests_pre_start.py -pytest /app/app/tests/ +pytest $* /app/app/tests/