Skip to content

Commit 60a6a86

Browse files
committed
Add integration tests against a real Trac instance
1 parent ad68cd3 commit 60a6a86

File tree

2 files changed

+43
-22
lines changed

2 files changed

+43
-22
lines changed

.github/workflows/ci.yml

+42-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
11
name: CI
22
on: [ push, pull_request ]
33

4+
env:
5+
TRAC_VERSION: 1.6
6+
TRAC_XMLRPC_BRANCH: https://trac-hacks.org/svn/xmlrpcplugin/trunk/
7+
48
jobs:
59
lint-and-test:
6-
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
710
runs-on: ubuntu-latest
811
timeout-minutes: 5
12+
13+
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
14+
915
strategy:
1016
fail-fast: false
1117
matrix:
@@ -26,4 +32,38 @@ jobs:
2632

2733
- run: uv run ruff format --diff
2834

29-
- run: uv run pytest -m 'not integration' --cov
35+
- run: sudo apt-get install -y subversion
36+
37+
- name: Set up local Trac test server
38+
env:
39+
TRAC_ENV: trac-test
40+
run: |
41+
uv tool install --with passlib trac==${{ env.TRAC_VERSION }}
42+
43+
uvx --from trac trac-admin ${{ env.TRAC_ENV }} initenv 'Test Project' sqlite:db/trac.db
44+
45+
echo "admin:{SHA}0DPiKuNIrrVmD8IUCuw1hQxNqZc=" > ${{ env.TRAC_ENV }}/htpasswd
46+
uvx --from trac trac-admin ${{ env.TRAC_ENV }} permission add admin TRAC_ADMIN
47+
48+
svn checkout ${{ env.TRAC_XMLRPC_BRANCH }} xmlrpcplugin
49+
50+
pushd xmlrpcplugin
51+
uvx --with setuptools python setup.py bdist_egg
52+
cp dist/*.egg ../${{ env.TRAC_ENV }}/plugins
53+
popd
54+
55+
uvx --from trac trac-admin ${{ env.TRAC_ENV }} config set components tracrpc.* enabled
56+
uvx --from trac trac-admin ${{ env.TRAC_ENV }} permission add authenticated XML_RPC
57+
58+
uvx --from trac tracd \
59+
--single-env \
60+
--port 8000 \
61+
--daemonize \
62+
--pidfile $(pwd)/tracd.pid \
63+
--basic-auth="${{ env.TRAC_ENV }},$(pwd)/${{ env.TRAC_ENV }}/htpasswd," \
64+
$(pwd)/${{ env.TRAC_ENV }}
65+
66+
- run: uv run pytest --cov --cov-fail-under=95
67+
68+
- run: kill $(cat tracd.pid)
69+
if: always()

README.md

+1-20
Original file line numberDiff line numberDiff line change
@@ -84,23 +84,4 @@ class TracTicket(TracTicketBase):
8484

8585
## Setting up test Trac server
8686

87-
```shell
88-
uv tool install --with passlib trac
89-
90-
# admin/admin
91-
echo "admin:{SHA}0DPiKuNIrrVmD8IUCuw1hQxNqZc=" > $HOME/src/trac-test/htpasswd
92-
93-
uvx --from trac trac-admin $HOME/src/trac-test permission add admin TRAC_ADMIN
94-
95-
uvx --from trac tracd --auto-reload --single-env --port 8000 \
96-
--basic-auth="trac-test,$HOME/src/trac-test/htpasswd," \
97-
$HOME/src/trac-test
98-
99-
# Download source and build an egg
100-
# https://trac-hacks.org/wiki/XmlRpcPlugin
101-
uvx --with setuptools python setup.py bdist_egg
102-
103-
# Upload TracXMLRPC-1.2.0.dev0-py3.13.egg to Trac
104-
uvx --from trac trac-admin trac-admin . config set components tracrpc.* enabled
105-
uvx --from trac trac-admin trac-admin . permission add authenticated XML_RPC
106-
```
87+
See [GitHub Actions workflow](.github/workflows/ci.yml) for integration tests.

0 commit comments

Comments
 (0)