user/dev discussion of public-inbox itself
 help / color / mirror / code / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download mbox.gz: |
* [PATCH 4/5] t/hl_mod.t: remove IPC::Run (and File::Temp) dependency
  2019-11-04  3:01  6% [PATCH 0/5] tiny test overhead reductions Eric Wong
@ 2019-11-04  3:01  7% ` Eric Wong
  0 siblings, 0 replies; 2+ results
From: Eric Wong @ 2019-11-04  3:01 UTC (permalink / raw)
  To: meta

We already load PublicInbox::Spawn for which(), so using spawn()
isn't unreasonable.  And rely on "skip" to log the omitted test
if w3m is missing, which means we need to update the "&&"
escaping test to be self-referential on the same line.

File::Temp was totally unused, there; and we can use "open ...,undef"
in Perl to easily create anonymous temporary files for use with
spawn().
---
 t/hl_mod.t | 24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/t/hl_mod.t b/t/hl_mod.t
index 52ef39dc..4942404c 100644
--- a/t/hl_mod.t
+++ b/t/hl_mod.t
@@ -4,8 +4,10 @@
 use strict;
 use warnings;
 use Test::More;
+use PublicInbox::Spawn qw(which spawn);
+use Fcntl qw(:seek);
 eval { require highlight } or
-	plan skip_all => 'failed to load highlight.pm';
+	plan skip_all => "failed to load highlight.pm for $0";
 use_ok 'PublicInbox::HlMod';
 my $hls = PublicInbox::HlMod->new;
 ok($hls, 'initialized OK');
@@ -21,20 +23,26 @@ my $orig = $str;
 	is(ref($ref), 'SCALAR', 'got a scalar reference back');
 	ok(utf8::valid($$ref), 'resulting string is utf8::valid');
 	like($$ref, qr/I can see you!/, 'we can see ourselves in output');
-	like($$ref, qr/&&/, 'escaped');
+	like($$ref, qr/&&/, 'escaped &&');
 	my $lref = $hls->do_hl_lang(\$str, 'perl');
 	is($$ref, $$lref, 'do_hl_lang matches do_hl');
 
-	use PublicInbox::Spawn qw(which);
-	if (eval { require IPC::Run } && which('w3m')) {
-		require File::Temp;
+	SKIP: {
+		which('w3m') or skip 'w3m(1) missing to check output', 1;
 		my $cmd = [ qw(w3m -T text/html -dump -config /dev/null) ];
-		my ($out, $err) = ('', '');
-
-		IPC::Run::run($cmd, \('<pre>'.$$ref.'</pre>'), \$out, \$err);
+		open my $in, '+>', undef or die;
+		open my $out, '+>', undef or die;
+		my $rdr = { 0 => fileno($in), 1 => fileno($out) };
+		$in->autoflush(1);
+		print $in '<pre>', $$ref, '</pre>' or die;
+		$in->seek(0, SEEK_SET) or die;
+		my $pid = spawn($cmd, undef, $rdr);
+		waitpid($pid, 0);
 		# expand tabs and normalize whitespace,
 		# w3m doesn't preserve tabs
 		$orig =~ s/\t/        /gs;
+		$out->seek(0, SEEK_SET) or die;
+		$out = do { local $/; <$out> };
 		$out =~ s/\s*\z//sg;
 		$orig =~ s/\s*\z//sg;
 		is($out, $orig, 'w3m output matches');

^ permalink raw reply related	[relevance 7%]

* [PATCH 0/5] tiny test overhead reductions
@ 2019-11-04  3:01  6% Eric Wong
  2019-11-04  3:01  7% ` [PATCH 4/5] t/hl_mod.t: remove IPC::Run (and File::Temp) dependency Eric Wong
  0 siblings, 1 reply; 2+ results
From: Eric Wong @ 2019-11-04  3:01 UTC (permalink / raw)
  To: meta

Getting rid of IPC::Run for running 3rd party programs is a tiny
stope towards improving ease-of-testing for new contributors.

Next step might be be enabling mod_perl-like functionality for
our own short-lived scripts to speed up startup time...

Finally, we can eliminate daemon worker processes from most
tests (and explicitly test it in one place) since we don't
need to repeat ourselves.

Eric Wong (5):
  t/*.t: remove IPC::Run dependency for git commands
  t/httpd-corner.t: drop unnecessary bytes:: for length()
  t/httpd-corner.t: get rid of IPC::Run for running curl
  t/hl_mod.t: remove IPC::Run (and File::Temp) dependency
  t/*.t: disable nntpd/httpd worker processes in most tests

 t/git.t             | 12 ++++++------
 t/hl_mod.t          | 24 ++++++++++++++++--------
 t/httpd-corner.psgi |  3 +++
 t/httpd-corner.t    | 44 +++++++++++++++++++++++++++++---------------
 t/httpd.t           |  2 +-
 t/v2mirror.t        |  3 ++-
 t/v2writable.t      |  2 +-
 t/www_listing.t     | 13 +++++++------
 8 files changed, 65 insertions(+), 38 deletions(-)


^ permalink raw reply	[relevance 6%]

Results 1-2 of 2 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2019-11-04  3:01  6% [PATCH 0/5] tiny test overhead reductions Eric Wong
2019-11-04  3:01  7% ` [PATCH 4/5] t/hl_mod.t: remove IPC::Run (and File::Temp) dependency Eric Wong

Code repositories for project(s) associated with this public inbox

	https://80x24.org/public-inbox.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).