diff --git a/tests/config/unix.exp b/tests/config/unix.exp
new file mode 100644
index 0000000..25ea97f
--- /dev/null
+++ b/tests/config/unix.exp
@@ -0,0 +1,104 @@
+
+# every test should always be run and always return some status.
+# so, if we lose sync with a multi-test program, aborted will be used
+# to flag the remainder of the tests as untested.
+#set aborted 0
+
+# only match with color codes since "failed" / "OK" might otherwise
+# be part of the output...
+#set color 1
+
+set config_h [open "../config.h" "r"]
+set config_h_text [read $config_h]
+close $config_h
+set i [string first "#define HAVE_IPV6" $config_h_text]
+if { $i >= 0 } {
+	set have_ipv6 1
+} else {
+	set have_ipv6 0
+}
+send_user "IPv6 enabled: $have_ipv6\n"
+set xfail 0
+
+proc onetest { test_name note start } {
+	global aborted
+	global testprefix
+	global verbose
+	global color
+	global xfail
+
+	if { $aborted > 0 } {
+		untested "$testprefix$test_name"
+		return
+	}
+
+	if { $verbose > 0 } {
+		send_user "$testprefix$test_name$note\n"
+	}
+	expect {
+		"$start"	{ }
+
+		eof	{ unresolved "$testprefix$test_name"; set aborted 1; }
+		timeout	{ unresolved "$testprefix$test_name"; set aborted 1; }
+	}
+
+	if { $aborted > 0 } {
+		send_user "sync failed: $testprefix$test_name$note -- $testprefix aborted!\n"
+		return
+	}
+
+	if { $color } {
+		set pat "(32mOK|31mfailed)"
+	} else {
+		set pat "(OK|failed)"
+	}
+	expect {
+		# need this because otherwise expect will skip over a "failed" and
+		# grab the next "OK" (or the other way around)
+		-re "$pat"  {
+			if { "$expect_out(0,string)" == "32mOK" || "$expect_out(0,string)" == "OK" } {
+				pass "$testprefix$test_name"
+			} else {
+				if { $xfail } {
+					xfail "$testprefix$test_name"
+				} else {
+					fail "$testprefix$test_name"
+				}
+			}
+			return
+		}
+
+		eof	{ unresolved "$testprefix$test_name"; set aborted 1; }
+		timeout	{ unresolved "$testprefix$test_name"; set aborted 1; }
+	}
+
+	if { $aborted > 0 } {
+		send_user "failed: $testprefix$test_name$note -- $testprefix aborted!\n"
+		return
+	}
+}
+
+proc headerline { line } {
+	global aborted
+	if { $aborted > 0 } { return; }
+	expect {
+		$line	{ return; }
+		eof	{ send_user "numbering mismatch!\n"; set aborted 1; }
+		timeout	{ send_user "numbering mismatch!\n"; set aborted 1; }
+	}
+}
+
+proc simpletest { start } {
+	onetest "$start" "" "$start"
+}
+
+proc simpletest_nov6 { start } {
+	global have_ipv6
+	global xfail
+
+	set xfail [expr 1-$have_ipv6]
+	onetest "$start" "" "$start"
+	set xfail 0
+}
+
+
