Hi, On Mon, 23 Sep 2019, SZEDER Gábor wrote: > On Mon, Sep 23, 2019 at 02:47:23PM +0200, Johannes Schindelin wrote: > > > > On Tue, 17 Sep 2019, SZEDER Gábor wrote: > > > > > On Tue, Sep 17, 2019 at 01:23:18PM +0200, Johannes Schindelin wrote: > > > > Also, things like the code tracing via `-x` (which relies on Bash > > > > functionality in order to work properly, > > > > > > Not really. > > > > To work properly. What I meant was the trick we need to play with > > `BASH_XTRACEFD`. > > I'm still unsure what BASH_XTRACEFD trick you mean. AFAICT we don't > play any tricks with it to make '-x' work properly, and indeed '-x' > tracing works properly even without BASH_XTRACEFD (and to achive that > we did have to play some tricks, but not any with BASH_XTRACEFD; > perhaps these tricks are what you meant?). It works okay some of the time. But IIRC `-x -V` requires the `BASH_XTRACEFD` trick. However, I start to feel like I am distracted deliberately from my main argument: that shell scripting is simply an awful language to implement a highly reliable test framework. That we need to rely on Bash, at least some of the time, is just _one_ of the many shortcomings. > > > > and which _still_ does not work as intended if your test case > > > > evaluates a lazy prereq that has not been evaluated before > > > > > > I don't see any striking differences between the trace output of a test > > > involving a lazy prereq from Bash or dash: > > > > > > [...] > > > > The evaluation of the lazy prereq is indeed not different between Bash > > or dash. It is nevertheless quite disruptive in the trace of a test > > script, especially when it is evaluated for a test case that is skipped > > explicitly via the `--run` option. > > But then the actual issue is the unnecessary evaluation of the prereq > even when the test framework could know in advance that the test case > should be skipped anyway, and the trace from it is a mere side effect, > no? I forgot a crucial tidbit: if you run with `-x` and a lazy prereq is evaluated, not only is the output disruptive, the trace is also turned off after the lazy prereq, _before_ the actual test case is run. So you don't see any trace of the actual test case. In any case, I really do not want to see this thread derailed into specifics of Bashisms and bugs in our test framework. My main point should not be diluted: a test framework should be implemented in a language that offers speedy execution of even complicated logic, proper error checking, and higher data types (i.e. other than "everything is a string"). Unix shell script is not it. Ciao, Dscho