René's URL Explorer Experiment


Title: Metabug: Improving C-level coverage · Issue #94808 · python/cpython · GitHub

Open Graph Title: Metabug: Improving C-level coverage · Issue #94808 · python/cpython

X Title: Metabug: Improving C-level coverage · Issue #94808 · python/cpython

Description: [edit by @encukou, May 2024] The coverage report and checklist are outdated. Run coverage locally before contributing. This bug is going to be used to track work in a other bugs to improve the C-level coverage of the CPython test suite. ...

Open Graph Description: [edit by @encukou, May 2024] The coverage report and checklist are outdated. Run coverage locally before contributing. This bug is going to be used to track work in a other bugs to improve the C-le...

X Description: [edit by @encukou, May 2024] The coverage report and checklist are outdated. Run coverage locally before contributing. This bug is going to be used to track work in a other bugs to improve the C-le...

Opengraph URL: https://github.com/python/cpython/issues/94808

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Metabug: Improving C-level coverage","articleBody":"*[edit by @encukou, May 2024] The coverage report and checklist are outdated. [Run coverage locally](https://devguide.python.org/testing/coverage/#measuring-coverage-of-c-code-with-gcov-and-lcov) before contributing.*\r\n\r\n---\r\n\r\nThis bug is going to be used to track work in a other bugs to improve the C-level coverage of the CPython test suite.\r\n\r\nThere is a set of ~~[baseline coverage results on main](http://droettboom.com/cpython-coverage/llvm-coverage/)~~ [edit: outdated, see above] that can be used to find coverage gaps.\r\n\r\nThe plan, [discussed on discuss.python.org](https://discuss.python.org/t/filing-c-level-test-coverage-bugs/17309) is as follows:\r\n\r\n- Read through the coverage report and record any notable gaps in the checklist below. The goal is not 100% coverage, and each area of improvement will probably require some judgement calls. For example, covering all cases where memory exhaustion can occur is probably not worth the effort. On the other hand, detailed coverage in the eval loop may be worth the effort.\r\n- When someone has \"read through\" a particular source file and added created subitems for any interesting gaps, they should check it off on the list below and add links to any issues created.\r\n\r\n**Related work:**\r\n\r\nThere is [related work to publish coverage results from CPython on a regular basis](https://github.com/python/cpython/issues/94759), but this issue is concerned with using those results to actually reduce our gaps in coverage.\r\n\r\n**List of source files:**\r\n\r\n- [x] `Include/internal/pycore_asdl.h`\r\n- [ ] `Include/internal/pycore_bitutils.h`\r\n- [ ] `Include/internal/pycore_call.h`\r\n- [ ] `Include/internal/pycore_code.h`\r\n- [ ] `Include/internal/pycore_frame.h`\r\n- [ ] `Include/internal/pycore_moduleobject.h`\r\n- [ ] `Include/internal/pycore_object.h`\r\n- [ ] `Include/internal/pycore_pymath.h`\r\n- [ ] `Include/internal/pycore_pymem.h`\r\n- [ ] `Include/internal/pycore_pystate.h`\r\n- [ ] `Include/object.h`\r\n- [ ] `Include/pydtrace.h`\r\n- [x] `Objects/abstract.c`\r\n  - [ ] Buffer related functions: `PyBuffer_FromContiguous`, `PyObject_CopyData`, `PyBuffer_FillContiguousStrides`\r\n  - [ ] `PyNumber_Check` doesn't test `complex`\r\n  - [ ] `PySequence_Repeat` and `PySequence_InPlaceRepeat` have no coverage\r\n  - [x] `PySequence_SetItem` with a negative index is untested\r\n  - [ ] `PySequence_SetSlice` and `PySequence_DelSlice` are untested\r\n  - [ ] `PyMapping_HasKey` and `PyMapping_HasKeyString` are untested\r\n- [x] `Objects/accu.c`\r\n- [x] `Objects/boolobject.c` \r\n  - [x] #94859\r\n- [x] `Objects/bytearrayobject.c`\r\n  - [x] #95802\r\n- [x] `Objects/bytes_methods.c`\r\n- [x] `Objects/bytesobject.c`\r\n  - [x] ~In `PyBytes_FromFormatV`, the special handling of `%p` isn't tested.~  It's only the case where the underlying libc is broken that isn't tested.\r\n  - [x] #95895\r\n- [ ] `Objects/call.c`\r\n  - [ ] `PyEval_CallObjectWithKeywords` has no coverage\r\n  - [ ] `_PyObject_CallMethodId_SizeT` has no coverage\r\n- [x] `Objects/capsule.c`\r\n- [x] `Objects/cellobject.c`\r\n- [x] `Objects/classobject.c`\r\n- [x] `Objects/codeobject.c` \r\n  - [x] #94814 \r\n  - [x] #96609\r\n  - [ ] #94816  \r\n- [ ] `Objects/complexobject.c`\r\n- [x] `Objects/descrobject.c`\r\n- [ ] `Objects/dictobject.c`\r\n  - [ ] In `dictresize` [convert split table into new combined table\"](http://droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Objects/dictobject.c.html#L1448) is uncovered.\r\n  - [ ] [`_PyDict_GetItemHint`](http://droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Objects/dictobject.c.html#L1689) has no coverage\r\n- [x] `Objects/enumobject.c`\r\n- [x] `Objects/exceptions.c`\r\n- [ ] `Objects/fileobject.c`\r\n  - [ ] `PyFile_FromFd` has no coverage\r\n  - [ ] `PyFile_GetLine` over `bytes` input has no coverage \r\n- [x] `Objects/floatobject.c` \r\n  - [x] #94860\r\n- [x] `Objects/frameobject.c` \r\n  - [ ] frame_setlineno has poor coverage in its helper functions [get_arg](http://[droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Objects/frameobject.c.html#L114) and [mark_stacks](http://[droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Objects/frameobject.c.html#L188).\r\n  - [ ] [_PyFrame_GetState](http://droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Objects/frameobject.c.html#L456) has a switch statement where only the default case is covered.\r\n  - [ ] In [_PyFrame_FastToLocalsWithError](http://[droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Objects/frameobject.c.html#L980) there is no test that exercises the COPY_FREE_VARS case.\r\n- [x] `Objects/funcobject.c`\r\n  - [ ] A bunch of API is untested: `PyFunction_GetCode`, `PyFunction_GetGlobals`, `PyFunction_GetModule`, `PyFunction_GetDefaults`, `PyFunction_SetDefaults`, `PyFunction_GetKwDefaults`, `PyFunction_SetKwDefaults`, `PyFunction_GetClosure`, `PyFunction_SetClosure`, `PyFunction_GetAnnotations`, `PyFunction_SetAnnotations` \\\r\n  - [x] #98449\r\n  - [x] #98317 \r\n- [x] `Objects/genericaliasobject.c`\r\n- [x] `Objects/genobject.c`\r\n  - [ ] `gen_new_with_qualname` and API `PyGen_NewWithQualName` and `PyGen_New` have no coverage.\r\n  - [ ] `PyCoro_New` has no coverage\r\n  - [ ] `PyAsyncGen_New` has no coverage\r\n  - [ ] `async_gen_athrow_send` has poor coverage\r\n- [x] `Objects/interpreteridobject.c`\r\n- [x] `Objects/iterobject.c`\r\n  - [x] #95923\r\n- [x] `Objects/listobject.c`\r\n- [x] `Objects/longobject.c`\r\n  - [ ] `_PyLong_Sing_t_Converter` has no coverage\r\n  - [ ] `long_format_binary` doesn't test outputting to UCS2 or UCS4\r\n  - [ ] `int_bit_length_impl` and `int_bit_count_impl` doesn't cover the case where [expression overflows](http://droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Objects/longobject.c.html#L5690)\r\n- [x] `Objects/memoryobject.c`\r\n  - [ ] `init_slice` is [not well-covered](http://droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Objects/memoryobject.c.html#L2408)\r\n- [x] `Objects/methodobject.c`\r\n- [x] `Objects/moduleobject.c`\r\n  - [ ] `PyModule_GetFilename` has no coverage \r\n- [x] `Objects/namespaceobject.c`\r\n- [x] `Objects/object.c`\r\n  - [ ] `PyObject_Print` has no coverage \r\n  - [x] `PyObject_Bytes` does not test the case where there is a `__bytes__`\r\n  - [x] #96627\r\n  - [ ] `PyObject_SetAttrString` doesn't test when object has a `tp_setattr`\r\n  - [ ] `PyObject_GetAttrString` doesn't test when object has a `tp_getattr`\r\n  - [ ] `_PyObject_LookupAttr` doesn't test when object has a `tp_getattr`\r\n- [ ] `Objects/obmalloc.c`\r\n- [x] `Objects/odictobject.c`\r\n- [x] `Objects/picklebufobject.c`\r\n  - [ ] `PyPickleBuffer_FromObject`, `PyPickleBuffer_Release` has no coverage\r\n- [x] `Objects/rangeobject.c`\r\n- [x] `Objects/setobject.c`\r\n- [x] `Objects/sliceobject.c`\r\n  - [ ] `PySlice_GetIndices`/`PySlice_GetIndicesEx` has no coverage\r\n- [ ] `Objects/stringlib/codecs.h`\r\n- [ ] `Objects/stringlib/count.h`\r\n- [ ] `Objects/stringlib/ctype.h`\r\n- [ ] `Objects/stringlib/eq.h`\r\n- [ ] `Objects/stringlib/fastsearch.h`\r\n  - [x] #96760 \r\n- [ ] `Objects/stringlib/find.h`\r\n- [ ] `Objects/stringlib/find_max_char.h`\r\n- [ ] `Objects/stringlib/join.h`\r\n- [ ] `Objects/stringlib/localeutil.h`\r\n- [ ] `Objects/stringlib/partition.h`\r\n- [ ] `Objects/stringlib/replace.h`\r\n- [ ] `Objects/stringlib/split.h`\r\n- [ ] `Objects/stringlib/transmogrify.h`\r\n- [ ] `Objects/stringlib/undef.h`\r\n- [ ] `Objects/stringlib/unicode_format.h`\r\n- [x] `Objects/structseq.c`\r\n- [x] `Objects/tupleobject.c`\r\n- [x] `Objects/typeobject.c`\r\n  - [ ] `wrap_sq_setitem` has no coverage\r\n- [x] `Objects/unicodectype.c`\r\n- [x] `Objects/unicodeobject.c`\r\n  - [ ] `xmlcharrefreplace` doesn't test for codepoints \u003c 100 (This seems almost impossible to occur).\r\n  - [ ] `resize_inplace` has no coverage\r\n  - [ ] `unicode_kind_name` when `!PyUnicode_IS_COMPACT` isn't covered -- *low priority* used by consistency check only\r\n  - [ ] `unicode_write_cstr` doesn't test writing into UCS2 or UCS4\r\n  - [x] #96677\r\n  - [ ] `PyUnicode_AsDecodedObject`, `PyUnicode_AsDecodedUnicode`, `PyUnicode_AsEncodedObject`, `PyUnicode_AsEncodedUnicode` has no coverage\r\n  - [ ] `_Py_DecodeUTF8Ex` and `_Py_EncodeUTF8Ex` has no coverage for `error == surrogateescape`\r\n  - [ ] `PyUnicode_BuildEncodingMap` doesn't handle the `need_dict` case\r\n  - [ ] `ucs1lib_find_slice` and `ucs1lib_rfind_slice` aren't covered.\r\n  - [x] `PyUnicode_Count` has no coverage\r\n  - [x] #98228\r\n  - [x] `PyUnicode_CompareWithASCIIString` has no coverage for comparing with UCS2 or UCS4\r\n  - [ ] `_PyUnicode_EqualToASCIIId` has no coverage\r\n- [x] `Objects/unicodetype_db.h`\r\n- [x] `Objects/unionobject.c`\r\n- [x] `Objects/weakrefobject.c`\r\n- [x] `Parser/action_helpers.c`\r\n  - [ ] `_PyPegen_set_expr_context` doesn't cover \"starred kind\"\r\n  - [ ] `_PyPegen_get_expr_name` switch statement coverage is non-exhaustive\r\n- [x] `Parser/myreadline.c` (N/A Windows-only)\r\n- [x] `Parser/parser.c`\r\n- [x] `Parser/peg_api.c`\r\n- [x] `Parser/pegen.c`\r\n- [x] `Parser/pegen.h`\r\n- [x] `Parser/pegen_errors.c`\r\n  - [x] #94926\r\n- [x] `Parser/string_parser.c`\r\n  - [x] #95925\r\n- [ ] `Parser/tokenizer.c` \r\n  - [x] #94823 \r\n  - [ ] tokenizer.c seems to have no coverage for a few functions related to interactive usage, e.g. [tok_underflow_interactive](http://droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Parser/tokenizer.c.html#L841) and [tok_concatenate_interactive_newline](http://droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Parser/tokenizer.c.html#L301).\r\n- [x] ~`Python/Python-ast.c`~ Generated code\r\n- [x] `Python/Python-tokenize.c`\r\n- [x] `Python/_warnings.c`\r\n  - [ ] `show_warning` doesn't cover the case where there is a `sourceline`.\r\n  - [ ] `PyErr_WarnExplicit` has no coverage\r\n- [ ] `Python/asdl.c`\r\n- [x] `Python/ast.c`\r\n  - [ ] `ensure_literal_*` functions aren't covered\r\n  - [ ] `validate_pattern_match_value` doesn't cover all elements of switch \r\n- [x] `Python/ast_opt.c`\r\n  - [ ] `check_complexity` doesn't cover the `frozenset` case\r\n  - [ ] `ast_foldbody` isn't covered\r\n- [ ] `Python/ast_unparse.c`\r\n- [ ] `Python/bltinmodule.c`\r\n- [ ] `Python/bootstrap_hash.c`\r\n- [x] `Python/ceval.c`\r\n  - [ ] `PyEval_AquireLock` and `PyEval_ReleaseLock` are uncovered\r\n  - [x] #95932\r\n  - [ ] `STORE_ATTR_WITH_HINT` doesn't cover the [case where the dictionary doesn't have Unicode keys](http://droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Python/ceval.c.html#L3797)\r\n  - [x] `CALL_FUNCTION_EX` doesn't cover the case where kwargs is [not an exact dict](http://droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Python/ceval.c.html#L5393)\r\n  - [ ] `PyEval_EvalCodeEx` doesn't cover the case where [kwargs are passed in](http://droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Python/ceval.c.html#L6497)\r\n  - [ ] `PyEval_GetFrame` has no coverage\r\n  - [x] #98300\r\n- [ ] `Python/ceval_gil.h`\r\n- [ ] `Python/codecs.c`\r\n- [x] `Python/compile.c` \r\n  - [ ] [write_instr](http://droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Python/compile.c.html#L201) is not handling the case where ilen \u003e 2. It might be that those are never seen in practice...? If so, feel free to close this bug.\r\n  - [ ] [check_ann_subscr](http://droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Python/compile.c.html#L5989) doesn't have any coverage for slice or tuple kinds. \r\n  - [ ] [optimize_basic_block](http://droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Python/compile.c.html#L8986) has some opcodes that aren't covered in the JUMP_IF_FALSE_OR_POP and the JUMP_IF_TRUE_OR_POP cases.\r\n- [ ] `Python/condvar.h`\r\n- [ ] `Python/context.c`\r\n  - [ ] `PyContext_Copy`, `PyContext_Enter`, `PyContext_Exit` have no coverage\r\n- [ ] `Python/deepfreeze/deepfreeze.c`\r\n- [ ] `Python/dtoa.c`\r\n- [ ] `Python/dup2.c`\r\n- [x] `Python/dynamic_annotations.c`\r\n- [ ] `Python/errors.c`\r\n- [x] `Python/fileutils.c`\r\n  - [ ] `is_valid_wide_char` doesn't test error branches\r\n  - [ ] `encode_ascii`/`decode_ascii` has no coverage (probably very low priority -- comment says only for platforms with a broken mbstowcs (FreeBSD, OpenIndiana)\r\n  - [ ] `_Py_stat` has no coverage\r\n- [ ] `Python/formatter_unicode.c`\r\n- [x] `Python/frame.c`\r\n- [ ] `Python/frozenmain.c`\r\n- [ ] `Python/future.c`\r\n- [ ] `Python/getargs.c`\r\n- [ ] `Python/getopt.c`\r\n- [ ] `Python/hamt.c`\r\n- [ ] `Python/hashtable.c`\r\n- [ ] `Python/import.c`\r\n- [ ] `Python/importdl.c`\r\n- [ ] `Python/initconfig.c`\r\n- [ ] `Python/marshal.c`\r\n- [ ] `Python/modsupport.c`\r\n- [ ] `Python/mysnprintf.c`\r\n- [ ] `Python/mystrtoul.c`\r\n- [ ] `Python/pathconfig.c`\r\n- [ ] `Python/preconfig.c`\r\n- [ ] `Python/pyarena.c`\r\n- [x] `Python/pyfpe.c`\r\n- [ ] `Python/pyhash.c`\r\n- [ ] `Python/pylifecycle.c`\r\n- [ ] `Python/pystate.c`\r\n- [ ] `Python/pystrcmp.c`\r\n- [ ] `Python/pystrhex.c`\r\n- [ ] `Python/pystrtod.c`\r\n- [ ] `Python/pythonrun.c`\r\n- [ ] `Python/pytime.c`\r\n- [x] `Python/specialize.c`\r\n- [ ] `Python/structmember.c`\r\n- [ ] `Python/suggestions.c`\r\n- [x] `Python/symtable.c`\r\n- [ ] `Python/sysmodule.c`\r\n- [ ] `Python/thread.c`\r\n- [x] `Python/traceback.c`\r\n  - [x] tracebacks with angle-bracketed filenames https://github.com/python/cpython/issues/95259 \r\n  - [ ] tb_printinternal with `depth \u003e limit`\r\n  - [ ] `_PyTraceBack_Print_Indented` with overflowing `tracebacklimit`\r\n  - [ ] No coverage for `_Py_DumpDecimal`, `_Py_DumpHexadecimal`, `_Py_DumpASCII`, `dump_frame`, `dump_traceback`, `_Py_DumpTraceback`, `write_thread_id`, `_Py_DumpTracebackThreads` -- possibly they have tests which are disabled under some circumstances. \r\n\r\n\r\n\u003c!-- gh-pr-number: gh-98749 --\u003e\r\n* PR: gh-98749\r\n\u003c!-- /gh-pr-number --\u003e\r\n\r\n\r\n\u003c!-- gh-pr-number: gh-96767 --\u003e\r\n* PR: gh-96767\r\n\u003c!-- /gh-pr-number --\u003e\r\n\r\n\r\n\u003c!-- gh-pr-number: gh-99091 --\u003e\r\n* PR: gh-99091\r\n\u003c!-- /gh-pr-number --\u003e\r\n\r\n\r\n\u003c!-- gh-pr-number: gh-99123 --\u003e\r\n* PR: gh-99123\r\n\u003c!-- /gh-pr-number --\u003e\r\n\r\n\r\n\u003c!-- gh-pr-number: gh-98300 --\u003e\r\n* PR: gh-98300\r\n\u003c!-- /gh-pr-number --\u003e\r\n\r\n\r\n\u003c!-- gh-pr-number: gh-98809 --\u003e\r\n* PR: gh-98809\r\n\u003c!-- /gh-pr-number --\u003e\r\n\r\n\r\n\u003c!-- gh-pr-number: gh-99126 --\u003e\r\n* PR: gh-99126\r\n\u003c!-- /gh-pr-number --\u003e\r\n\r\n\r\n\u003c!-- gh-pr-number: gh-99133 --\u003e\r\n* PR: gh-99133\r\n\u003c!-- /gh-pr-number --\u003e\r\n\r\n\r\n\u003c!-- gh-pr-number: gh-99196 --\u003e\r\n* PR: gh-99196\r\n\u003c!-- /gh-pr-number --\u003e\r\n\r\n\r\n\u003c!-- gh-pr-number: gh-99319 --\u003e\r\n* PR: gh-99319\r\n\u003c!-- /gh-pr-number --\u003e\r\n\r\n\r\n\u003c!-- gh-pr-number: gh-99429 --\u003e\r\n* PR: gh-99429\r\n\u003c!-- /gh-pr-number --\u003e\r\n\r\n\r\n\u003c!-- gh-pr-number: gh-99472 --\u003e\r\n* PR: gh-99472\r\n\u003c!-- /gh-pr-number --\u003e\r\n\r\n\r\n\u003c!-- gh-pr-number: gh-97672 --\u003e\r\n* PR: gh-97672\r\n\u003c!-- /gh-pr-number --\u003e\r\n\r\n\r\n\u003c!-- gh-pr-number: gh-100483 --\u003e\r\n* PR: gh-100483\r\n\u003c!-- /gh-pr-number --\u003e\r\n\r\n\r\n\u003c!-- gh-pr-number: gh-100484 --\u003e\r\n* PR: gh-100484\r\n\u003c!-- /gh-pr-number --\u003e\r\n\r\n\r\n\u003c!-- gh-pr-number: gh-100619 --\u003e\r\n* PR: gh-100619\r\n\u003c!-- /gh-pr-number --\u003e\r\n\r\n\r\n\u003c!-- gh-pr-number: gh-102469 --\u003e\r\n* PR: gh-102469\r\n\u003c!-- /gh-pr-number --\u003e\r\n\r\n\r\n\u003c!-- gh-pr-number: gh-111445 --\u003e\r\n* PR: gh-111445\r\n\u003c!-- /gh-pr-number --\u003e\r\n\r\n\r\n\u003c!-- gh-pr-number: gh-117421 --\u003e\r\n* PR: gh-117421\r\n\u003c!-- /gh-pr-number --\u003e\r\n\r\n\r\n\u003c!-- gh-pr-number: gh-119222 --\u003e\r\n* PR: gh-119222\r\n\u003c!-- /gh-pr-number --\u003e\r\n\r\n\r\n\u003c!-- gh-pr-number: gh-119227 --\u003e\r\n* PR: gh-119227\r\n\u003c!-- /gh-pr-number --\u003e\r\n\n\n\u003c!-- gh-pr-number: gh-119263 --\u003e\n* PR: gh-119263\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-119264 --\u003e\n* PR: gh-119264\n\u003c!-- /gh-pr-number --\u003e\n\n\n\u003c!-- gh-pr-number: gh-138866 --\u003e\n* PR: gh-138866\n\u003c!-- /gh-pr-number --\u003e\n","author":{"url":"https://github.com/mdboom","@type":"Person","name":"mdboom"},"datePublished":"2022-07-13T19:13:00.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":28},"url":"https://github.com/94808/cpython/issues/94808"}

route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:5a79b083-c813-393a-4c75-8e366c88ab67
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-id93D6:2B2A2E:1AC70E3:25CEFB4:696901F2
html-safe-noncef7991361abc7be71cefe059b135c97cb0c8f0bb1c6bbcbfde52aeb2b48f818e2
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5M0Q2OjJCMkEyRToxQUM3MEUzOjI1Q0VGQjQ6Njk2OTAxRjIiLCJ2aXNpdG9yX2lkIjoiMjQwOTczNTA1NTk3MzQyMTk0IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0=
visitor-hmaca95c920e8a18221c24f3b505d1834def4315af58e1d847c4caee808717987be0
hovercard-subject-tagissue:1303833875
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/python/cpython/94808/issue_layout
twitter:imagehttps://opengraph.githubassets.com/2d8726752bdca7c36b3217a2ca05c36f383bc94c06efc7a5b0a7dfe0f9fa85b6/python/cpython/issues/94808
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/2d8726752bdca7c36b3217a2ca05c36f383bc94c06efc7a5b0a7dfe0f9fa85b6/python/cpython/issues/94808
og:image:alt[edit by @encukou, May 2024] The coverage report and checklist are outdated. Run coverage locally before contributing. This bug is going to be used to track work in a other bugs to improve the C-le...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernamemdboom
hostnamegithub.com
expected-hostnamegithub.com
Nonee6156bd4ef9f2dc8dadf4c49a8f7ed8532186388cef72eda3ccb9f0ab3b8cfca
turbo-cache-controlno-preview
go-importgithub.com/python/cpython git https://github.com/python/cpython.git
octolytics-dimension-user_id1525981
octolytics-dimension-user_loginpython
octolytics-dimension-repository_id81598961
octolytics-dimension-repository_nwopython/cpython
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id81598961
octolytics-dimension-repository_network_root_nwopython/cpython
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
releasefd1938215b152e2c6a29cf56fec07fd9f91f1203
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/python/cpython/issues/94808#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython%2Fcpython%2Fissues%2F94808
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub SparkBuild and deploy intelligent appshttps://github.com/features/spark
GitHub ModelsManage and compare promptshttps://github.com/features/models
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython%2Fcpython%2Fissues%2F94808
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=python%2Fcpython
Reloadhttps://github.com/python/cpython/issues/94808
Reloadhttps://github.com/python/cpython/issues/94808
Reloadhttps://github.com/python/cpython/issues/94808
python https://github.com/python
cpythonhttps://github.com/python/cpython
Please reload this pagehttps://github.com/python/cpython/issues/94808
Notifications https://github.com/login?return_to=%2Fpython%2Fcpython
Fork 33.9k https://github.com/login?return_to=%2Fpython%2Fcpython
Star 71.1k https://github.com/login?return_to=%2Fpython%2Fcpython
Code https://github.com/python/cpython
Issues 5k+ https://github.com/python/cpython/issues
Pull requests 2k https://github.com/python/cpython/pulls
Actions https://github.com/python/cpython/actions
Projects 31 https://github.com/python/cpython/projects
Security Uh oh! There was an error while loading. Please reload this page. https://github.com/python/cpython/security
Please reload this pagehttps://github.com/python/cpython/issues/94808
Insights https://github.com/python/cpython/pulse
Code https://github.com/python/cpython
Issues https://github.com/python/cpython/issues
Pull requests https://github.com/python/cpython/pulls
Actions https://github.com/python/cpython/actions
Projects https://github.com/python/cpython/projects
Security https://github.com/python/cpython/security
Insights https://github.com/python/cpython/pulse
New issuehttps://github.com/login?return_to=https://github.com/python/cpython/issues/94808
New issuehttps://github.com/login?return_to=https://github.com/python/cpython/issues/94808
Metabug: Improving C-level coveragehttps://github.com/python/cpython/issues/94808#top
easyhttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%22easy%22
testsTests in the Lib/test dirhttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%22tests%22
type-bugAn unexpected behavior, bug, or errorhttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%22type-bug%22
https://github.com/mdboom
https://github.com/mdboom
mdboomhttps://github.com/mdboom
on Jul 13, 2022https://github.com/python/cpython/issues/94808#issue-1303833875
@encukouhttps://github.com/encukou
Run coverage locallyhttps://devguide.python.org/testing/coverage/#measuring-coverage-of-c-code-with-gcov-and-lcov
baseline coverage results on mainhttp://droettboom.com/cpython-coverage/llvm-coverage/
discussed on discuss.python.orghttps://discuss.python.org/t/filing-c-level-test-coverage-bugs/17309
related work to publish coverage results from CPython on a regular basishttps://github.com/python/cpython/issues/94759
gh-94808: Add coverage for boolobject.c:bool_new #94859https://github.com/python/cpython/pull/94859
gh-94808: Add coverage for bytesarray_setitem #95802https://github.com/python/cpython/pull/95802
gh-94808: Improve coverage of _PyBytes_FormatEx #95895https://github.com/python/cpython/pull/95895
[coverage] codeobject.c: _PyCode_CreateLineArray #94814https://github.com/python/cpython/issues/94814
gh-94808: _PyLineTable_StartsLine was not used #96609https://github.com/python/cpython/pull/96609
[coverage] codeobject.c: decode_linetable #94816https://github.com/python/cpython/issues/94816
convert split table into new combined table"http://droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Objects/dictobject.c.html#L1448
_PyDict_GetItemHinthttp://droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Objects/dictobject.c.html#L1689
gh-94808: Cover handling non-finite numbers from round when ndigits is provided #94860https://github.com/python/cpython/pull/94860
get_arghttp://%5Bdroettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Objects/frameobject.c.html#L114
mark_stackshttp://%5Bdroettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Objects/frameobject.c.html#L188
_PyFrame_GetStatehttp://droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Objects/frameobject.c.html#L456
_PyFrame_FastToLocalsWithErrorhttp://%5Bdroettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Objects/frameobject.c.html#L980
gh-94808: cover PyFunction_GetDefaults and PyFunction_SetDefaults #98449https://github.com/python/cpython/pull/98449
[3.11] gh-94808: Cover PyFunction_GetCode, PyFunction_GetGlobals,… #98317https://github.com/python/cpython/pull/98317
gh-94808: Coverage: Check picklablability of calliter #95923https://github.com/python/cpython/pull/95923
expression overflowshttp://droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Objects/longobject.c.html#L5690
not well-coveredhttp://droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Objects/memoryobject.c.html#L2408
gh-94808: Add test coverage for PyObject_HasAttrString #96627https://github.com/python/cpython/pull/96627
gh-94808: Improve coverage of fastsearch.h #96760https://github.com/python/cpython/pull/96760
gh-94808: Cover %p in PyUnicode_FromFormat #96677https://github.com/python/cpython/pull/96677
gh-94808: Cover str.rsplit for UCS1, UCS2 or UCS4 #98228https://github.com/python/cpython/pull/98228
gh-72889: remove redundant mock.Mock()._is_coroutine = False workarounds #94926https://github.com/python/cpython/pull/94926
gh-94808: Coverage: Test uppercase string literal prefixes #95925https://github.com/python/cpython/pull/95925
[coverage] tokenizer.c: valid_utf8 #94823https://github.com/python/cpython/issues/94823
tok_underflow_interactivehttp://droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Parser/tokenizer.c.html#L841
tok_concatenate_interactive_newlinehttp://droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Parser/tokenizer.c.html#L301
gh-94808: Coverage: __build_class__ inside a non-dict __builtins__ #95932https://github.com/python/cpython/pull/95932
case where the dictionary doesn't have Unicode keyshttp://droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Python/ceval.c.html#L3797
not an exact dicthttp://droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Python/ceval.c.html#L5393
kwargs are passed inhttp://droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Python/ceval.c.html#L6497
gh-94808: Cover PyEval_GetFuncDesc function #98300https://github.com/python/cpython/pull/98300
write_instrhttp://droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Python/compile.c.html#L201
check_ann_subscrhttp://droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Python/compile.c.html#L5989
optimize_basic_blockhttp://droettboom.com/cpython-coverage/llvm-coverage/coverage/home/mdboom/Work/builds/cpython/Python/compile.c.html#L8986
[coverage ] Missing test for tracebacks with angle bracketed filename #95259https://github.com/python/cpython/issues/95259
gh-94808:Improve coverage of PyObject_Print #98749https://github.com/python/cpython/pull/98749
gh-94808: Cover LOAD_GLOBAL for custom dict subtypes #96767https://github.com/python/cpython/pull/96767
[3.11] gh-94808: Cover LOAD_GLOBAL for custom dict subtypes (GH-96767) #99091https://github.com/python/cpython/pull/99091
gh-94808: add tests covering PySequence_{Set,Del}Slice #99123https://github.com/python/cpython/pull/99123
gh-94808: Cover PyEval_GetFuncDesc function #98300https://github.com/python/cpython/pull/98300
gh-94808: add tests covering PyFunction_GetKwDefaults and PyFunction_SetKwDefaults #98809https://github.com/python/cpython/pull/98809
[3.11] gh-94808: add tests covering PyEval_GetFuncDesc function (GH-98300) #99126https://github.com/python/cpython/pull/99126
[3.11] gh-94808: add tests covering PySequence_{Set,Del}Slice (GH-99123) #99133https://github.com/python/cpython/pull/99133
gh-94808: add tests covering PySequence_[InPlace_]Repeat #99196https://github.com/python/cpython/pull/99196
gh-94808: add tests covering PySequence_[InPlace]Concat #99319https://github.com/python/cpython/pull/99319
gh-94808: add tests covering PyFunction_{Get,Set}Closure #99429https://github.com/python/cpython/pull/99429
gh-94808: improve coverage of number formatting #99472https://github.com/python/cpython/pull/99472
gh-94808: [coverage] Add an asynchronous generator test #97672https://github.com/python/cpython/pull/97672
[3.11] gh-94808: improve test coverage of number formatting (GH-99472) #100483https://github.com/python/cpython/pull/100483
[3.10] gh-94808: improve test coverage of number formatting (GH-99472) #100484https://github.com/python/cpython/pull/100484
gh-94808: Improve coverage of dictresize #100619https://github.com/python/cpython/pull/100619
GH-94808: Cover PyOS_mystrnicmp and PyOS_mystricmp #102469https://github.com/python/cpython/pull/102469
gh-94808: Add coverage test for number check #111445https://github.com/python/cpython/pull/111445
gh-94808: Fix refcounting in PyObject_Print tests #117421https://github.com/python/cpython/pull/117421
gh-94808: Add test coverage for "starred kind" in _PyPegen_set_expr_context #119222https://github.com/python/cpython/pull/119222
gh-94808: Remove unused code in _make_posargs #119227https://github.com/python/cpython/pull/119227
[3.13] gh-94808: Add test coverage for "starred kind" in _PyPegen_set_expr_context (GH-119222) #119263https://github.com/python/cpython/pull/119263
[3.12] gh-94808: Add test coverage for "starred kind" in _PyPegen_set_expr_context (GH-119222) #119264https://github.com/python/cpython/pull/119264
gh-94808: add test coversage for PyFile_FromFd #138866https://github.com/python/cpython/pull/138866
easyhttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%22easy%22
testsTests in the Lib/test dirhttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%22tests%22
type-bugAn unexpected behavior, bug, or errorhttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%22type-bug%22
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.