aboutsummaryrefslogtreecommitdiff
path: root/testsuite/awk.tests
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/awk.tests')
-rwxr-xr-xtestsuite/awk.tests28
1 files changed, 15 insertions, 13 deletions
diff --git a/testsuite/awk.tests b/testsuite/awk.tests
index c61d32947..5a792c241 100755
--- a/testsuite/awk.tests
+++ b/testsuite/awk.tests
@@ -557,14 +557,12 @@ testing 'awk gensub backslashes \' \
557 'awk '$sq'BEGIN { s="\\"; print "s=" s; print gensub("a", s, "g", "a|a") }'$sq \ 557 'awk '$sq'BEGIN { s="\\"; print "s=" s; print gensub("a", s, "g", "a|a") }'$sq \
558 's=\\ 558 's=\\
559\\|\\ 559\\|\\
560' \ 560' '' ''
561 '' ''
562testing 'awk gensub backslashes \\' \ 561testing 'awk gensub backslashes \\' \
563 'awk '$sq'BEGIN { s="\\\\"; print "s=" s; print gensub("a", s, "g", "a|a") }'$sq \ 562 'awk '$sq'BEGIN { s="\\\\"; print "s=" s; print gensub("a", s, "g", "a|a") }'$sq \
564 's=\\\\ 563 's=\\\\
565\\|\\ 564\\|\\
566' \ 565' '' ''
567 '' ''
568# gawk 5.1.1 handles trailing unpaired \ inconsistently. 566# gawk 5.1.1 handles trailing unpaired \ inconsistently.
569# If replace string is single \, it is used verbatim, 567# If replace string is single \, it is used verbatim,
570# but if it is \\\ (three slashes), gawk uses "\<NUL>" (!!!), not "\\" as you would expect. 568# but if it is \\\ (three slashes), gawk uses "\<NUL>" (!!!), not "\\" as you would expect.
@@ -572,31 +570,35 @@ testing 'awk gensub backslashes \\\' \
572 'awk '$sq'BEGIN { s="\\\\\\"; print "s=" s; print gensub("a", s, "g", "a|a") }'$sq \ 570 'awk '$sq'BEGIN { s="\\\\\\"; print "s=" s; print gensub("a", s, "g", "a|a") }'$sq \
573 's=\\\\\\ 571 's=\\\\\\
574\\\\|\\\\ 572\\\\|\\\\
575' \ 573' '' ''
576 '' ''
577testing 'awk gensub backslashes \\\\' \ 574testing 'awk gensub backslashes \\\\' \
578 'awk '$sq'BEGIN { s="\\\\\\\\"; print "s=" s; print gensub("a", s, "g", "a|a") }'$sq \ 575 'awk '$sq'BEGIN { s="\\\\\\\\"; print "s=" s; print gensub("a", s, "g", "a|a") }'$sq \
579 's=\\\\\\\\ 576 's=\\\\\\\\
580\\\\|\\\\ 577\\\\|\\\\
581' \ 578' '' ''
582 '' ''
583testing 'awk gensub backslashes \&' \ 579testing 'awk gensub backslashes \&' \
584 'awk '$sq'BEGIN { s="\\&"; print "s=" s; print gensub("a", s, "g", "a|a") }'$sq \ 580 'awk '$sq'BEGIN { s="\\&"; print "s=" s; print gensub("a", s, "g", "a|a") }'$sq \
585 's=\\& 581 's=\\&
586&|& 582&|&
587' \ 583' '' ''
588 '' ''
589testing 'awk gensub backslashes \0' \ 584testing 'awk gensub backslashes \0' \
590 'awk '$sq'BEGIN { s="\\0"; print "s=" s; print gensub("a", s, "g", "a|a") }'$sq \ 585 'awk '$sq'BEGIN { s="\\0"; print "s=" s; print gensub("a", s, "g", "a|a") }'$sq \
591 's=\\0 586 's=\\0
592a|a 587a|a
593' \ 588' '' ''
594 '' ''
595testing 'awk gensub backslashes \\0' \ 589testing 'awk gensub backslashes \\0' \
596 'awk '$sq'BEGIN { s="\\\\0"; print "s=" s; print gensub("a", s, "g", "a|a") }'$sq \ 590 'awk '$sq'BEGIN { s="\\\\0"; print "s=" s; print gensub("a", s, "g", "a|a") }'$sq \
597 's=\\\\0 591 's=\\\\0
598\\0|\\0 592\\0|\\0
599' \ 593' '' ''
594
595# The "b" in "abc" should not match <b* pattern.
596# Currently we use REG_STARTEND ("This flag is a BSD extension, not present in POSIX")
597# to implement the code to handle this correctly, but if your libc has no REG_STARTEND,
598# the alternative code mishandles this case.
599testing 'awk gsub erroneous word start match' \
600 "awk 'BEGIN { a=\"abc\"; gsub(/\<b*/,\"\",a); print a }'" \
601 'abc\n' \
600 '' '' 602 '' ''
601 603
602exit $FAILCOUNT 604exit $FAILCOUNT