On Mon, Jul 1, 2024 at 6:08 PM Jeff King <peff@xxxxxxxx> wrote: > [...] > This commit adds another option: feeding the snippet via the function's > stdin. This doesn't conflict with anything the snippet would want to do, > because we always redirect its stdin from /dev/null anyway (which we'll > continue to do). > > Signed-off-by: Jeff King <peff@xxxxxxxx> > --- > diff --git a/t/README b/t/README > @@ -906,6 +906,14 @@ see test-lib-functions.sh for the full list and their options. > + If <script> is `-` (a single dash), then the script to run is read > + from stdin. This lets you more easily use single quotes within the > + script by using a here-doc. For example: > + > + test_expect_success 'output contains expected string' - <<\EOT > + grep "this string has 'quotes' in it" output > + EOT We lose `chainlint` functionality for test bodies specified in this manner. Restoring such functionality will require some (possibly) not-so-subtle changes. There are at least a couple issues which need to be addressed: (1) chainlint.pl:ScriptParser::parse_cmd() only currently recognizes `test_expect_* [prereq] 'title' 'body'` but will now also need to recognize `test_expect_success [prereq] 'title' - <body-as-here-doc>`. (2) Until now, chainlint.pl has never had to concern itself with the body of a here-doc; it just throws them away. With this new calling convention, here-doc bodies become relevant and must be returned by the lexer. This may involve some not-so-minor surgery.