Index: tests/Makefile.am
===================================================================
--- tests/Makefile.am	(revision 406c8069221de95ca6bafc04c5589965e3418c37)
+++ tests/Makefile.am	(revision 23fb8198479e5cf381d4233efc9086357a445176)
@@ -81,11 +81,6 @@
 	avltree/avl-private.h \
 	avltree/avl.h \
-	configs/.in/parseconfig-all.txt \
-	configs/.in/parseconfig-errors.txt \
-	configs/.in/parseconfig-missing.txt \
 	exceptions/except-io.hfa \
 	exceptions/with-threads.hfa \
-	io/.in/io.data \
-	io/.in/many_read.data \
 	meta/fork+exec.hfa \
 	concurrency/clib_tls.c \
@@ -100,7 +95,7 @@
 	echo "Gathering test files"
 	for file in `${TEST_PY} --list-dist`; do \
-		if test -f ${srcdir}/$${file}; then \
+		if ls ${srcdir}/$${file} > /dev/null 2>&1; then \
 			${MKDIR_P} $$(dirname ${distdir}/$${file}); \
-			cp -df ${srcdir}/$${file} ${distdir}/$${file}; \
+			cp -df ${srcdir}/$${file} $$(dirname ${distdir}/$${file}); \
 		fi; \
 	done
Index: tests/configs/.in/parseconfig-all.txt
===================================================================
--- tests/configs/.in/parseconfig-all.txt	(revision 406c8069221de95ca6bafc04c5589965e3418c37)
+++ 	(revision )
@@ -1,12 +1,0 @@
-StopCost				1	# amount to charge per train stop
-NumStudents				2	# number of students to create
-NumStops				2	# number of train stops; minimum of 2
-MaxNumStudents 			5  	# maximum students each train can carry
-TimerDelay 				2	# length of time between each tick of the timer
-# Going to add a comment here
-MaxStudentDelay			10	# maximum random student delay between trips
-MaxStudentTrips 		3	# maximum number of train trips each student takes
-GroupoffDelay			10	# length of time between initializing gift cards
-ConductorDelay			5  	# length of time between checking on passenger POPs
-ParentalDelay			5	# length of time between cash deposits
-NumCouriers				1	# number of WATCard office couriers in the pool
Index: tests/configs/.in/parseconfig-errors.txt
===================================================================
--- tests/configs/.in/parseconfig-errors.txt	(revision 406c8069221de95ca6bafc04c5589965e3418c37)
+++ 	(revision )
@@ -1,12 +1,0 @@
-StopCost				-1	# amount to charge per train stop
-NumStudents				2	# number of students to create
-NumStops				2	# number of train stops; minimum of 2
-MaxNumStudents 			5  	# maximum students each train can carry
-TimerDelay 				2	# length of time between each tick of the timer
-MaxStudentDelay			10	# maximum random student delay between trips
-MaxStudentTrips 		3	# maximum number of train trips each student takes
-GroupoffDelay			10	# length of time between initializing gift cards
-ConductorDelay			5  	# length of time between checking on passenger POPs
-ParentalDelay			5	# length of time between cash deposits
-NumCouriers				1	# number of WATCard office couriers in the pool
-AnothaOne               DjKhaled    # this one will not be used by the user
Index: tests/configs/.in/parseconfig-missing.txt
===================================================================
--- tests/configs/.in/parseconfig-missing.txt	(revision 406c8069221de95ca6bafc04c5589965e3418c37)
+++ 	(revision )
@@ -1,12 +1,0 @@
-StopCost				-1	# amount to charge per train stop
-NumStudents				2	# number of students to create
-NumStops				2	# number of train stops; minimum of 2
-MaxNumStudents 			5  	# maximum students each train can carry
-TimerDelay 				2	# length of time between each tick of the timer
-MaxStudentDelay			10	# maximum random student delay between trips
-MaxStudentTrips 		3	# maximum number of train trips each student takes
-GroupoffDelay			10	# length of time between initializing gift cards
-ConductorDelay			5  	# length of time between checking on passenger POPs
-# ParentalDelay			5	# length of time between cash deposits
-NumCouriers				1	# number of WATCard office couriers in the pool
-# Notice I've commented out one of the wanted entries
Index: tests/configs/.in/parseconfig.all.txt
===================================================================
--- tests/configs/.in/parseconfig.all.txt	(revision 23fb8198479e5cf381d4233efc9086357a445176)
+++ tests/configs/.in/parseconfig.all.txt	(revision 23fb8198479e5cf381d4233efc9086357a445176)
@@ -0,0 +1,12 @@
+StopCost				1	# amount to charge per train stop
+NumStudents				2	# number of students to create
+NumStops				2	# number of train stops; minimum of 2
+MaxNumStudents 			5  	# maximum students each train can carry
+TimerDelay 				2	# length of time between each tick of the timer
+# Going to add a comment here
+MaxStudentDelay			10	# maximum random student delay between trips
+MaxStudentTrips 		3	# maximum number of train trips each student takes
+GroupoffDelay			10	# length of time between initializing gift cards
+ConductorDelay			5  	# length of time between checking on passenger POPs
+ParentalDelay			5	# length of time between cash deposits
+NumCouriers				1	# number of WATCard office couriers in the pool
Index: tests/configs/.in/parseconfig.errors.txt
===================================================================
--- tests/configs/.in/parseconfig.errors.txt	(revision 23fb8198479e5cf381d4233efc9086357a445176)
+++ tests/configs/.in/parseconfig.errors.txt	(revision 23fb8198479e5cf381d4233efc9086357a445176)
@@ -0,0 +1,12 @@
+StopCost				-1	# amount to charge per train stop
+NumStudents				2	# number of students to create
+NumStops				2	# number of train stops; minimum of 2
+MaxNumStudents 			5  	# maximum students each train can carry
+TimerDelay 				2	# length of time between each tick of the timer
+MaxStudentDelay			10	# maximum random student delay between trips
+MaxStudentTrips 		3	# maximum number of train trips each student takes
+GroupoffDelay			10	# length of time between initializing gift cards
+ConductorDelay			5  	# length of time between checking on passenger POPs
+ParentalDelay			5	# length of time between cash deposits
+NumCouriers				1	# number of WATCard office couriers in the pool
+AnothaOne               DjKhaled    # this one will not be used by the user
Index: tests/configs/.in/parseconfig.missing.txt
===================================================================
--- tests/configs/.in/parseconfig.missing.txt	(revision 23fb8198479e5cf381d4233efc9086357a445176)
+++ tests/configs/.in/parseconfig.missing.txt	(revision 23fb8198479e5cf381d4233efc9086357a445176)
@@ -0,0 +1,12 @@
+StopCost				-1	# amount to charge per train stop
+NumStudents				2	# number of students to create
+NumStops				2	# number of train stops; minimum of 2
+MaxNumStudents 			5  	# maximum students each train can carry
+TimerDelay 				2	# length of time between each tick of the timer
+MaxStudentDelay			10	# maximum random student delay between trips
+MaxStudentTrips 		3	# maximum number of train trips each student takes
+GroupoffDelay			10	# length of time between initializing gift cards
+ConductorDelay			5  	# length of time between checking on passenger POPs
+# ParentalDelay			5	# length of time between cash deposits
+NumCouriers				1	# number of WATCard office couriers in the pool
+# Notice I've commented out one of the wanted entries
Index: tests/configs/parseconfig.cfa
===================================================================
--- tests/configs/parseconfig.cfa	(revision 406c8069221de95ca6bafc04c5589965e3418c37)
+++ tests/configs/parseconfig.cfa	(revision 23fb8198479e5cf381d4233efc9086357a445176)
@@ -50,5 +50,5 @@
 	sout | "Different types of destination addresses";
 
-	parse_config( xstr(IN_DIR) "parseconfig-all.txt", entries, NUM_ENTRIES, parse_tabular_config_format );
+	parse_config( xstr(IN_DIR) "parseconfig.all.txt", entries, NUM_ENTRIES, parse_tabular_config_format );
 
     sout | "Stop cost: " | config_params.stop_cost;
@@ -77,5 +77,5 @@
 	sout | "Missing_Config_Entries thrown when config file is missing entries we want";
 	try {
-		parse_config( xstr(IN_DIR) "parseconfig-missing.txt", entries, NUM_ENTRIES, parse_tabular_config_format );
+		parse_config( xstr(IN_DIR) "parseconfig.missing.txt", entries, NUM_ENTRIES, parse_tabular_config_format );
 	} catch( Missing_Config_Entries * ex ) {
 		msg( ex );
@@ -92,5 +92,5 @@
 
 	try {
-		parse_config( xstr(IN_DIR) "parseconfig-errors.txt", entry, 1, parse_tabular_config_format );
+		parse_config( xstr(IN_DIR) "parseconfig.errors.txt", entry, 1, parse_tabular_config_format );
 	} catch( Parse_Failure * ex ) {
 		msg( ex );
@@ -106,5 +106,5 @@
 
 	try {
-		parse_config( xstr(IN_DIR) "parseconfig-errors.txt", entries, NUM_ENTRIES, parse_tabular_config_format );
+		parse_config( xstr(IN_DIR) "parseconfig.errors.txt", entries, NUM_ENTRIES, parse_tabular_config_format );
 	} catch( Validation_Failure * ex ) {
 		msg( ex );
@@ -115,5 +115,5 @@
 	sout | "No error is thrown when validation succeeds";
 	config_params.stop_cost = -1; // Reset value
-	parse_config( xstr(IN_DIR) "parseconfig-all.txt", entries, NUM_ENTRIES, parse_tabular_config_format );
+	parse_config( xstr(IN_DIR) "parseconfig.all.txt", entries, NUM_ENTRIES, parse_tabular_config_format );
 	sout | "Stop cost: " | config_params.stop_cost;
 	sout | nl;
@@ -126,5 +126,5 @@
 
 	config_params.stop_cost = -1; // Reset value
-	parse_config( xstr(IN_DIR) "parseconfig-all.txt", entries, NUM_ENTRIES, parse_tabular_config_format );
+	parse_config( xstr(IN_DIR) "parseconfig.all.txt", entries, NUM_ENTRIES, parse_tabular_config_format );
 
 	sout | "Stop cost: " | config_params.stop_cost;
@@ -139,5 +139,5 @@
 
 	config_params.stop_cost = -1; // Reset value
-	parse_config( xstr(IN_DIR) "parseconfig-all.txt", entries, NUM_ENTRIES, parse_tabular_config_format );
+	parse_config( xstr(IN_DIR) "parseconfig.all.txt", entries, NUM_ENTRIES, parse_tabular_config_format );
 
 	sout | "Stop cost: " | config_params.stop_cost;
Index: tests/pybin/test_run.py
===================================================================
--- tests/pybin/test_run.py	(revision 406c8069221de95ca6bafc04c5589965e3418c37)
+++ tests/pybin/test_run.py	(revision 23fb8198479e5cf381d4233efc9086357a445176)
@@ -29,6 +29,11 @@
 		return os.path.normpath( os.path.join(settings.BUILDDIR, self.path, ".out"   , "%s.log" % self.name) )
 
+	# one file that goes to the test's stdin
 	def input(self):
 		return os.path.normpath( os.path.join(settings.SRCDIR  , self.path, ".in"    , "%s.txt" % self.name) )
+
+	# several files available for this test to open
+	def inputs_all(self):
+		return os.path.normpath( os.path.join(settings.SRCDIR  , self.path, ".in"    , "%s.*" % self.name) )
 
 	def target_output(self):
Index: tests/test.py
===================================================================
--- tests/test.py	(revision 406c8069221de95ca6bafc04c5589965e3418c37)
+++ tests/test.py	(revision 23fb8198479e5cf381d4233efc9086357a445176)
@@ -352,5 +352,5 @@
 		for t in tests:
 			print(os.path.relpath(t.expect(), settings.SRCDIR), end=' ')
-			print(os.path.relpath(t.input() , settings.SRCDIR), end=' ')
+			print(os.path.relpath(t.inputs_all() , settings.SRCDIR), end=' ')
 			code, out, err = make_recon(t.target())
 
@@ -360,6 +360,4 @@
 
 			print(' '.join(re.findall(r'([^\s]+\.cfa)', out)), end=' ')
-
-		print('')
 
 		# done
