Module Name: src
Committed By: rillig
Date: Sun Feb 7 01:53:54 UTC 2021
Modified Files:
src/distrib/sets/lists/tests: mi
src/tests/lib/libcurses/check_files: Makefile addch.chk addstr.chk
src/tests/lib/libcurses/tests: addch addnstr addstr waddnstr waddstr
Added Files:
src/tests/lib/libcurses/check_files: addnstr.chk waddstr.chk
Log Message:
libcurses: demonstrate bug in addch that doubles tab indentation
When adding "\t" via addch, win.curx advances by twice the spaces as
intended. This bug was introduced somewhere between NetBSD 8.0 and 9.0.
Adding "\t" via addstr does not have this bug.
This bug causes the installation menu of sysinst to be have its menu
items indented by 16 characters instead of only 8. This in turn
produces an ugly line break in the German translation.
The test framework for libcurses is not well integrated into ATF.
Whenever the expected output is longer than the actual output, or vice
versa, the test passes nevertheless. This makes it necessary to
constantly look into atf-run.log to see whether the actual output is
indeed equal to the expected output, which is crucial, especially for
telling the difference between addstr and addnstr.
Reusing the .chk files for several tests is not a good idea either. For
example, addstr and waddstr are supposed to produce the same result for
ASCII-only text, so it was tempting to use the same file. But waddstr
seems to have a bug (maybe undefined behavior), at least waddstr returns
ERR in one case where it shouldn't. This means that currently the
expected output (acknowledging the bug) must be different.
The "expected" test output in waddstr.chk looks completely broken, but
that's exactly what the test produces right now.
To generate a diff of this commit:
cvs rdiff -u -r1.1015 -r1.1016 src/distrib/sets/lists/tests/mi
cvs rdiff -u -r1.4 -r1.5 src/tests/lib/libcurses/check_files/Makefile
cvs rdiff -u -r1.2 -r1.3 src/tests/lib/libcurses/check_files/addch.chk
cvs rdiff -u -r0 -r1.1 src/tests/lib/libcurses/check_files/addnstr.chk \
src/tests/lib/libcurses/check_files/waddstr.chk
cvs rdiff -u -r1.1 -r1.2 src/tests/lib/libcurses/check_files/addstr.chk
cvs rdiff -u -r1.2 -r1.3 src/tests/lib/libcurses/tests/addch \
src/tests/lib/libcurses/tests/addnstr
cvs rdiff -u -r1.1 -r1.2 src/tests/lib/libcurses/tests/addstr \
src/tests/lib/libcurses/tests/waddnstr \
src/tests/lib/libcurses/tests/waddstr
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/distrib/sets/lists/tests/mi
diff -u src/distrib/sets/lists/tests/mi:1.1015 src/distrib/sets/lists/tests/mi:1.1016
--- src/distrib/sets/lists/tests/mi:1.1015 Mon Feb 1 20:31:41 2021
+++ src/distrib/sets/lists/tests/mi Sun Feb 7 01:53:54 2021
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.1015 2021/02/01 20:31:41 rillig Exp $
+# $NetBSD: mi,v 1.1016 2021/02/07 01:53:54 rillig Exp $
#
# Note: don't delete entries from here - mark them as "obsolete" instead.
#
@@ -3265,6 +3265,7 @@
./usr/tests/lib/libcurses/check_files/addchstr.chk tests-lib-tests compattestfile,atf
./usr/tests/lib/libcurses/check_files/addchstr2.chk tests-lib-tests compattestfile,atf
./usr/tests/lib/libcurses/check_files/addchstr3.chk tests-lib-tests compattestfile,atf
+./usr/tests/lib/libcurses/check_files/addnstr.chk tests-lib-tests compattestfile,atf
./usr/tests/lib/libcurses/check_files/addnwstr1.chk tests-lib-tests compattestfile,atf
./usr/tests/lib/libcurses/check_files/addnwstr2.chk tests-lib-tests compattestfile,atf
./usr/tests/lib/libcurses/check_files/addstr.chk tests-lib-tests compattestfile,atf
@@ -3475,6 +3476,7 @@
./usr/tests/lib/libcurses/check_files/waddchstr.chk tests-lib-tests compattestfile,atf
./usr/tests/lib/libcurses/check_files/waddnwstr1.chk tests-lib-tests compattestfile,atf
./usr/tests/lib/libcurses/check_files/waddnwstr2.chk tests-lib-tests compattestfile,atf
+./usr/tests/lib/libcurses/check_files/waddstr.chk tests-lib-tests compattestfile,atf
./usr/tests/lib/libcurses/check_files/waddwstr1.chk tests-lib-tests compattestfile,atf
./usr/tests/lib/libcurses/check_files/waddwstr2.chk tests-lib-tests compattestfile,atf
./usr/tests/lib/libcurses/check_files/waddwstr3.chk tests-lib-tests compattestfile,atf
Index: src/tests/lib/libcurses/check_files/Makefile
diff -u src/tests/lib/libcurses/check_files/Makefile:1.4 src/tests/lib/libcurses/check_files/Makefile:1.5
--- src/tests/lib/libcurses/check_files/Makefile:1.4 Sat Oct 24 14:21:25 2020
+++ src/tests/lib/libcurses/check_files/Makefile Sun Feb 7 01:53:54 2021
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.4 2020/10/24 14:21:25 martin Exp $
+# $NetBSD: Makefile,v 1.5 2021/02/07 01:53:54 rillig Exp $
NOMAN= # defined
@@ -17,6 +17,7 @@ FILES+= addch.chk
FILES+= addchstr.chk
FILES+= addchstr2.chk
FILES+= addchstr3.chk
+FILES+= addnstr.chk
FILES+= addnwstr1.chk
FILES+= addnwstr2.chk
FILES+= addstr.chk
@@ -226,6 +227,7 @@ FILES+= waddchnstr.chk
FILES+= waddchstr.chk
FILES+= waddnwstr1.chk
FILES+= waddnwstr2.chk
+FILES+= waddstr.chk
FILES+= waddwstr1.chk
FILES+= waddwstr2.chk
FILES+= waddwstr3.chk
Index: src/tests/lib/libcurses/check_files/addch.chk
diff -u src/tests/lib/libcurses/check_files/addch.chk:1.2 src/tests/lib/libcurses/check_files/addch.chk:1.3
--- src/tests/lib/libcurses/check_files/addch.chk:1.2 Sat Oct 24 04:46:16 2020
+++ src/tests/lib/libcurses/check_files/addch.chk Sun Feb 7 01:53:54 2021
@@ -1 +1,2 @@
-smsotrmsocup6;4Xsmsosmulermsormul
\ No newline at end of file
+smsotrmsocup6;4Xsmsosmulermsormulcup7;17X8
+0123456 8
Index: src/tests/lib/libcurses/check_files/addstr.chk
diff -u src/tests/lib/libcurses/check_files/addstr.chk:1.1 src/tests/lib/libcurses/check_files/addstr.chk:1.2
--- src/tests/lib/libcurses/check_files/addstr.chk:1.1 Sun Apr 10 09:55:09 2011
+++ src/tests/lib/libcurses/check_files/addstr.chk Sun Feb 7 01:53:54 2021
@@ -1 +1,2 @@
-abcde
\ No newline at end of file
+abcdecup3;9X8
+0123456 8
Index: src/tests/lib/libcurses/tests/addch
diff -u src/tests/lib/libcurses/tests/addch:1.2 src/tests/lib/libcurses/tests/addch:1.3
--- src/tests/lib/libcurses/tests/addch:1.2 Sat Oct 24 04:46:17 2020
+++ src/tests/lib/libcurses/tests/addch Sun Feb 7 01:53:54 2021
@@ -1,6 +1,22 @@
include start
call OK addch `\001t`
call OK refresh
-call OK mvaddch 5 3`\003e`
+call OK mvaddch 5 3 `\003e`
+call OK refresh
+call OK addch "\n"
+
+# Somewhere between NetBSD 8.0 and 9.0, a bug was added to addch that
+# doubled the spaces for a tab. Instead of 8 spaces, there are now 16.
+call OK addch "\t"
+call OK addch "8"
+call OK addch "\n"
+
+# Somewhere between NetBSD 8.0 and 9.0, a bug was added to addch that
+# doubled the spaces for a tab. Instead of 1 space, there are now 2.
+call OK addstr "0123456"
+call OK addch "\t"
+call OK addch "8"
+call OK addch "\n"
+
call OK refresh
compare addch.chk
Index: src/tests/lib/libcurses/tests/addnstr
diff -u src/tests/lib/libcurses/tests/addnstr:1.2 src/tests/lib/libcurses/tests/addnstr:1.3
--- src/tests/lib/libcurses/tests/addnstr:1.2 Mon Aug 29 12:42:57 2011
+++ src/tests/lib/libcurses/tests/addnstr Sun Feb 7 01:53:54 2021
@@ -1,5 +1,4 @@
include start
call OK addnstr "abcdefg" 5
call OK refresh
-# should be the same as addstr
-compare addstr.chk
+compare addnstr.chk
Index: src/tests/lib/libcurses/tests/addstr
diff -u src/tests/lib/libcurses/tests/addstr:1.1 src/tests/lib/libcurses/tests/addstr:1.2
--- src/tests/lib/libcurses/tests/addstr:1.1 Sun Apr 10 09:55:10 2011
+++ src/tests/lib/libcurses/tests/addstr Sun Feb 7 01:53:54 2021
@@ -1,4 +1,7 @@
include start
-call OK addstr "abcde"
+call OK addstr "abcde\n"
+call OK addstr "\n"
+call OK addstr "\t8\n"
+call OK addstr "0123456\t8\n"
call OK refresh
compare addstr.chk
Index: src/tests/lib/libcurses/tests/waddnstr
diff -u src/tests/lib/libcurses/tests/waddnstr:1.1 src/tests/lib/libcurses/tests/waddnstr:1.2
--- src/tests/lib/libcurses/tests/waddnstr:1.1 Sat Oct 24 04:46:17 2020
+++ src/tests/lib/libcurses/tests/waddnstr Sun Feb 7 01:53:54 2021
@@ -1,4 +1,4 @@
include window
call OK waddnstr $win1 "abcdefg" 5
call OK wrefresh $win1
-compare addstr.chk
+compare addnstr.chk
Index: src/tests/lib/libcurses/tests/waddstr
diff -u src/tests/lib/libcurses/tests/waddstr:1.1 src/tests/lib/libcurses/tests/waddstr:1.2
--- src/tests/lib/libcurses/tests/waddstr:1.1 Sat Oct 24 04:46:17 2020
+++ src/tests/lib/libcurses/tests/waddstr Sun Feb 7 01:53:54 2021
@@ -1,4 +1,9 @@
include window
-call OK waddstr $win1 "abcde"
-call OK wrefresh $win1
-compare addstr.chk
+call OK waddstr $win1 "abcde\n"
+call OK waddstr $win1 "\n"
+call OK waddstr $win1 "\t8\n"
+# XXX: The following line causes an unexpected "ERR Resource temporarily
+# unavailable" on NetBSD/amd64 9.99.80.
+#call OK waddstr $win1 "0123456\t8\n"
+call OK refresh
+compare waddstr.chk
Added files:
Index: src/tests/lib/libcurses/check_files/addnstr.chk
diff -u /dev/null src/tests/lib/libcurses/check_files/addnstr.chk:1.1
--- /dev/null Sun Feb 7 01:53:54 2021
+++ src/tests/lib/libcurses/check_files/addnstr.chk Sun Feb 7 01:53:54 2021
@@ -0,0 +1 @@
+abcde
\ No newline at end of file
Index: src/tests/lib/libcurses/check_files/waddstr.chk
diff -u /dev/null src/tests/lib/libcurses/check_files/waddstr.chk:1.1
--- /dev/null Sun Feb 7 01:53:54 2021
+++ src/tests/lib/libcurses/check_files/waddstr.chk Sun Feb 7 01:53:54 2021
@@ -0,0 +1 @@
+home
\ No newline at end of file