File: 40-cli.t

package info (click to toggle)
liburi-packageurl-perl 2.22-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 276 kB
  • sloc: perl: 1,447; sh: 45; makefile: 2
file content (60 lines) | stat: -rw-r--r-- 1,425 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!perl -T

use strict;
use warnings;

use Test::More;
use JSON::PP qw(decode_json);

use URI::PackageURL::App;
use URI::VersionRange::App;

sub cmd {

    my ($class, @arguments) = @_;

    my $output;

    open(my $output_handle, '>', \$output) or die "Can't open handle file: $!";
    my $original_handle = select $output_handle;

    $class->run(@arguments);
    chomp $output;

    select $original_handle;

    return $output;

}

my $t1 = 'pkg:cpan/GDT/URI-PackageURL@2.21';
my $t2 = 'vers:cpan/1.00|>=2.00|<5.00';

subtest "URI::PackageURL::App - '$t1' (JSON output)" => sub {

    my $test_1 = cmd('URI::PackageURL::App', $t1, '--json');
    ok($test_1, 'Parse PackageURL string to JSON');

    my $test_2 = eval { decode_json($test_1) };

    ok($test_2, 'Valid JSON output');
    is($test_2->{type},      'cpan',           'JSON output: Type');
    is($test_2->{namespace}, 'GDT',            'JSON output: Namespace');
    is($test_2->{name},      'URI-PackageURL', 'JSON output: Name');
    is($test_2->{version},   '2.21',           'JSON output: Version');

};

subtest "URI::VersionRange::App - '$t2' (JSON output)" => sub {

    my $test_1 = cmd('URI::VersionRange::App', $t2, '--json');
    ok($test_1, 'Parse Version Range string to JSON');

    my $test_2 = eval { decode_json($test_1) };

    ok($test_2, 'Valid JSON output');
    is($test_2->{scheme}, 'cpan', 'JSON output: Scheme');

};

done_testing();