getappmap / getappmap/appmap-python
Test Failures on Misago Project with AppMap Enabled
Open
Nobody has claimed this yet.
bug
- Dominant language
- Python
- Stars
- 104
- Forks
- 17
- PR merge metrics
- No merged PRs in 30d
Description
Repo: Misago
AppMap Version: appmap>=1.1.0.dev0
Python Version: Python 3.11.4
With AppMap enabled
FAILED misago/apiv2/threads/tests/test_thread_watch.py::test_thread_watch_api_enables_watched_thread_email_notifications - Failed: Expected to pe...
FAILED misago/apiv2/threads/tests/test_thread_watch.py::test_thread_watch_api_disables_watched_thread_email_notifications - Failed: Expected to p...
FAILED misago/apiv2/threads/tests/test_thread_watch.py::test_thread_watch_api_skips_update_if_notifications_are_not_changed - Failed: Expected to...
FAILED misago/acl/tests/test_providers.py::test_container_loads_providers - TypeError: Object of type ModelBase is not JSON serializable
FAILED misago/acl/tests/test_providers.py::test_loading_providers_second_time_raises_runtime_error - TypeError: Object of type ModelBase is not J...
FAILED misago/acl/tests/test_providers.py::test_container_returns_list_of_providers - TypeError: Object of type ModelBase is not JSON serializable
FAILED misago/acl/tests/test_providers.py::test_container_returns_dict_of_providers - TypeError: Object of type ModelBase is not JSON serializable
FAILED misago/acl/tests/test_providers.py::test_getter_returns_registered_type_annotator - TypeError: Object of type type is not JSON serializable
FAILED misago/acl/tests/test_providers.py::test_container_returns_list_of_user_acl_serializers - TypeError: Object of type ModelBase is not JSON ...
FAILED misago/acl/tests/test_providers.py::test_getter_returns_registered_user_acl_serializer - TypeError: Object of type ModelBase is not JSON s...
============================================= 10 failed, 3411 passed, 4 warnings in 995.33s (0:16:35) ==============================================
With AppMap disabled/uninstalled
=================================================== 3421 passed, 4 warnings in 280.42s (0:04:40) ===================================================
Verbose Logging for one of the tests
pytest --no-cov misago/apiv2/threads/tests/test_thread_watch.py::test_thread_watch_api_enables_watched_thread_email_notifications -v
=============================================================== test session starts ================================================================
platform darwin -- Python 3.11.4, pytest-7.1.2, pluggy-1.0.0 -- /Users/petecheslock/repos/Misago/test/bin/python
cachedir: .pytest_cache
django: settings: devproject.test_settings (from env)
rootdir: /Users/petecheslock/repos/Misago, configfile: pytest.ini
plugins: anyio-3.6.1, split-0.8.1, snapshottest-0.6.0, mock-3.8.2, Faker-13.15.1, cov-4.0.0, django-4.5.2
collected 1 item
misago/apiv2/threads/tests/test_thread_watch.py::test_thread_watch_api_enables_watched_thread_email_notifications FAILED [100%]
===================================================================== FAILURES =====================================================================
_________________________________________ test_thread_watch_api_enables_watched_thread_email_notifications _________________________________________
user = <User: User>, thread = <Thread: Test thread>, user_client = <misago.test.MisagoClient object at 0x11e0a12d0>
django_assert_num_queries = functools.partial(<function _assert_num_queries at 0x1061cd3a0>, <_pytest.config.Config object at 0x105461fd0>)
def test_thread_watch_api_enables_watched_thread_email_notifications(
user, thread, user_client, django_assert_num_queries
):
existing_watched_thread = WatchedThread.objects.create(
user=user,
category_id=thread.category_id,
thread=thread,
send_emails=False,
)
> with django_assert_num_queries(25):
misago/apiv2/threads/tests/test_thread_watch.py:66:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../.asdf/installs/python/3.11.4/lib/python3.11/contextlib.py:144: in __exit__
next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
config = <_pytest.config.Config object at 0x105461fd0>, num = 25, exact = True, connection = None, info = None
@contextmanager
def _assert_num_queries(
config,
num: int,
exact: bool = True,
connection=None,
info=None,
) -> Generator["django.test.utils.CaptureQueriesContext", None, None]:
from django.test.utils import CaptureQueriesContext
if connection is None:
from django.db import connection as conn
else:
conn = connection
verbose = config.getoption("verbose") > 0
with CaptureQueriesContext(conn) as context:
yield context
num_performed = len(context)
if exact:
failed = num != num_performed
else:
failed = num_performed > num
if failed:
msg = "Expected to perform {} queries {}{}".format(
num,
"" if exact else "or less ",
"but {} done".format(
num_performed == 1 and "1 was" or "{} were".format(num_performed)
),
)
if info:
msg += "\n{}".format(info)
if verbose:
sqls = (q["sql"] for q in context.captured_queries)
msg += "\n\nQueries:\n========\n\n" + "\n\n".join(sqls)
else:
msg += " (add -v option to show queries)"
> pytest.fail(msg)
E Failed: Expected to perform 25 queries but 26 were done
E
E Queries:
E ========
E
E SELECT "misago_cache_cacheversion"."cache", "misago_cache_cacheversion"."version" FROM "misago_cache_cacheversion"
E
E SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."expire_date" > '2023-09-01T18:15:01.189194+00:00'::timestamptz AND "django_session"."session_key" = '83jrxc4syy6dfkfp6ch1emluyenotdfv') LIMIT 21
E
E SELECT "misago_users_user"."id", "misago_users_user"."password", "misago_users_user"."last_login", "misago_users_user"."is_superuser", "misago_users_user"."username", "misago_users_user"."slug", "misago_users_user"."email", "misago_users_user"."email_hash", "misago_users_user"."joined_on", "misago_users_user"."joined_from_ip", "misago_users_user"."is_hiding_presence", "misago_users_user"."rank_id", "misago_users_user"."title", "misago_users_user"."requires_activation", "misago_users_user"."is_staff", "misago_users_user"."acl_key", "misago_users_user"."is_active", "misago_users_user"."is_active_staff_message", "misago_users_user"."is_deleting_account", "misago_users_user"."avatar_tmp", "misago_users_user"."avatar_src", "misago_users_user"."avatar_crop", "misago_users_user"."avatars", "misago_users_user"."is_avatar_locked", "misago_users_user"."avatar_lock_user_message", "misago_users_user"."avatar_lock_staff_message", "misago_users_user"."signature", "misago_users_user"."signature_parsed", "misago_users_user"."signature_checksum", "misago_users_user"."is_signature_locked", "misago_users_user"."signature_lock_user_message", "misago_users_user"."signature_lock_staff_message", "misago_users_user"."followers", "misago_users_user"."following", "misago_users_user"."limits_private_thread_invites_to", "misago_users_user"."unread_private_threads", "misago_users_user"."sync_unread_private_threads", "misago_users_user"."subscribe_to_started_threads", "misago_users_user"."subscribe_to_replied_threads", "misago_users_user"."unread_notifications", "misago_users_user"."watch_started_threads", "misago_users_user"."watch_replied_threads", "misago_users_user"."watch_new_private_threads_by_followed", "misago_users_user"."watch_new_private_threads_by_other_users", "misago_users_user"."notify_new_private_threads_by_followed", "misago_users_user"."notify_new_private_threads_by_other_users", "misago_users_user"."threads", "misago_users_user"."posts", "misago_users_user"."last_posted_on", "misago_users_user"."profile_fields", "misago_users_user"."agreements", "misago_users_rank"."id", "misago_users_rank"."name", "misago_users_rank"."slug", "misago_users_rank"."description", "misago_users_rank"."title", "misago_users_rank"."css_class", "misago_users_rank"."is_default", "misago_users_rank"."is_tab", "misago_users_rank"."order", "misago_users_online"."user_id", "misago_users_online"."last_click", "misago_users_bancache"."user_id", "misago_users_bancache"."ban_id", "misago_users_bancache"."cache_version", "misago_users_bancache"."user_message", "misago_users_bancache"."staff_message", "misago_users_bancache"."expires_on" FROM "misago_users_user" LEFT OUTER JOIN "misago_users_rank" ON ("misago_users_user"."rank_id" = "misago_users_rank"."id") LEFT OUTER JOIN "misago_users_online" ON ("misago_users_user"."id" = "misago_users_online"."user_id") LEFT OUTER JOIN "misago_users_bancache" ON ("misago_users_user"."id" = "misago_users_bancache"."user_id") WHERE "misago_users_user"."id" = 1 LIMIT 21
E
E DECLARE "_django_curs_8436375680_sync_81" NO SCROLL CURSOR WITHOUT HOLD FOR SELECT "misago_users_ban"."id", "misago_users_ban"."check_type", "misago_users_ban"."registration_only", "misago_users_ban"."banned_value", "misago_users_ban"."user_message", "misago_users_ban"."staff_message", "misago_users_ban"."expires_on", "misago_users_ban"."is_checked" FROM "misago_users_ban" WHERE (NOT "misago_users_ban"."registration_only" AND "misago_users_ban"."check_type" = 2) ORDER BY "misago_users_ban"."id" DESC
E
E DECLARE "_django_curs_8436375680_sync_82" NO SCROLL CURSOR WITHOUT HOLD FOR SELECT "misago_users_ban"."id", "misago_users_ban"."check_type", "misago_users_ban"."registration_only", "misago_users_ban"."banned_value", "misago_users_ban"."user_message", "misago_users_ban"."staff_message", "misago_users_ban"."expires_on", "misago_users_ban"."is_checked" FROM "misago_users_ban" WHERE (NOT "misago_users_ban"."registration_only" AND "misago_users_ban"."check_type" IN (0, 1)) ORDER BY "misago_users_ban"."id" DESC
E
E UPDATE "misago_users_bancache" SET "ban_id" = NULL, "cache_version" = 'QqNqVRF8', "user_message" = NULL, "staff_message" = NULL, "expires_on" = NULL WHERE "misago_users_bancache"."user_id" = 1
E
E INSERT INTO "misago_users_bancache" ("user_id", "ban_id", "cache_version", "user_message", "staff_message", "expires_on") VALUES (1, NULL, 'QqNqVRF8', NULL, NULL, NULL)
E
E SELECT "misago_acl_role"."id", "misago_acl_role"."name", "misago_acl_role"."special_role", "misago_acl_role"."permissions" FROM "misago_acl_role" INNER JOIN "misago_users_user_roles" ON ("misago_acl_role"."id" = "misago_users_user_roles"."role_id") WHERE "misago_users_user_roles"."user_id" = 1
E
E SELECT "misago_acl_role"."id", "misago_acl_role"."name", "misago_acl_role"."special_role", "misago_acl_role"."permissions" FROM "misago_acl_role" INNER JOIN "misago_users_rank_roles" ON ("misago_acl_role"."id" = "misago_users_rank_roles"."role_id") WHERE "misago_users_rank_roles"."rank_id" = 2
E
E DECLARE "_django_curs_8436375680_sync_83" NO SCROLL CURSOR WITHOUT HOLD FOR SELECT "misago_categories_rolecategoryacl"."id", "misago_categories_rolecategoryacl"."role_id", "misago_categories_rolecategoryacl"."category_id", "misago_categories_rolecategoryacl"."category_role_id", "misago_categories_categoryrole"."id", "misago_categories_categoryrole"."name", "misago_categories_categoryrole"."special_role", "misago_categories_categoryrole"."permissions" FROM "misago_categories_rolecategoryacl" INNER JOIN "misago_categories_categoryrole" ON ("misago_categories_rolecategoryacl"."category_role_id" = "misago_categories_categoryrole"."id") WHERE "misago_categories_rolecategoryacl"."role_id" IN (1, 8)
E
E SELECT "misago_categories_category"."id", "misago_categories_category"."parent_id", "misago_categories_category"."special_role", "misago_categories_category"."name", "misago_categories_category"."slug", "misago_categories_category"."short_name", "misago_categories_category"."color", "misago_categories_category"."description", "misago_categories_category"."is_closed", "misago_categories_category"."threads", "misago_categories_category"."posts", "misago_categories_category"."last_post_on", "misago_categories_category"."last_thread_id", "misago_categories_category"."last_thread_title", "misago_categories_category"."last_thread_slug", "misago_categories_category"."last_poster_id", "misago_categories_category"."last_poster_name", "misago_categories_category"."last_poster_slug", "misago_categories_category"."require_threads_approval", "misago_categories_category"."require_replies_approval", "misago_categories_category"."require_edits_approval", "misago_categories_category"."prune_started_after", "misago_categories_category"."prune_replied_after", "misago_categories_category"."archive_pruned_in_id", "misago_categories_category"."css_class", "misago_categories_category"."lft", "misago_categories_category"."rght", "misago_categories_category"."tree_id", "misago_categories_category"."level" FROM "misago_categories_category" WHERE ("misago_categories_category"."level" = 0 AND "misago_categories_category"."special_role" IN ('root_category', 'private_threads')) ORDER BY "misago_categories_category"."tree_id" ASC, "misago_categories_category"."lft" ASC
E
E SELECT "misago_categories_category"."id", "misago_categories_category"."parent_id", "misago_categories_category"."special_role", "misago_categories_category"."name", "misago_categories_category"."slug", "misago_categories_category"."short_name", "misago_categories_category"."color", "misago_categories_category"."description", "misago_categories_category"."is_closed", "misago_categories_category"."threads", "misago_categories_category"."posts", "misago_categories_category"."last_post_on", "misago_categories_category"."last_thread_id", "misago_categories_category"."last_thread_title", "misago_categories_category"."last_thread_slug", "misago_categories_category"."last_poster_id", "misago_categories_category"."last_poster_name", "misago_categories_category"."last_poster_slug", "misago_categories_category"."require_threads_approval", "misago_categories_category"."require_replies_approval", "misago_categories_category"."require_edits_approval", "misago_categories_category"."prune_started_after", "misago_categories_category"."prune_replied_after", "misago_categories_category"."archive_pruned_in_id", "misago_categories_category"."css_class", "misago_categories_category"."lft", "misago_categories_category"."rght", "misago_categories_category"."tree_id", "misago_categories_category"."level" FROM "misago_categories_category" WHERE ("misago_categories_category"."tree_id" = 1 AND "misago_categories_category"."level" > 0) ORDER BY "misago_categories_category"."lft" ASC
E
E DECLARE "_django_curs_8436375680_sync_84" NO SCROLL CURSOR WITHOUT HOLD FOR SELECT "misago_categories_rolecategoryacl"."id", "misago_categories_rolecategoryacl"."role_id", "misago_categories_rolecategoryacl"."category_id", "misago_categories_rolecategoryacl"."category_role_id", "misago_categories_categoryrole"."id", "misago_categories_categoryrole"."name", "misago_categories_categoryrole"."special_role", "misago_categories_categoryrole"."permissions" FROM "misago_categories_rolecategoryacl" INNER JOIN "misago_categories_categoryrole" ON ("misago_categories_rolecategoryacl"."category_role_id" = "misago_categories_categoryrole"."id") WHERE "misago_categories_rolecategoryacl"."role_id" IN (1, 8)
E
E SELECT "misago_categories_category"."id", "misago_categories_category"."parent_id", "misago_categories_category"."special_role", "misago_categories_category"."name", "misago_categories_category"."slug", "misago_categories_category"."short_name", "misago_categories_category"."color", "misago_categories_category"."description", "misago_categories_category"."is_closed", "misago_categories_category"."threads", "misago_categories_category"."posts", "misago_categories_category"."last_post_on", "misago_categories_category"."last_thread_id", "misago_categories_category"."last_thread_title", "misago_categories_category"."last_thread_slug", "misago_categories_category"."last_poster_id", "misago_categories_category"."last_poster_name", "misago_categories_category"."last_poster_slug", "misago_categories_category"."require_threads_approval", "misago_categories_category"."require_replies_approval", "misago_categories_category"."require_edits_approval", "misago_categories_category"."prune_started_after", "misago_categories_category"."prune_replied_after", "misago_categories_category"."archive_pruned_in_id", "misago_categories_category"."css_class", "misago_categories_category"."lft", "misago_categories_category"."rght", "misago_categories_category"."tree_id", "misago_categories_category"."level" FROM "misago_categories_category" WHERE "misago_categories_category"."tree_id" = 1 ORDER BY "misago_categories_category"."lft" ASC
E
E SELECT "misago_categories_category"."id", "misago_categories_category"."parent_id", "misago_categories_category"."special_role", "misago_categories_category"."name", "misago_categories_category"."slug", "misago_categories_category"."short_name", "misago_categories_category"."color", "misago_categories_category"."description", "misago_categories_category"."is_closed", "misago_categories_category"."threads", "misago_categories_category"."posts", "misago_categories_category"."last_post_on", "misago_categories_category"."last_thread_id", "misago_categories_category"."last_thread_title", "misago_categories_category"."last_thread_slug", "misago_categories_category"."last_poster_id", "misago_categories_category"."last_poster_name", "misago_categories_category"."last_poster_slug", "misago_categories_category"."require_threads_approval", "misago_categories_category"."require_replies_approval", "misago_categories_category"."require_edits_approval", "misago_categories_category"."prune_started_after", "misago_categories_category"."prune_replied_after", "misago_categories_category"."archive_pruned_in_id", "misago_categories_category"."css_class", "misago_categories_category"."lft", "misago_categories_category"."rght", "misago_categories_category"."tree_id", "misago_categories_category"."level" FROM "misago_categories_category" WHERE "misago_categories_category"."special_role" = 'private_threads' LIMIT 21
E
E DECLARE "_django_curs_8436375680_sync_85" NO SCROLL CURSOR WITHOUT HOLD FOR SELECT "misago_categories_rolecategoryacl"."id", "misago_categories_rolecategoryacl"."role_id", "misago_categories_rolecategoryacl"."category_id", "misago_categories_rolecategoryacl"."category_role_id", "misago_categories_categoryrole"."id", "misago_categories_categoryrole"."name", "misago_categories_categoryrole"."special_role", "misago_categories_categoryrole"."permissions" FROM "misago_categories_rolecategoryacl" INNER JOIN "misago_categories_categoryrole" ON ("misago_categories_rolecategoryacl"."category_role_id" = "misago_categories_categoryrole"."id") WHERE "misago_categories_rolecategoryacl"."role_id" IN (1, 8)
E
E SELECT "misago_categories_category"."id", "misago_categories_category"."parent_id", "misago_categories_category"."special_role", "misago_categories_category"."name", "misago_categories_category"."slug", "misago_categories_category"."short_name", "misago_categories_category"."color", "misago_categories_category"."description", "misago_categories_category"."is_closed", "misago_categories_category"."threads", "misago_categories_category"."posts", "misago_categories_category"."last_post_on", "misago_categories_category"."last_thread_id", "misago_categories_category"."last_thread_title", "misago_categories_category"."last_thread_slug", "misago_categories_category"."last_poster_id", "misago_categories_category"."last_poster_name", "misago_categories_category"."last_poster_slug", "misago_categories_category"."require_threads_approval", "misago_categories_category"."require_replies_approval", "misago_categories_category"."require_edits_approval", "misago_categories_category"."prune_started_after", "misago_categories_category"."prune_replied_after", "misago_categories_category"."archive_pruned_in_id", "misago_categories_category"."css_class", "misago_categories_category"."lft", "misago_categories_category"."rght", "misago_categories_category"."tree_id", "misago_categories_category"."level" FROM "misago_categories_category" WHERE "misago_categories_category"."tree_id" = 1 ORDER BY "misago_categories_category"."lft" ASC
E
E SELECT "misago_categories_category"."id", "misago_categories_category"."parent_id", "misago_categories_category"."special_role", "misago_categories_category"."name", "misago_categories_category"."slug", "misago_categories_category"."short_name", "misago_categories_category"."color", "misago_categories_category"."description", "misago_categories_category"."is_closed", "misago_categories_category"."threads", "misago_categories_category"."posts", "misago_categories_category"."last_post_on", "misago_categories_category"."last_thread_id", "misago_categories_category"."last_thread_title", "misago_categories_category"."last_thread_slug", "misago_categories_category"."last_poster_id", "misago_categories_category"."last_poster_name", "misago_categories_category"."last_poster_slug", "misago_categories_category"."require_threads_approval", "misago_categories_category"."require_replies_approval", "misago_categories_category"."require_edits_approval", "misago_categories_category"."prune_started_after", "misago_categories_category"."prune_replied_after", "misago_categories_category"."archive_pruned_in_id", "misago_categories_category"."css_class", "misago_categories_category"."lft", "misago_categories_category"."rght", "misago_categories_category"."tree_id", "misago_categories_category"."level" FROM "misago_categories_category" WHERE "misago_categories_category"."special_role" = 'private_threads' LIMIT 21
E
E SELECT "misago_threads_thread"."id", "misago_threads_thread"."category_id", "misago_threads_thread"."title", "misago_threads_thread"."slug", "misago_threads_thread"."replies", "misago_threads_thread"."has_events", "misago_threads_thread"."has_poll", "misago_threads_thread"."has_reported_posts", "misago_threads_thread"."has_open_reports", "misago_threads_thread"."has_unapproved_posts", "misago_threads_thread"."has_hidden_posts", "misago_threads_thread"."started_on", "misago_threads_thread"."last_post_on", "misago_threads_thread"."first_post_id", "misago_threads_thread"."starter_id", "misago_threads_thread"."starter_name", "misago_threads_thread"."starter_slug", "misago_threads_thread"."last_post_id", "misago_threads_thread"."last_post_is_event", "misago_threads_thread"."last_poster_id", "misago_threads_thread"."last_poster_name", "misago_threads_thread"."last_poster_slug", "misago_threads_thread"."weight", "misago_threads_thread"."is_unapproved", "misago_threads_thread"."is_hidden", "misago_threads_thread"."is_closed", "misago_threads_thread"."best_answer_id", "misago_threads_thread"."best_answer_is_protected", "misago_threads_thread"."best_answer_marked_on", "misago_threads_thread"."best_answer_marked_by_id", "misago_threads_thread"."best_answer_marked_by_name", "misago_threads_thread"."best_answer_marked_by_slug", "misago_categories_category"."id", "misago_categories_category"."parent_id", "misago_categories_category"."special_role", "misago_categories_category"."name", "misago_categories_category"."slug", "misago_categories_category"."short_name", "misago_categories_category"."color", "misago_categories_category"."description", "misago_categories_category"."is_closed", "misago_categories_category"."threads", "misago_categories_category"."posts", "misago_categories_category"."last_post_on", "misago_categories_category"."last_thread_id", "misago_categories_category"."last_thread_title", "misago_categories_category"."last_thread_slug", "misago_categories_category"."last_poster_id", "misago_categories_category"."last_poster_name", "misago_categories_category"."last_poster_slug", "misago_categories_category"."require_threads_approval", "misago_categories_category"."require_replies_approval", "misago_categories_category"."require_edits_approval", "misago_categories_category"."prune_started_after", "misago_categories_category"."prune_replied_after", "misago_categories_category"."archive_pruned_in_id", "misago_categories_category"."css_class", "misago_categories_category"."lft", "misago_categories_category"."rght", "misago_categories_category"."tree_id", "misago_categories_category"."level" FROM "misago_threads_thread" INNER JOIN "misago_categories_category" ON ("misago_threads_thread"."category_id" = "misago_categories_category"."id") WHERE "misago_threads_thread"."id" = 1 LIMIT 21
E
E SELECT "misago_categories_category"."id", "misago_categories_category"."parent_id", "misago_categories_category"."special_role", "misago_categories_category"."name", "misago_categories_category"."slug", "misago_categories_category"."short_name", "misago_categories_category"."color", "misago_categories_category"."description", "misago_categories_category"."is_closed", "misago_categories_category"."threads", "misago_categories_category"."posts", "misago_categories_category"."last_post_on", "misago_categories_category"."last_thread_id", "misago_categories_category"."last_thread_title", "misago_categories_category"."last_thread_slug", "misago_categories_category"."last_poster_id", "misago_categories_category"."last_poster_name", "misago_categories_category"."last_poster_slug", "misago_categories_category"."require_threads_approval", "misago_categories_category"."require_replies_approval", "misago_categories_category"."require_edits_approval", "misago_categories_category"."prune_started_after", "misago_categories_category"."prune_replied_after", "misago_categories_category"."archive_pruned_in_id", "misago_categories_category"."css_class", "misago_categories_category"."lft", "misago_categories_category"."rght", "misago_categories_category"."tree_id", "misago_categories_category"."level" FROM "misago_categories_category" WHERE "misago_categories_category"."special_role" = 'root_category' LIMIT 21
E
E SELECT "misago_notifications_watchedthread"."id", "misago_notifications_watchedthread"."user_id", "misago_notifications_watchedthread"."category_id", "misago_notifications_watchedthread"."thread_id", "misago_notifications_watchedthread"."send_emails", "misago_notifications_watchedthread"."secret", "misago_notifications_watchedthread"."created_at", "misago_notifications_watchedthread"."read_at" FROM "misago_notifications_watchedthread" WHERE ("misago_notifications_watchedthread"."thread_id" = 1 AND "misago_notifications_watchedthread"."user_id" = 1) ORDER BY "misago_notifications_watchedthread"."id" ASC LIMIT 2
E
E UPDATE "misago_notifications_watchedthread" SET "send_emails" = true WHERE "misago_notifications_watchedthread"."id" = 1
E
E UPDATE "misago_users_online" SET "last_click" = '2023-09-01T18:15:01.222436+00:00'::timestamptz WHERE "misago_users_online"."user_id" = 1
E
E SAVEPOINT "s8436375680_x5"
E
E UPDATE "django_session" SET "session_data" = '.eJxVjzEPgjAQhf9LZ0PaCm1hdHDTRAfX5ihXadACVlwI_91WGTS3vfe9u3sz0TA9Wz0FfGjXkIowsvnVajAd-mTcXYBrnyU1ZAlYrZAdPs5uJf_iLYQ2Zo0tqERTlyIXANTmnBbAldrSLWcKTSGFiECdGyZkU1pkDVOlBWRoKKCKS7_ntRu0adF0pJrJK37ieh_3n8bjeDnvE-eGVILLjMZJZVyIJbzH2MHCLeCyvAGkvU-K:1qc8fd:P3MLaBXTGYFJf3_yYeTkG4J6knvsNI17d-bqJRkhI3Y', "expire_date" = '2023-09-15T18:15:01.223394+00:00'::timestamptz WHERE "django_session"."session_key" = '83jrxc4syy6dfkfp6ch1emluyenotdfv'
E
E RELEASE SAVEPOINT "s8436375680_x5"
test/lib/python3.11/site-packages/pytest_django/fixtures.py:608: Failed
-------------------------------------------------------------- Captured stderr setup ---------------------------------------------------------------
Creating test database for alias 'default'...
------------------------------------------------------------- Captured stderr teardown -------------------------------------------------------------
Destroying test database for alias 'default'...
================================================================= warnings summary =================================================================
test/lib/python3.11/site-packages/kombu/utils/compat.py:82
/Users/petecheslock/repos/Misago/test/lib/python3.11/site-packages/kombu/utils/compat.py:82: DeprecationWarning: SelectableGroups dict interface is deprecated. Use select.
for ep in importlib_metadata.entry_points().get(namespace, [])
test/lib/python3.11/site-packages/django/http/request.py:1
/Users/petecheslock/repos/Misago/test/lib/python3.11/site-packages/django/http/request.py:1: DeprecationWarning: 'cgi' is deprecated and slated for removal in Python 3.13
import cgi
test/lib/python3.11/site-packages/django/utils/encoding.py:266
/Users/petecheslock/repos/Misago/test/lib/python3.11/site-packages/django/utils/encoding.py:266: DeprecationWarning: Use setlocale(), getencoding() and getlocale() instead
encoding = locale.getdefaultlocale()[1] or 'ascii'
test/lib/python3.11/site-packages/certifi/core.py:36
/Users/petecheslock/repos/Misago/test/lib/python3.11/site-packages/certifi/core.py:36: DeprecationWarning: path is deprecated. Use files() instead. Refer to https://importlib-resources.readthedocs.io/en/latest/using.html#migrating-from-legacy for migration advice.
_CACERT_CTX = get_path("certifi", "cacert.pem")
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
============================================================= short test summary info ==============================================================
FAILED misago/apiv2/threads/tests/test_thread_watch.py::test_thread_watch_api_enables_watched_thread_email_notifications - Failed: Expected to pe...
========================================================== 1 failed, 4 warnings in 4.40s ===========================================================
Steps used to recreate:
- Clone the
appmap-analysisbranch on Misago fork - Create virtualenv
python -m venv test - Activate venv
source test/bin/activate - pip install
pip install -r requirements.txt <Start Docker Desktop for Postgresql requirement>- Run
./doit.shto start the Postgresql container and export environment variables - Run pytest
pytest --no-covor run a single failed test
pytest --no-cov misago/apiv2/threads/tests/test_thread_watch.py::test_thread_watch_api_enables_watched_thread_email_notifications -v
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Run the listed tests in misago/apiv2/threads/tests/test_thread_watch.py and misago/acl/tests/test_providers.py with AppMap enabled, then compare them with the disabled baseline. Investigate the query-count failures and JSON serialization errors; done means all 10 failures pass while the full suite remains green.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- django, python
- Domain
- backend, testing
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100