mojolicious/mojo

Convert tests to using subtests

Open

#1,520 opened on May 20, 2020

View on GitHub
 (6 comments) (0 reactions) (0 assignees)Perl (591 forks)auto 404
good first issuehelp wanted

Repository metrics

Stars
 (2,745 stars)
PR merge metrics
 (PR metrics pending)

Description

Not a particularly hard task, but converting all tests is a lot of work. We want to go from:

# Promisify
is ref Mojo::Promise->resolve('foo'), 'Mojo::Promise', 'right class';
$promise = Mojo::Promise->reject('foo');
is ref $promise, 'Mojo::Promise', 'right class';
@errors = ();
$promise->catch(sub { push @errors, @_ })->wait;
is_deeply \@errors, ['foo'], 'promise rejected';
$promise = Mojo::Promise->resolve('foo');
is refaddr(Mojo::Promise->resolve($promise)), refaddr($promise), 'same object';
$promise = Mojo::Promise->resolve('foo');
isnt refaddr(Mojo::Promise->new->resolve($promise)), refaddr($promise),
  'different object';
$promise = Mojo::Promise->reject('foo');
is refaddr(Mojo::Promise->resolve($promise)), refaddr($promise), 'same object';
@errors = ();
$promise->catch(sub { push @errors, @_ })->wait;
is_deeply \@errors, ['foo'], 'promise rejected';
$promise  = Mojo::Promise->reject('foo');
$promise2 = Mojo::Promise->reject($promise);
isnt refaddr($promise2), refaddr($promise), 'different object';
@errors = ();
$promise2->catch(sub { push @errors, @_ })->wait;
is_deeply \@errors, ['foo'], 'promise rejected';

to:

subtest 'Promisify' => sub {
  is ref Mojo::Promise->resolve('foo'), 'Mojo::Promise', 'right class';

  $promise = Mojo::Promise->reject('foo');
  is ref $promise, 'Mojo::Promise', 'right class';
  @errors = ();
  $promise->catch(sub { push @errors, @_ })->wait;
  is_deeply \@errors, ['foo'], 'promise rejected';

  $promise = Mojo::Promise->resolve('foo');
  is refaddr(Mojo::Promise->resolve($promise)), refaddr($promise),
    'same object';

  $promise = Mojo::Promise->resolve('foo');
  isnt refaddr(Mojo::Promise->new->resolve($promise)), refaddr($promise),
    'different object';

  $promise = Mojo::Promise->reject('foo');
  is refaddr(Mojo::Promise->resolve($promise)), refaddr($promise),
    'same object';
  @errors = ();
  $promise->catch(sub { push @errors, @_ })->wait;
  is_deeply \@errors, ['foo'], 'promise rejected';

  $promise  = Mojo::Promise->reject('foo');
  $promise2 = Mojo::Promise->reject($promise);
  isnt refaddr($promise2), refaddr($promise), 'different object';
  @errors = ();
  $promise2->catch(sub { push @errors, @_ })->wait;
  is_deeply \@errors, ['foo'], 'promise rejected';
};

Block comments become the subtest description, and then we add a blank line in between unrelated test cases within the subtest. Here is another example.

Contributor guide