[LTP] new shell library

Cyril Hrubis
2016-10-27T14:58:06Z

Hi!
Up to date version is at usuall place[1]. I've managed to clean up most
of the tests in commands (four more to go) and I think that I ate enough
of my own dog food and, at this point, the tst_test.sh library should be
reasonably stable.

There is one change I'm not 100% sure of [2]. This is about ROD,
EXPECT_PASS and EXPECT_FAIL. These are all implemented using one common
funcntion and the $@ gets passed to it then gets parser in a loop in
order to implement redirection and that is where the paramteres are
expanded several times which breaks things horribly. As far as I can
tell this is impossible to implement correctly in shell. For instance
things like: ROD awk '{print $1}' wouldn't work with ROD_BASE as a shell
fuction. As a result I've reimplemented the ROD_BASE as tst_rod in C,
which works mostly fine. It's just stdin/stdout/stderr redirection +
execvp() (and fallback to "/bin/sh -s" for shell buildins). The only
thing that does not work are shell buildins that require to be executed
in the context of current shell, such as 'wait' or 'jobs'. I'm pondering
if it is worth of catching these two special cases in the tst_test.sh
shell library to fix that issue. Any kind of feedback to this is warmly
welcomed.

The rest of the changes should be more or less fine. The shell testcases
now support looping parameter and have well defined way of adding test
specific ones. What is not yet implemented is support for timeouts, that
could be easily done later since that is more or less orthogonal to the
current work.

All in all I would love to have a second pair of eyes (or even more!) to
check the code now.

[1] https://github.com/metan-ucw/ltp/commits/master
[2] https://github.com/metan-ucw/ltp/commit/61bebd11c6f956a7b9fcdf319ea6f4a47f5de35a