156 lines
7.1 KiB
Diff
156 lines
7.1 KiB
Diff
|
|
From 07fa7f623c1efa576128d3710689efed2bc427a0 Mon Sep 17 00:00:00 2001
|
||
|
|
From: pooryorick <com.digitalsmarties@pooryorick.com>
|
||
|
|
Date: Sat, 16 Jun 2018 17:55:31 +0000
|
||
|
|
Subject: [PATCH 1251/1800] new package tcltests exclude some exec.test
|
||
|
|
tests when running under valgrind
|
||
|
|
|
||
|
|
---
|
||
|
|
tests/all.tcl | 9 +++++++++
|
||
|
|
tests/exec.test | 25 +++++++++++++++----------
|
||
|
|
tests/ioCmd.test | 1 -
|
||
|
|
tests/pkgIndex.tcl | 6 ++++++
|
||
|
|
4 files changed, 30 insertions(+), 11 deletions(-)
|
||
|
|
create mode 100644 tests/pkgIndex.tcl
|
||
|
|
|
||
|
|
diff --git a/tests/all.tcl b/tests/all.tcl
|
||
|
|
index 69a16ba0c..ad372dbb4 100644
|
||
|
|
--- a/tests/all.tcl
|
||
|
|
+++ b/tests/all.tcl
|
||
|
|
@@ -18,5 +18,14 @@ configure {*}$argv -testdir [file dir [info script]]
|
||
|
|
if {[singleProcess]} {
|
||
|
|
interp debug {} -frame 1
|
||
|
|
}
|
||
|
|
+
|
||
|
|
+set testsdir [file dirname [file dirname [file normalize [info script]/...]]]
|
||
|
|
+lappend auto_path $testsdir {*}[apply {{testsdir args} {
|
||
|
|
+ lmap x $args {
|
||
|
|
+ if {$x eq $testsdir} continue
|
||
|
|
+ lindex $x
|
||
|
|
+ }
|
||
|
|
+}} $testsdir {*}$auto_path]
|
||
|
|
+
|
||
|
|
runAllTests
|
||
|
|
proc exit args {}
|
||
|
|
diff --git a/tests/exec.test b/tests/exec.test
|
||
|
|
index 5542f3d8d..6570e5723 100644
|
||
|
|
--- a/tests/exec.test
|
||
|
|
+++ b/tests/exec.test
|
||
|
|
@@ -11,9 +11,14 @@
|
||
|
|
# See the file "license.terms" for information on usage and redistribution of
|
||
|
|
# this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||
|
|
|
||
|
|
+# There is no point in running Valgrind on cases where [exec] forks but then
|
||
|
|
+# fails and the child process doesn't go through full cleanup.
|
||
|
|
+
|
||
|
|
package require tcltest 2
|
||
|
|
namespace import -force ::tcltest::*
|
||
|
|
|
||
|
|
+package require tcltests
|
||
|
|
+
|
||
|
|
# All tests require the "exec" command.
|
||
|
|
# Skip them if exec is not defined.
|
||
|
|
testConstraint exec [llength [info commands exec]]
|
||
|
|
@@ -325,11 +330,11 @@ test exec-8.2 {long input and output} {exec} {
|
||
|
|
|
||
|
|
# Commands that return errors.
|
||
|
|
|
||
|
|
-test exec-9.1 {commands returning errors} {exec} {
|
||
|
|
+test exec-9.1 {commands returning errors} {exec notValgrind} {
|
||
|
|
set x [catch {exec gorp456} msg]
|
||
|
|
list $x [string tolower $msg] [string tolower $errorCode]
|
||
|
|
} {1 {couldn't execute "gorp456": no such file or directory} {posix enoent {no such file or directory}}}
|
||
|
|
-test exec-9.2 {commands returning errors} {exec} {
|
||
|
|
+test exec-9.2 {commands returning errors} {exec notValgrind} {
|
||
|
|
string tolower [list [catch {exec [interpreter] echo foo | foo123} msg] $msg $errorCode]
|
||
|
|
} {1 {couldn't execute "foo123": no such file or directory} {posix enoent {no such file or directory}}}
|
||
|
|
test exec-9.3 {commands returning errors} -constraints {exec stdio} -body {
|
||
|
|
@@ -339,7 +344,7 @@ test exec-9.4 {commands returning errors} -constraints {exec stdio} -body {
|
||
|
|
exec [interpreter] $path(exit) 43 | [interpreter] $path(echo) "foo bar"
|
||
|
|
} -returnCodes error -result {foo bar
|
||
|
|
child process exited abnormally}
|
||
|
|
-test exec-9.5 {commands returning errors} -constraints {exec stdio} -body {
|
||
|
|
+test exec-9.5 {commands returning errors} -constraints {exec stdio notValgrind} -body {
|
||
|
|
exec gorp456 | [interpreter] echo a b c
|
||
|
|
} -returnCodes error -result {couldn't execute "gorp456": no such file or directory}
|
||
|
|
test exec-9.6 {commands returning errors} -constraints {exec} -body {
|
||
|
|
@@ -428,13 +433,13 @@ test exec-10.19 {errors in exec invocation} -constraints {exec} -body {
|
||
|
|
exec cat >@ $f
|
||
|
|
} -returnCodes error -result "channel \"$f\" wasn't opened for writing"
|
||
|
|
close $f
|
||
|
|
-test exec-10.20 {errors in exec invocation} -constraints {exec} -body {
|
||
|
|
+test exec-10.20 {errors in exec invocation} -constraints {exec notValgrind} -body {
|
||
|
|
exec ~non_existent_user/foo/bar
|
||
|
|
} -returnCodes error -result {user "non_existent_user" doesn't exist}
|
||
|
|
-test exec-10.21 {errors in exec invocation} -constraints {exec} -body {
|
||
|
|
+test exec-10.21 {errors in exec invocation} -constraints {exec notValgrind} -body {
|
||
|
|
exec [interpreter] true | ~xyzzy_bad_user/x | false
|
||
|
|
} -returnCodes error -result {user "xyzzy_bad_user" doesn't exist}
|
||
|
|
-test exec-10.22 {errors in exec invocation} -constraints exec -body {
|
||
|
|
+test exec-10.22 {errors in exec invocation} -constraints {exec notValgrind} -body {
|
||
|
|
exec echo test > ~non_existent_user/foo/bar
|
||
|
|
} -returnCodes error -result {user "non_existent_user" doesn't exist}
|
||
|
|
# Commands in background.
|
||
|
|
@@ -510,7 +515,7 @@ test exec-13.1 {setting errorCode variable} {exec} {
|
||
|
|
test exec-13.2 {setting errorCode variable} {exec} {
|
||
|
|
list [catch {exec [interpreter] $path(cat) > a/b/c} msg] [string tolower $errorCode]
|
||
|
|
} {1 {posix enoent {no such file or directory}}}
|
||
|
|
-test exec-13.3 {setting errorCode variable} {exec} {
|
||
|
|
+test exec-13.3 {setting errorCode variable} {exec notValgrind} {
|
||
|
|
set x [catch {exec _weird_cmd_} msg]
|
||
|
|
list $x [string tolower $msg] [lindex $errorCode 0] \
|
||
|
|
[string tolower [lrange $errorCode 2 end]]
|
||
|
|
@@ -548,7 +553,7 @@ test exec-14.2 {-keepnewline switch} -constraints {exec} -body {
|
||
|
|
test exec-14.3 {unknown switch} -constraints {exec} -body {
|
||
|
|
exec -gorp
|
||
|
|
} -returnCodes error -result {bad option "-gorp": must be -ignorestderr, -keepnewline, or --}
|
||
|
|
-test exec-14.4 {-- switch} -constraints {exec} -body {
|
||
|
|
+test exec-14.4 {-- switch} -constraints {exec notValgrind} -body {
|
||
|
|
exec -- -gorp
|
||
|
|
} -returnCodes error -result {couldn't execute "-gorp": no such file or directory}
|
||
|
|
test exec-14.5 {-ignorestderr switch} {exec} {
|
||
|
|
@@ -662,7 +667,7 @@ test exec-18.2 {exec cat deals with weird file names} -body {
|
||
|
|
# Note that this test cannot be adapted to work on Windows; that platform has
|
||
|
|
# no kernel support for an analog of O_APPEND. OTOH, that means we can assume
|
||
|
|
# that there is a POSIX shell...
|
||
|
|
-test exec-19.1 {exec >> uses O_APPEND} -constraints {exec unix} -setup {
|
||
|
|
+test exec-19.1 {exec >> uses O_APPEND} -constraints {exec unix notValgrind} -setup {
|
||
|
|
set tmpfile [makeFile {0} tmpfile.exec-19.1]
|
||
|
|
} -body {
|
||
|
|
# Note that we have to allow for the current contents of the temporary
|
||
|
|
@@ -675,7 +680,7 @@ test exec-19.1 {exec >> uses O_APPEND} -constraints {exec unix} -setup {
|
||
|
|
{for a in a b c; do sleep 1; echo $a; done} >>$tmpfile &
|
||
|
|
exec /bin/sh -c \
|
||
|
|
{for a in d e f; do sleep 1; echo $a >&2; done} 2>>$tmpfile &
|
||
|
|
- # The above four shell invokations take about 3 seconds to finish, so allow
|
||
|
|
+ # The above four shell invocations take about 3 seconds to finish, so allow
|
||
|
|
# 5s (in case the machine is busy)
|
||
|
|
after 5000
|
||
|
|
# Check that no bytes have got lost through mixups with overlapping
|
||
|
|
diff --git a/tests/ioCmd.test b/tests/ioCmd.test
|
||
|
|
index cab4e9734..ae58025d9 100644
|
||
|
|
--- a/tests/ioCmd.test
|
||
|
|
+++ b/tests/ioCmd.test
|
||
|
|
@@ -3781,7 +3781,6 @@ test iocmd.tf-32.0 {origin thread of moved channel gone} -match glob -body {
|
||
|
|
# Use constraints to skip this test while valgrinding so this expected leak
|
||
|
|
# doesn't prevent a finding of "leak-free".
|
||
|
|
#
|
||
|
|
-testConstraint notValgrind [expr {![testConstraint valgrind]}]
|
||
|
|
test iocmd.tf-32.1 {origin thread of moved channel destroyed during access} -match glob -body {
|
||
|
|
|
||
|
|
#puts <<$tcltest::mainThread>>main
|
||
|
|
diff --git a/tests/pkgIndex.tcl b/tests/pkgIndex.tcl
|
||
|
|
new file mode 100644
|
||
|
|
index 000000000..48ab71b73
|
||
|
|
--- /dev/null
|
||
|
|
+++ b/tests/pkgIndex.tcl
|
||
|
|
@@ -0,0 +1,6 @@
|
||
|
|
+#! /usr/bin/env tclsh
|
||
|
|
+
|
||
|
|
+package ifneeded tcltests 0.1 {
|
||
|
|
+ source [file dirname [file dirname [file normalize [info script]/...]]]/tcltests.tcl
|
||
|
|
+ package provide tcltests 0.1
|
||
|
|
+}
|
||
|
|
--
|
||
|
|
2.19.1
|
||
|
|
|