Skip to content

Commit

Permalink
Merge pull request #1352 from RDFLib/feat/tests-improve
Browse files Browse the repository at this point in the history
Improve running tests locally
  • Loading branch information
edmondchuc authored Jul 7, 2021
2 parents 538446e + b9d7c72 commit f7313bf
Show file tree
Hide file tree
Showing 6 changed files with 95 additions and 0 deletions.
10 changes: 10 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
tests:
docker-compose -f docker-compose.tests.yml up test-runner
docker-compose -f docker-compose.tests.yml down

build:
docker-compose -f docker-compose.tests.yml build

coverage:
docker-compose -f docker-compose.tests.yml up test-runner-coverage
docker-compose -f docker-compose.tests.yml down
37 changes: 37 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,43 @@ You can also raise issues here:
* <https://github.com/RDFLib/rdflib/issues>


## 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:

Expand Down
16 changes: 16 additions & 0 deletions docker-compose.tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
services:
test-runner:
build:
context: .
dockerfile: test/Dockerfile
volumes:
- .:/rdflib
command: ["/rdflib/run_tests.sh"]

test-runner-coverage:
build:
context: .
dockerfile: test/Dockerfile
volumes:
- .:/rdflib
command: ["/rdflib/run_tests_with_coverage_report.sh"]
9 changes: 9 additions & 0 deletions run_tests.sh
Original file line number Diff line number Diff line change
@@ -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
9 changes: 9 additions & 0 deletions run_tests_with_coverage_report.sh
Original file line number Diff line number Diff line change
@@ -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
14 changes: 14 additions & 0 deletions test/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# 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

RUN mkdir -p /rdflib
VOLUME /rdflib
WORKDIR /rdflib

0 comments on commit f7313bf

Please sign in to comment.