From d11e714fb7e9ba5343baf9c5e510e6a88b3a6d52 Mon Sep 17 00:00:00 2001 From: Edmond Chuc Date: Wed, 7 Jul 2021 10:02:01 +1000 Subject: [PATCH 1/3] Add running tests instructions to README. Add scripts and files to run tests in a Docker container. --- Dockerfile | 12 ++++++++++ Makefile | 8 +++++++ README.md | 37 +++++++++++++++++++++++++++++++ docker-compose.yml | 12 ++++++++++ run_tests.sh | 9 ++++++++ run_tests_with_coverage_report.sh | 9 ++++++++ 6 files changed, 87 insertions(+) create mode 100644 Dockerfile create mode 100644 Makefile create mode 100644 docker-compose.yml create mode 100755 run_tests.sh create mode 100755 run_tests_with_coverage_report.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..bb92a3b0d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +# Docker image for the rdflib test-runner. + +# Use the lowest supported Python version to run tests. +FROM python:3.6 + +COPY requirements.dev.txt . +COPY requirements.txt . + +RUN pip install --no-cache -r requirements.dev.txt +RUN pip install --no-cache -r requirements.txt + +WORKDIR /rdflib diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..cd9d8032a --- /dev/null +++ b/Makefile @@ -0,0 +1,8 @@ +tests: + docker compose up test-runner --exit-code-from test-runner + +build: + docker compose build + +coverage: + docker compose up test-runner-coverage --exit-code-from test-runner-coverage \ No newline at end of file diff --git a/README.md b/README.md index a8478ffc4..962f33606 100644 --- a/README.md +++ b/README.md @@ -183,6 +183,43 @@ You can also raise issues here: * +## Running tests + +### Running the tests on the host + +Run the test suite with `nose`. +```shell +nosetests +``` + +### Running test coverage on the host with coverage report + +Run the test suite and generate a HTML coverage report with `nose` and `coverage`. +```shell +nosetests --with-timer --timer-top-n 42 --with-coverage --cover-tests --cover-package=rdflib +``` + +### Running the tests in a Docker container + +Run the test suite inside a Docker container for cross-platform support. This resolves issues such as installing BerkeleyDB on Windows and avoids the host and port issues on macOS. +```shell +make tests +``` + +Tip: If the underlying Dockerfile for the test runner changes, use `make build`. + +### Running the tests in a Docker container with coverage report + +Run the test suite inside a Docker container with HTML coverage report. + +### Viewing test coverage + +Once tests have produced HTML output of the coverage report, view it by running: +```shell +python -m http.server --directory=cover +``` + + ## Contacts If you want to contact the rdflib maintainers, please do so via the rdflib-dev mailing list: diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..0103edcc3 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,12 @@ +services: + test-runner: + build: . + volumes: + - .:/rdflib + command: ["/rdflib/run_tests.sh"] + + test-runner-coverage: + build: . + volumes: + - .:/rdflib + command: ["/rdflib/run_tests_with_coverage_report.sh"] \ No newline at end of file diff --git a/run_tests.sh b/run_tests.sh new file mode 100755 index 000000000..ddf2f7b44 --- /dev/null +++ b/run_tests.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +cd /rdflib +pip install -e . + +test_command="nosetests --with-timer --timer-top-n 42 --with-coverage --cover-tests --cover-package=rdflib" +echo "Running tests..." +echo "Test command: $test_command" +$test_command \ No newline at end of file diff --git a/run_tests_with_coverage_report.sh b/run_tests_with_coverage_report.sh new file mode 100755 index 000000000..a5383aaf6 --- /dev/null +++ b/run_tests_with_coverage_report.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +cd /rdflib +pip install -e . + +test_command="nosetests --with-timer --timer-top-n 42 --with-coverage --cover-tests --cover-package=rdflib --cover-html" +echo "Running tests..." +echo "Test command: $test_command" +$test_command \ No newline at end of file From 198c92f5eca53cee378ae9c2bffb61d8d3e29580 Mon Sep 17 00:00:00 2001 From: Edmond Chuc Date: Wed, 7 Jul 2021 15:11:14 +1000 Subject: [PATCH 2/3] Move tests Dockerfile image to the test directory. Rename docker-compose.yml to docker-compose.tests.yml. --- Makefile | 8 +++++--- docker-compose.yml => docker-compose.tests.yml | 8 ++++++-- Dockerfile => test/Dockerfile | 0 3 files changed, 11 insertions(+), 5 deletions(-) rename docker-compose.yml => docker-compose.tests.yml (62%) rename Dockerfile => test/Dockerfile (100%) diff --git a/Makefile b/Makefile index cd9d8032a..7c484cfc7 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,10 @@ tests: - docker compose up test-runner --exit-code-from test-runner + docker-compose -f docker-compose.tests.yml up test-runner + docker-compose -f docker-compose.tests.yml down build: - docker compose build + docker-compose -f docker-compose.tests.yml build coverage: - docker compose up test-runner-coverage --exit-code-from test-runner-coverage \ No newline at end of file + docker-compose -f docker-compose.tests.yml up test-runner-coverage + docker-compose -f docker-compose.tests.yml down \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.tests.yml similarity index 62% rename from docker-compose.yml rename to docker-compose.tests.yml index 0103edcc3..c71e3143f 100644 --- a/docker-compose.yml +++ b/docker-compose.tests.yml @@ -1,12 +1,16 @@ services: test-runner: - build: . + build: + context: . + dockerfile: test/Dockerfile volumes: - .:/rdflib command: ["/rdflib/run_tests.sh"] test-runner-coverage: - build: . + build: + context: . + dockerfile: test/Dockerfile volumes: - .:/rdflib command: ["/rdflib/run_tests_with_coverage_report.sh"] \ No newline at end of file diff --git a/Dockerfile b/test/Dockerfile similarity index 100% rename from Dockerfile rename to test/Dockerfile From b9d7c7202211bfcf15e9956bd3f25cb63dd6eb34 Mon Sep 17 00:00:00 2001 From: Edmond Chuc Date: Wed, 7 Jul 2021 15:37:35 +1000 Subject: [PATCH 3/3] Add Dockerfile VOLUME instruction. Add RUN statement to create /rdflib directory. --- test/Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/Dockerfile b/test/Dockerfile index bb92a3b0d..462f55a2b 100644 --- a/test/Dockerfile +++ b/test/Dockerfile @@ -9,4 +9,6 @@ COPY requirements.txt . RUN pip install --no-cache -r requirements.dev.txt RUN pip install --no-cache -r requirements.txt +RUN mkdir -p /rdflib +VOLUME /rdflib WORKDIR /rdflib