Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

test_str: the UCS4 adaptive search path is never exercised

Abierto
#160,501 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
20/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Estancado
Stack tecnológico
python
Área
testing

Línea de trabajo

Start with Lib/test/test_str.py beside test_find and review string_tests.BaseTest.test_adaptive_find to match its existing long-string setup. Add the proposed non-BMP character case and run the relevant string tests; done when the UCS4 adaptive search path is exercised. The issue says the author already has the change ready and plans to open a pull request.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

tests

Summary

Objects/stringlib/fastsearch.h compiles adaptive_find once per character
width. The UCS4 copy never ran under the entire test suite, because the only test
that reaches the adaptive path, string_tests.BaseTest.test_adaptive_find, uses
ASCII strings.

Evidence

Coverage from a --coverage build of main running the full suite
(./python -m test -j4, 552 files, 52,070 tests):

Function 'ucs4lib_adaptive_find'   Lines executed:0.00% of 39
Function 'ucs2lib_adaptive_find'   Lines executed:66.67% of 39
Function 'ucs1lib_adaptive_find'   Lines executed:71.79% of 39
Function 'asciilib_adaptive_find'  Lines executed:79.49% of 39

Why the existing test misses it

The adaptive branch is taken only when, in Objects/stringlib/fastsearch.h:800:

  • the haystack is at least 2500 characters,
  • the needle is at least 100 characters (or the haystack at least 30000),
  • the needle is at least a third of the haystack.

test_adaptive_find meets all three, but with 'a' and 'b', so the code that
runs is the ASCII or UCS1 instantiation. Nothing in the suite builds a haystack
that wide-and-long out of non-BMP characters, so the UCS4 instantiation stays
cold.

Proposal

Add a test next to test_find in Lib/test/test_str.py that repeats the same
shape with '\U0001d11e' and '\U0001d11f'. With that test present,
ucs4lib_adaptive_find goes from 0.00% to 89.74% of 39 lines, and the remaining
branches are the count and reverse-search modes, which are separate entry points.

This is a test-only change, so it does not alter behaviour. I have it ready and
will open a PR against this issue.

CPython versions tested on

CPython main branch (3.16.0a1+)

Operating systems tested on

Linux

Linked PRs
  • gh-160502
Lenguaje dominante
Python
Estrellas
77.7k
Forks
38.3k
Merge medio
13 h 30 min
PR fusionados (30 d)
708

Preparar el entorno

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de python/cpython

Todos los issues de python/cpython

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.