diff --git a/.github/workflows/charybdis.yml b/.github/workflows/charybdis.yml index a9bc242..83bdc47 100644 --- a/.github/workflows/charybdis.yml +++ b/.github/workflows/charybdis.yml @@ -49,7 +49,5 @@ jobs: - name: Test with pytest run: | - # testQuitErrors is very flaky - # AccountTagTestCase.testInvite fails because https://github.com/solanum-ircd/solanum/issues/166 - PATH=~/.local/bin:$PATH pytest --controller=irctest.controllers.charybdis -k 'not Ergo and not deprecated and not strict and not testDoubleKickMessages and not testQuitErrors and not (AccountTagTestCase and testInvite)' + PATH=~/.local/bin:$PATH make charybdis diff --git a/.github/workflows/oragono.yml b/.github/workflows/ergo.yml similarity index 91% rename from .github/workflows/oragono.yml rename to .github/workflows/ergo.yml index ddd8e63..fd1022d 100644 --- a/.github/workflows/oragono.yml +++ b/.github/workflows/ergo.yml @@ -51,4 +51,4 @@ jobs: - name: Test with pytest run: | - PATH=~/go/bin:$PATH pytest --controller=irctest.controllers.ergo -k 'not deprecated' + PATH=~/go/bin:$PATH make ergo diff --git a/.github/workflows/inspircd.yml b/.github/workflows/inspircd.yml index b5d8d46..fcb4b28 100644 --- a/.github/workflows/inspircd.yml +++ b/.github/workflows/inspircd.yml @@ -49,8 +49,5 @@ jobs: - name: Test with pytest run: | - # testNoticeNonexistentChannel fails because of https://github.com/inspircd/inspircd/issues/1849 - # testDirectMessageEcho fails because of https://github.com/inspircd/inspircd/issues/1851 - # testKeyValidation fails because of https://github.com/inspircd/inspircd/issues/1850 - PATH=~/.local/bin:$PATH pytest --controller irctest.controllers.inspircd -k 'not Ergo and not deprecated and not strict and not testNoticeNonexistentChannel and not testDirectMessageEcho and not testKeyValidation' + PATH=~/.local/bin:$PATH make inspircd diff --git a/.github/workflows/limnoria.yml b/.github/workflows/limnoria.yml index 476588a..fb02be2 100644 --- a/.github/workflows/limnoria.yml +++ b/.github/workflows/limnoria.yml @@ -32,6 +32,6 @@ jobs: - name: Test with pytest run: | - PATH=~/.local/bin:$PATH pytest --controller=irctest.controllers.limnoria + PATH=~/.local/bin:$PATH make limnoria diff --git a/.github/workflows/solanum.yml b/.github/workflows/solanum.yml index f359acd..242939f 100644 --- a/.github/workflows/solanum.yml +++ b/.github/workflows/solanum.yml @@ -49,7 +49,7 @@ jobs: - name: Test with pytest run: | - PATH=~/.local/bin:$PATH pytest --controller=irctest.controllers.solanum -k 'not Ergo and not deprecated and not strict and not testDoubleKickMessages' + PATH=~/.local/bin:$PATH make solanum diff --git a/.github/workflows/sopel.yml b/.github/workflows/sopel.yml index d17227d..78e65f0 100644 --- a/.github/workflows/sopel.yml +++ b/.github/workflows/sopel.yml @@ -32,6 +32,6 @@ jobs: - name: Test with pytest run: | - PATH=~/.local/bin:$PATH pytest --controller=irctest.controllers.sopel -k "not testPlainNotAvailable" + PATH=~/.local/bin:$PATH make sopel diff --git a/Makefile b/Makefile index 6300036..20b3fea 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,87 @@ -.PHONY: all flakes ergo +PYTEST ?= python3 -m pytest -all: flakes ergo +# Extra arguments to pass to pytest (eg. `-n 4` to run in parallel if +# pytest-xdist is installed) +PYTEST_ARGS ?= + +# Will be appended at the end of the -k argument to pytest +EXTRA_SELECTORS ?= + +# testQuitErrors is very flaky +# AccountTagTestCase.testInvite fails because https://github.com/solanum-ircd/solanum/issues/166 +CHARYBDIS_SELECTORS := \ + not Ergo \ + and not deprecated \ + and not strict \ + and not testDoubleKickMessages \ + and not testQuitErrors \ + and not (AccountTagTestCase and testInvite) \ + $(EXTRA_SELECTORS) + +ERGO_SELECTORS := \ + not deprecated \ + $(EXTRA_SELECTORS) + +# testNoticeNonexistentChannel fails because of https://github.com/inspircd/inspircd/issues/1849 +# testDirectMessageEcho fails because of https://github.com/inspircd/inspircd/issues/1851 +# testKeyValidation fails because of https://github.com/inspircd/inspircd/issues/1850 +INSPIRCD_SELECTORS := \ + not Ergo \ + and not deprecated \ + and not strict \ + and not testNoticeNonexistentChannel \ + and not testDirectMessageEcho \ + and not testKeyValidation \ + $(EXTRA_SELECTORS) + +MAMMON_SELECTORS := \ + not Ergo \ + and not deprecated \ + and not strict \ + $(EXTRA_SELECTORS) + +# Limnoria can actually pass all the test so there is none to exclude. +# `(foo or not foo)` serves as a `true` value so it doesn't break when +# $(EXTRA_SELECTORS) is non-empty +LIMNORIA_SELECTORS := \ + (foo or not foo) \ + $(EXTRA_SELECTORS) + +SOLANUM_SELECTORS := \ + not Ergo \ + and not deprecated \ + and not strict \ + and not testDoubleKickMessages \ + $(EXTRA_SELECTORS) + +SOPEL_SELECTORS := \ + not testPlainNotAvailable \ + $(EXTRA_SELECTORS) + +.PHONY: all flakes ergo charybdis + +all: flakes ergo inspircd limnoria sopel solanum flakes: - pyflakes3 ./irctest/cases.py ./irctest/client_mock.py ./irctest/controllers/ergo.py irctest/server_tests/*.py + pyflakes3 irctest + +charybdis: + $(PYTEST) $(PYTEST_ARGS) --controller=irctest.controllers.charybdis -k '$(CHARYBDIS_SELECTORS)' ergo: - python3 -m pytest -k "not deprecated" --controller irctest.controllers.ergo + $(PYTEST) $(PYTEST_ARGS) --controller irctest.controllers.ergo -k "$(ERGO_SELECTORS)" + +inspircd: + $(PYTEST) $(PYTEST_ARGS) --controller=irctest.controllers.inspircd -k '$(INSPIRCD_SELECTORS)' + +limnoria: + $(PYTEST) $(PYTEST_ARGS) --controller=irctest.controllers.limnoria -k '$(LIMNORIA_SELECTORS)' + +mammon: + $(PYTEST) $(PYTEST_ARGS) --controller=irctest.controllers.mammon -k '$(MAMMON_SELECTORS)' + +solanum: + $(PYTEST) $(PYTEST_ARGS) --controller=irctest.controllers.solanum -k '$(SOLANUM_SELECTORS)' + +sopel: + $(PYTEST) $(PYTEST_ARGS) --controller=irctest.controllers.sopel -k '$(SOPEL_SELECTORS)'