Index: tests/Makefile.am
===================================================================
--- tests/Makefile.am	(revision 5780d0daa4264756677240ebbf2a1ad74597dadb)
+++ tests/Makefile.am	(revision faf9e1980e17d288281279a8ee128978108933dd)
@@ -36,4 +36,283 @@
 TEST_PY = python3 ${builddir}/test.py
 
+WFLAGS_STRICT = \
+	-Wall \
+	-Wextra \
+	-Werror
+
+WFLAGS_LAX = \
+	-Wall \
+	-Werror=return-type \
+	-Wno-unused-function \
+	-Wno-psabi
+
+# These tests opt for lax wflags.  (By default, new tests get strict wflags.)
+# Indented list entries are finer-grained targets under the test.
+# Making this association implicit would be ideal, but requires learning more automake than is affordable.
+WFLGAS_OPT_LAX = \
+	abs \
+	alloc \
+	alloc2 \
+	array \
+	array-collections/array-basic \
+	array-collections/array-raii-c \
+	array-collections/array-raii-cfa \
+	array-collections/array-sbscr-types \
+	array-collections/boxed \
+		array-collections/boxed% \
+	array-collections/dimexpr-match-c \
+	array-collections/dimexpr-match-cfa \
+	array-ERR1 \
+	array-ERR2 \
+	array-ERR3 \
+	ato \
+	attributes \
+	attr-priority \
+	avl_test \
+		avltree/% \
+	builtins/sync \
+	cast \
+	collections/atomic_mpsc \
+	collections/multi_list \
+	collections/queue \
+	collections/sequence \
+	collections/stack \
+	collections/string-api-coverage \
+	collections/string-api-coverage-noshare \
+	collections/vector-demo \
+	concurrency/actors/dynamic \
+	concurrency/actors/executor \
+	concurrency/actors/inherit \
+	concurrency/actors/inline \
+	concurrency/actors/matrixMultiply \
+	concurrency/actors/pingpong \
+	concurrency/actors/poison \
+	concurrency/actors/static \
+	concurrency/actors/types \
+	concurrency/barrier/generation \
+	concurrency/barrier/last \
+	concurrency/barrier/order \
+	concurrency/channels/big_elems \
+	concurrency/channels/churn \
+	concurrency/channels/contend \
+	concurrency/channels/daisy_chain \
+	concurrency/channels/hot_potato \
+	concurrency/channels/ping_pong \
+	concurrency/channels/pub_sub \
+	concurrency/channels/zero_size \
+	concurrency/cluster \
+	concurrency/cofor \
+	concurrency/coroutineYield \
+	concurrency/examples/boundedBufferEXT \
+	concurrency/examples/boundedBufferINT \
+	concurrency/examples/datingService \
+	concurrency/examples/gortn \
+	concurrency/examples/matrixSum \
+	concurrency/examples/quickSort \
+	concurrency/futures/abandon \
+	concurrency/futures/basic \
+	concurrency/futures/multi \
+	concurrency/futures/select_future \
+	concurrency/futures/typed \
+	concurrency/futures/wait_any \
+	concurrency/join \
+	concurrency/lockfree_stack \
+	concurrency/migrate \
+	concurrency/monitor \
+	concurrency/multi-monitor \
+	concurrency/mutexstmt/locks \
+	concurrency/mutexstmt/monitors \
+	concurrency/mutexstmt/tuple \
+	concurrency/once \
+	concurrency/park/contention \
+	concurrency/park/force_preempt \
+	concurrency/park/start_parked \
+	concurrency/preempt \
+	concurrency/preempt2 \
+	concurrency/pthread/bounded_buffer \
+	concurrency/pthread/pthread_attr_test \
+	concurrency/pthread/pthread_cond_test \
+	concurrency/pthread/pthread_demo_create_join \
+	concurrency/pthread/pthread_demo_lock \
+	concurrency/pthread/pthread_key_test \
+	concurrency/pthread/pthread_once_test \
+	concurrency/readyQ/barrier_sleeper \
+	concurrency/readyQ/leader_spin \
+	concurrency/signal/block \
+	concurrency/signal/disjoint \
+	concurrency/signal/wait \
+	concurrency/sleep \
+	concurrency/suspend_then \
+	concurrency/thread \
+	concurrency/unified_locking/block_spin_lock \
+	concurrency/unified_locking/exp_backoff \
+	concurrency/unified_locking/fast_block_lock \
+	concurrency/unified_locking/futex_mutex \
+	concurrency/unified_locking/locks \
+	concurrency/unified_locking/mcs \
+	concurrency/unified_locking/mcs_block_spin_lock \
+	concurrency/unified_locking/mcs_spin \
+	concurrency/unified_locking/pthread_locks \
+	concurrency/unified_locking/simple_owner_lock \
+	concurrency/unified_locking/spin_queue_lock \
+	concurrency/unified_locking/timeout_lock \
+	concurrency/waitfor/barge \
+	concurrency/waitfor/dtor \
+	concurrency/waitfor/else \
+	concurrency/waitfor/parse \
+	concurrency/waitfor/recurse \
+	concurrency/waitfor/statment \
+	concurrency/waitfor/when \
+	concurrency/waituntil/all_types \
+	concurrency/waituntil/basic_else \
+	concurrency/waituntil/channel_close \
+	concurrency/waituntil/channel_zero_size \
+	concurrency/waituntil/channels \
+	concurrency/waituntil/futures \
+	concurrency/waituntil/locks \
+	concurrency/waituntil/one_chan \
+	concurrency/waituntil/repeat_close \
+	concurrency/waituntil/timeout \
+	configs/parsebools \
+	configs/parseconfig \
+	configs/parsenums \
+	configs/usage \
+	coroutine/devicedriver \
+	coroutine/fibonacci \
+	coroutine/fmtLines \
+	coroutine/pingpong \
+	coroutine/prodcons \
+	coroutine/raii \
+	coroutine/runningTotal \
+	ctrl-flow/goto \
+	ctrl-flow/ifwhileCtl \
+	ctrl-flow/labelledExit \
+	ctrl-flow/loopctrl \
+	ctrl-flow/loop_else \
+	designations \
+	device/cpu \
+	div \
+	enum \
+	enum_tests/inc-dec \
+	enum_tests/planet \
+	enum_tests/position \
+	enum_tests/structEnum \
+	exceptions/cancel/coroutine \
+	exceptions/cancel/thread \
+	exceptions/cardgame \
+	exceptions/conditional \
+	exceptions/conditional-threads \
+	exceptions/cor_resumer \
+	exceptions/data-except \
+	exceptions/defaults \
+	exceptions/defaults-threads \
+	exceptions/fibonacci_nonlocal \
+	exceptions/finally \
+	exceptions/finally-threads \
+	exceptions/hotpotato \
+	exceptions/hotpotato_checked \
+	exceptions/interact \
+	exceptions/pingpong_nonlocal \
+	exceptions/polymorphic \
+	exceptions/resume \
+	exceptions/resume-threads \
+	exceptions/terminate \
+	exceptions/terminate-threads \
+	exceptions/trash \
+	exceptions/try-leave-catch \
+	exceptions/virtual-cast \
+	exceptions/virtual-poly \
+	expression \
+	forall \
+	function-operator \
+	gmp \
+	heap \
+	identFuncDeclarator \
+	identParamDeclarator \
+	include/includes \
+	include/stdincludes \
+	include/vector-collections \
+	include/vector-fstream \
+	include/vector-sequence \
+	init1 \
+	init1-ERROR \
+	io/away_fair \
+	io/comp_basic \
+	io/comp_fair \
+	io/io-acquire \
+	io/io-acquire2 \
+	io/io-acquire-in \
+	io/io-acquire-no-io \
+	io/io-acquire-out \
+	io/manipulatorsInput \
+	io/manipulatorsInput-uchunk \
+	io/many_read \
+	limits \
+	linking/exception-nothreads \
+	linking/exception-withthreads \
+	linking/io-acquire \
+	linking/mangling/anon \
+		linking/mangling/lib.o \
+		linking/mangling/main.o \
+	linking/nothreads \
+	linking/weakso_nothd \
+	linking/withthreads \
+	linkonce \
+		link-once/% \
+	malloc \
+	math \
+	mathX \
+	maybe \
+	minmax \
+	nested_function \
+	nested-types \
+	nested-types-ERR1 \
+	nested-types-ERR2 \
+	numericConstants \
+	operators \
+	poly-d-cycle \
+	poly-many-arsz \
+	poly-member \
+	polymorphism \
+	poly-o-cycle \
+	PRNG \
+	quasiKeyword \
+	quotedKeyword \
+	raii/boxed-types \
+	raii/ctor-autogen \
+	raii/dtor-early-exit \
+	raii/init_once \
+	raii/partial \
+	random \
+	rational \
+	references \
+	result \
+	searchsort \
+	shortCircuit \
+	sizeof \
+	smart-pointers \
+	sum \
+	swap \
+	switch \
+	tuple/tupleAssign \
+	tuple/tupleCast \
+	tuple/tupleMember \
+	tuple/tuplePolymorphism \
+	tuple/tupleVariadic \
+	typedefRedef \
+	typedefRedef-ERR1 \
+	typeof \
+	userLiterals \
+	variableDeclarator \
+	vector \
+	vector_math/vec2_int \
+	vector_math/vec2_float \
+	vector_math/vec3_float \
+	vector_math/vec4_float \
+	warnings/self-assignment \
+	zero_one
+
+WFLAGS=${if ${filter ${WFLGAS_OPT_LAX},${@}},${WFLAGS_LAX},${WFLAGS_STRICT}}
+
 # applies to both programs
 # since automake doesn't have support for CFA we have to
@@ -43,8 +322,5 @@
 	-fno-diagnostics-show-caret \
 	-g \
-	-Wall \
-	-Werror=return-type \
-	-Wno-unused-function \
-	-Wno-psabi \
+	$(WFLAGS) \
 	-quiet @CFA_FLAGS@
 
@@ -290,9 +566,4 @@
 	rm ${abspath ${@}}.o
 
-# No-warning tests
-# Tests to make sure that given CFA code gets emitted C code that GCC accepts without any warnings
-nowarn/% : nowarn/%.cfa ${CFABIN}
-	${CFACOMPILETEST} -Wunused-function -Wpsabi -Wall -Wextra -Werror -o ${abspath ${@}}
-
 #------------------------------------------------------------------------------
 # Other targets
Index: sts/nowarn/.expect/fstream.txt
===================================================================
--- tests/nowarn/.expect/fstream.txt	(revision 5780d0daa4264756677240ebbf2a1ad74597dadb)
+++ 	(revision )
@@ -1,1 +1,0 @@
-done
Index: sts/nowarn/.expect/list.txt
===================================================================
--- tests/nowarn/.expect/list.txt	(revision 5780d0daa4264756677240ebbf2a1ad74597dadb)
+++ 	(revision )
@@ -1,1 +1,0 @@
-done
Index: sts/nowarn/.expect/string.txt
===================================================================
--- tests/nowarn/.expect/string.txt	(revision 5780d0daa4264756677240ebbf2a1ad74597dadb)
+++ 	(revision )
@@ -1,1 +1,0 @@
-done
Index: sts/nowarn/fstream.cfa
===================================================================
--- tests/nowarn/fstream.cfa	(revision 5780d0daa4264756677240ebbf2a1ad74597dadb)
+++ 	(revision )
@@ -1,5 +1,0 @@
-#include <fstream.hfa>
-
-int main() {
-    sout | "done";
-}
Index: sts/nowarn/list.cfa
===================================================================
--- tests/nowarn/list.cfa	(revision 5780d0daa4264756677240ebbf2a1ad74597dadb)
+++ 	(revision )
@@ -1,5 +1,0 @@
-#include <list.hfa>
-
-int main() {
-    printf( "done\n" );
-}
Index: sts/nowarn/string.cfa
===================================================================
--- tests/nowarn/string.cfa	(revision 5780d0daa4264756677240ebbf2a1ad74597dadb)
+++ 	(revision )
@@ -1,6 +1,0 @@
-#include <string.hfa>
-#include <string_res.hfa>
-
-int main() {
-    printf( "done\n" );
-}
