[asterisk-commits] mnicholson: testsuite/asterisk/trunk r146 - in /asterisk/trunk/asttest: lib/l...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Thu Mar 25 12:36:11 CDT 2010


Author: mnicholson
Date: Thu Mar 25 12:36:08 2010
New Revision: 146

URL: http://svnview.digium.com/svn/testsuite?view=rev&rev=146
Log:
Added proc.perror() to print useful error messages from the return values of p:wait(), p:term(), p:kill(), and p:term_or_kill().

Added:
    asterisk/trunk/asttest/self-tests/proclib_perror/
    asterisk/trunk/asttest/self-tests/proclib_perror/test.lua   (with props)
Modified:
    asterisk/trunk/asttest/lib/lua/proclib.lua

Modified: asterisk/trunk/asttest/lib/lua/proclib.lua
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/asttest/lib/lua/proclib.lua?view=diff&rev=146&r1=145&r2=146
==============================================================================
--- asterisk/trunk/asttest/lib/lua/proclib.lua (original)
+++ asterisk/trunk/asttest/lib/lua/proclib.lua Thu Mar 25 12:36:08 2010
@@ -34,3 +34,30 @@
 	return res, err
 end
 
+--- Print an appropriate error message for the given error.
+-- @usage <code>res, err = proc.perror(p:wait())</code>
+-- @usage <code>res, err = proc.perror(p:term())</code>
+-- @usage <code>res, err = proc.perror(p:kill())</code>
+-- @return This function returns its parameters.
+function perror(res, err, strerror, errno)
+	if res == nil then
+		if err == "core" then
+			print("process crashed (core dumped)")
+		elseif err == "timeout" then
+			return res, err
+		elseif err == "error" then
+			if strerror and errno then
+				print("error running process (" .. strerror .. ")")
+			else
+				print("error running process")
+			end
+		elseif type(err) == "number" then
+			print("process terminated by signal " .. err)
+		else
+			print("error running process (" .. err .. ")")
+		end
+	end
+
+	return res, err, strerror, errno
+end
+

Added: asterisk/trunk/asttest/self-tests/proclib_perror/test.lua
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/asttest/self-tests/proclib_perror/test.lua?view=auto&rev=146
==============================================================================
--- asterisk/trunk/asttest/self-tests/proclib_perror/test.lua (added)
+++ asterisk/trunk/asttest/self-tests/proclib_perror/test.lua Thu Mar 25 12:36:08 2010
@@ -1,0 +1,90 @@
+-- test proclib's ablity to detect missing and non-executable files
+
+real_print = print
+function print(msg)
+	printed = true
+	if msg ~= expected_msg then
+		print = real_print
+		fail("expected perror to print '" .. tostring(expected_msg) .. "' but got '" .. msg .. "' instead")
+	end
+end
+
+function expect(msg)
+	printed = false
+	expected_msg = msg
+end
+
+function check()
+	if not printed then
+		print = real_print
+		fail("expected perror to print '" .. tostring(expected_msg) .. "' but got nothing instead")
+	end
+
+	expected_msg = nil
+	printed = false
+end
+
+function test_crash()
+	real_print("testing crash")
+
+	expect("process crashed (core dumped)")
+	proc.perror(nil, "core")
+	check()
+end
+
+function test_timeout()
+	real_print("testing a timeout")
+	expect(nil)
+	local p = proc.exec("sleep", "1")
+	proc.perror(p:wait(1))
+end
+
+
+function test_error_1()
+	real_print("testing an error (1)")
+	expect("error running process")
+	proc.perror(nil, "error")
+	check()
+end
+
+function test_error_2()
+	real_print("testing an error (2)")
+	expect("error running process (error)")
+	proc.perror(nil, "error", "error", 1)
+	check()
+end
+
+function test_signal_1()
+	real_print("testing a signal (1)")
+	expect("process terminated by signal 0")
+	proc.perror(nil, 0)
+	check()
+end
+
+function test_signal_2()
+	real_print("testing a signal (2)")
+	expect("process terminated by signal 15")
+	local p = proc.exec("sleep", "1")
+	proc.perror(p:term())
+	check()
+end
+
+function test_unknown()
+	real_print("testing an unknown error (2)")
+	expect("error running process (unknown)")
+	proc.perror(nil, "unknown")
+	check()
+end
+
+
+test_crash()
+test_timeout()
+
+test_error_1()
+test_error_2()
+
+test_signal_1()
+test_signal_2()
+
+test_unknown()
+

Propchange: asterisk/trunk/asttest/self-tests/proclib_perror/test.lua
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/trunk/asttest/self-tests/proclib_perror/test.lua
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/trunk/asttest/self-tests/proclib_perror/test.lua
------------------------------------------------------------------------------
    svn:mime-type = text/plain




More information about the asterisk-commits mailing list