summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormax <max@tclers.tk>2011-06-28 15:43:30 (GMT)
committermax <max@tclers.tk>2011-06-28 15:43:30 (GMT)
commitdc83b12bd6506975026827fb7329f66a211cd34a (patch)
tree167ae1ec80cfd026a3a62faf15501bcb461c9728
parentaff501ecb18b44cb1c8920d32937ba3e7f404017 (diff)
downloadtcl-dc83b12bd6506975026827fb7329f66a211cd34a.zip
tcl-dc83b12bd6506975026827fb7329f66a211cd34a.tar.gz
tcl-dc83b12bd6506975026827fb7329f66a211cd34a.tar.bz2
Rework constraint detection and add constraints that cater for the fact, that both address families might be available, but localhost only resolves to one of the loopback addreses.
-rw-r--r--tests/socket.test31
1 files changed, 22 insertions, 9 deletions
diff --git a/tests/socket.test b/tests/socket.test
index 8efa79e..0ea0eb5 100644
--- a/tests/socket.test
+++ b/tests/socket.test
@@ -117,15 +117,28 @@ if 0 {
}
foreach {af localhost} {
- any 127.0.0.1
inet 127.0.0.1
inet6 ::1
} {
- set ::tcl::unsupported::socketAF $af
# Check if the family is supported and set the constraint accordingly
- testConstraint supported_$af [expr {![catch {socket -server foo 0} sock]}]
+ testConstraint supported_$af [expr {![catch {socket -server foo -myaddr $localhost 0} sock]}]
catch {close $sock}
-
+}
+testConstraint supported_any [expr {[testConstraint supported_inet] || [testConstraint supported_inet6]}]
+
+set sock [socket -server foo -myaddr localhost 0]
+set sockname [fconfigure $sock -sockname]
+close $sock
+testConstraint localhost_v4 [expr {"127.0.0.1" in $sockname}]
+testConstraint localhost_v6 [expr {"::1" in $sockname}]
+
+
+foreach {af localhost} {
+ any 127.0.0.1
+ inet 127.0.0.1
+ inet6 ::1
+} {
+ set ::tcl::unsupported::socketAF $af
#
# Check if we're supposed to do tests against the remote server
#
@@ -1719,7 +1732,7 @@ catch {close $remoteProcChan}
}
unset ::tcl::unsupported::socketAF
test socket-14.0 {[socket -async] when server only listens on IPv4} \
- -constraints [list socket supported_any] \
+ -constraints [list socket supported_any localhost_v4] \
-setup {
proc accept {s a p} {
global x
@@ -1749,7 +1762,7 @@ test socket-14.1 {[socket -async] fileevent while still connecting} \
close $s
lappend x ok
}
- set server [socket -server accept -myaddr 127.0.0.1 0]
+ set server [socket -server accept -myaddr localhost 0]
set port [lindex [fconfigure $server -sockname] 2]
set x ""
} -body {
@@ -1785,7 +1798,7 @@ test socket-14.2 {[socket -async] fileevent connection refused} \
unset x
} -result "connection refused"
test socket-14.3 {[socket -async] when server only listens on IPv6} \
- -constraints [list socket supported_any] \
+ -constraints [list socket supported_any localhost_v6] \
-setup {
proc accept {s a p} {
global x
@@ -1813,7 +1826,7 @@ test socket-14.4 {[socket -async] and both, readdable and writable fileevents} \
puts $s bye
close $s
}
- set server [socket -server accept -myaddr 127.0.0.1 0]
+ set server [socket -server accept -myaddr localhost 0]
set port [lindex [fconfigure $server -sockname] 2]
set x ""
} -body {
@@ -1836,7 +1849,7 @@ test socket-14.4 {[socket -async] and both, readdable and writable fileevents} \
test socket-14.5 {[socket -async] which fails before any connect() can be made} \
-constraints [list socket supported_any] \
-body {
- # addresses from rfc5737
+ # address from rfc5737
socket -async -myaddr 192.0.2.42 127.0.0.1 [randport]
} \
-returnCodes 1 \