stop if a test script causes an error
diff --git a/test/Makefile b/test/Makefile
index 296b0bf..feef445 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -56,11 +56,11 @@
 test_nm: normalize_prefix $(TARGET)
 	$(MAKE) -C ../gen
 ifneq ($(ONLY_64BIT),1)
-	env CXX=$(CXX) ./test_nm.sh
-	env CXX=$(CXX) ./test_nm.sh noexcept
-	env CXX=$(CXX) ./test_nm.sh Y
-	env CXX=$(CXX) ./test_nm.sh avx512
-	env CXX=$(CXX) ./test_address.sh
+	env CXX=$(CXX) sh -e ./test_nm.sh
+	env CXX=$(CXX) sh -e ./test_nm.sh noexcept
+	env CXX=$(CXX) sh -e ./test_nm.sh Y
+	env CXX=$(CXX) sh -e ./test_nm.sh avx512
+	env CXX=$(CXX) sh -e ./test_address.sh
 	./jmp
 	./cvt_test32
 endif
@@ -69,32 +69,32 @@
 	./misc32
 	./cvt_test
 ifeq ($(BIT),64)
-	env CXX=$(CXX) ./test_address.sh 64
+	env CXX=$(CXX) sh -e ./test_address.sh 64
 ifneq ($(X32),1)
-	env CXX=$(CXX) ./test_nm.sh 64
-	env CXX=$(CXX) ./test_nm.sh Y64
+	env CXX=$(CXX) sh -e ./test_nm.sh 64
+	env CXX=$(CXX) sh -e ./test_nm.sh Y64
 endif
 	./jmp64
 endif
 
 test_avx: normalize_prefix
 ifneq ($(ONLY_64BIT),0)
-	env CXX=$(CXX) ./test_avx.sh
-	env CXX=$(CXX) ./test_avx.sh Y
+	env CXX=$(CXX) sh -e ./test_avx.sh
+	env CXX=$(CXX) sh -e ./test_avx.sh Y
 endif
 ifeq ($(BIT),64)
-	env CXX=$(CXX) ./test_avx.sh 64
+	env CXX=$(CXX) sh -e ./test_avx.sh 64
 ifneq ($(X32),1)
-	env CXX=$(CXX) ./test_avx.sh Y64
+	env CXX=$(CXX) sh -e ./test_avx.sh Y64
 endif
 endif
 
 test_avx512: normalize_prefix
 ifneq ($(ONLY_64BIT),0)
-	env CXX=$(CXX) ./test_avx512.sh
+	env CXX=$(CXX) sh -e ./test_avx512.sh
 endif
 ifeq ($(BIT),64)
-	env CXX=$(CXX) ./test_avx512.sh 64
+	env CXX=$(CXX) sh -e ./test_avx512.sh 64
 endif
 
 detect_x32: detect_x32.c