Subject: Re: [PATCH 1/1] tests: make surrogate-pair pass under Cygwin

From: Paul Eggert <[email-masked]>
Date: Tue, 23 Nov 2021 18:34:51 -0800

I installed the attached fancier patch instead; please give it a try.

I'm boldly marking the bug as fixed; we can unmark it later if I'm wrong.

From 1ef60a1566e6c2df610bf29bd2c2994d58dd1e89 Mon Sep 17 00:00:00 2001
From: Paul Eggert <[email-masked]>
Date: Tue, 23 Nov 2021 18:28:10 -0800
Subject: [PATCH] tests: skip surrogate-search test on Cygwin

Cygwin does not support surrogate-pair search strings, so
skip the test there (Bug#27555).
* tests/Makefile.am (TESTS): Add surrogate-search.
* tests/surrogate-pair: Remove surrogate-search test,
which is now done by surrogate-search.
* tests/surrogate-search: New test, which is skipped on Cygwin.
---
 tests/Makefile.am      |  1 +
 tests/surrogate-pair   |  6 ------
 tests/surrogate-search | 42 ++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 43 insertions(+), 6 deletions(-)
 create mode 100755 tests/surrogate-search

diff --git a/tests/Makefile.am b/tests/Makefile.am
index c84cdc0..92f194f 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -161,6 +161,7 @@ TESTS =						\
   stack-overflow				\
   status					\
   surrogate-pair				\
+  surrogate-search				\
   symlink					\
   triple-backref				\
   turkish-I					\
diff --git a/tests/surrogate-pair b/tests/surrogate-pair
index a91fa36..c1cbaba 100755
--- a/tests/surrogate-pair
+++ b/tests/surrogate-pair
@@ -51,10 +51,4 @@ case $io_pair in
   *) fail_ "unexpected output: $io_pair"; fail=1;;
 esac
 
-# Also test whether a surrogate-pair in the search string works.
-for opt in '' -i -E -F -iE -iF; do
-  grep --file=in $opt in > out 2>&1 || fail=1
-  compare out in || fail=1
-done
-
 Exit $fail
diff --git a/tests/surrogate-search b/tests/surrogate-search
new file mode 100755
index 0000000..2679c3c
--- /dev/null
+++ b/tests/surrogate-search
@@ -0,0 +1,42 @@
+#!/bin/sh
+# Check characters outside the Unicode BMP in the search string.
+
+# Copyright 2021 Free Software Foundation, Inc.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../src
+
+require_en_utf8_locale_
+require_compiled_in_MB_support
+
+case $(uname -s) in
+  CYGWIN*)
+    skip_ 'surrogate-pair search string on Cygwin, where it cannot work';;
+esac
+
+fail=0
+
+s_pair=$(printf '\360\220\220\205')
+printf '%s\n' "$s_pair" > in || framework_failure_
+
+LC_ALL=en_US.UTF-8
+export LC_ALL
+
+for opt in '' -i -E -F -iE -iF; do
+  grep --file=in $opt in > out 2>&1 || fail=1
+  compare out in || fail=1
+done
+
+Exit $fail
-- 
2.33.1