From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id F3D2E1F45A; Mon, 20 Apr 2020 07:05:30 +0000 (UTC) Date: Mon, 20 Apr 2020 07:05:30 +0000 From: Eric Wong To: meta@public-inbox.org Cc: Kyle Meyer Subject: [PATCH] doc: HACKING: add a bit about faster testing Message-ID: <20200420070530.GA14660@dcvr> References: <20200412215933.GA63705@dcvr> <20200420001332.14769-1-kyle@kyleam.com> <20200420004515.GA67768@dcvr> <877dybrmbx.fsf@kyleam.com> <20200420013211.GA30656@dcvr> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20200420013211.GA30656@dcvr> List-Id: Eric Wong wrote: > Kyle Meyer wrote: > > Ah, sorry. Aside from, er, actually knowing what I'm doing in perl and > > seeing that obvious mistake, is there a way I could see the warning when > > I run the tests? To run only the tests in that file as I was working on > > it, I started with the command I saw when I called 'make test' and > > restricted it to just the file, So, with typo included for historical > > accuracy :), I was running > > Ah, oops. I normally use `make check' (or `check-run' after > being primed by `check'). HACKING needs to be patched, and > maybe a pointer to it in INSTALL. ------8<----- Subject: [PATCH] doc: HACKING: add a bit about faster testing `make test' is annoyingly slow, and `make check-run' works wonders for improving the edit && test cycle. --- Documentation/txt2pre | 5 +++-- HACKING | 18 ++++++++++++++++++ INSTALL | 2 +- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/Documentation/txt2pre b/Documentation/txt2pre index c3a7657e..cf58bad8 100755 --- a/Documentation/txt2pre +++ b/Documentation/txt2pre @@ -39,9 +39,9 @@ for (qw[copydatabase(1) xapian-compact(1)]) { $xurls{$_} = ".$n.1.html" } -for (qw[flock(2) setrlimit(2) vfork(2)]) { +for (qw[make(1) flock(2) setrlimit(2) vfork(2) tmpfs(5)]) { my ($n, $s) = (/([\w\-]+)\((\d)\)/); - $xurls{$_} = "http://www.man7.org/linux/man-pages/man2/$n.$s.html"; + $xurls{$_} = "http://www.man7.org/linux/man-pages/man$s/$n.$s.html"; } for (qw[git(1) @@ -82,6 +82,7 @@ $xurls{'git-filter-repo(1)'} = 'https://github.com/newren/git-filter-repo'. './blob/master/Documentation/git-filter-repo.txt'; $xurls{'ssoma(1)'} = 'https://ssoma.public-inbox.org/ssoma.txt'; $xurls{'cgitrc(5)'} = 'https://git.zx2c4.com/cgit/tree/cgitrc.5.txt'; +$xurls{'prove(1)'} = 'https://perldoc.perl.org/prove.html'; my $str = do { local $/; }; my ($title) = ($str =~ /\A([^\n]+)/); diff --git a/HACKING b/HACKING index cceb686f..74a3096f 100644 --- a/HACKING +++ b/HACKING @@ -59,6 +59,24 @@ directory for design decisions made during development. See Documentation/technical/ in the source tree for more details on specific topics, in particular data_structures.txt +Faster tests +------------ + +The `make test' target provided by MakeMaker does not run in +parallel. Our `make check' target supports parallel runs, and +it also creates a `.prove' file to optimize `make check-run'. + +The prove(1) command (distributed with Perl) may also be used +for finer-grained testing: prove -bvw t/foo.t + +If using a make(1) (e.g. GNU make) with `include' support, the +`config.mak' Makefile snippet can be used to set environment +variables such as PERL_INLINE_DIRECTORY and TMPDIR. + +With PERL_INLINE_DIRECTORY set to enable Inline::C support and +TMPDIR pointed to a tmpfs(5) mount, `make check-run' takes 6-10s +(load-dependent) on a busy workstation built in 2010. + Perl notes ---------- diff --git a/INSTALL b/INSTALL index 3984df71..2dd7dcff 100644 --- a/INSTALL +++ b/INSTALL @@ -191,7 +191,7 @@ install the system (into /usr/local) with: perl Makefile.PL make - make test + make test # see HACKING for faster tests for hackers make install # root permissions may be needed When installing Search::Xapian, make sure the underlying Xapian