Skip to content

Commit 3dad375

Browse files
committed
Merge tag 'v1.60.0' into develop
Synapse 1.60.0 (2022-05-31) =========================== This release of Synapse adds a unique index to the `state_group_edges` table, in order to prevent accidentally introducing duplicate information (for example, because a database backup was restored multiple times). If your Synapse database already has duplicate rows in this table, this could fail with an error and require manual remediation. Additionally, the signature of the `check_event_for_spam` module callback has changed. The previous signature has been deprecated and remains working for now. Module authors should update their modules to use the new signature where possible. See [the upgrade notes](https://github.com/matrix-org/synapse/blob/develop/docs/upgrade.md#upgrading-to-v1600) for more details. Bugfixes -------- - Fix a bug introduced in Synapse 1.60.0rc1 that would break some imports from `synapse.module_api`. ([\matrix-org#12918](matrix-org#12918)) Synapse 1.60.0rc2 (2022-05-27) ============================== Features -------- - Add an option allowing users to use their password to reauthenticate for privileged actions even though password login is disabled. ([\matrix-org#12883](matrix-org#12883)) Bugfixes -------- - Explicitly close `ijson` coroutines once we are done with them, instead of leaving the garbage collector to close them. ([\matrix-org#12875](matrix-org#12875)) Internal Changes ---------------- - Improve URL previews by not including the content of media tags in the generated description. ([\matrix-org#12887](matrix-org#12887)) Synapse 1.60.0rc1 (2022-05-24) ============================== Features -------- - Measure the time taken in spam-checking callbacks and expose those measurements as metrics. ([\matrix-org#12513](matrix-org#12513)) - Add a `default_power_level_content_override` config option to set default room power levels per room preset. ([\matrix-org#12618](matrix-org#12618)) - Add support for [MSC3787: Allowing knocks to restricted rooms](matrix-org/matrix-spec-proposals#3787). ([\matrix-org#12623](matrix-org#12623)) - Send `USER_IP` commands on a different Redis channel, in order to reduce traffic to workers that do not process these commands. ([\matrix-org#12672](matrix-org#12672), [\matrix-org#12809](matrix-org#12809)) - Synapse will now reload [cache config](https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#caching) when it receives a [SIGHUP](https://en.wikipedia.org/wiki/SIGHUP) signal. ([\matrix-org#12673](matrix-org#12673)) - Add a config options to allow for auto-tuning of caches. ([\matrix-org#12701](matrix-org#12701)) - Update [MSC2716](matrix-org/matrix-spec-proposals#2716) implementation to process marker events from the current state to avoid markers being lost in timeline gaps for federated servers which would cause the imported history to be undiscovered. ([\matrix-org#12718](matrix-org#12718)) - Add a `drop_federated_event` callback to `SpamChecker` to disregard inbound federated events before they take up much processing power, in an emergency. ([\matrix-org#12744](matrix-org#12744)) - Implement [MSC3818: Copy room type on upgrade](matrix-org/matrix-spec-proposals#3818). ([\matrix-org#12786](matrix-org#12786), [\matrix-org#12792](matrix-org#12792)) - Update to the `check_event_for_spam` module callback. Deprecate the current callback signature, replace it with a new signature that is both less ambiguous (replacing booleans with explicit allow/block) and more powerful (ability to return explicit error codes). ([\matrix-org#12808](matrix-org#12808)) Bugfixes -------- - Fix a bug introduced in Synapse 1.7.0 that would prevent events from being sent to clients if there's a retention policy in the room when the support for retention policies is disabled. ([\matrix-org#12611](matrix-org#12611)) - Fix a bug introduced in Synapse 1.57.0 where `/messages` would throw a 500 error when querying for a non-existent room. ([\matrix-org#12683](matrix-org#12683)) - Add a unique index to `state_group_edges` to prevent duplicates being accidentally introduced and the consequential impact to performance. ([\matrix-org#12687](matrix-org#12687)) - Fix a long-standing bug where an empty room would be created when a user with an insufficient power level tried to upgrade a room. ([\matrix-org#12696](matrix-org#12696)) - Fix a bug introduced in Synapse 1.30.0 where empty rooms could be automatically created if a monthly active users limit is set. ([\matrix-org#12713](matrix-org#12713)) - Fix push to dismiss notifications when read on another client. Contributed by @SpiritCroc @ Beeper. ([\matrix-org#12721](matrix-org#12721)) - Fix poor database performance when reading the cache invalidation stream for large servers with lots of workers. ([\matrix-org#12747](matrix-org#12747)) - Delete events from the `federation_inbound_events_staging` table when a room is purged through the admin API. ([\matrix-org#12770](matrix-org#12770)) - Give a meaningful error message when a client tries to create a room with an invalid alias localpart. ([\matrix-org#12779](matrix-org#12779)) - Fix a bug introduced in 1.43.0 where a file (`providers.json`) was never closed. Contributed by @arkamar. ([\matrix-org#12794](matrix-org#12794)) - Fix a long-standing bug where finished log contexts would be re-started when failing to contact remote homeservers. ([\matrix-org#12803](matrix-org#12803)) - Fix a bug, introduced in Synapse 1.21.0, that led to media thumbnails being unusable before the index has been added in the background. ([\matrix-org#12823](matrix-org#12823)) Updates to the Docker image --------------------------- - Fix the docker file after a dependency update. ([\matrix-org#12853](matrix-org#12853)) Improved Documentation ---------------------- - Fix a typo in the Media Admin API documentation. ([\matrix-org#12715](matrix-org#12715)) - Update the OpenID Connect example for Keycloak to be compatible with newer versions of Keycloak. Contributed by @nhh. ([\matrix-org#12727](matrix-org#12727)) - Fix typo in server listener documentation. ([\matrix-org#12742](matrix-org#12742)) - Link to the configuration manual from the welcome page of the documentation. ([\matrix-org#12748](matrix-org#12748)) - Fix typo in `run_background_tasks_on` option name in configuration manual documentation. ([\matrix-org#12749](matrix-org#12749)) - Add information regarding the `rc_invites` ratelimiting option to the configuration docs. ([\matrix-org#12759](matrix-org#12759)) - Add documentation for cancellation of request processing. ([\matrix-org#12761](matrix-org#12761)) - Recommend using docker to run tests against postgres. ([\matrix-org#12765](matrix-org#12765)) - Add missing user directory endpoint from the generic worker documentation. Contributed by @olmari. ([\matrix-org#12773](matrix-org#12773)) - Add additional info to documentation of config option `cache_autotuning`. ([\matrix-org#12776](matrix-org#12776)) - Update configuration manual documentation to document size-related suffixes. ([\matrix-org#12777](matrix-org#12777)) - Fix invalid YAML syntax in the example documentation for the `url_preview_accept_language` config option. ([\matrix-org#12785](matrix-org#12785)) Deprecations and Removals ------------------------- - Require a body in POST requests to `/rooms/{roomId}/receipt/{receiptType}/{eventId}`, as required by the [Matrix specification](https://spec.matrix.org/v1.2/client-server-api/#post_matrixclientv3roomsroomidreceiptreceipttypeeventid). This breaks compatibility with Element Android 1.2.0 and earlier: users of those clients will be unable to send read receipts. ([\matrix-org#12709](matrix-org#12709)) Internal Changes ---------------- - Improve event caching mechanism to avoid having multiple copies of an event in memory at a time. ([\matrix-org#10533](matrix-org#10533)) - Preparation for faster-room-join work: return subsets of room state which we already have, immediately. ([\matrix-org#12498](matrix-org#12498)) - Add `@cancellable` decorator, for use on endpoint methods that can be cancelled when clients disconnect. ([\matrix-org#12586](matrix-org#12586), [\matrix-org#12588](matrix-org#12588), [\matrix-org#12630](matrix-org#12630), [\matrix-org#12694](matrix-org#12694), [\matrix-org#12698](matrix-org#12698), [\matrix-org#12699](matrix-org#12699), [\matrix-org#12700](matrix-org#12700), [\matrix-org#12705](matrix-org#12705)) - Enable cancellation of `GET /rooms/$room_id/members`, `GET /rooms/$room_id/state` and `GET /rooms/$room_id/state/$event_type/*` requests. ([\matrix-org#12708](matrix-org#12708)) - Improve documentation of the `synapse.push` module. ([\matrix-org#12676](matrix-org#12676)) - Refactor functions to on `PushRuleEvaluatorForEvent`. ([\matrix-org#12677](matrix-org#12677)) - Preparation for database schema simplifications: stop writing to `event_reference_hashes`. ([\matrix-org#12679](matrix-org#12679)) - Remove code which updates unused database column `application_services_state.last_txn`. ([\matrix-org#12680](matrix-org#12680)) - Refactor `EventContext` class. ([\matrix-org#12689](matrix-org#12689)) - Remove an unneeded class in the push code. ([\matrix-org#12691](matrix-org#12691)) - Consolidate parsing of relation information from events. ([\matrix-org#12693](matrix-org#12693)) - Convert namespace class `Codes` into a string enum. ([\matrix-org#12703](matrix-org#12703)) - Optimize private read receipt filtering. ([\matrix-org#12711](matrix-org#12711)) - Drop the logging level of status messages for the URL preview cache expiry job from INFO to DEBUG. ([\matrix-org#12720](matrix-org#12720)) - Downgrade some OIDC errors to warnings in the logs, to reduce the noise of Sentry reports. ([\matrix-org#12723](matrix-org#12723)) - Update configs used by Complement to allow more invites/3PID validations during tests. ([\matrix-org#12731](matrix-org#12731)) - Fix a long-standing bug where the user directory background process would fail to make forward progress if a user included a null codepoint in their display name or avatar. ([\matrix-org#12762](matrix-org#12762)) - Tweak the mypy plugin so that `@cached` can accept `on_invalidate=None`. ([\matrix-org#12769](matrix-org#12769)) - Move methods that call `add_push_rule` to the `PushRuleStore` class. ([\matrix-org#12772](matrix-org#12772)) - Make handling of federation Authorization header (more) compliant with RFC7230. ([\matrix-org#12774](matrix-org#12774)) - Refactor `resolve_state_groups_for_events` to not pull out full state when no state resolution happens. ([\matrix-org#12775](matrix-org#12775)) - Do not keep going if there are 5 back-to-back background update failures. ([\matrix-org#12781](matrix-org#12781)) - Fix federation when using the demo scripts. ([\matrix-org#12783](matrix-org#12783)) - The `hash_password` script now fails when it is called without specifying a config file. Contributed by @jae1911. ([\matrix-org#12789](matrix-org#12789)) - Improve and fix type hints. ([\matrix-org#12567](matrix-org#12567), [\matrix-org#12477](matrix-org#12477), [\matrix-org#12717](matrix-org#12717), [\matrix-org#12753](matrix-org#12753), [\matrix-org#12695](matrix-org#12695), [\matrix-org#12734](matrix-org#12734), [\matrix-org#12716](matrix-org#12716), [\matrix-org#12726](matrix-org#12726), [\matrix-org#12790](matrix-org#12790), [\matrix-org#12833](matrix-org#12833)) - Update EventContext `get_current_event_ids` and `get_prev_event_ids` to accept state filters and update calls where possible. ([\matrix-org#12791](matrix-org#12791)) - Remove Caddy from the Synapse workers image used in Complement. ([\matrix-org#12818](matrix-org#12818)) - Add Complement's shared registration secret to the Complement worker image. This fixes tests that depend on it. ([\matrix-org#12819](matrix-org#12819)) - Support registering Application Services when running with workers under Complement. ([\matrix-org#12826](matrix-org#12826)) - Disable 'faster room join' Complement tests when testing against Synapse with workers. ([\matrix-org#12842](matrix-org#12842))
2 parents 30e6e3f + 5984ada commit 3dad375

File tree

340 files changed

+15523
-4708
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

340 files changed

+15523
-4708
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
title: CI run against latest deps is failing
3+
---
4+
See https://github.com/{{env.GITHUB_REPOSITORY}}/actions/runs/{{env.GITHUB_RUN_ID}}

.ci/patch_for_twisted_trunk.sh

-8
This file was deleted.

.dockerignore

-4
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,4 @@
88
!pyproject.toml
99
!poetry.lock
1010

11-
# TODO: remove these once we have moved over to using poetry-core in pyproject.toml
12-
!MANIFEST.in
13-
!setup.py
14-
1511
**/__pycache__

.git-blame-ignore-revs

+3
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,6 @@ aff1eb7c671b0a3813407321d2702ec46c71fa56
66

77
# Update black to 20.8b1 (#9381).
88
0a00b7ff14890987f09112a2ae696c61001e6cf1
9+
10+
# Convert tests/rest/admin/test_room.py to unix file endings (#7953).
11+
c4268e3da64f1abb5b31deaeb5769adb6510c0a7

.github/workflows/docker.yml

+11-19
Original file line numberDiff line numberDiff line change
@@ -34,32 +34,24 @@ jobs:
3434
username: ${{ secrets.DOCKERHUB_USERNAME }}
3535
password: ${{ secrets.DOCKERHUB_TOKEN }}
3636

37-
# TODO: consider using https://github.com/docker/metadata-action instead of this
38-
# custom magic
3937
- name: Calculate docker image tag
4038
id: set-tag
41-
run: |
42-
case "${GITHUB_REF}" in
43-
refs/heads/develop)
44-
tag=develop
45-
;;
46-
refs/heads/master|refs/heads/main)
47-
tag=latest
48-
;;
49-
refs/tags/*)
50-
tag=${GITHUB_REF#refs/tags/}
51-
;;
52-
*)
53-
tag=${GITHUB_SHA}
54-
;;
55-
esac
56-
echo "::set-output name=tag::$tag"
39+
uses: docker/metadata-action@master
40+
with:
41+
images: matrixdotorg/synapse
42+
flavor: |
43+
latest=false
44+
tags: |
45+
type=raw,value=develop,enable=${{ github.ref == 'refs/heads/develop' }}
46+
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/master' }}
47+
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }}
48+
type=pep440,pattern={{raw}}
5749
5850
- name: Build and push all platforms
5951
uses: docker/build-push-action@v2
6052
with:
6153
push: true
6254
labels: "gitsha1=${{ github.sha }}"
63-
tags: "matrixdotorg/synapse:${{ steps.set-tag.outputs.tag }}"
55+
tags: "${{ steps.set-tag.outputs.tags }}"
6456
file: "docker/Dockerfile"
6557
platforms: linux/amd64,linux/arm64

.github/workflows/latest_deps.yml

+159
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
# People who are freshly `pip install`ing from PyPI will pull in the latest versions of
2+
# dependencies which match the broad requirements. Since most CI runs are against
3+
# the locked poetry environment, run specifically against the latest dependencies to
4+
# know if there's an upcoming breaking change.
5+
#
6+
# As an overview this workflow:
7+
# - checks out develop,
8+
# - installs from source, pulling in the dependencies like a fresh `pip install` would, and
9+
# - runs mypy and test suites in that checkout.
10+
#
11+
# Based on the twisted trunk CI job.
12+
13+
name: Latest dependencies
14+
15+
on:
16+
schedule:
17+
- cron: 0 7 * * *
18+
workflow_dispatch:
19+
20+
concurrency:
21+
group: ${{ github.workflow }}-${{ github.ref }}
22+
cancel-in-progress: true
23+
24+
jobs:
25+
mypy:
26+
runs-on: ubuntu-latest
27+
steps:
28+
- uses: actions/checkout@v2
29+
# The dev dependencies aren't exposed in the wheel metadata (at least with current
30+
# poetry-core versions), so we install with poetry.
31+
- uses: matrix-org/setup-python-poetry@v1
32+
with:
33+
python-version: "3.x"
34+
poetry-version: "1.2.0b1"
35+
extras: "all"
36+
# Dump installed versions for debugging.
37+
- run: poetry run pip list > before.txt
38+
# Upgrade all runtime dependencies only. This is intended to mimic a fresh
39+
# `pip install matrix-synapse[all]` as closely as possible.
40+
- run: poetry update --no-dev
41+
- run: poetry run pip list > after.txt && (diff -u before.txt after.txt || true)
42+
- name: Remove warn_unused_ignores from mypy config
43+
run: sed '/warn_unused_ignores = True/d' -i mypy.ini
44+
- run: poetry run mypy
45+
trial:
46+
runs-on: ubuntu-latest
47+
strategy:
48+
matrix:
49+
include:
50+
- database: "sqlite"
51+
- database: "postgres"
52+
postgres-version: "14"
53+
54+
steps:
55+
- uses: actions/checkout@v2
56+
- run: sudo apt-get -qq install xmlsec1
57+
- name: Set up PostgreSQL ${{ matrix.postgres-version }}
58+
if: ${{ matrix.postgres-version }}
59+
run: |
60+
docker run -d -p 5432:5432 \
61+
-e POSTGRES_PASSWORD=postgres \
62+
-e POSTGRES_INITDB_ARGS="--lc-collate C --lc-ctype C --encoding UTF8" \
63+
postgres:${{ matrix.postgres-version }}
64+
- uses: actions/setup-python@v2
65+
with:
66+
python-version: "3.x"
67+
- run: pip install .[all,test]
68+
- name: Await PostgreSQL
69+
if: ${{ matrix.postgres-version }}
70+
timeout-minutes: 2
71+
run: until pg_isready -h localhost; do sleep 1; done
72+
- run: python -m twisted.trial --jobs=2 tests
73+
env:
74+
SYNAPSE_POSTGRES: ${{ matrix.database == 'postgres' || '' }}
75+
SYNAPSE_POSTGRES_HOST: localhost
76+
SYNAPSE_POSTGRES_USER: postgres
77+
SYNAPSE_POSTGRES_PASSWORD: postgres
78+
- name: Dump logs
79+
# Logs are most useful when the command fails, always include them.
80+
if: ${{ always() }}
81+
# Note: Dumps to workflow logs instead of using actions/upload-artifact
82+
# This keeps logs colocated with failing jobs
83+
# It also ignores find's exit code; this is a best effort affair
84+
run: >-
85+
find _trial_temp -name '*.log'
86+
-exec echo "::group::{}" \;
87+
-exec cat {} \;
88+
-exec echo "::endgroup::" \;
89+
|| true
90+
91+
92+
sytest:
93+
runs-on: ubuntu-latest
94+
container:
95+
image: matrixdotorg/sytest-synapse:testing
96+
volumes:
97+
- ${{ github.workspace }}:/src
98+
strategy:
99+
fail-fast: false
100+
matrix:
101+
include:
102+
- sytest-tag: focal
103+
104+
- sytest-tag: focal
105+
postgres: postgres
106+
workers: workers
107+
redis: redis
108+
env:
109+
POSTGRES: ${{ matrix.postgres && 1}}
110+
WORKERS: ${{ matrix.workers && 1 }}
111+
REDIS: ${{ matrix.redis && 1 }}
112+
BLACKLIST: ${{ matrix.workers && 'synapse-blacklist-with-workers' }}
113+
114+
steps:
115+
- uses: actions/checkout@v2
116+
- name: Ensure sytest runs `pip install`
117+
# Delete the lockfile so sytest will `pip install` rather than `poetry install`
118+
run: rm /src/poetry.lock
119+
working-directory: /src
120+
- name: Prepare test blacklist
121+
run: cat sytest-blacklist .ci/worker-blacklist > synapse-blacklist-with-workers
122+
- name: Run SyTest
123+
run: /bootstrap.sh synapse
124+
working-directory: /src
125+
- name: Summarise results.tap
126+
if: ${{ always() }}
127+
run: /sytest/scripts/tap_to_gha.pl /logs/results.tap
128+
- name: Upload SyTest logs
129+
uses: actions/upload-artifact@v2
130+
if: ${{ always() }}
131+
with:
132+
name: Sytest Logs - ${{ job.status }} - (${{ join(matrix.*, ', ') }})
133+
path: |
134+
/logs/results.tap
135+
/logs/**/*.log*
136+
137+
138+
# TODO: run complement (as with twisted trunk, see #12473).
139+
140+
# open an issue if the build fails, so we know about it.
141+
open-issue:
142+
if: failure()
143+
needs:
144+
# TODO: should mypy be included here? It feels more brittle than the other two.
145+
- mypy
146+
- trial
147+
- sytest
148+
149+
runs-on: ubuntu-latest
150+
151+
steps:
152+
- uses: actions/checkout@v2
153+
- uses: JasonEtco/create-an-issue@5d9504915f79f9cc6d791934b8ef34f2353dd74d # v2.5.0, 2020-12-06
154+
env:
155+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
156+
with:
157+
update_existing: true
158+
filename: .ci/latest_deps_build_failed_issue_template.md
159+

.github/workflows/tests.yml

+17-27
Original file line numberDiff line numberDiff line change
@@ -15,24 +15,14 @@ jobs:
1515
steps:
1616
- uses: actions/checkout@v2
1717
- uses: actions/setup-python@v2
18-
- run: pip install -e .
18+
- run: pip install .
1919
- run: scripts-dev/generate_sample_config.sh --check
2020
- run: scripts-dev/config-lint.sh
2121

2222
lint:
23-
runs-on: ubuntu-latest
24-
strategy:
25-
matrix:
26-
toxenv:
27-
- "check_codestyle"
28-
- "check_isort"
29-
- "mypy"
30-
31-
steps:
32-
- uses: actions/checkout@v2
33-
- uses: actions/setup-python@v2
34-
- run: pip install tox
35-
- run: tox -e ${{ matrix.toxenv }}
23+
uses: "matrix-org/backend-meta/.github/workflows/python-poetry-ci.yml@v1"
24+
with:
25+
typechecking-extras: "all"
3626

3727
lint-crlf:
3828
runs-on: ubuntu-latest
@@ -71,23 +61,23 @@ jobs:
7161
matrix:
7262
python-version: ["3.7", "3.8", "3.9", "3.10"]
7363
database: ["sqlite"]
74-
toxenv: ["py"]
64+
extras: ["all"]
7565
include:
7666
# Newest Python without optional deps
7767
- python-version: "3.10"
78-
toxenv: "py-noextras"
68+
extras: ""
7969

8070
# Oldest Python with PostgreSQL
8171
- python-version: "3.7"
8272
database: "postgres"
8373
postgres-version: "10"
84-
toxenv: "py"
74+
extras: "all"
8575

8676
# Newest Python with newest PostgreSQL
8777
- python-version: "3.10"
8878
database: "postgres"
8979
postgres-version: "14"
90-
toxenv: "py"
80+
extras: "all"
9181

9282
steps:
9383
- uses: actions/checkout@v2
@@ -99,17 +89,16 @@ jobs:
9989
-e POSTGRES_PASSWORD=postgres \
10090
-e POSTGRES_INITDB_ARGS="--lc-collate C --lc-ctype C --encoding UTF8" \
10191
postgres:${{ matrix.postgres-version }}
102-
- uses: actions/setup-python@v2
92+
- uses: matrix-org/setup-python-poetry@v1
10393
with:
10494
python-version: ${{ matrix.python-version }}
105-
- run: pip install tox
95+
extras: ${{ matrix.extras }}
10696
- name: Await PostgreSQL
10797
if: ${{ matrix.postgres-version }}
10898
timeout-minutes: 2
10999
run: until pg_isready -h localhost; do sleep 1; done
110-
- run: tox -e ${{ matrix.toxenv }}
100+
- run: poetry run trial --jobs=2 tests
111101
env:
112-
TRIAL_FLAGS: "--jobs=2"
113102
SYNAPSE_POSTGRES: ${{ matrix.database == 'postgres' || '' }}
114103
SYNAPSE_POSTGRES_HOST: localhost
115104
SYNAPSE_POSTGRES_USER: postgres
@@ -156,23 +145,24 @@ jobs:
156145
157146
trial-pypy:
158147
# Very slow; only run if the branch name includes 'pypy'
148+
# Note: sqlite only; no postgres. Completely untested since poetry move.
159149
if: ${{ contains(github.ref, 'pypy') && !failure() && !cancelled() }}
160150
needs: linting-done
161151
runs-on: ubuntu-latest
162152
strategy:
163153
matrix:
164154
python-version: ["pypy-3.7"]
155+
extras: ["all"]
165156

166157
steps:
167158
- uses: actions/checkout@v2
159+
# Install libs necessary for PyPy to build binary wheels for dependencies
168160
- run: sudo apt-get -qq install xmlsec1 libxml2-dev libxslt-dev
169-
- uses: actions/setup-python@v2
161+
- uses: matrix-org/setup-python-poetry@v1
170162
with:
171163
python-version: ${{ matrix.python-version }}
172-
- run: pip install tox
173-
- run: tox -e py
174-
env:
175-
TRIAL_FLAGS: "--jobs=2"
164+
extras: ${{ matrix.extras }}
165+
- run: poetry run trial --jobs=2 tests
176166
- name: Dump logs
177167
# Logs are most useful when the command fails, always include them.
178168
if: ${{ always() }}

0 commit comments

Comments
 (0)