Internal error with `ansi_strwrap`when string contains `\r\n\r` in `cli_abort()` message
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 42/100
Línea de trabajo
Start by reproducing the minimal cli::cli_abort() example in an R console and tracing cli::ansi_strwrap(), which is identified in the backtrace as the failing entry point. Compare it with the longer knitr/txtProgressBar stderr example; done means messages containing these carriage-return and newline sequences no longer produce an internal error.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Running in RStudio R console this leads to an internal error
> cli::cli_abort("processing file: report.qmd\r\n\r |")
Error:
! ! Internal error in `cli::ansi_strwrap()`
Run `rlang::last_trace()` to see where the error occurred.
> rlang::last_trace()
<error/rlang_error>
Error:
! ! Internal error in `cli::ansi_strwrap()`
---
Backtrace:
▆
1. └─cli::cli_abort("processing file: report.qmd\r\n\r |")
2. └─rlang::abort(...)
3. └─rlang:::signal_abort(cnd, .file)
4. └─rlang::cnd_message(cnd, inherit = TRUE, prefix = TRUE)
5. └─rlang:::cnd_message_format_prefixed(cnd, ..., parent = FALSE)
6. └─rlang:::cnd_message_format(cnd, ..., alert = alert)
7. └─rlang (local) cli_format(glue_escape(lines))
8. └─rlang:::.rlang_cli_format(x, cli::format_error)
9. └─cli::cli_format(x, .envir = emptyenv())
10. └─cli::cli_fmt(...)
11. └─cli:::cli__fmt(rec, collapse, strip_newline)
12. ├─base::do.call(app[[msg$type]], msg$args)
13. └─cli (local) `<fn>`(text = `<named list>`, id = "cli-8944-50", class = NULL)
14. └─cli:::clii_bullets(app, text, id, class)
15. └─base::lapply(...)
16. └─cli (local) FUN(X[[i]], ...)
17. └─app$text(text[[i]])
18. └─cli:::clii_text(app, text)
19. └─app$xtext(text)
20. └─cli:::clii__xtext(...)
21. └─cli::ansi_strwrap(text, exdent = exdent, width = app$get_width(extra = padding))
22. └─throw(cli_error("Internal error in {.fun cli::ansi_strwrap}"))
The message string is part of the content created by knitr progress bar which uses txtProgressBar.
I encountered this in the context of quarto R package, where quarto render is run with processx::run() and I wanted to use cli_abort() in the error catch
https://github.com/quarto-dev/quarto-r/blob/8a0bcb3a7cf35ce4eb2b412d6d09542cc7b2b35d/R/quarto.R#L41-L48
The full stderr I get in the code above is the following, which leads to same error
msg <- "processing file: report.qmd\r\n\r | \r | | 0%\r | \r |................. | 33% \r | \r |................................... | 67% [unnamed-chunk-1]\r\n\n\nQuitting from lines 8-9 [unnamed-chunk-1] (report.qmd)\r\nError:\r\n! true message\r\n\r \r\nExécution arrêtée\r\n"
> cli::cli_abort(msg)
Error:
! ! Internal error in `cli::ansi_strwrap()`
Run `rlang::last_trace()` to see where the error occurred.
- Lenguaje dominante
- R
- Estrellas
- 729
- Forks
- 94
- Merge medio
- 5 d 32 min
- PR fusionados (30 d)
- 5
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de r-lib/cli
-
C function cli_progress_sleep() is used in an example but not documented.Posiblemente ocupada @shreyabyte la tomó hace 58 días. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 68/100
-
`pb_elapsed` should not show minutes & fractions of secondsPosiblemente ocupada @mcol la tomó hace 413 días. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 42/100
-
feat: add `.duration` and `.time_ago` inline stylesPosiblemente ocupada @jjjermiah la tomó hace 174 días. Abiertofeature
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
-
docs: provide llms.txtAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 48/100
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
add bootmlmAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 62/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
extendr/extendr.github.io#134 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
nmfs-ost/stockplotr#416 ·
Los mantenedores suelen responder en 1 día
-
ragnar_find_links() does not include the root URL in its resultsPosiblemente ocupada @andrie la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100