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

Reply via email to