getappmap / getappmap/appmap-python

Test Failures on Misago Project with AppMap Enabled

オープン
#252 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

bug
主要言語
Python
スター
104
フォーク
17
PR マージ指標
30日以内にマージされた PR はありません

説明

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:

  1. Clone the appmap-analysis branch on Misago fork
  2. Create virtualenv python -m venv test
  3. Activate venv source test/bin/activate
  4. pip install pip install -r requirements.txt
  5. <Start Docker Desktop for Postgresql requirement>
  6. Run ./doit.sh to start the Postgresql container and export environment variables
  7. Run pytest pytest --no-cov or 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

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

misago/apiv2/threads/tests/test_thread_watch.py と misago/acl/tests/test_providers.py に記載されているテストを AppMap を有効にして実行し、その後、無効時のベースラインと比較してください。クエリ数の失敗と JSON シリアライズエラーを調査してください。10 件すべての失敗がパスし、完全なテストスイートも引き続きグリーンであることが完了の条件です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
django, python
領域
backend, testing
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。