guix/tests
Mark H Weaver 485ac28235
utils: Allow text substitution even in the presence of NUL characters.
Fixes <https://issues.guix.gnu.org/30116>.

Before this change, the presence of a NUL character on a line meant that
the (glibc) regexp engine used by Guile would either 1. stop scanning the
string or 2. crash with the error "string contains #\\nul character",
depending on the locale used.

This change works around this limitation by first replacing the NUL character
by an unused Unicode code point, doing the substitution, then reverting the
replacement.

* guix/build/utils.scm (unused-private-use-code-point)
(replace-char): New procedures.
(substitute): Make use of the above procedures to work around the NUL
character regexp engine limitation.
* tests/build-utils.scm: Add tests.

Co-authored-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2021-01-08 14:10:33 -05:00
..
services
accounts.scm
base16.scm
base32.scm build: Remove references to the 'nix-hash' program. 2020-08-29 16:24:17 +02:00
base64.scm
boot-parameters.scm system: Add store-directory-prefix to boot-parameters. 2020-11-01 02:28:38 +01:00
bournish.scm
build-utils.scm utils: Allow text substitution even in the presence of NUL characters. 2021-01-08 14:10:33 -05:00
builders.scm
cache.scm
challenge.scm
channels.scm tests: Add missing copyright line. 2020-10-12 18:23:47 +02:00
civodul.key
combinators.scm
containers.scm linux-container: Reset jailed root permissions. 2020-10-01 12:51:13 +02:00
cpan.scm
cpio.scm
cran.scm
crate.scm
cve-sample.json
cve.scm
debug-link.scm
derivations.scm
discovery.scm
dsa.key
ed25519.key
ed25519.sec
ed25519bis.key
ed25519bis.sec
elpa.scm
file-systems.scm
gem.scm
gexp.scm gexp: Warn when importing (guix config) or (ice-9 …). 2020-11-05 16:13:50 +01:00
git-authenticate.scm
git.scm
glob.scm
gnu-maintenance.scm
grafts.scm
graph.scm graph: Adjust test for recent OCaml changes. 2020-10-20 16:30:15 +02:00
gremlin.scm gremlin: Add 'file-needed/recursive'. 2020-12-01 21:30:28 +01:00
guix-archive.sh tests: Simplify shell exit status negation; 2020-09-28 21:06:36 -05:00
guix-authenticate.sh authenticate: Encode strings as ISO-8859-1. 2020-09-15 14:40:20 +02:00
guix-build-branch.sh tests: Simplify shell exit status negation; 2020-09-28 21:06:36 -05:00
guix-build.sh packages: Better preserve object identity when rewriting. 2020-10-20 16:30:15 +02:00
guix-daemon.sh tests: Simplify shell exit status negation; 2020-09-28 21:06:36 -05:00
guix-describe.sh
guix-download.sh tests: Simplify shell exit status negation; 2020-09-28 21:06:36 -05:00
guix-environment-container.sh environment: Turn "lo" up in network-less containers. 2020-10-05 10:41:59 +02:00
guix-environment.sh tests: Simplify shell exit status negation; 2020-09-28 21:06:36 -05:00
guix-gc.sh tests: Simplify shell exit status negation; 2020-09-28 21:06:36 -05:00
guix-git-authenticate.sh tests: Simplify shell exit status negation; 2020-09-28 21:06:36 -05:00
guix-graph.sh tests: Simplify shell exit status negation; 2020-09-28 21:06:36 -05:00
guix-hash.sh tests: Simplify shell exit status negation; 2020-09-28 21:06:36 -05:00
guix-lint.sh tests: Simplify shell exit status negation; 2020-09-28 21:06:36 -05:00
guix-pack-localstatedir.sh
guix-pack-relocatable.sh pack: Relocatable wrapper leaves root available to child processes. 2020-10-31 23:16:43 +01:00
guix-pack.sh tests: Simplify shell exit status negation; 2020-09-28 21:06:36 -05:00
guix-package-aliases.sh guix build: Record package transformations in manifest entries. 2020-10-02 23:28:09 +02:00
guix-package-net.sh tests: Simplify shell exit status negation; 2020-09-28 21:06:36 -05:00
guix-package.sh guix package: Re-apply package transformation when upgrading. 2020-10-02 23:28:09 +02:00
guix-repl.sh repl: Look for script files in (getcwd). 2020-09-16 16:04:01 +02:00
guix-system.sh tests: Test "guix system search .". 2020-11-06 16:38:12 +01:00
hackage.scm
import-utils.scm
inferior.scm
lint.scm lint: Add 'check-haskell-stackage' checker. 2020-11-21 22:11:36 -05:00
modules.scm
monads.scm
nar.scm
networking.scm
offload.scm offload: Modify the build-machine record to accept multiple systems. 2020-08-25 13:45:27 -04:00
opam.scm tests: opam: Test additional syntax. 2020-10-02 00:44:14 +02:00
openpgp.scm openpgp: Fix argument order of 'fxbit-set?'. 2020-09-29 22:53:36 +02:00
pack.scm
packages.scm Merge remote-tracking branch 'origin/master' into core-updates 2020-11-29 17:34:18 +00:00
pki.scm
print.scm
processes.scm
profiles.scm
publish.scm publish: Create files in the cache as #o644. 2020-11-09 23:27:09 +01:00
pypi.scm
records.scm
rsa.key
scripts.scm
search-paths.scm
services.scm
sets.scm
signing-key.pub
signing-key.sec
size.scm
snix.scm
status.scm
store-database.scm store-database: Add test checking the directory mtime after 'register-path'. 2020-11-21 12:39:14 +01:00
store-deduplication.scm
store-roots.scm
store.scm tests: Remove one 'delete-paths' call in 'tests/store.scm'. 2020-09-14 15:42:56 +02:00
substitute.scm Use "guile-zlib" and "guile-lzlib" instead of (guix config). 2020-08-24 13:35:24 +02:00
swh.scm
syscalls.scm
system.scm
test.drv
texlive.scm
transformations.scm guix build: Move transformation options to (guix transformations). 2020-10-31 23:16:43 +01:00
ui.scm
union.scm
upstream.scm
utils.scm Use "guile-zlib" and "guile-lzlib" instead of (guix config). 2020-08-24 13:35:24 +02:00
uuid.scm
workers.scm