aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2022-09-23 23:43:01 +0200
committerJay Berkenbilt <ejb@ql.org>2022-09-23 23:44:16 +0200
commit77111086eb38f6075fd2e8e4da74acc32719be02 (patch)
tree78e4a1d2250138d5a0f1a4e9b6a4c43aa7508d8b
parenta085479ad9bd2a513018264a93db7aa8a27b8e06 (diff)
downloadqpdf-77111086eb38f6075fd2e8e4da74acc32719be02.tar.zst
Add code to CI to verify signed/unsigned char
Make sure that our attempt to test both signed and unsigned char is actually right.
-rwxr-xr-xbuild-scripts/build-linux2
-rwxr-xr-xbuild-scripts/test-unsigned-char4
-rw-r--r--qpdf/CMakeLists.txt1
-rw-r--r--qpdf/test_char_sign.cc11
4 files changed, 18 insertions, 0 deletions
diff --git a/build-scripts/build-linux b/build-scripts/build-linux
index 3118a955..ced4bbc8 100755
--- a/build-scripts/build-linux
+++ b/build-scripts/build-linux
@@ -8,6 +8,8 @@ cmake -S . -B build -DCI_MODE=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DREQUIRE_CRYPTO_OPENSSL=1 -DREQUIRE_CRYPTO_GNUTLS=1
cmake --build build -j$(nproc) -- -k
cd build
+# Make sure char is signed by default -- see also test-unsigned-char
+./qpdf/test_char_sign | grep 'char is signed'
# libtests automatically runs with all crypto providers.
env QPDF_TEST_COMPARE_IMAGES=1 ctest --verbose
# Run just qpdf tests with remaining crypto providers.
diff --git a/build-scripts/test-unsigned-char b/build-scripts/test-unsigned-char
index 840b517d..1f4c68d8 100755
--- a/build-scripts/test-unsigned-char
+++ b/build-scripts/test-unsigned-char
@@ -15,4 +15,8 @@ env CFLAGS="-funsigned-char" \
-DENABLE_QTC=1
cmake --build build -j$(nproc) -- -k
cd build
+# Make sure char is unsigned by default. ./build-linux verifies that
+# that build has char signed by default. That way we can be sure we
+# are testing both ways.
+./qpdf/test_char_sign | grep 'char is unsigned'
ctest --verbose
diff --git a/qpdf/CMakeLists.txt b/qpdf/CMakeLists.txt
index 69eb0058..d089957b 100644
--- a/qpdf/CMakeLists.txt
+++ b/qpdf/CMakeLists.txt
@@ -3,6 +3,7 @@ set(MAIN_CXX_PROGRAMS
fix-qdf
pdf_from_scratch
sizes
+ test_char_sign
test_driver
test_large_file
test_many_nulls
diff --git a/qpdf/test_char_sign.cc b/qpdf/test_char_sign.cc
new file mode 100644
index 00000000..caaa7527
--- /dev/null
+++ b/qpdf/test_char_sign.cc
@@ -0,0 +1,11 @@
+#include <cstdio>
+int main()
+{
+ char ch = '\xf7';
+ if (ch < 0) {
+ printf("char is signed\n");
+ } else {
+ printf("char is unsigned\n");
+ }
+ return 0;
+}