Re: [PATCH 12/12] test-lib-functions: split out {debug,path,text} helpers
- From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- Date
- Feb 13, 2021, 14:39 UTC
- Message-ID
- <87zh08av7a.fsf@evledraar.gmail.com>
- In-Reply-To
- <nycvar.QRO.7.76.6.2102112317330.29765@tvgsbejvaqbjf.bet>
On Thu, Feb 11 2021, Johannes Schindelin wrote:
Show 23 quoted lines
> Hi, > > On Tue, 9 Feb 2021, Junio C Hamano wrote: > >> Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes: >> >> > Split out the debug, path and text miscellaneous helpers into their >> > own files. The "test -[efsd]" etc. helpers were not all in one place >> > in test-lib-functions.sh, I think moving them into their own file >> > makes it easier to follow the code. >> >> I'd prefer not to see this done. It would be fine to move them in >> different sections but still in the same file to group related >> helpers together, but I am having enough trouble when deciding to >> look into which between test-lib.sh and test-lib-functions.sh in the >> current organization already. And it will make the situation even >> worse if we did this, no? > > As much as I would love to see a better organization, I agree with Junio > that this split would make it more tedious to find the correct function. > > I had a look over the rest of the series and like what I saw, leaving only > one or two comments.
Junio / SZEDER / Johannes: Yeah I agree that that 12/12 sucked in its current form.
Having eyeballed test-lib.sh and test-lib-functions.sh as part of this though there seems to be a pretty obvious way to split this up which I think would increase the readability:
* test-lib.sh: main entry, reading/setting global vars/state, command-line parsing (and other CLI / Makefile interface), loading test-lib-functions.sh, set global prereqs, actual setup for the test about to be run.
* test-lib-functions.sh: the top-level "library" used everywhere, i.e. test_expect_success/test_expect_failure etc, Hopefully we could move the internal functions like test_ok_, test_failure_ etc. from test-lib.sh to test-lib-functions.sh (they need some global variables in test-lib.sh now).
Also things part of core test "flow" like test_config, test_when_finished, nongit etc.
* lib-common.sh: what I was trying to start with in this 12/12, i.e. utility functions common enough that we want them "everywhere". We'd just have test-lib-functions.sh load this.
That seems like a much more obvious split & organization to me than the mis-match with a bit of everything everyhere we have right now.