version: 2.1 executors: python37: docker: - image: circleci/python:3.7.9 resource_class: small python38: docker: - image: circleci/python:3.8.6 resource_class: small python39: docker: - image: cimg/python:3.9.0 resource_class: small with_browser: docker: - image: cimg/python:3.9.0-browsers resource_class: small commands: get_poetry_deps: steps: - run: name: Checking Python version command: python --version > /tmp/pythonversion - restore_cache: key: 'deps-00-{{ checksum "poetry.lock" }}-{{ checksum "/tmp/pythonversion" }}' - run: name: Installing dependencies command: | poetry config --local virtualenvs.in-project true poetry install --no-root --remove-untracked - save_cache: key: 'deps-00-{{ checksum "poetry.lock" }}-{{ checksum "/tmp/pythonversion" }}' paths: - ~/project/.venv install_pa11y: steps: - restore_cache: key: deps-00-pa11y - run: name: Install accessibility software (pa11y) command: npm install pa11y pa11y-reporter-junit - save_cache: key: deps-00-pa11y paths: - ~/project/node_modules pytest: steps: - run: name: Tests - Pytest when: always command: > poetry run pytest --junitxml=reports/pytest/results.xml behave: steps: - run: name: Tests - Behave when: always command: > poetry run behave --no-skipped --format progress2 --junit --junit-directory reports/behave lint: steps: - run: name: Poetry Check when: always command: | poetry --version poetry check - run: name: Black Code Formatter when: always command: | poetry run black --version poetry run black --check --diff . - run: name: PyFlakes when: always command: | poetry run pyflakes --version poetry run pyflakes jrnl features tests aliases: linux_test: &linux_test steps: - checkout - get_poetry_deps - run: poetry install - pytest - behave - store_test_results: path: reports jobs: test_37_linux: executor: python37 <<: *linux_test test_38_linux: executor: python38 <<: *linux_test test_39_linux: executor: python39 <<: *linux_test linting: executor: python39 steps: - checkout - get_poetry_deps - lint docs_a11y: executor: with_browser steps: - checkout - get_poetry_deps - install_pa11y - run: name: Starting mkdocs server command: poetry run mkdocs serve background: true - run: poetry run .circleci/pa11y.sh - store_test_results: path: reports workflows: version: 2 main: jobs: - docs_a11y: name: Documentation site (jrnl.sh) accessibility - linting: name: Linting and Formatting - test_37_linux: name: Python 3.7 - Linux - test_38_linux: name: Python 3.8 - Linux - test_39_linux: name: Python 3.9 - Linux