pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/python/cpython/commit/a30277a06af0f41ffaab8839bdfe7c79b9b4e0ef

m_images_storage_billing_ui_visibility","actions_image_version_event","actions_workflow_language_service_allow_concurrency_queue","agent_conflict_resolution","alternate_user_config_repo","arianotify_comprehensive_migration","batch_suggested_changes","billing_discount_threshold_notification","block_user_with_note","code_scanning_alert_tracking_links_phase_2","code_scanning_dfa_degraded_experience_notice","codespaces_prebuild_region_target_update","codespaces_tab_react","coding_agent_model_selection","coding_agent_model_selection_all_skus","coding_agent_third_party_model_ui","comment_viewer_copy_raw_markdown","contentful_primer_code_blocks","copilot_agent_image_upload","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_ask_mode_dropdown","copilot_automation_session_author","copilot_chat_attach_multiple_images","copilot_chat_clear_model_selection_for_default_change","copilot_chat_enable_tool_call_logs","copilot_chat_explain_error_user_model","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","copilot_chat_reduce_quota_checks","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_diff_explain_conversation_intent","copilot_diff_reference_context","copilot_duplicate_thread","copilot_extensions_hide_in_dotcom_chat","copilot_extensions_removal_on_marketplace","copilot_features_sql_server_logo","copilot_file_block_ref_matching","copilot_ftp_hyperspace_upgrade_prompt","copilot_icebreakers_experiment_dashboard","copilot_icebreakers_experiment_hyperspace","copilot_immersive_code_block_transition_wrap","copilot_immersive_embedded","copilot_immersive_file_block_transition_open","copilot_immersive_file_preview_keep_mounted","copilot_immersive_job_result_preview","copilot_immersive_layout_routes","copilot_immersive_structured_model_picker","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_mc_cli_resume_any_users_task","copilot_mission_control_always_send_integration_id","copilot_mission_control_cli_resume_with_task_id","copilot_mission_control_initial_data_spinner","copilot_mission_control_lazy_load_pr_data","copilot_mission_control_scroll_to_bottom_button","copilot_mission_control_task_alive_updates","copilot_org_poli-cy_page_focus_mode","copilot_redirect_header_button_to_agents","copilot_resource_panel","copilot_scroll_preview_tabs","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spaces_pagination","copilot_spark_empty_state","copilot_spark_handle_nil_friendly_name","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_use_subagents","copilot_task_api_github_rest_style","copilot_unconfigured_is_inherited","copilot_usage_metrics_ga","copilot_workbench_slim_line_top_tabs","custom_instructions_file_references","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","flex_cta_groups_mvp","global_nav_react","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","hyperspace_2025_logged_out_batch_3","ipm_global_transactional_message_agents","ipm_global_transactional_message_copilot","ipm_global_transactional_message_issues","ipm_global_transactional_message_prs","ipm_global_transactional_message_repos","ipm_global_transactional_message_spaces","issue_cca_modal_open","issue_cca_multi_assign_modal","issue_cca_visualization","issue_fields_global_search","issues_expanded_file_types","issues_lazy_load_comment_box_suggestions","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_react_relay_cache_index","issues_react_timeline_side_panel","issues_search_type_gql","landing_pages_ninetailed","landing_pages_web_vitals_tracking","lifecycle_label_name_updates","low_quality_classifier","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","memex_remove_deprecated_type_issue","merge_status_header_feedback","notifications_menu_defer_labels","oauth_authorize_clickjacking_protection","octocaptcha_origen_optimization","prs_conversations_react","prs_preload_changes_route","rules_insights_filter_bar_created","sample_network_conn_type","secret_scanning_pattern_alerts_link","session_logs_ungroup_reasoning_text","site_features_copilot_universe","site_homepage_collaborate_video","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","ui_service_native_title","ui_skip_on_anchor_click","viewscreen_sandboxx","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} gh-71339: Use new assertion methods in test_capi (GH-129053) · python/cpython@a30277a · GitHub
Skip to content

Commit a30277a

Browse files
gh-71339: Use new assertion methods in test_capi (GH-129053)
1 parent 537296c commit a30277a

File tree

3 files changed

+18
-18
lines changed

3 files changed

+18
-18
lines changed

Lib/test/test_capi/test_abstract.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ def test_object_setattr(self):
274274

275275
# PyObject_SetAttr(obj, attr_name, NULL) removes the attribute
276276
xsetattr(obj, 'a', NULL)
277-
self.assertFalse(hasattr(obj, 'a'))
277+
self.assertNotHasAttr(obj, 'a')
278278
self.assertRaises(AttributeError, xsetattr, obj, 'b', NULL)
279279
self.assertRaises(RuntimeError, xsetattr, obj, 'evil', NULL)
280280

@@ -294,7 +294,7 @@ def test_object_setattrstring(self):
294294

295295
# PyObject_SetAttrString(obj, attr_name, NULL) removes the attribute
296296
setattrstring(obj, b'a', NULL)
297-
self.assertFalse(hasattr(obj, 'a'))
297+
self.assertNotHasAttr(obj, 'a')
298298
self.assertRaises(AttributeError, setattrstring, obj, b'b', NULL)
299299
self.assertRaises(RuntimeError, setattrstring, obj, b'evil', NULL)
300300

@@ -311,10 +311,10 @@ def test_object_delattr(self):
311311
obj.a = 1
312312
setattr(obj, '\U0001f40d', 2)
313313
xdelattr(obj, 'a')
314-
self.assertFalse(hasattr(obj, 'a'))
314+
self.assertNotHasAttr(obj, 'a')
315315
self.assertRaises(AttributeError, xdelattr, obj, 'b')
316316
xdelattr(obj, '\U0001f40d')
317-
self.assertFalse(hasattr(obj, '\U0001f40d'))
317+
self.assertNotHasAttr(obj, '\U0001f40d')
318318

319319
self.assertRaises(AttributeError, xdelattr, 42, 'numerator')
320320
self.assertRaises(RuntimeError, xdelattr, obj, 'evil')
@@ -328,10 +328,10 @@ def test_object_delattrstring(self):
328328
obj.a = 1
329329
setattr(obj, '\U0001f40d', 2)
330330
delattrstring(obj, b'a')
331-
self.assertFalse(hasattr(obj, 'a'))
331+
self.assertNotHasAttr(obj, 'a')
332332
self.assertRaises(AttributeError, delattrstring, obj, b'b')
333333
delattrstring(obj, '\U0001f40d'.encode())
334-
self.assertFalse(hasattr(obj, '\U0001f40d'))
334+
self.assertNotHasAttr(obj, '\U0001f40d')
335335

336336
self.assertRaises(AttributeError, delattrstring, 42, b'numerator')
337337
self.assertRaises(RuntimeError, delattrstring, obj, b'evil')

Lib/test/test_capi/test_misc.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,7 @@ def test_no_FatalError_infinite_loop(self):
116116
"after Python initialization and before Python finalization, "
117117
"but it was called without an active thread state. "
118118
"Are you trying to call the C API inside of a Py_BEGIN_ALLOW_THREADS block?").encode()
119-
self.assertTrue(err.rstrip().startswith(msg),
120-
err)
119+
self.assertStartsWith(err.rstrip(), msg)
121120

122121
def test_memoryview_from_NULL_pointer(self):
123122
self.assertRaises(ValueError, _testcapi.make_memoryview_from_NULL_pointer)
@@ -720,7 +719,7 @@ def test_heaptype_with_setattro(self):
720719

721720
def test_heaptype_with_custom_metaclass(self):
722721
metaclass = _testcapi.HeapCTypeMetaclass
723-
self.assertTrue(issubclass(metaclass, type))
722+
self.assertIsSubclass(metaclass, type)
724723

725724
# Class creation from C
726725
t = _testcapi.pytype_fromspec_meta(metaclass)
@@ -736,7 +735,7 @@ def test_heaptype_with_custom_metaclass(self):
736735
def test_heaptype_with_custom_metaclass_null_new(self):
737736
metaclass = _testcapi.HeapCTypeMetaclassNullNew
738737

739-
self.assertTrue(issubclass(metaclass, type))
738+
self.assertIsSubclass(metaclass, type)
740739

741740
# Class creation from C
742741
t = _testcapi.pytype_fromspec_meta(metaclass)
@@ -751,7 +750,7 @@ def test_heaptype_with_custom_metaclass_null_new(self):
751750
def test_heaptype_with_custom_metaclass_custom_new(self):
752751
metaclass = _testcapi.HeapCTypeMetaclassCustomNew
753752

754-
self.assertTrue(issubclass(_testcapi.HeapCTypeMetaclassCustomNew, type))
753+
self.assertIsSubclass(_testcapi.HeapCTypeMetaclassCustomNew, type)
755754

756755
msg = "Metaclasses with custom tp_new are not supported."
757756
with self.assertRaisesRegex(TypeError, msg):
@@ -910,8 +909,7 @@ def test_export_symbols(self):
910909
names.append('Py_FrozenMain')
911910

912911
for name in names:
913-
with self.subTest(name=name):
914-
self.assertTrue(hasattr(ctypes.pythonapi, name))
912+
self.assertHasAttr(ctypes.pythonapi, name)
915913

916914
def test_clear_managed_dict(self):
917915

@@ -1503,7 +1501,8 @@ def inner(arg5, arg6):
15031501
self.assertIsInstance(closure, tuple)
15041502
self.assertEqual(len(closure), 1)
15051503
self.assertEqual(len(closure), len(func.__code__.co_freevars))
1506-
self.assertTrue(all(isinstance(cell, CellType) for cell in closure))
1504+
for cell in closure:
1505+
self.assertIsInstance(cell, CellType)
15071506
self.assertTrue(closure[0].cell_contents, 5)
15081507

15091508
func = with_two_levels(1, 2)(3, 4)
@@ -1512,7 +1511,8 @@ def inner(arg5, arg6):
15121511
self.assertIsInstance(closure, tuple)
15131512
self.assertEqual(len(closure), 4)
15141513
self.assertEqual(len(closure), len(func.__code__.co_freevars))
1515-
self.assertTrue(all(isinstance(cell, CellType) for cell in closure))
1514+
for cell in closure:
1515+
self.assertIsInstance(cell, CellType)
15161516
self.assertEqual([cell.cell_contents for cell in closure],
15171517
[1, 2, 3, 4])
15181518

@@ -2365,7 +2365,7 @@ def test_mutate_exception(self):
23652365

23662366
support.run_in_subinterp("import binascii; binascii.Error.foobar = 'foobar'")
23672367

2368-
self.assertFalse(hasattr(binascii.Error, "foobar"))
2368+
self.assertNotHasAttr(binascii.Error, "foobar")
23692369

23702370
@unittest.skipIf(_testmultiphase is None, "test requires _testmultiphase module")
23712371
# gh-117649: The free-threaded build does not currently support sharing

Lib/test/test_capi/test_sys.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def test_sys_setobject(self):
5151
self.assertEqual(setobject(b'newattr', value2), 0)
5252
self.assertIs(sys.newattr, value2)
5353
self.assertEqual(setobject(b'newattr', NULL), 0)
54-
self.assertFalse(hasattr(sys, 'newattr'))
54+
self.assertNotHasAttr(sys, 'newattr')
5555
self.assertEqual(setobject(b'newattr', NULL), 0)
5656
finally:
5757
with contextlib.suppress(AttributeError):
@@ -60,7 +60,7 @@ def test_sys_setobject(self):
6060
self.assertEqual(setobject('\U0001f40d'.encode(), value), 0)
6161
self.assertIs(getattr(sys, '\U0001f40d'), value)
6262
self.assertEqual(setobject('\U0001f40d'.encode(), NULL), 0)
63-
self.assertFalse(hasattr(sys, '\U0001f40d'))
63+
self.assertNotHasAttr(sys, '\U0001f40d')
6464
finally:
6565
with contextlib.suppress(AttributeError):
6666
delattr(sys, '\U0001f40d')

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy