diff --git a/guix/import/utils.scm b/guix/import/utils.scm index 6f5efa790e8..646482eb4ad 100644 --- a/guix/import/utils.scm +++ b/guix/import/utils.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2012, 2013, 2018, 2019, 2020, 2023 Ludovic Courtès ;;; Copyright © 2016 Jelle Licht ;;; Copyright © 2016 David Craven -;;; Copyright © 2017, 2019, 2020, 2022, 2023, 2024 Ricardo Wurmus +;;; Copyright © 2017, 2019, 2020, 2022, 2023, 2024, 2025 Ricardo Wurmus ;;; Copyright © 2018 Oleg Pykhalov ;;; Copyright © 2019 Robert Vollmert ;;; Copyright © 2020 Helio Machado <0x2b3bfa0+guix@googlemail.com> @@ -422,7 +422,11 @@ LENGTH characters." (substring synopsis 0 (1- (string-length synopsis)))) (else synopsis)))) - (string-trim-both cleaned))) + ;; Escape single @ to prevent it from being understood as invalid Texinfo + ;; syntax. + (regexp-substitute/global #f "@" + (string-trim-both cleaned) + 'pre "@@" 'post))) (define* (package-names->package-inputs names #:optional (output #f)) "Given a list of PACKAGE-NAMES or (PACKAGE-NAME VERSION) pairs, and an diff --git a/tests/import-utils.scm b/tests/import-utils.scm index 607349203c6..4183903cd12 100644 --- a/tests/import-utils.scm +++ b/tests/import-utils.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015, 2017, 2022, 2023, 2024 Ricardo Wurmus +;;; Copyright © 2015, 2017, 2022, 2023, 2024, 2025 Ricardo Wurmus ;;; Copyright © 2016 Ben Woodcroft ;;; Copyright © 2020 Martin Becze ;;; Copyright © 2021 Sarah Morgensen @@ -69,6 +69,14 @@ Differences are hard to spot, e.g. in CLOS vs. GOOPS.")) "The main functions are: @code{haplo.em()} and @code{haplo.power()}; FYI." (beautify-description "The main functions are: haplo.em() and haplo.power(); FYI.")) +(test-equal "beautify-synopsis: escape @" + "This is invalid @@syntax" + (beautify-synopsis "This is invalid @syntax")) + +(test-equal "beautify-synopsis: escape @" + "Just an @@ in the middle" + (beautify-synopsis "Just an @ in the middle")) + (test-equal "license->symbol" 'license:lgpl2.0 (license->symbol license:lgpl2.0))