URI-PackageURL-2.24/0000755000175000017500000000000015135504367013031 5ustar peppepeppeURI-PackageURL-2.24/t/0000755000175000017500000000000015135504367013274 5ustar peppepeppeURI-PackageURL-2.24/t/90-cpan-distname-info.t0000644000175000017500000000533415135504042017356 0ustar peppepeppe#!perl use v5.10; use Test::More; use Data::Dumper; use CPAN::DistnameInfo; use URI::PackageURL; while (my $distname = ) { chomp $distname; my $d = CPAN::DistnameInfo->new($distname); next unless $d->cpanid; next unless $d->dist; my $qualifiers = {}; # "tar.gz" is the default extension for CPAN distributions if ($d->extension ne 'tar.gz') { $qualifiers->{ext} = $d->extension; } my $purl = eval { URI::PackageURL->new( type => 'cpan', namespace => $d->cpanid, name => $d->dist, version => $d->version, qualifiers => $qualifiers ); }; fail(@$) if $@; ok($purl, "Conversion: $distname --> $purl"); is($d->cpanid, $purl->namespace, 'dist(cpanid) == purl(namespace)'); is($d->dist, $purl->name, 'dist(dist) == purl(name)'); is($d->version, $purl->version, 'dist(version) == purl(version)'); } done_testing(); __DATA__ CPAN/authors/id/J/JA/JAMCC/ngb-101.zip CPAN/authors/id/J/JS/JSHY/DateTime-Fiscal-Year-0.01.tar.gz CPAN/authors/id/G/GA/GARY/Math-BigInteger-1.0.tar.gz CPAN/authors/id/T/TE/TERRY/VoiceXML-Server-1.6.tar.gz CPAN/authors/id/J/JA/JAMCC/ngb-100.tar.gz CPAN/authors/id/J/JS/JSHY/DateTime-Fiscal-Year-0.02.tar.gz CPAN/authors/id/G/GA/GARY/Crypt-DES-1.0.tar.gz CPAN/authors/id/G/GA/GARY/Stream-1.00.tar.gz CPAN/authors/id/T/TM/TMAEK/DBIx-Cursor-0.14.tar.gz CPAN/authors/id/G/GA/GARY/Crypt-IDEA-1.0.tar.gz CPAN/authors/id/G/GA/GARY/Math-TrulyRandom-1.0.tar.gz CPAN/authors/id/T/TE/TERRY/VoiceXML-Server-1.13.tar.gz JWILLIAMS/MasonX-Lexer-MSP-0.02.tar.gz CPAN/authors/id/J/JA/JAMCC/Tie-CacheHash-0.50.tar.gz CPAN/authors/id/T/TM/TMAEK/DBIx-Cursor-0.13.tar.gz CPAN/authors/id/J/JD/JDUTTON/Parse-RandGen-0.100.tar.gz id/N/NI/NI-S/Tk400.202.tar.gz authors/id/G/GB/GBARR/perl5.005_03.tar.gz M/MS/MSCHWERN/Test-Simple-0.48_01.tar.gz id/J/JV/JV/PostScript-Font-1.09.tar.gz id/I/IB/IBMTORDB2/DBD-DB2-0.77.tar.gz id/I/IB/IBMTORDB2/DBD-DB2-0.99.tar.bz2 CPAN/authors/id/L/LD/LDS/CGI.pm-2.34.tar.gz CPAN/authors/id/J/JE/JESSE/perl-5.12.0-RC0.tar.gz CPAN/authors/id/G/GS/GSAR/perl-5.6.1-TRIAL3.tar.gz CPAN/authors/id/R/RJ/RJBS/Dist-Zilla-2.100860-TRIAL.tar.gz CPAN/authors/id/M/MI/MINGYILIU/Bio-ASN1-EntrezGene-1.10-withoutworldwriteables.tar.gz CPAN/authors/id/I/IL/ILYAZ/modules/Term-Gnuplot-0.90380906.zip CPAN/authors/id/S/SA/SANDEEPV/GuiBuilder_v0_3.zip CPAN/authors/id/I/IL/ILYAZ/modules/Term-Gnuplot-0.90380906.zip BDFOY/authors/id/B/BD/BDFOY/Mojolicious-Plugin-DirectoryServer-1.003.tar KMACLEOD/Frontier-RPC-0.07b4.tar.gz RTFIREFLY/Frontier-RPC-0.07b4p1.tar.gz AJPEACOCK/HTML-Table-2.08a.tar.gz DANPEDER/MIME-Base32-1.02a.tar.gz CPAN/authors/id/G/GD/GDT/URI-PackageURL-2.21.tar.gz URI-PackageURL-2.24/t/91-cpan-distpath-quailfier.t0000644000175000017500000013532715135504042020427 0ustar peppepeppe#!perl use v5.10; use Test::More; use Data::Dumper; use CPAN::DistnameInfo; use URI::PackageURL; use URI::PackageURL::Util qw(purl_to_urls); while (my $distpath = ) { chomp $distpath; subtest "$distpath" => sub { my $d = CPAN::DistnameInfo->new($distpath); my $purl1 = PURL->new( type => 'cpan', namespace => $d->cpanid, name => $d->dist, version => $d->version, qualifiers => {distpath => $distpath} ); my $urls1 = purl_to_urls($purl1); my $like1 = quotemeta($distpath); like $urls1->{download}, qr{$like1}, sprintf("PURL(1): %s\n\t - Download URL(1): %s", $purl1, $urls1->{download}); my $purl2 = $purl1->clone; # Alternative distname my $distpath2 = (split '/', $distpath, 3)[2]; $purl2->qualifiers({distpath => $distpath2}); my $urls2 = purl_to_urls($purl2); my $like2 = quotemeta($distpath2); like $urls2->{download}, qr{$like2}, sprintf("PURL(2): %s\n\t - Download URL(2): %s", $purl2, $urls2->{download}); }; } done_testing(); # distribution path in __DATA__ are taken from 02packages.details.txt snapshot ~2025-09-13 00:00:00) # Algorithm/Script # use CPAN::PackageDetails; # use URI::PackageURL; # # my $package_details = CPAN::PackageDetails->read('02packages.details.txt'); # my $records = $package_details->entries->get_hash; # # foreach my $package (keys %{$records}) { # foreach my $version (keys %{$records->{$package}}) { # # my $record = $records->{$package}{$version}; # # my $d = CPAN::DistnameInfo->new($record->path); # # next unless $d->dist; # next unless $d->version; # # my $qualifiers = {}; # # if ($d->extension ne 'tar.gz') { # $qualifiers->{ext} = $d->extension; # } # # my $purl = URI::PackageURL->new( # type => 'cpan', # namespace => $d->cpanid, # name => $d->dist, # version => $d->version, # qualifiers => $qualifiers # ); # # my $download_url = $purl->to_urls->{download}; # $download_url =~ s{https://www.cpan.org/authors/id/}{}; # # if ($download_url ne $d->pathname) { # say $d->pathname; # } # # } # } __DATA__ A/AA/AAMEND/RADIUS/RADIUS-XMLParser-2.30.tar.gz A/AA/AARDEN/Tk-ActivityBar/Tk-ActivityBar-0.01.tar.gz A/AA/AARDO/combine_4.005.tar.gz A/AA/AAU/MRIM/Net-MRIM-1.11.tar.gz A/AB/ABERNDT/Win32-Snarl/win32-snarl-1.01.tar.gz A/AE/AECOOPER/monotone/Monotone-AutomateStdio-1.10.tar.gz A/AF/AFRYER/TUXEDO_1_00.zip A/AH/AHCHORN/Math/ES/Math-ES-0.08.tar.gz A/AK/AKOLB/Solaris/Solaris-Lgrp-0.1.4.tar.gz A/AL/ALEXEVIL/evilboss/EvilBoss-1.01.tar.gz A/AL/ALEXMASS/bioinfo/InSilicoSpectro-0.9.7.tar.gz A/AL/ALEXMASS/bioinfo/InSilicoSpectro-0.9.9.tar.gz A/AM/AMBS/Biblio/Biblio-Thesaurus-0.43.tar.gz A/AM/AMBS/Bundle/Bundle-SDK-SIMON-1.02.tar.gz A/AM/AMBS/Dancer/Dancer2-Plugin-Emailesque-0.03.tar.gz A/AM/AMBS/Finance/Finance-Kitko-Charts-0.01.tar.gz A/AM/AMBS/Lingua/Lingua-Flags-0.07.tar.gz A/AM/AMBS/Lingua/Lingua-FreeLing3-0.09.tar.gz A/AM/AMBS/Lingua/Lingua-FreeLing3-Utils-0.09.tar.gz A/AM/AMBS/Lingua/Lingua-Identify-0.56.tar.gz A/AM/AMBS/Lingua/Lingua-PT-ProperNames-0.10.tar.gz A/AM/AMBS/Lingua/Lingua-PT-Speaker-0.12.tar.gz A/AM/AMBS/Lingua/Task-Lingua-PT-0.02.tar.gz A/AM/AMBS/POSIX/POSIX-Open3-0.01.tar.gz A/AM/AMBS/Search/Search-Glimpse-0.04.tar.gz A/AM/AMBS/String/String-Tokeniser-0.05.tar.gz A/AM/AMBS/Text/Text-Ngram-0.15.tar.gz A/AM/AMBS/Text/Text-RewriteRules-0.25.tar.gz A/AM/AMBS/Text/Text-WordGrams-0.07.tar.gz A/AM/AMBS/Tie/Tie-Ispell-0.08.tar.gz A/AM/AMBS/XML/XML-XCES-0.01.tar.gz A/AM/AMITSIDES/WWW/WWW-BitTorrent-0.01.tar.gz A/AN/ANDREWN/Parse-Plain/Parse-Plain-3.03.tar.gz A/AN/ANK/FSWatcher/Win32-FileSystem-Watcher-0.1.0.tar.gz A/AN/ANK/pngwriter/Image-PNGwriter-0.01.tar.gz A/AN/ANPARKER/mikrotik/MikroTik-Client-v0.530.tar.gz A/AN/ANURADHA/Usergrid/Usergrid-Client-0.11.tar.gz A/AN/ANURADHA/Usergrid/Usergrid-Client-0.22.tar.gz A/AS/ASARIH/HPUX-SDUX/HPUX-SDUX-0.03.tar.gz A/AS/ASARIH/IPC-Door/IPC-Door-0.11.tar.gz A/AS/ASCOPE/Net-ITE.pm-0.05.tar.gz A/AW/AWKAY/Apache/Apache-SiteControl-1.01.tar.gz A/AW/AWKAY/Apache2/Apache2-SiteControl-1.05.tar.gz A/AY/AYATES/data/Data-Predicate-2.1.1.tar.gz A/AZ/AZS/graph/Graph-ModularDecomposition-0.15.tar.gz B/BA/BALDR/BioGraph/BioGraph-1.0.0.tar.gz B/BA/BALDR/BioGraph/BioGraph-1.0.1.tar.gz B/BA/BARRYP/Term-GetKey/LibTerm-GetKey-1.02.tar.gz B/BB/BBENNETT/collate/Unicode-Collate-Standard-V3_1_1-0.1.tar.gz B/BB/BBENNETT/dt-fmt-datemanip/DateTime-Format-DateManip-0.04.tar.gz B/BB/BBENNETT/nameday/DateTime-Event-NameDay-0.02.tar.gz B/BE/BERA/Text/Text-Stripper-1.16.tar.gz B/BH/BHUVAN/bhuvan/Dblink-1.0.tar.gz B/BJ/BJEPS/RDBMS.pm-0.93.tar.gz B/BL/BLADE/Class-CompiledC2.21.tgz B/BL/BLAKEW/Games-Tetris-Complete-0.03-withoutworldwriteables.tar.gz B/BL/BLUECURIO/SeqDiff/SeqDiff-v0.1.tar.gz B/BL/BLX/XSDSQL_20130120.tar.gz B/BL/BLX/XSDSQL_20130411.tar.gz B/BM/BMIDD/perl5.00402-bindist04-msvcAlpha.tar.gz B/BO/BOFTX/Fiscal5253/DateTimeX-Fiscal-Fiscal5253-2.01.tar.gz B/BO/BOFTX/Games-Dukedom/Games-Dukedom-v0.1.3.tar.gz B/BO/BOFTX/MooX/MooX-Role-Reconstruct-v0.1.2.tar.gz B/BO/BOFTX/Retail454/DateTime-Fiscal-Retail454-0.03.tar.gz B/BR/BRACETA/AcmeCPANAuthorsPortuguese/Acme-CPANAuthors-Portuguese-0.04.tar.gz B/BR/BRACETA/XML-Hash/XML-Hash-0.95.tar.gz B/BR/BRIAN/psilambdallc/KappaCUDA-1.5.0.tar.gz B/BU/BULKDD/Win32/Acme-Win32-PEPM-0.02.tar.gz B/BU/BULKDD/Win32/Win32-API-0.84.tar.gz B/BU/BULKDD/Win32/Win32-ExeAsDll-0.01.tar.gz B/BU/BULKDD/benchmark/Acme-Shining-0.01.tar.gz B/BU/BULKDD/benchmark/Benchmark-Perl-CoreHashes-0.02.tar.gz B/BU/BULKDD/examples/Example-XS-FasterHashes-0.01.tar.gz B/BW/BWARFIELD/NRGN/Test-AutoLoader-0.03.tar.gz B/BY/BYRNE/SOAP/SOAP-Lite-0.60a.tar.gz B/BY/BYRNE/SOAP/SOAP-MIME-0.55-7.tar.gz C/CA/CAFFIEND/font_ft2_0.1.0.tgz C/CA/CARLOSFB/RT/RT-Authen-Federation-1.2.2.tar.gz C/CA/CARPENTER/Geo-GNUPlot_0.01.tar.gz C/CA/CARPENTER/Storm-Tracker_0.01.tar.gz C/CA/CARPENTER/Storm-Tracker_0.02.tar.gz C/CC/CCOLBOURN/Data-Sync/Data-Sync-0.08.tar.gz C/CC/CCOLBOURN/Text-StripAccents/Text-StripAccents-0.11.tar.gz C/CC/CCOLBOURN/ai-nnflex/AI-NNFlex-0.24.tar.gz C/CD/CDENT/Kwiki/Kwiki-Backlinks-0.10.tar.gz C/CD/CDENT/Kwiki/Kwiki-Blog-0.10.tar.gz C/CD/CDENT/Kwiki/Kwiki-DatedAnnounce-0.01.tar.gz C/CD/CDENT/Kwiki/Kwiki-FetchRSS-0.08.tar.gz C/CD/CDENT/Kwiki/Kwiki-Keywords-0.14.tar.gz C/CD/CDENT/Kwiki/Kwiki-Orphans-0.11.tar.gz C/CD/CDENT/Kwiki/Kwiki-PPerl-0.01.tar.gz C/CD/CDENT/Kwiki/Kwiki-PageStats-0.06.tar.gz C/CD/CDENT/Kwiki/Kwiki-PageTemperature-0.01.tar.gz C/CD/CDENT/Kwiki/Kwiki-Purple-0.04.tar.gz C/CD/CDENT/Kwiki/Kwiki-Raw-0.02.tar.gz C/CD/CDENT/Kwiki/Kwiki-Soap-0.05.tar.gz C/CD/CDENT/Kwiki/Kwiki-Soap-Google-0.04.tar.gz C/CD/CDENT/Kwiki/Kwiki-Technorati-0.04.tar.gz C/CD/CDENT/Kwiki/Kwiki-Test-0.03.tar.gz C/CD/CDENT/Kwiki/Kwiki-Theme-CPB-0.10.tar.gz C/CD/CDENT/Kwiki/Kwiki-Trackback-0.01.tar.gz C/CD/CDENT/Kwiki/Kwiki-Yahoo-0.04.tar.gz C/CD/CDENT/Purple/Purple-1.4.tar.gz C/CD/CDENT/PurpleWiki/PurpleWiki-0.94.tar.gz C/CD/CDENT/TiddlyWeb/TiddlyWeb-Wikrad-0.9.tar.gz C/CG/CGLASS/webservicejamendo/WebService-Jamendo_2.tar.gz C/CH/CHENGYU/circle-chain/Circle-Block-0.05.tar.gz C/CH/CHENGYU/circle-chain/Circle-Chain-0.07.tar.gz C/CH/CHENGYU/circle-chain/Circle-Miner-0.02.tar.gz C/CH/CHENGYU/circle-chain/Circle-Node-0.05.tar.gz C/CH/CHENGYU/circle-chain/Circle-User-0.08.tar.gz C/CH/CHENGYU/circle-chain/Circle-Wallet-0.05.tar.gz C/CH/CHENRYN/NG/NG-0.001.tar.gz C/CH/CHRWIN/acme-pia-export/Acme-PIA-Export-0.019.tar.gz C/CH/CHRWIN/convert-xtext/Convert-XText-0.01.tar.gz C/CH/CHRWIN/date-spoken-german/Date-Spoken-German-0.05.tar.gz C/CJ/CJCOLLIER/AMPRRip44/AMPR-Rip44-0.03.tar.gz C/CJ/CJCOLLIER/Earth-USA-Washington-Cascadia/Earth-USA-Washington-Cascadia-0.01.tar.gz C/CJ/CJCOLLIER/HPSG/HPSG-Mason-0.04.tar.gz C/CJ/CJCOLLIER/Lingua-HPSG/Lingua-HPSG-0.02.tar.gz C/CJ/CJCOLLIER/Lingua-HPSG/Lingua-HPSG-0.03.tar.gz C/CJ/CJCOLLIER/NIST-NVD/NIST-NVD-1.02.01.tar.gz C/CJ/CJCOLLIER/NIST-NVD/NIST-NVD-Store-SQLite3-1.02.00.tar.gz C/CJ/CJCOLLIER/WordPress-Plugin/WordPress-Plugin-WallFlower-0.0.3.tar.gz C/CL/CLADI/SmarTalk_v10.tar.gz C/CL/CLADI/ios_get_interfaces_1.7.tar.gz C/CM/CML/Sendmail_M4.0.29a.tar.gz C/CO/CORLISS/Class-EHierarchy/Class-EHierarchy-2.01.tar.gz C/CO/CORLISS/Net-ICAP/Net-ICAP-0.04.tar.gz C/CO/CORLISS/Paranoid-BerkeleyDB/Paranoid-BerkeleyDB-2.02.tar.gz C/CO/CORLISS/Paranoid-BerkeleyDB/Paranoid-BerkeleyDB-2.06.tar.gz C/CO/CORLISS/Paranoid-Log-Email/Paranoid-Log-Email-2.00.tar.gz C/CO/CORLISS/Paranoid-Log-Syslog/Paranoid-Log-Syslog-2.00.tar.gz C/CO/CORLISS/Paranoid/Paranoid-0.36.tar.gz C/CO/CORLISS/Paranoid/Paranoid-2.10.tar.gz C/CO/CORLISS/Parse-PlainConfig/Parse-PlainConfig-3.07.tar.gz C/CP/CPANPERL/frames/WWW-Mechanize-Frames-0.03.tar.gz C/CP/CPKOIS/ACH/ACH-0.01.tar.gz C/CP/CPKOIS/ACHGenerator/ACH-Generator-0.01.tar.gz C/CP/CPKOIS/ACHParser/ACH-Parser-0.01.tar.gz C/CP/CPKOIS/BluepayBluepay20DailyReport/Bluepay-Bluepay20DailyReport-0.15.tar.gz C/CP/CPKOIS/BluepayBluepay20Post/Bluepay-Bluepay20Post-0.10.tar.gz C/CW/CWELCH/O/B/ObjectRowMap-0.11.tar.gz C/CW/CWHITE/HPUX-FS_0.05.tar.gz C/CW/CWHITE/HPUX-LVM_0.06.tar.gz D/DA/DAROLD/Apache2/ModProxyPerlHtml/Apache2-ModProxyPerlHtml-4.1.tar.gz D/DA/DAVEOLA/Image/Image-BMP-1.26.tar.gz D/DA/DAVEROTH/Win32_AdminMisc_Source_980511.zip D/DA/DAVEROTH/Win32_Tie_Ini_Source_980311.zip D/DA/DAVIDCYL/Syntax-Highlight-Perl-Improved-101/Syntax-Highlight-Perl-Improved-1.01.tar.gz D/DA/DAVIDNICO/AIS/AIS-client-0.07.tar.gz D/DA/DAVIDNICO/Acme/Acme-SvGROW-0.03.tar.gz D/DA/DAVIDNICO/Acme/Acme-landmine-1.00.tar.gz D/DA/DAVIDNICO/Acme/Acme-please-0.01.tar.gz D/DA/DAVIDNICO/Acme/Array-Frugal-0.01.tar.gz D/DA/DAVIDNICO/DBI/DBIx-bind_param_inline-0.03.tar.gz D/DA/DAVIDNICO/DirDB/DirDB-0.12.tar.gz D/DA/DAVIDNICO/DirDB/DirDB-FTP-0.03.tar.gz D/DA/DAVIDNICO/DirDB/DirDB-Storable-0.07.tar.gz D/DA/DAVIDNICO/ParsingPerl/Macrame-0.13.tar.gz D/DA/DAVIDNICO/SMTP/TipJar-MTA-0.34.tar.gz D/DA/DAVIDNICO/SMTP/dateheader-1.0.tar.gz D/DA/DAVIDNICO/Singlethreaded/HTTP-Server-Singlethreaded-0.12.tar.gz D/DA/DAVIDNICO/StateMachines/Graph-Easy-StateMachine-0.07.tar.gz D/DA/DAVIDNICO/handy_tied_functions/Scope-local_OnExit-0.01.tar.gz D/DA/DAVIDNICO/handy_tied_functions/Tie-Alias-1.01.tar.gz D/DA/DAVIDNICO/handy_tied_functions/Tie-Function-0.02.tar.gz D/DA/DAVIDNICO/handy_tied_functions/Tie-Hash-Cache-MRU-0.02.tar.gz D/DA/DAVIDNICO/handy_tied_functions/Tie-LazyFunction-0.01.tar.gz D/DA/DAVIDNICO/handy_tied_functions/Tie-Quicksort-Lazy-0.04.tar.gz D/DA/DAVIDNICO/handy_tied_functions/Tie-UrlEncoder-0.02.tar.gz D/DA/DAVIDNICO/handy_tied_functions/TipJar-sparse-array-perl-hashbased-0.01.tar.gz D/DA/DAVOR/Statistics-R-IO/Statistics-R-IO-0.101.tar.gz D/DB/DBIALAC/SDP/SDP-0.1.tar.gz D/DB/DBURDICK/BoostGraph/Boost-Graph-1.4.tar.gz D/DB/DBURDICK/ConnectDots/Bio-ConnectDots-1.0.2.tar.gz D/DE/DETI/Net/Net-ENUM-0.3.tar.gz D/DE/DETI/STUN/STUN-RFC_5389-0.1.tar.gz D/DG/DGRAHAM/simpleXMLParse/simplexmlparse_v3.1.tar.gz D/DI/DISSENT/VCSLibCVS/VCS-LibCVS-1.tar.gz D/DM/DMALONE/App-Diskd/App-Diskd-0.01.tar.gz D/DM/DMALONE/Crypt-IDA/Crypt-IDA-0.03.tar.gz D/DM/DMALONE/Math-FastGF2/Math-FastGF2-0.07.tar.gz D/DM/DMALONE/Net-OnlineCode-004/Net-OnlineCode-0.04.tar.gz D/DM/DMITRYSOL/SystemAdministration/Logging/Net-Dev-Tools-SyslogMessage-1.01.tar.gz D/DO/DONANGEL/Chemistry/Chemistry-Harmonia-0.118.tar.gz D/DO/DONANGEL/LaTeX/LaTeX-Replicase-0.031.tar.gz D/DO/DONANGEL/Lingua-RU/Lingua-RU-Numeral-0.071.tar.gz D/DO/DONANGEL/Math/Math-Assistant-0.05.tar.gz D/DO/DOTTK/Domain-Register-TK.2.1.tar.gz D/DR/DRULENSOT/UPS/perl-Hardware-UPS-Perl-0.43.tar.gz D/DU/DUMB/HTML-Form-XSS/HTML-Form-XSS-0.31.tar.gz D/DU/DUMB/HTML-Form-XSS/HTML-Form-XSS-1.tar.gz D/DU/DUMB/Mungo/CGI-Mungo-1.701.tar.gz D/DU/DUMB/Mungo/CGI-Mungo-1.9.tar.gz D/DU/DUMB/Net-GNUDBSearch/Net-GNUDBSearch-1.01.tar.gz D/DU/DUMB/PSGI-Hector/PSGI-Hector-2.0.tar.gz D/DU/DUMB/Plack-App-WebMySQL/Plack-App-WebMySQL-4.01.tar.gz D/DU/DUMB/RT-Extension-MenubarUserTickets/RT-Extension-MenubarUserTickets-1.1.tar.gz D/DV/DVDPOL/Math-Geometry-Planar-1.18-withoutworldwriteables.tar.gz E/EA/EASR/ONTO-PERL/ONTO-PERL-1.35.tar.gz E/EA/EASR/ONTO-PERL/ONTO-PERL-1.45.tar.gz E/ED/EDD/beancounter_0.8.10.tar.gz E/EF/EFORGEOT/HTML-WikiConverter-Txt2tags-004/HTML-WikiConverter-Txt2tags-0.04.tar.gz E/EG/EGERMAN/GPS_Poi_0.01.tar.gz E/EH/EHASTINGS/EBI-FGPT-FuzzyRecogniser_0.09.tar.gz E/EH/EHOOD/perlSGML.1997Sep18.tar.gz E/EI/EIJABB/MARC-Lint_1.53.tar.gz E/EI/EIM/WWW-SMS/WWW-SMS-0.09.tar.gz E/EI/EISELEKD/sparse-decpp/C-sparse-0.05.tar.gz E/EI/EISELEKD/sparse-decpp/C-sparse-0.07.tar.gz E/EM/EMORISSE/Statistics-SPC.v0.1.tar.gz E/EN/ENOOR/TaskForest/TaskForest-1.37.tar.gz E/ET/ETWOECMA/MRS/promessaging-MRS-1.01.tar.gz E/EW/EWILHELM/Drawing/CAD-Drawing-0.10.tar.gz E/EW/EWILHELM/Math/Math-Geometry-Planar-GPC-Polygon-0.05.tar.gz F/FA/FANSIPANS/CouchDB-ExternalProcess/CouchDB-ExternalProcess-0.02.tar.gz F/FA/FANTASMA/PDL-Dims/PDL-Dims-0.019.tar.gz F/FA/FANTASMA/PDL-IO-Dcm/PDL-IO-Dcm-1.011.tar.gz F/FA/FANTASMA/PDL-IO-Nifti/PDL-IO-Nifti-0.73.tar.gz F/FC/FCO/App-Rad-Plugin-TT/App-Rad-Plugin-TT-0.2.tar.gz F/FE/FELIXK/Bio/RNA/BarMap/Bio-RNA-BarMap-0.04.tar.gz F/FE/FELIXK/Bio/RNA/BarMap/Bio-RNA-Treekin-0.05.tar.gz F/FE/FELIXK/Bio/RNA/Barriers/Bio-RNA-Barriers-0.03.tar.gz F/FE/FELIXL/vptk/vptk_w_2_42b.tgz F/FE/FERZ/Commercial_Software_Interfaces/Conductrics-Client-0.003.tar.gz F/FL/FLOWERYSO/SmugMug/WWW-SmugMug-API-1.03.tar.gz F/FO/FOOF/libao-perl_0.03-1.tar.gz G/GA/GAAS/GAAS/Unicode-String-2.10.tar.gz G/GA/GABOR/Text-Format0.52+NWrap0.11.tar.gz G/GA/GABY/EasyDB.0.5b2.tgz G/GA/GARAFOLA/Solr/Solr-0.03.tar.gz G/GB/GBOSS/perl_archie.1.5.tar.gz G/GB/GBOUGARD/FusionInventory-Agent_2.6.tar.gz G/GL/GLENSMALL/Perl56/Win32-PerfMon.0.07-Perl5.6.zip G/GO/GODE/Crypt/Crypt-Present-0.02.tar.gz G/GO/GONZUS/JavaScript-Duktape-XS-0000081targz/JavaScript-Duktape-XS-0.000081.tar.gz G/GO/GOOZBACH/asterisk-store/Asterisk-Store-Queue-0.1.tar.gz G/GO/GOOZBACH/asterisk-store/Asterisk-Store-Queue-Member-0.1.tar.gz G/GO/GOYALI/SMS_API_4.01.1.tar.gz G/GR/GRANDPA/AI-ParticleSwarmOptimization/AI-ParticleSwarmOptimization-1.006.tar.gz G/GR/GRANDPA/HTML-Normalize/HTML-Normalize-1.0004.tar.gz G/GR/GRANDPA/Video-Dumper-QuickTime/Video-Dumper-QuickTime-1.0005.tar.gz G/GR/GRANDPA/Win32-MSI-HighLevel/Win32-MSI-HighLevel-1.0008.tar.gz G/GR/GRANDPA/Win32-PEFile/Win32-PEFile-0.7008.tar.gz G/GR/GRM/CamelPKI/App-CamelPKI-0.07.tar.gz H/HA/HANENKAMP/Class-DBI-DDL/Class-DBI-DDL-1.01.tar.gz H/HA/HANENKAMP/Class-Hash/Class-Hash-1.01.tar.gz H/HA/HANENKAMP/SPOPS/SPOPSx-Tool-DateTime-0.02.tar.gz H/HA/HANENKAMP/SPOPS/SPOPSx-Tool-YAML-0.03.tar.gz H/HA/HANENKAMP/Tie-Filter/Tie-Filter-1.02.tar.gz H/HA/HANENKAMP/Tree-BPTree/Tree-BPTree-1.07.tar.gz H/HA/HARPREET/XMS-MotifSetv1.0.tar.gz H/HC/HCAMP/ESplit1.00.zip H/HE/HESSU/POCSAG/POCSAG-Encode-1.00.tar.gz H/HI/HINNERK/PerlIDS/CGI-IDS-1.0217.tar.gz H/HI/HINNERK/StripTags/HTML-StripTags-1.01.tar.gz H/HO/HOREA/File-RoundRobin/File-RoundRobin-0.07.tar.gz H/HO/HOREA/Log-Log4perl/Log-Log4perl-Appender-File-FixedSize-0.01.tar.gz H/HO/HOREA/Mojolicious/Mojolicious-Plugin-WWWSession-0.06.tar.gz H/HO/HOREA/RPi-PIGPIO/RPi-PIGPIO-0.017.tar.gz H/HO/HOREA/WWW-Session/WWW-Session-0.12.tar.gz I/IK/IKALLEN/WebService-Technorati/WebService-Technorati-0.02.tar.gz I/IK/IKALLEN/WebService-Technorati/WebService-Technorati-0.04.tar.gz I/IK/IKALLEN/XMLXOXO/XML-XOXO-0.03.tar.gz I/IL/ILYAZ/modules/Audio-FindChunks-2.03.zip I/IL/ILYAZ/modules/Bundle-OS2_default-1.07.tar.gz I/IL/ILYAZ/modules/Data-Flow-1.02.tar.gz I/IL/ILYAZ/modules/Devel-RegExp-0.1.tar.gz I/IL/ILYAZ/modules/DoubleBlind-0.01.tar.gz I/IL/ILYAZ/modules/FileSystem-LL-FAT-0.05.tar.gz I/IL/ILYAZ/modules/FreezeThaw-0.5001.tar.gz I/IL/ILYAZ/modules/Image-Bitmap2Paths-0.01.tar.gz I/IL/ILYAZ/modules/MP3-Splitter-0.04.tar.gz I/IL/ILYAZ/modules/MP3-Tag-0.9713.tar.gz I/IL/ILYAZ/modules/MP3-Tag-1.13.tar.gz I/IL/ILYAZ/modules/MP3-Tag-1.16.zip I/IL/ILYAZ/modules/Math-Pari-2.030528.tar.gz I/IL/ILYAZ/modules/Net-ChooseFName-0.01.tar.gz I/IL/ILYAZ/modules/Numeric-LL_Array-0.1504.tar.gz I/IL/ILYAZ/modules/Run-0.03.tar.gz I/IL/ILYAZ/modules/SOM-0.0601.zip I/IL/ILYAZ/modules/SelfUnzip-0.01.zip I/IL/ILYAZ/modules/Softref-0.02.tar.gz I/IL/ILYAZ/modules/Term-Gnuplot-0.90380906.zip I/IL/ILYAZ/modules/Term-ReadLine-Perl-1.0303.tar.gz I/IL/ILYAZ/modules/Text-Trie-0.21.tar.gz I/IL/ILYAZ/modules/UI-KeyboardLayout-0.7901-try1.zip I/IL/ILYAZ/modules/c_plus_plus-0.1.tar.gz I/IL/ILYAZ/modules/etext/etext.1.6.3.zip I/IL/ILYAZ/os2/OS2-FTP-0_10.zip I/IL/ILYAZ/os2/OS2-Proc-0.02.tar.gz I/IL/ILYAZ/os2/OS2-SoftInstaller-0.09.tar.gz I/IL/ILYAZ/os2/OS2-UPM-0_10.zip I/IL/ILYAZ/os2/OS2-WinObject-0.02.tar.gz I/IL/ILYAZ/os2/tk/Bundle-Tk_OS2src-1.00.tar.gz I/IL/ILYAZ/os2/tk/Tk-OS2src-1.04.zip I/IN/INA/App/GhostWork/App-GhostWork-0.06.tar.gz I/IN/INA/App/japerl/App-japerl-0.15.tar.gz I/IN/INA/Arabic/Arabic-1.22.tar.gz I/IN/INA/Big5/Big5-1.22.tar.gz I/IN/INA/Big5HKSCS/Big5HKSCS-1.22.tar.gz I/IN/INA/CP932/R2/CP932-R2-0.07.tar.gz I/IN/INA/CP932IBM/R2/CP932IBM-R2-0.07.tar.gz I/IN/INA/CP932NEC/R2/CP932NEC-R2-0.07.tar.gz I/IN/INA/CP932X/R2/CP932X-R2-0.07.tar.gz I/IN/INA/Char/Arabic/Char-Arabic-1.02.tar.gz I/IN/INA/Char/Arabic/Char-Arabic-1.15.tar.gz I/IN/INA/Char/Big5HKSCS/Char-Big5HKSCS-1.02.tar.gz I/IN/INA/Char/Big5HKSCS/Char-Big5HKSCS-1.15.tar.gz I/IN/INA/Char/Big5Plus/Char-Big5Plus-1.02.tar.gz I/IN/INA/Char/Big5Plus/Char-Big5Plus-1.15.tar.gz I/IN/INA/Char/Cyrillic/Char-Cyrillic-1.02.tar.gz I/IN/INA/Char/Cyrillic/Char-Cyrillic-1.15.tar.gz I/IN/INA/Char/EUCJP/Char-EUCJP-1.02.tar.gz I/IN/INA/Char/EUCJP/Char-EUCJP-1.15.tar.gz I/IN/INA/Char/EUCTW/Char-EUCTW-1.02.tar.gz I/IN/INA/Char/EUCTW/Char-EUCTW-1.15.tar.gz I/IN/INA/Char/GB18030/Char-GB18030-1.02.tar.gz I/IN/INA/Char/GB18030/Char-GB18030-1.15.tar.gz I/IN/INA/Char/GBK/Char-GBK-1.02.tar.gz I/IN/INA/Char/GBK/Char-GBK-1.15.tar.gz I/IN/INA/Char/Greek/Char-Greek-1.02.tar.gz I/IN/INA/Char/Greek/Char-Greek-1.15.tar.gz I/IN/INA/Char/HP15/Char-HP15-1.02.tar.gz I/IN/INA/Char/HP15/Char-HP15-1.15.tar.gz I/IN/INA/Char/Hebrew/Char-Hebrew-1.02.tar.gz I/IN/INA/Char/Hebrew/Char-Hebrew-1.15.tar.gz I/IN/INA/Char/INFORMIXV6ALS/Char-INFORMIXV6ALS-1.02.tar.gz I/IN/INA/Char/INFORMIXV6ALS/Char-INFORMIXV6ALS-1.15.tar.gz I/IN/INA/Char/JIS8/Char-JIS8-1.02.tar.gz I/IN/INA/Char/JIS8/Char-JIS8-1.15.tar.gz I/IN/INA/Char/KOI8R/Char-KOI8R-1.02.tar.gz I/IN/INA/Char/KOI8R/Char-KOI8R-1.15.tar.gz I/IN/INA/Char/KOI8U/Char-KOI8U-1.02.tar.gz I/IN/INA/Char/KOI8U/Char-KOI8U-1.15.tar.gz I/IN/INA/Char/KPS9566/Char-KPS9566-1.02.tar.gz I/IN/INA/Char/KPS9566/Char-KPS9566-1.15.tar.gz I/IN/INA/Char/Latin1/Char-Latin1-1.02.tar.gz I/IN/INA/Char/Latin1/Char-Latin1-1.15.tar.gz I/IN/INA/Char/Latin10/Char-Latin10-1.02.tar.gz I/IN/INA/Char/Latin10/Char-Latin10-1.15.tar.gz I/IN/INA/Char/Latin2/Char-Latin2-1.02.tar.gz I/IN/INA/Char/Latin2/Char-Latin2-1.15.tar.gz I/IN/INA/Char/Latin3/Char-Latin3-1.02.tar.gz I/IN/INA/Char/Latin3/Char-Latin3-1.15.tar.gz I/IN/INA/Char/Latin4/Char-Latin4-1.02.tar.gz I/IN/INA/Char/Latin4/Char-Latin4-1.15.tar.gz I/IN/INA/Char/Latin5/Char-Latin5-1.02.tar.gz I/IN/INA/Char/Latin5/Char-Latin5-1.15.tar.gz I/IN/INA/Char/Latin6/Char-Latin6-1.02.tar.gz I/IN/INA/Char/Latin6/Char-Latin6-1.15.tar.gz I/IN/INA/Char/Latin7/Char-Latin7-1.02.tar.gz I/IN/INA/Char/Latin7/Char-Latin7-1.15.tar.gz I/IN/INA/Char/Latin8/Char-Latin8-1.02.tar.gz I/IN/INA/Char/Latin8/Char-Latin8-1.15.tar.gz I/IN/INA/Char/Latin9/Char-Latin9-1.02.tar.gz I/IN/INA/Char/Latin9/Char-Latin9-1.15.tar.gz I/IN/INA/Char/OldUTF8/Char-OldUTF8-1.02.tar.gz I/IN/INA/Char/OldUTF8/Char-OldUTF8-1.15.tar.gz I/IN/INA/Char/Sjis/Char-Sjis-1.02.tar.gz I/IN/INA/Char/Sjis/Char-Sjis-1.15.tar.gz I/IN/INA/Char/TIS620/Char-TIS620-1.02.tar.gz I/IN/INA/Char/TIS620/Char-TIS620-1.15.tar.gz I/IN/INA/Char/UHC/Char-UHC-1.02.tar.gz I/IN/INA/Char/UHC/Char-UHC-1.15.tar.gz I/IN/INA/Char/USASCII/Char-USASCII-1.02.tar.gz I/IN/INA/Char/USASCII/Char-USASCII-1.15.tar.gz I/IN/INA/Char/UTF2/Char-UTF2-1.02.tar.gz I/IN/INA/Char/UTF2/Char-UTF2-1.15.tar.gz I/IN/INA/Char/Windows1252/Char-Windows1252-1.02.tar.gz I/IN/INA/Char/Windows1252/Char-Windows1252-1.15.tar.gz I/IN/INA/Char/Windows1258/Char-Windows1258-1.02.tar.gz I/IN/INA/Char/Windows1258/Char-Windows1258-1.15.tar.gz I/IN/INA/Cyrillic/Cyrillic-1.22.tar.gz I/IN/INA/DBD/PgPPSjis/DBD-PgPPSjis-0.0801008.tar.gz I/IN/INA/DBD/mysqlPPrawSjis/DBD-mysqlPPrawSjis-0.16.tar.gz I/IN/INA/Fake/Encode/Fake-Encode-0.11.tar.gz I/IN/INA/Fake/Our/Fake-Our-0.12.tar.gz I/IN/INA/Fake/Our/Fake-Our-0.17.tar.gz I/IN/INA/GBK/GBK-1.22.tar.gz I/IN/INA/Greek/Greek-1.22.tar.gz I/IN/INA/IOas/CP932/IOas-CP932-0.10.tar.gz I/IN/INA/IOas/CP932IBM/IOas-CP932IBM-0.10.tar.gz I/IN/INA/IOas/CP932NEC/IOas-CP932NEC-0.10.tar.gz I/IN/INA/IOas/CP932X/IOas-CP932X-0.10.tar.gz I/IN/INA/IOas/SJIS2004/IOas-SJIS2004-0.10.tar.gz I/IN/INA/Jacode/Jacode-2.13.4.31.tar.gz I/IN/INA/Jacode4e/Jacode4e-2.13.6.21.tar.gz I/IN/INA/Jacode4e/RoundTrip/Jacode4e-RoundTrip-2.13.81.14.tar.gz I/IN/INA/KOI8R/KOI8R-1.22.tar.gz I/IN/INA/KOI8U/KOI8U-1.22.tar.gz I/IN/INA/KPS9566/KPS9566-1.22.tar.gz I/IN/INA/KSC5601/KSC5601-1.22.tar.gz I/IN/INA/Latin1/Latin1-1.22.tar.gz I/IN/INA/Latin10/Latin10-1.22.tar.gz I/IN/INA/Latin2/Latin2-1.22.tar.gz I/IN/INA/Latin3/Latin3-1.22.tar.gz I/IN/INA/Latin4/Latin4-1.22.tar.gz I/IN/INA/Latin5/Latin5-1.22.tar.gz I/IN/INA/Latin6/Latin6-1.22.tar.gz I/IN/INA/Latin7/Latin7-1.22.tar.gz I/IN/INA/Latin8/Latin8-1.22.tar.gz I/IN/INA/Latin9/Latin9-1.22.tar.gz I/IN/INA/Modern/Open/Modern-Open-0.14.tar.gz I/IN/INA/Perl/Exactly/Perl-Exactly-0.07.tar.gz I/IN/INA/Perl7/Handy/Perl7-Handy-0.11.tar.gz I/IN/INA/SJIS2004/R2/SJIS2004-R2-0.07.tar.gz I/IN/INA/See/See-0.01.tar.gz I/IN/INA/Sjis/Sjis-1.22.tar.gz I/IN/INA/Stable/Module/Stable-Module-0.11.tar.gz I/IN/INA/Strict/Perl/Strict-Perl-2023.03.tar.gz I/IN/INA/UTF2/UTF2-1.22.tar.gz I/IN/INA/UTF8/R2/UTF8-R2-0.28.tar.gz I/IN/INA/Windows1250/Windows1250-1.23.tar.gz I/IN/INA/Windows1252/Windows1252-1.22.tar.gz I/IN/INA/Windows1254/Windows1254-1.23.tar.gz I/IN/INA/Windows1257/Windows1257-1.23.tar.gz I/IN/INA/Windows1258/Windows1258-1.22.tar.gz I/IN/INA/mb/Encode/mb-Encode-0.04.tar.gz I/IN/INA/mb/JSON/mb-JSON-0.03.tar.gz I/IN/INA/mb/mb-0.58.tar.gz I/IN/INFOFLEX/DBD_SQLFLEX_8.2.tar.gz I/IS/ISJOUNG/Proc-Branch-001/Proc-Branch-0.01.tar.gz I/IT/ITDEV/Tk-PlotDataset/Tk-PlotDataset-2.05.tar.gz I/IV/IVORRACH/Chorus/Chorus-Expert-1.03.tar.gz J/JA/JAE/perlipse/Perlipse-0.02.zip J/JA/JAMES/Class-DBI-Plugin-Calendar-0.18-withoutworldwriteables.tar.gz J/JA/JAMESP/payroll/business-payroll-1.3.tar.gz J/JA/JANESKIL/Tools/Daje-0.05.tar.gz J/JA/JANESKIL/Tools/Daje-Config-0.06.tar.gz J/JA/JANESKIL/Tools/Daje-Database-Migrator-0.01.tar.gz J/JA/JANESKIL/Tools/Daje-Database-Model-0.03.tar.gz J/JA/JANESKIL/Tools/Daje-Generate-Templates-1.04.tar.gz J/JA/JANESKIL/Tools/Daje-Plugin-Apploader-0.02.tar.gz J/JA/JANESKIL/Tools/Daje-Plugin-Login-0.02.tar.gz J/JA/JANESKIL/Tools/Daje-Plugin-Signup-0.02.tar.gz J/JA/JANESKIL/Tools/Daje-Plugin-Tools-0.03.tar.gz J/JA/JANESKIL/Tools/Daje-Plugin-workflow-0.04.tar.gz J/JA/JANESKIL/Tools/Daje-Tools-Datasections-0.11.tar.gz J/JA/JANESKIL/Tools/Daje-Tools-Filechanged-0.02.tar.gz J/JA/JANESKIL/Tools/Daje-Tools-JWT-0.01.tar.gz J/JA/JANESKIL/Tools/Daje-Workflow-0.02.tar.gz J/JA/JANESKIL/Tools/Daje-Workflow-0.10.tar.gz J/JA/JANESKIL/Tools/Daje-Workflow-Client-Activity-0.03.tar.gz J/JA/JANESKIL/Tools/Daje-Workflow-Common-Base-0.03.tar.gz J/JA/JANESKIL/Tools/Daje-Workflow-Config-0.02.tar.gz J/JA/JANESKIL/Tools/Daje-Workflow-Database-0.04.tar.gz J/JA/JANESKIL/Tools/Daje-Workflow-Database-0.19.tar.gz J/JA/JANESKIL/Tools/Daje-Workflow-Database-Model-0.16.tar.gz J/JA/JANESKIL/Tools/Daje-Workflow-FileChanged-Activity-0.03.tar.gz J/JA/JANESKIL/Tools/Daje-Workflow-GeneratePerl-Activity-0.12.tar.gz J/JA/JANESKIL/Tools/Daje-Workflow-GenerateSQL-Activity-0.03.tar.gz J/JA/JANESKIL/Tools/Daje-Workflow-GenerateSQL-Activity-1.07.tar.gz J/JA/JANESKIL/Tools/Daje-Workflow-GenerateSchema-Activity-0.16.tar.gz J/JA/JANESKIL/Tools/Daje-Workflow-Loader-0.04.tar.gz J/JA/JANESKIL/Tools/Daje-Workflow-Loader-0.13.tar.gz J/JA/JANESKIL/Tools/Daje-Workflow-Savefile-Activity-1.10.tar.gz J/JA/JANESKIL/Tools/Daje-Workflow-Templates-0.02.tar.gz J/JA/JASKA/IRC/Crypt/IRC-Crypt-0.01.tar.gz J/JC/JCB/WARC/WARC-v0.0.1.tar.gz J/JC/JCLINE/Robotics-023/Robotics-0.23.tar.bz2 J/JC/JCNORTON/LanguageLogo/Language-Logo-1.000.tar.gz J/JE/JEFFMOCK/GPIB_0_30.tgz J/JH/JHALLOCK/Gapp-0.26-withoutworldwriteables.tar.gz J/JH/JHALLOCK/Gtk2-Ex-FormFactory-TimeEntry-0.02-withoutworldwriteables.tar.gz J/JH/JHALLOCK/Storm-0.03-withoutworldwriteables.tar.gz J/JH/JHELBERG/lanman.1.0.10.0.zip J/JH/JHIVER/Unicode-Transliterate.0.3.tgz J/JK/JKING/thrift/Thrift-0.22.0.tar.gz J/JK/JKING/thrift/Thrift-0.9.3.tar.gz J/JM/JMAHAN/iodbc_ext_0_1.tar.gz J/JM/JMCADA/dbix_mypassword/DBIx-MyPassword-1.02.tar.gz J/JM/JMCADA/net_bittorrent/Net-BitTorrent-PeerPacket-1.2.tar.gz J/JM/JMCADA/weather/Weather-NWS-0.02.tar.gz J/JM/JMCADA/xml_rai_enclosure/XML-RAI-Enclosure-1.02.tar.gz J/JM/JMEHNLE/apache-auth-userdb/Apache-Auth-UserDB-v0.120.tar.gz J/JM/JMEHNLE/clamav-client/ClamAV-Client-0.11.tar.gz J/JM/JMEHNLE/courier-filter/Courier-Filter-v0.200.tar.gz J/JM/JMEHNLE/mail-spf-query/Mail-SPF-Query-1.999.1.tar.gz J/JM/JMEHNLE/mail-spf-test/Mail-SPF-Test-v1.001.tar.gz J/JM/JMEHNLE/net-address-ip-local/Net-Address-IP-Local-0.1.2.tar.gz J/JM/JMEHNLE/net-address-ipv4-local/Net-Address-IPv4-Local-0.12.tar.gz J/JM/JMEHNLE/www-restaurant-menu/WWW-Restaurant-Menu-0.11.tar.gz J/JM/JMS/EdgeExpressDB_0.953h.tar.gz J/JM/JMS/MQdb_0.954.tar.gz J/JO/JOEYATES/Database/Wrapper/Database-Wrapper-1.04.tar.gz J/JO/JONG/Bioinf_V2.0.tar.gz J/JO/JONIONS/PANT/PANT-0.17.tar.gz J/JO/JORDAN/Doxygen-Filter-Perl/doxygen-filter-perl-1.73-2.tar.gz J/JO/JORDAN/Term-RouterCLI/Term-RouterCLI-1.00.tar.gz J/JO/JORVIS/Log-Cabin/Log-Cabin-0.06.tar.gz J/JO/JORVIS/TIGR/TIGR-0.03.tar.gz J/JU/JULVR/Parse/Preprocessor/App-UnifdefPlus-0.005.005.tar.gz J/JW/JWHITE/SlideMap/SlideMap-1.4.tar.gz J/JW/JWU/File-Mirror/File-Mirror-0.01.tar.gz J/JW/JWU/File-Mirror/File-Mirror-0.10.tar.gz J/JW/JWU/RPC-Object/RPC-Object-0.04.tar.gz J/JW/JWU/RPC-Object/RPC-Object-0.23.tar.gz J/JW/JWU/RPC-Object/RPC-Object-0.31.tar.gz J/JW/JWU/Thread-Pool-Simple/Thread-Pool-Simple-0.25.tar.gz K/KA/KARB/dataware/Tie-PagedArray-0.0.3.tar.gz K/KA/KARJALA/Pavatar/Net-Pavatar-1.01.tar.gz K/KA/KARTHIKU/Number-Convert.1.0.2.tar.gz K/KE/KEVIN/AuthenRadius/Apache2-AuthenRadius-0.9.tar.gz K/KE/KEVIN/Net-Autoconfig/Net-Autoconfig-v1.13.2.tar.gz K/KI/KIAVASH/kateb/kateb-1.1.0.tar.gz K/KI/KIAVASH/mira/Mira-00.07.56.tar.gz K/KI/KIAVASH/text/Text-Markmoredown-0.000036.tar.gz K/KI/KIWIROY/tmp/Alien-KentSrc-0.4.tar.gz K/KI/KIWIROY/tmp/Alien-MUSCLE-0.01.tar.gz K/KI/KIWIROY/tmp/Devel-IPerl-Plugin-EnvironmentModules-0.03.tar.gz K/KI/KIWIROY/tmp/Devel-IPerl-Plugin-Perlbrew-0.03.tar.gz K/KI/KIWIROY/tmp/Mojo-File-Role-Extension-0.02.tar.gz K/KI/KIWIROY/tmp/Mojo-Path-Role-Relative-0.01.tar.gz K/KI/KIWIROY/tmp/Mojo-Transaction-HTTP-Role-Mechanize-0.06.tar.gz K/KI/KIWIROY/tmp/Test-Applify-0.02.tar.gz K/KI/KIWIROY/tmp/Test-Applify-0.06.tar.gz K/KM/KMCGRAIL/SpamAssassin/Mail-SpamAssassin-3.4.1.tar.gz K/KO/KOBOLDWIZ/Perl5/Bio-Epithelium-0.1.4.tar.gz K/KO/KOBOLDWIZ/Perl5/Cobol-Compiler-0.1.19.tar.gz K/KO/KOBOLDWIZ/Perl5/DuckCurses-0.1.3.tar.gz K/KO/KOBOLDWIZ/Perl5/DuckCurses-0.1.4.tar.gz K/KO/KOBOLDWIZ/Perl5/Evo-EA-0.1.5.tar.gz K/KO/KOBOLDWIZ/Perl5/Evo-GA-0.1.13.tar.gz K/KO/KOBOLDWIZ/Perl5/Evo-Immune-0.1.11.tar.gz K/KO/KOBOLDWIZ/Perl5/Evo-Inference-0.1.12.tar.gz K/KO/KOBOLDWIZ/Perl5/Evo-Maple-0.1.1.tar.gz K/KO/KOBOLDWIZ/Perl5/Evo-Parser-0.1.24.tar.gz K/KO/KOBOLDWIZ/Perl5/Evo-QUIP-0.1.1.tar.gz K/KO/KOBOLDWIZ/Perl5/GFX-Enhancer-0.1.22.tar.gz K/KO/KOBOLDWIZ/Perl5/Game-NURBS-0.1.13.tar.gz K/KO/KOBOLDWIZ/Perl5/Game-Ninja-0.1.6.tar.gz K/KO/KOBOLDWIZ/Perl5/Game-SDL-0.1.1.tar.gz K/KO/KOBOLDWIZ/Perl5/Lagrange-0.1.6.tar.gz K/KO/KOBOLDWIZ/Perl5/Lagrange-0.1.9.tar.gz K/KO/KOBOLDWIZ/Perl5/Perl-Oberon-0.1.3.tar.gz K/KO/KOBOLDWIZ/Perl5/RogueCurses-0.0.6.tar.gz K/KO/KOBOLDWIZ/Perl5/RogueQuest-0.1.5.tar.gz K/KO/KOBOLDWIZ/Perl5/Stats-Fermi-0.1.2.tar.gz K/KO/KOBOLDWIZ/Perl5/Stats-Fermi-0.1.7.tar.gz K/KO/KOBOLDWIZ/Perl5/Stats-Hawking-0.1.3.tar.gz K/KT/KTORP/Interval.0.01.tar.gz K/KT/KTORP/KTORP/Interval.0.03.tar.gz K/KU/KUNGFUFTR/Match-Any_0.03.tar.gz K/KW/KWMAK/Chart/Gnuplot/Chart-Gnuplot-0.23.tar.gz K/KW/KWMAK/Chart/Gnuplot/Pie/Chart-Gnuplot-Pie-0.04.tar.gz K/KW/KWMAK/PBS/Client/PBS-Client-0.11.tar.gz K/KY/KYLED/ObjectivePerl/ObjectivePerl-0.04.tar.gz L/LA/LABZERONE/tmojo/HTML-Tmojo-0.300.tar.gz L/LE/LEGART/Apache-Gallery-1.0.2-withoutworldwriteables.tar.gz L/LE/LESPAUL/ClearCase/Region/ClearCase-Region-1.01.tar.gz L/LG/LGODDARD/List-Member-0.044-withoutworldwriteables.tar.gz L/LI/LINC/Tie/Tie-ScalarFile-1.12.tar.gz L/LI/LINKDD/Lemonldap/NG/Lemonldap-NG-Cli-0.2.tgz L/LI/LINSALROB/SGE/ScheduleSGE-0.02.tgz L/LS/LSFISV/LSF_PERL_API/LSF_Batch_0.06.tar.gz L/LT/LTBOOTS/test/genomics.01.tar.gz M/MA/MALETIN/Teamspeak/Teamspeak-0.6.tar.gz M/MA/MALUKU/dotiac/Bundle-Dotiac-0.1.tar.gz M/MA/MALUKU/dotiac/Dotiac-0.8.tar.gz M/MA/MALUKU/dotiac/Dotiac-addon-case-insensitive-0.4.tar.gz M/MA/MALUKU/dotiac/Dotiac-addon-html_template-0.4.tar.gz M/MA/MALUKU/dotiac/Dotiac-addon-importloop-0.2.tar.gz M/MA/MALUKU/dotiac/Dotiac-addon-json-0.1.1.tar.gz M/MA/MALUKU/dotiac/Dotiac-addon-jsonify-0.1.tar.gz M/MA/MALUKU/dotiac/Dotiac-addon-markup-0.2.tar.gz M/MA/MALUKU/dotiac/Dotiac-addon-unparsed-0.2.tar.gz M/MA/MALUKU/games-freelancer-utf/FLUTF-1.001.tar.gz M/MA/MALUKU/sofu-config/sofu-config-0.5.tar.gz M/MA/MALUKU/sofu/Sofu-0.3.tar.gz M/MA/MALUKU/sofu/sofu-0.2.9.tar.gz M/MA/MALUKU/tie-multikeyinsertorderhash/tie-multikeyinsertorderhash-0.1.tar.gz M/MA/MALUKU/tie-proxy-changes/Tie-Proxy-Changes-0.2.tar.gz M/MA/MARCB/Net-SMTP-Pipelining/Net-SMTP-Pipelining-0.0.4.tar.gz M/MA/MARCB/POSIX-SchedYield/POSIX-SchedYield-0.0.2.tar.gz M/MA/MARCB/Unix-Lsof/Unix-Lsof-0.1.0.tar.gz M/MA/MARIAB/WWW-TMDB-API0.03.tar.gz M/MA/MARIAB/WWW-TMDB-API0.04.tar.gz M/MA/MARKLE/A2C/Apache2-Controller-v1.1.1.tar.gz M/MA/MARKPF/cisco/Cisco-ShowIPRoute-Parser-1.02.tar.gz M/MA/MARROTTE/LWP-UserAgent-ExponentialBackoff-004/LWP-UserAgent-ExponentialBackoff-0.04.tar.gz M/MA/MATHIAS/App-ArduinoBuilder/App-ArduinoBuilder-0.04.tar.gz M/MA/MATHIAS/App-Pfind/App-Pfind-1.05.tar.gz M/MA/MATHIAS/DataStructure/DataStructure-0.02.tar.gz M/MA/MATHIAS/Dist-Setup/App-ArduinoBuilder-0.08.tar.gz M/MA/MATHIAS/Dist-Setup/App-MediaPi-0.01.tar.gz M/MA/MATHIAS/Dist-Setup/App-PTP-1.13.tar.gz M/MA/MATHIAS/Dist-Setup/App-PTP-1.16.tar.gz M/MA/MATHIAS/Dist-Setup/Dist-Setup-0.16.tar.gz M/MA/MATHIAS/Dist-Setup/Future-IO-Impl-AnyEvent-0.02.tar.gz M/MA/MATHIAS/Dist-Setup/Google-Protobuf-Loader-0.01.tar.gz M/MA/MATHIAS/Dist-Setup/Log-Any-Simple-0.06.tar.gz M/MA/MATHIAS/Dist-Setup/Markdown-Perl-1.10.tar.gz M/MA/MATHIAS/Dist-Setup/Markdown-Perl-1.11.tar.gz M/MA/MATHIAS/Dist-Setup/Music-Harmonica-TabsCreator-1.05.tar.gz M/MA/MATHIAS/Dist-Setup/Parallel-TaskExecutor-0.05.tar.gz M/MA/MATHIAS/Dist-Setup/UserAgent-Any-0.05.tar.gz M/MA/MATHIAS/Dist-Setup/UserAgent-Any-JSON-0.05.tar.gz M/MA/MATHIAS/Eval-Safe/Eval-Safe-0.02.tar.gz M/MA/MATHIAS/Math-Numerical/Math-Numerical-0.05.tar.gz M/MA/MATHIAS/OAuth-Consumer/OAuth-Consumer-0.03.tar.gz M/MA/MATHIAS/SQL-Exec/SQL-Exec-0.09.tar.gz M/MA/MATHIAS/SQL-Exec/SQL-Exec-0.10.tar.gz M/MA/MATHIAS/String-Replace/String-Replace-0.02.tar.gz M/MA/MATHIAS/Test-Subs/Test-Subs-0.08.tar.gz M/MB/MBSTE/MultiCat_0.04.tar.gz M/MB/MBV/mailboxvalidator/MailboxValidator-SingleValidation-2.00.tar.gz M/ME/MELONMAN/PDF-EasyPDF_0_04.tgz M/ME/MEWSOFT/mewsoft/Config-IniMan-1.20.tar.gz M/ME/MEWSOFT/mewsoft/Date-HijriDate-1.01.tar.gz M/ME/MEWSOFT/mewsoft/File-BufferedInput-1.03.tar.gz M/ME/MEWSOFT/mewsoft/MP3-Merge-1.01.tar.gz M/ME/MEWSOFT/mewsoft/Religion-Islam-PrayTime-1.06.tar.gz M/ME/MEWSOFT/mewsoft/Religion-Islam-Quran-2.01.tar.gz M/MF/MFENTON/TimeConvert0.5.zip M/MI/MIKEM/Authen/Authen-ACE4-1.4.tar.gz M/MI/MIKEM/DigestMD4/Digest-MD4-1.9.tar.gz M/MI/MIKI/Apache2/Apache2-BalanceLogic-0.0.1.tar.gz M/MJ/MJEWELL/citeparser/Biblio-Citation-Parser-1.10.tar.gz M/MJ/MJEWELL/docparser/Biblio-Document-Parser-1.10.tar.gz M/MJ/MJFS/CGI/Base64-Serializer_0.1.tar.gz M/MM/MML/Test-HTTP/Test-HTTP-0.22.tar.gz M/MN/MNOONING/PlRPC/PlRPC-0.2020.tar.gz M/MO/MODULO/AppConfig-Exporter/AppConfig-Exporter-1.5.tar.gz M/MO/MODULO/Polyglot/MasonX-Resolver-Polyglot-0.95.tgz M/MO/MODULO/Regexp-Log-Helix/Regexp-Log-Helix-1.04.tar.gz M/MP/MPREWITT/listgroup/Net-NIS-Listgroup-1.0.0.tar.gz M/MP/MPREWITT/net-smtp-retryable/Net-SMTP-Retryable-0.0.2.tar.gz M/MT/MTADEL/Getopt-FileConfig/Getopt-FileConfig-1.0001.tar.gz M/MU/MUIR/modules/BSD-Ipfwgen-1.5.tar.gz M/MU/MUIR/modules/CGI-Out-2006.0215.tar.gz M/MU/MUIR/modules/Callback-1.07.tar.gz M/MU/MUIR/modules/Cisco-Reconfig-0.912.tar.gz M/MU/MUIR/modules/Config-Checker-0.42.tar.gz M/MU/MUIR/modules/Daemon-Generic-0.85.tar.gz M/MU/MUIR/modules/Devel-FileProfile-0.22.tar.gz M/MU/MUIR/modules/File-BasicFlock-98.1202.tar.gz M/MU/MUIR/modules/File-Flock-2014.01.tar.gz M/MU/MUIR/modules/File-OldSlurp-2004.0430.tar.gz M/MU/MUIR/modules/File-RdistByRsync-0.3.tar.gz M/MU/MUIR/modules/File-Slurp-Remote-0.44.tar.gz M/MU/MUIR/modules/Getopt-Tiny-1.02.tar.gz M/MU/MUIR/modules/HTML-Transmorgify-0.12.tar.gz M/MU/MUIR/modules/IO-Event-0.704.tar.gz M/MU/MUIR/modules/IO-Event-0.813.tar.gz M/MU/MUIR/modules/List-EvenMore-0.11.tar.gz M/MU/MUIR/modules/Log-Parallel-0.303.tar.gz M/MU/MUIR/modules/Mail-SendVarious-0.4.tar.gz M/MU/MUIR/modules/Net-SMTP-Receive-0.301.tar.gz M/MU/MUIR/modules/OOPS-0.1008.tar.gz M/MU/MUIR/modules/OOPS-0.2005.tar.gz M/MU/MUIR/modules/Object-Dependency-0.41.tar.gz M/MU/MUIR/modules/Object-Transaction-1.01.tar.gz M/MU/MUIR/modules/Plugins-0.41.tar.gz M/MU/MUIR/modules/Proc-Forkfunc-96.042201.tar.gz M/MU/MUIR/modules/Proc-JobQueue-0.903.tar.gz M/MU/MUIR/modules/Proc-Parallel-0.601.tar.gz M/MU/MUIR/modules/Qpsmtpd-Plugin-Quarantine-1.02.tar.gz M/MU/MUIR/modules/Sort-MergeSort-0.31.tar.gz M/MU/MUIR/modules/Stream-Aggregate-0.406.tar.gz M/MU/MUIR/modules/String-CRC-1.0.tar.gz M/MU/MUIR/modules/SyslgScnDamn-Blacklist-0.44.tar.gz M/MU/MUIR/modules/SyslogScan-Daemon-0.41.tar.gz M/MU/MUIR/modules/SyslogScan-Daemon-SpamDetector-0.56.tar.gz M/MU/MUIR/modules/Test-MultiFork-0.6.tar.gz M/MU/MUIR/modules/Time-ParseDate-2015.103.tar.gz M/MU/MUIR/modules/Twiki-Upload-0.3.tar.gz M/MU/MUNROER/kif/kif-1.02.tar.gz M/MU/MUNROER/kif/kif-2.01.tar.gz M/MU/MUNROER/stanzafile/StanzaFile-1.05.tar.gz M/MV/MVOELKER/FTDI/FTDI-D2XX-0.06.tar.gz N/NA/NANARDON/VFSsimple/VFSsimple-0.03.tar.gz N/NA/NANARDON/VFSsimple/VFSsimple-Drv-File-0.03.tar.gz N/NA/NANARDON/VFSsimple/VFSsimple-Drv-Ftp-0.03.tar.gz N/NA/NANARDON/VFSsimple/VFSsimple-Drv-Http-0.03.tar.gz N/NA/NANARDON/VFSsimple/VFSsimple-Drv-Iso-0.03.tar.gz N/NA/NANARDON/VFSsimple/VFSsimple-Drv-Rsync-0.03.tar.gz N/NA/NARAZAKA/Config-Column/Config-Column-1.00.tar.gz N/NA/NARAZAKA/SQL-Object-Interp/SQL-Object-Interp-0.04.tar.gz N/NC/NCICB/CaCORE/CaCORE-3.2.1_r1.tar.gz N/NE/NEVES/text-histogram/Text-Histogram-0.01.tar.gz N/NH/NHARALE/File-ReadSimple.1.1.tar.gz O/OL/OLEGS/Perl-Data-Enumerable-Lazy/Data-Enumerable-Lazy-0.032.tar.gz O/OL/OLIVIERT/LogValidator/W3C-LogValidator-0.1.tar.gz O/OL/OLIVIERT/LogValidator/W3C-LogValidator-1.5.tar.gz O/OL/OLIVIERT/WebService/WebService-Validator-Feed-W3C-0.8.tar.gz O/OL/OLIVIERT/XHTML/W3C-XHTML-HTMLCompatChecker-0.10.tar.gz P/PA/PARDUS/Term-ReadLine-Zoid/Term-ReadLine-Zoid-0.07.tar.gz P/PA/PAULDOOM/Apache-AppSamurai/Apache-AppSamurai-1.01.tar.gz P/PE/PEASWORTH/CayleyDickson/CayleyDickson-0.01.tgz P/PE/PEASWORTH/FinanceBitStampAPI/Finance-BitStamp-API-0.01.tar.gz P/PE/PEASWORTH/FinanceBitStampAPI/Finance-BitStamp-API-0.02.tar.gz P/PE/PEASWORTH/FinanceBitStampSocket/Finance-BitStamp-Socket-0.02.tar.gz P/PE/PEASWORTH/FinanceCaVirtexAPI/Finance-CaVirtex-API-0.03.tar.gz P/PE/PEASWORTH/FinanceLocalBitcoinsAPI/Finance-LocalBitcoins-API-0.02.tar.gz P/PE/PEASWORTH/Tangle/Tangle-0.03.tar.gz P/PE/PETERGAL/PGForth1.0.tar.gz P/PE/PETERGAL/PGForth1.3.tar.gz P/PE/PETERHI/AI-ExpertSystem-Simple.1.2.tgz P/PE/PETERSHAW/Told-Client/Told-Client-0.001.tar.gz P/PH/PHILOU/NCAR/NCAR-0.01.tar.gz P/PH/PHOENIXL/expr_eval_1_0.zip P/PH/PHOENIXL/extensible_report_generator_1.13.zip P/PJ/PJFL/class-usul/Class-Usul-0.84.1.tar.gz P/PJ/PJFL/data-cloudweights/Data-CloudWeights-0.15.1.tar.gz P/PJ/PJFL/data-validation/Data-Validation-0.28.1.tar.gz P/PJ/PJFL/devel-cover-report-ownserver/Devel-Cover-Report-OwnServer-0.4.1.tar.gz P/PJ/PJFL/dist-zilla-plugin-abstractfrompod/Dist-Zilla-Plugin-AbstractFromPOD-0.3.1.tar.gz P/PJ/PJFL/dist-zilla-plugin-manifestinroot/Dist-Zilla-Plugin-ManifestInRoot-0.16.1.tar.gz P/PJ/PJFL/dist-zilla-plugin-test-reportmetadata/Dist-Zilla-Plugin-Test-ReportMetadata-0.5.1.tar.gz P/PJ/PJFL/file-dataclass/File-DataClass-0.73.1.tar.gz P/PJ/PJFL/file-gettext/File-Gettext-0.33.1.tar.gz P/PJ/PJFL/ipc-srlock/IPC-SRLock-0.31.1.tar.gz P/PJ/PJFL/module-provision/Module-Provision-0.42.1.tar.gz P/PJ/PJFL/unexpected/Unexpected-1.0.1.tar.gz P/PJ/PJFL/web-components-role-email/Web-Components-Role-Email-0.3.1.tar.gz P/PJ/PJFL/web-components-role-tt/Web-Components-Role-TT-0.8.1.tar.gz P/PJ/PJFL/web-components/Web-Components-0.13.1.tar.gz P/PJ/PJFL/web-composablerequest/Web-ComposableRequest-0.22.1.tar.gz P/PJ/PJFL/yakuake-sessions/Yakuake-Sessions-0.15.1.tar.gz P/PK/PKALUSKI/LRpt_0.16.tar.gz P/PM/PMAREK/DigestManberHash/Digest-ManberHash-0.7.tar.gz P/PM/PMAREK/Games/Hack/Patch/Games-Hack-Patch-i686-0.52.tar.gz P/PM/PMAREK/Games/Hack/Patch/Games-Hack-Patch-x86_64-0.13.tar.gz P/PM/PMAREK/Win32/MSI/Win32-MSI-DB-1.06.tar.gz P/PO/PORTON/DBI/DBI-Transaction-0.101.tar.gz P/PT/PTANDLER/PBib/Bundle-PBib-2.08.01.tar.gz P/PT/PTANDLER/PBib/Bundle-PBib-2.08.tar.gz P/PT/PTHOMSEN/BoxBackup/BBConfig-0.03.tar.gz R/RA/RAYNERLUC/Finance-Bank-Halifax-Sharedealing/Finance-Bank-Halifax-Sharedealing-0.03.tar.gz R/RC/RCALEY/speech_pm_1.0.tgz R/RC/RCHIBOIS/Pots/Pots-0.01.tar.gz R/RE/REENDERSF/App-NetdiscoX-Web-Plugin-GraphLinkSwitch_0.1.tar.gz R/RE/RETOH/CMS/CMS-MediaWiki-0.8014.tar.gz R/RE/RETOH/Geo/Geo-Query-0.04.tar.gz R/RE/RETOH/Geo/Geo-Query-LatLong-0.8011.tar.gz R/RE/RETOH/Template/Website-1.14.01.tar.gz R/RH/RHASE/Tivoli_0.01.tar.gz R/RI/RINGERC/RT/Extension/PushoverNotify/RT-Extension-PushoverNotify-0.01.tar.gz R/RI/RINGERC/RT/Extension/SMSNotify/RT-Extension-SMSNotify-1.04.tar.gz R/RI/RINGERC/RT/Extension/ShiftPlanning/RT-Extension-ShiftPlanning-0.01.tar.gz R/RI/RINGERC/SMS/Send/RedOxygen/SMS-Send-RedOxygen-1.06.tar.gz R/RI/RINGERC/WebService/ShiftPlanning/WebService-ShiftPlanning-0.01.tar.gz R/RJ/RJB/SMcli/SANtricity-SMcli-0.02.tar.gz R/RK/RKACKLEY/Tk-Pgplot/Tk-Pgplot-0.40.tar.gz R/RM/RMCFARLA/AI-LibNeural/AI-LibNeural-0.02.tar.gz R/RM/RMCFARLA/Gtk2-Perl-Ex/Gtk2-Ex-Simple-List-0.50.tar.gz R/RM/RMCFARLA/Gtk2-Perl-Ex/Gtk2-Ex-Simple-Menu-0.7.tar.gz R/RM/RMCFARLA/Gtk2-Perl-Ex/Gtk2-Ex-Simple-Tree-0.50.tar.gz R/RM/RMCFARLA/Gtk2-Perl/Gnome2-Print-0.94.tar.gz R/RM/RMCFARLA/Gtk2-Perl/Gtk2-1.023.tar.gz R/RO/ROBERTMAY/Win32-GUI-HyperLink/Win32-GUI-HyperLink-0.14.tar.gz R/RO/ROBERTMAY/Win32-GUI-OPenGLFrame/Win32-GUI-OpenGLFrame-0.02.tar.gz R/RO/ROBERTMAY/Win32-GUI-SplashScreen/Win32-GUI-SplashScreen-0.04.tar.gz R/RO/ROBERTMAY/Win32-GUI/Win32-GUI-1.06.tar.gz R/RO/ROBERTMAY/Win32-VisualStyles/Win32-VisualStyles-0.02.tar.gz R/RO/ROHITBASU/OTRS/OTRS-Kernel-Module-TicketAutoAssignment-1.0.1.zip R/RO/ROHITBASU/OTRS/OTRS-Kernel-System-MultilevelEscalation-1.0.1.zip R/RO/ROOT/Biblio/Biblio-Thesaurus-SQLite-0.10.tar.gz R/RS/RSMITH/vuser/VUser-Email-0.3.2.tar.gz R/RS/RSMITH/vuser/VUser-Email-Postfix-SQL-0.1.1.tar.gz R/RS/RSMITH/vuser/VUser-ExtLib-SQL-0.1.1.tar.gz R/RS/RSMITH/vuser/VUser-Firewall-0.1.0.tar.gz R/RS/RSMITH/vuser/VUser-Google-Api-1.0.1.tar.gz R/RS/RSMITH/vuser/VUser-Google-Apps-0.2.0.tar.gz R/RS/RSMITH/vuser/VUser-Install-0.1.0.tar.gz R/RS/RSMITH/vuser/VUser-Radius-0.1.1.tar.gz R/RS/RSMITH/vuser/VUser-Radius-Acct-0.1.0.tar.gz R/RS/RSMITH/vuser/VUser-Radius-Acct-SQL-0.1.0.tar.gz R/RS/RSMITH/vuser/VUser-Radius-SQL-0.1.1.tar.gz R/RS/RSMITH/vuser/VUser-SpamAssassin-0.3.0.tar.gz R/RS/RSMITH/vuser/VUser-SpamAssassin-SQL-0.1.0.tar.gz R/RS/RSMITH/vuser/VUser-SquirrelMail-0.1.1.tar.gz R/RS/RSMITH/vuser/vsoapd-0.4.1.tar.gz R/RS/RSMITH/vuser/vuser-0.5.0.tar.gz R/RS/RST/FrameMaker-MifTree/FrameMaker-MifTree-0.075.tar.gz R/RW/RWP/oo_sub/oo_sub-v1.1.0.tar.gz R/RY/RYOCHIN/Acme-Void/Acme-Void-0.02.tar.gz R/RY/RYOCHIN/Log-Dispatch-MacGrowl/Log-Dispatch-MacGrowl-0.04.tar.gz S/SA/SANDEEPV/GuiBuilder_v0_3.zip S/SA/SAXJAZMAN/RT/RT-CIFMinimal-0.01.tar.gz S/SA/SAXJAZMAN/RT/RT-IODEF-0.08.tar.gz S/SA/SAXJAZMAN/Snort/Snort-Rule-1.07.tar.gz S/SA/SAXJAZMAN/cif/RINO-Client-0.03.tar.gz S/SA/SAXJAZMAN/database/Database-Schema-Config-.02.tar.gz S/SA/SAXJAZMAN/iodef/Iodef-Pb-Simple-0.01.tar.gz S/SA/SAXJAZMAN/iodef/Iodef-Pb-Simple-0.21.tar.gz S/SA/SAXJAZMAN/iodef/XML-IODEF-0.11.tar.gz S/SA/SAXJAZMAN/iodef/XML-IODEF-PhraudReport-0.01.tar.gz S/SA/SAXJAZMAN/iodef/XML-IODEF-Simple-0.02.tar.gz S/SA/SAXJAZMAN/lwp/LWPx-ParanoidAgent-1.12.tar.gz S/SA/SAXJAZMAN/malware/Malware-1.02.tar.gz S/SA/SAXJAZMAN/malware/XML-Malware-0.01.tar.gz S/SA/SAXJAZMAN/net/Net-Abuse-Utils-Spamhaus-0.09.tar.gz S/SA/SAXJAZMAN/net/Net-Connection-Simple-1.02.tar.gz S/SA/SAXJAZMAN/net/Net-DNS-Match-0.05.tar.gz S/SA/SAXJAZMAN/protobuf/Google-ProtocolBuffers-0.12.tar.gz S/SC/SCHROEER/ChainMake/ChainMake-0.9.0.tar.gz S/SC/SCHWIGON/clarity/Clarity-XOG-Merge-1.001.tar.gz S/SC/SCHWIGON/class-methodmaker/Class-MethodMaker-2.25.tar.gz S/SC/SCHWIGON/idempotent/App-Prove-Plugin-Idempotent-0.01.tar.gz S/SC/SCHWIGON/linux-personality/Linux-Personality-0.01.tar.gz S/SC/SCHWIGON/lockfile-simple/LockFile-Simple-0.208.tar.gz S/SC/SCHWIGON/object-tiny-rw/Object-Tiny-RW-1.07.tar.gz S/SC/SCHWIGON/pdf-fdf-simple/PDF-FDF-Simple-0.21.tar.gz S/SC/SCHWIGON/perl-formance/Benchmark-Perl-Formance-0.53.tar.gz S/SC/SCHWIGON/perl-formance/Benchmark-Perl-Formance-0.55.tar.gz S/SC/SCHWIGON/perl-formance/Benchmark-Perl-Formance-Cargo-0.07.tar.gz S/SC/SCHWIGON/test/Test-Mock-Test-0.01.tar.gz S/SC/SCHWIGON/twikiclient/WWW-TWikiClient-0.11.tar.gz S/SC/SCILLEY/POE/Component/IRC/Plugin/IRCDHelp-0.02.tar.gz S/SE/SENGER/NET-IPFilterSimple_V1.1.tar.gz S/SE/SENGER/NET-IPFilter_V1.1.2.tar.gz S/SF/SFLEX/SF_form_secure/SF_form_secure_v4.0.tar.gz S/SH/SHIMI/Win32-Watir-0.06-withoutworldwriteables.tar.gz S/SH/SHIRIRU/Data/Data-NestedSet-1.03.tar.gz S/SH/SHOGE/video-info/Video-Info-Quicktime_PL-0.07.tar.gz S/SH/SHY/Wifi/Wifi-0.01a.tar.gz S/SH/SHY/acpi/Acpi-0.1.tar.gz S/SI/SIMATIKA/subclustv1_0.tar.gz S/SK/SKATTOOR/Device-Modem-GSM/Device-Modem-GSM-0.3.tar.gz S/SK/SKNPP/basis/basis-0.05003.tar.gz S/SK/SKUPSY/OpenSSL/Crypt-OpenSSL-PBKDF2-0.04.tar.gz S/SK/SKUPSY/VisionDB/VisionDB-Read-0.04.tar.gz S/SL/SLENK/MCPrimers/Bio-MCPrimers-2.5.tar.gz S/SM/SMANROSS/Win32-Exchange_v0.046a.tar.gz S/SM/SMCNABB/Drupal-Module-Starter/Drupal-Module-Starter-0.06.tar.gz S/SM/SMCNABB/POE-Framework-MIDI/POE-Framework-MIDI-0.09.tar.gz S/SM/SMCNABB/POE-Framework-MIDI/POE-Framework-MIDI-0.1.tar.gz S/SN/SNEVINE/WWW-Bleep-092/WWW-Bleep-0.92.tgz S/SO/SOMIAN/experimental/unregistered/Filesys-CygwinPaths-0.04.tar.gz S/SO/SOMMAR/Win32-SqlServer-2.015-withoutworldwriteables.tar.gz S/SO/SORBS/C/C-Mlock-1.12.tar.gz S/SO/SORBS/Mail/Pegasus/Mail-Pegasus-1.06.tgz S/SO/SORBS/WebService/WebService-VirusTotal-1.0.3165.tar.gz S/SP/SPARSONS/tools/Net-Dev-MIBLoadOrder-1.1.0.tar.gz S/SP/SPARSONS/tools/Net-Dev-Tools-Syslog-1.0.0.tar.gz S/SU/SUMUS/DWH_File.0.03.tar.gz S/SU/SUNILS/PDF/Xtract/008/PDF-Xtract-0.08.tar.gz S/SW/SWORDSMAN/TSM_0.60.tar.gz T/TB/TBONECA/BSD/Jail/BSD-Jail-0.01.tar.gz T/TD/TDWINTER/Hash/KeyMorpher/Hash-KeyMorpher-0.09.tar.gz T/TD/TDWINTER/Net/Das/Net-DAS-0.19.tar.gz T/TE/TEDK/Win32/SimpleProcess/SimpleProcess_1.0.zip T/TE/TEEJAY/Data/Iterator/Data-Iterator-EasyObj-0.01.tar.gz T/TE/TEEJAY/GraphViz/GraphViz-DBI-0.02.tar.gz T/TE/TEEJAY/Imager/Chart/Imager-Chart-Radial-0.1.tar.gz T/TE/TELS/audio/Audio-Audiere-0.05.tar.gz T/TE/TELS/convert/Convert-Morse-0.06.tar.gz T/TE/TELS/convert/Convert-Wiki-0.05.tar.gz T/TE/TELS/devel/Devel-Graph-0.12.tar.gz T/TE/TELS/devel/Devel-Size-Report-0.13.tar.gz T/TE/TELS/games/Games-3D-0.10.tar.gz T/TE/TELS/games/Games-Console-0.04.tar.gz T/TE/TELS/games/Games-Irrlicht-0.04.tar.gz T/TE/TELS/games/Games-OpenGL-Font-2D-0.07.tar.gz T/TE/TELS/graph/Graph-Convert-0.09.tar.gz T/TE/TELS/graph/Graph-Dependency-0.02.tar.gz T/TE/TELS/graph/Graph-Easy-Manual-0.41.tar.gz T/TE/TELS/graph/Graph-Flowchart-0.11.tar.gz T/TE/TELS/graph/Graph-Regexp-0.05.tar.gz T/TE/TELS/graph/Graph-Usage-0.12.tar.gz T/TE/TELS/math/Math-Fractal-Mandelbrot-0.04.tar.gz T/TE/TELS/sdl/SDL-App-FPS-0.21.tar.gz T/TE/TELS/wiki/Mediawiki-POD-0.06.tar.gz T/TH/THALJEF/criticism/criticism-1.02.tar.gz T/TI/TIMB/perl5.004_04.tar.gz T/TO/TOMO/src/Net-IP-Match-Bin-0.14.tar.gz T/TO/TOMO/src/Net-POP3S-0.12.tar.gz T/TO/TOMO/src/Net-SMTPS-0.10.tar.gz T/TP/TPABA/Config-ReadAndCheck/Config-ReadAndCheck-0.04.tar.gz T/TP/TPABA/File-DirList/File-DirList-0.05.tar.gz T/TP/TPABA/Getopt-Std-WithCheck/Getopt-Std-WithCheck-0.04.tar.gz T/TP/TPABA/Net-Socket-NonBlock/Net-Socket-NonBlock-0.15.tar.gz T/TP/TPABA/Nginx/Nginx-ReadBody-0.07.tar.gz T/TP/TPABA/Term-Screen/Term-Screen-Uni-0.04.tar.gz T/TP/TPABA/Term-Screen/Term-Screen-Win32-0.03.tar.gz T/TP/TPABA/UniLog/UniLog-0.14.tar.gz T/TR/TRIZOR/dists/Test-AskAnExpert-0.03.tar.gz T/TR/TRIZOR/dists/Test-Smart-0.02.tar.gz T/TS/TSCHULZ/TSCHULZ/Lingua-DE-Tagger-0.16.tar.gz T/TT/TTG/Google-GeoCoder-Smart/Google-GeoCoder-Smart-1.18.tar.gz T/TU/TURNERMM/HTML-WikiConverter-DokuWikiFCK-0.32_Feb-27-2013.tgz T/TU/TUSHAR/Log-SelfHistory_0.1.tar.gz T/TU/TUSHAR/Text-CSV-UniqueColumns_0.4.tar.gz T/TW/TWITTEK/konstrukt/Konstrukt-0.5-beta13.tar.gz T/TW/TWITTEK/konstrukt/Konstrukt-0.5-beta6.tar.gz T/TW/TWYLIE/modules/BLASTaid-v0.0.3.tar.gz T/TW/TWYLIE/modules/DateStamp-v1.0.4.tar.gz T/TW/TWYLIE/modules/EOL-v0.0.2.tar.gz T/TW/TWYLIE/modules/FASTAParse-0.0.3.tar.gz U/UH/UHANDA/contribs/CMD-Colors-0.1.tar.gz U/UN/UNICOLET/Win32-TaskScheduler2.0.3.zip V/VA/VAYDE/Lazy/CGI-Lazy-1.10.tar.gz V/VA/VAYDE/Lazy/CGI-Lazy-ModPerl-0.04.tar.gz V/VG/VGIRISH/Net/Net-Ifstat-0.01.tar.gz V/VG/VGIRISH/Net/Net-Netcat-0.05.tar.gz V/VG/VGIRISH/Progress/Progress-PV-0.02.tar.gz V/VR/VRAG/Log-Any-Adapter-Multiplexor-003/Log-Any-Adapter-Multiplexor-0.03.tar.gz V/VT/VTFRVL/Plack-Middleware-DNSBL/Plack-Middleware-DNSBL-0.0304.tar.gz W/WA/WAYNEDAV/DBZ_File_1.1.tar.gz W/WD/WDS/Dreamer/VM-Dreamer-0.851.tar.gz W/WI/WIHAA/Graphics/Graphics-EPS-3.00.tar.gz W/WI/WITHERING/HOI-Comprehensions-0045/HOI-Comprehensions-0.045.tar.gz W/WI/WITHERING/HOIMatch-0072/HOI-Match-0.072.tar.gz W/WI/WITHERING/Wraith-012/Wraith-0.12.tar.gz W/WI/WITTEN/Net_TCLink.pm-3.4.tar.gz W/WN/WNEESSEN/OpenVAS-OMP_0.04.tar.gz W/WO/WOLFTOWER/Algorithm/TrunkClassifier_v101/Algorithm-TrunkClassifier-v1.0.1.tar.gz W/WO/WORR/Formspring/WWW-Formspring-0.03.tar.gz W/WY/WYCHUNG/wychung/pamlyn-0.01.tar.gz X/XI/XIONG/developer-tools/Acme-Teddy-1.002003.tar.gz X/XI/XIONG/developer-tools/Cheat-Meta-v0.0.5.tar.gz X/XI/XIONG/developer-tools/Class-Lite-v0.1.0.tar.gz X/XI/XIONG/developer-tools/Devel-Comments-v1.1.4.tar.gz X/XI/XIONG/developer-tools/Error-Base-v1.0.2.tar.gz X/XI/XIONG/developer-tools/Test-Ranger-v0.0.4.tar.gz X/XX/XXGHOSTXX/Facebook/FB-Statify-1.04.zip X/XX/XXGHOSTXX/Tinder/Tinder-API-0.03.zip Y/YU/YUMPY/Namegame/Lingua-EN-Namegame-0.05.tar.gz Z/ZA/ZACS/Mail/Mail-Queue-DB-0.03.tar.gz Z/ZA/ZAPAD/Log-Sentry/Log-Sentry-0.01.tar.gz Z/ZE/ZEUS/App-Regather/App-Regather-0.85.00.tar.gz Z/ZE/ZEUS/App-gqmt/App-gqmt-1.02.tar.gz Z/ZM/ZMIJ/Array/Array-Utils-0.5.tar.gz Z/ZM/ZMIJ/Cache/Memcached/Cache-Memcached-Semaphore-0.3.tar.gz URI-PackageURL-2.24/t/sync-purl-legacy-test-suite-data.sh0000644000175000017500000000065515135504042022035 0ustar peppepeppe#!/bin/sh # sync-purl-test-suite-data - Sync the PackageURL "legacy" test suite data # # (C) 2024-2025, Giuseppe Di Terlizzi cd $(dirname $0) ; CWD=$(pwd) echo "Remove old PURL test suite file" rm test-suite-data.json echo "Download legacy PURL test suite file" wget https://raw.githubusercontent.com/package-url/purl-spec/e56202efb16b943add2ae27b81a00efd25add47a/test-suite-data.json exit 0 URI-PackageURL-2.24/t/40-cli.t0000644000175000017500000000527615135504042014451 0ustar peppepeppe#!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.23'; 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 PURL 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.23', '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'); }; #<<< my @valid = ( 'pkg:cpan/GDT/URI-PackageURL@2.23', 'pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie', 'pkg:golang/google.golang.org/genproto@abcdedf#googleapis/api/annotations', 'pkg:docker/customer/dockerimage@sha256:244fd47e07d1004f0aed9c?repository_url=gcr.io', 'pkg:generic/ns/n@m#?@version?qualifier=#v@lue#subp@th?', 'pkg:/generic/test?checksum=sha1:ad9503c3e994a4f,sha256:41bf9088b3a1e6c1ef1d', 'pkg:pypi/django?vers=vers:pypi%2F%3E%3D1.11.0%7C%21%3D1.11.1%7C%3C2.0.0', ); my @invalid = ( 'EnterpriseLibrary.Common@6.0.1304', 'pkg:EnterpriseLibrary.Common@6.0.1304', 'pkg:n&g?inx/nginx@0.8.9', 'pkg:maven/@1.3.4', 'pkg:npm/myartifact@1.0.0?in%20production=true', 'pkg:hackage', 'pkg%3Amaven/org.apache.commons/io', ); #>>> foreach (@valid) { my $res = URI::PackageURL::App->run($_, '--validate', '--quiet'); ok(!$res, "Valid PURL: purl-tool --validate -q $_"); } foreach (@invalid) { my $res = URI::PackageURL::App->run($_, '--validate', '--quiet'); ok($res, "Invalid PURL: purl-tool --validate -q $_"); } { my @args = ('--type', 'cpan', '--namespace', 'GDT', '--name', 'URI-PackageURL', '--version', '2.23'); my $res = cmd('URI::PackageURL::App', @args); is $res, $t1, 'Build PURL string: purl-tool ' . join(' ', @args); } done_testing(); URI-PackageURL-2.24/t/10-encode.t0000644000175000017500000000432115135504042015122 0ustar peppepeppe#!perl -T use strict; use warnings; use Test::More; use URI::PackageURL qw(encode_purl); #<<< my @TESTS = ( { purl => 'pkg:cpan/DROLSKY/DateTime@1.55', type => 'cpan', namespace => 'DROLSKY', name => 'DateTime', version => '1.55' }, { purl => 'pkg:cpan/GDT/URI-PackageURL', type => 'cpan', namespace => 'GDT', name => 'URI-PackageURL' }, { purl => 'pkg:cpan/OALDERS/libwww-perl@6.76', type => 'cpan', namespace => 'OALDERS', name => 'libwww-perl', version => '6.76' }, { purl => 'pkg:generic/100%25/100%25@100%25?repository_url=https:%2F%2Fexample.com%2F100%2525%2F#100%25', type => 'generic', namespace => '100%', name => '100%', version => '100%', qualifiers => {'repository_url' => 'https://example.com/100%25/'}, subpath => '100%', }, { purl => 'pkg:brew/openssl%401.1@1.1.1w', type => 'brew', name => 'openssl@1.1', version => '1.1.1w' }, ); #>>> foreach my $test (@TESTS) { my $expected_purl = $test->{purl}; subtest "$expected_purl" => sub { my $got_purl_1 = encode_purl( type => $test->{type}, namespace => $test->{namespace}, name => $test->{name}, version => $test->{version}, qualifiers => $test->{qualifiers}, subpath => $test->{subpath}, ); my $got_purl_2 = URI::PackageURL->new( type => $test->{type}, namespace => $test->{namespace}, name => $test->{name}, version => $test->{version}, qualifiers => $test->{qualifiers}, subpath => $test->{subpath}, ); my $got_purl_3 = URI::PackageURL->from_string($expected_purl)->to_string; is($got_purl_1, $expected_purl, "encode_purl --> $got_purl_1"); is($got_purl_2, $expected_purl, "URI::PackageURL --> $got_purl_2"); is($got_purl_3, $expected_purl, "decode+encode --> $got_purl_3"); }; } done_testing(); URI-PackageURL-2.24/t/purl/0000755000175000017500000000000015135504367014256 5ustar peppepeppeURI-PackageURL-2.24/t/purl/types/0000755000175000017500000000000015135504367015422 5ustar peppepeppeURI-PackageURL-2.24/t/purl/types/hex-test.json0000644000175000017500000001202515135504042020044 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "Parse test for PURL type: hex", "test_group": "base", "test_type": "parse", "input": "pkg:hex/jason@1.1.2", "expected_output": { "type": "hex", "namespace": null, "name": "jason", "version": "1.1.2", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: hex", "test_group": "base", "test_type": "roundtrip", "input": "pkg:hex/jason@1.1.2", "expected_output": "pkg:hex/jason@1.1.2", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: hex", "test_group": "base", "test_type": "build", "input": { "type": "hex", "namespace": null, "name": "jason", "version": "1.1.2", "qualifiers": null, "subpath": null }, "expected_output": "pkg:hex/jason@1.1.2", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: hex", "test_group": "base", "test_type": "parse", "input": "pkg:hex/acme/foo@2.3.", "expected_output": { "type": "hex", "namespace": "acme", "name": "foo", "version": "2.3.", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: hex", "test_group": "base", "test_type": "roundtrip", "input": "pkg:hex/acme/foo@2.3.", "expected_output": "pkg:hex/acme/foo@2.3.", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: hex", "test_group": "base", "test_type": "build", "input": { "type": "hex", "namespace": "acme", "name": "foo", "version": "2.3.", "qualifiers": null, "subpath": null }, "expected_output": "pkg:hex/acme/foo@2.3.", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: hex", "test_group": "base", "test_type": "parse", "input": "pkg:hex/phoenix_html@2.13.3#priv/static/phoenix_html.js", "expected_output": { "type": "hex", "namespace": null, "name": "phoenix_html", "version": "2.13.3", "qualifiers": null, "subpath": "priv/static/phoenix_html.js" }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: hex", "test_group": "base", "test_type": "roundtrip", "input": "pkg:hex/phoenix_html@2.13.3#priv/static/phoenix_html.js", "expected_output": "pkg:hex/phoenix_html@2.13.3#priv/static/phoenix_html.js", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: hex", "test_group": "base", "test_type": "build", "input": { "type": "hex", "namespace": null, "name": "phoenix_html", "version": "2.13.3", "qualifiers": null, "subpath": "priv/static/phoenix_html.js" }, "expected_output": "pkg:hex/phoenix_html@2.13.3#priv/static/phoenix_html.js", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: hex", "test_group": "base", "test_type": "parse", "input": "pkg:hex/bar@1.2.3?repository_url=https://myrepo.example.com", "expected_output": { "type": "hex", "namespace": null, "name": "bar", "version": "1.2.3", "qualifiers": { "repository_url": "https://myrepo.example.com" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: hex", "test_group": "base", "test_type": "roundtrip", "input": "pkg:hex/bar@1.2.3?repository_url=https://myrepo.example.com", "expected_output": "pkg:hex/bar@1.2.3?repository_url=https:%2F%2Fmyrepo.example.com", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: hex", "test_group": "base", "test_type": "build", "input": { "type": "hex", "namespace": null, "name": "bar", "version": "1.2.3", "qualifiers": { "repository_url": "https://myrepo.example.com" }, "subpath": null }, "expected_output": "pkg:hex/bar@1.2.3?repository_url=https:%2F%2Fmyrepo.example.com", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/alpm-test.json0000644000175000017500000000776315135504042020226 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "Parse test for PURL type: alpm", "test_group": "base", "test_type": "parse", "input": "pkg:alpm/arch/pacman@6.0.1-1?arch=x86_64", "expected_output": { "type": "alpm", "namespace": "arch", "name": "pacman", "version": "6.0.1-1", "qualifiers": { "arch": "x86_64" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: alpm", "test_group": "base", "test_type": "roundtrip", "input": "pkg:alpm/arch/pacman@6.0.1-1?arch=x86_64", "expected_output": "pkg:alpm/arch/pacman@6.0.1-1?arch=x86_64", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: alpm", "test_group": "base", "test_type": "build", "input": { "type": "alpm", "namespace": "arch", "name": "pacman", "version": "6.0.1-1", "qualifiers": { "arch": "x86_64" }, "subpath": null }, "expected_output": "pkg:alpm/arch/pacman@6.0.1-1?arch=x86_64", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: alpm", "test_group": "base", "test_type": "parse", "input": "pkg:alpm/arch/python-pip@21.0-1?arch=any", "expected_output": { "type": "alpm", "namespace": "arch", "name": "python-pip", "version": "21.0-1", "qualifiers": { "arch": "any" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: alpm", "test_group": "base", "test_type": "roundtrip", "input": "pkg:alpm/arch/python-pip@21.0-1?arch=any", "expected_output": "pkg:alpm/arch/python-pip@21.0-1?arch=any", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: alpm", "test_group": "base", "test_type": "build", "input": { "type": "alpm", "namespace": "arch", "name": "python-pip", "version": "21.0-1", "qualifiers": { "arch": "any" }, "subpath": null }, "expected_output": "pkg:alpm/arch/python-pip@21.0-1?arch=any", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: alpm", "test_group": "base", "test_type": "parse", "input": "pkg:alpm/arch/containers-common@1:0.47.4-4?arch=x86_64", "expected_output": { "type": "alpm", "namespace": "arch", "name": "containers-common", "version": "1:0.47.4-4", "qualifiers": { "arch": "x86_64" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: alpm", "test_group": "base", "test_type": "roundtrip", "input": "pkg:alpm/arch/containers-common@1:0.47.4-4?arch=x86_64", "expected_output": "pkg:alpm/arch/containers-common@1:0.47.4-4?arch=x86_64", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: alpm", "test_group": "base", "test_type": "build", "input": { "type": "alpm", "namespace": "arch", "name": "containers-common", "version": "1:0.47.4-4", "qualifiers": { "arch": "x86_64" }, "subpath": null }, "expected_output": "pkg:alpm/arch/containers-common@1:0.47.4-4?arch=x86_64", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/huggingface-test.json0000644000175000017500000002332415135504042021533 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "minimal Hugging Face model. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:huggingface/distilbert-base-uncased@043235d6088ecd3dd5fb5ca3592b6913fd516027", "expected_output": "pkg:huggingface/distilbert-base-uncased@043235d6088ecd3dd5fb5ca3592b6913fd516027", "expected_failure": false, "expected_failure_reason": null }, { "description": "minimal Hugging Face model", "test_group": "base", "test_type": "parse", "input": "pkg:huggingface/distilbert-base-uncased@043235d6088ecd3dd5fb5ca3592b6913fd516027", "expected_output": { "type": "huggingface", "namespace": null, "name": "distilbert-base-uncased", "version": "043235d6088ecd3dd5fb5ca3592b6913fd516027", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "minimal Hugging Face model. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:huggingface/distilbert-base-uncased@043235d6088ecd3dd5fb5ca3592b6913fd516027", "expected_output": "pkg:huggingface/distilbert-base-uncased@043235d6088ecd3dd5fb5ca3592b6913fd516027", "expected_failure": false, "expected_failure_reason": null }, { "description": "minimal Hugging Face model", "test_group": "base", "test_type": "build", "input": { "type": "huggingface", "namespace": null, "name": "distilbert-base-uncased", "version": "043235d6088ecd3dd5fb5ca3592b6913fd516027", "qualifiers": null, "subpath": null }, "expected_output": "pkg:huggingface/distilbert-base-uncased@043235d6088ecd3dd5fb5ca3592b6913fd516027", "expected_failure": false, "expected_failure_reason": null }, { "description": "Hugging Face model with staging endpoint. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:huggingface/microsoft/deberta-v3-base@559062ad13d311b87b2c455e67dcd5f1c8f65111?repository_url=https://hub-ci.huggingface.co", "expected_output": "pkg:huggingface/microsoft/deberta-v3-base@559062ad13d311b87b2c455e67dcd5f1c8f65111?repository_url=https:%2F%2Fhub-ci.huggingface.co", "expected_failure": false, "expected_failure_reason": null }, { "description": "Hugging Face model with staging endpoint", "test_group": "base", "test_type": "parse", "input": "pkg:huggingface/microsoft/deberta-v3-base@559062ad13d311b87b2c455e67dcd5f1c8f65111?repository_url=https://hub-ci.huggingface.co", "expected_output": { "type": "huggingface", "namespace": "microsoft", "name": "deberta-v3-base", "version": "559062ad13d311b87b2c455e67dcd5f1c8f65111", "qualifiers": { "repository_url": "https://hub-ci.huggingface.co" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Hugging Face model with staging endpoint. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:huggingface/microsoft/deberta-v3-base@559062ad13d311b87b2c455e67dcd5f1c8f65111?repository_url=https://hub-ci.huggingface.co", "expected_output": "pkg:huggingface/microsoft/deberta-v3-base@559062ad13d311b87b2c455e67dcd5f1c8f65111?repository_url=https:%2F%2Fhub-ci.huggingface.co", "expected_failure": false, "expected_failure_reason": null }, { "description": "Hugging Face model with staging endpoint", "test_group": "base", "test_type": "build", "input": { "type": "huggingface", "namespace": "microsoft", "name": "deberta-v3-base", "version": "559062ad13d311b87b2c455e67dcd5f1c8f65111", "qualifiers": { "repository_url": "https://hub-ci.huggingface.co" }, "subpath": null }, "expected_output": "pkg:huggingface/microsoft/deberta-v3-base@559062ad13d311b87b2c455e67dcd5f1c8f65111?repository_url=https:%2F%2Fhub-ci.huggingface.co", "expected_failure": false, "expected_failure_reason": null }, { "description": "Hugging Face model with various cases. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:huggingface/EleutherAI/gpt-neo-1.3B@797174552AE47F449AB70B684CABCB6603E5E85E", "expected_output": "pkg:huggingface/EleutherAI/gpt-neo-1.3B@797174552ae47f449ab70b684cabcb6603e5e85e", "expected_failure": false, "expected_failure_reason": null }, { "description": "Hugging Face model with various cases", "test_group": "base", "test_type": "parse", "input": "pkg:huggingface/EleutherAI/gpt-neo-1.3B@797174552AE47F449AB70B684CABCB6603E5E85E", "expected_output": { "type": "huggingface", "namespace": "EleutherAI", "name": "gpt-neo-1.3B", "version": "797174552ae47f449ab70b684cabcb6603e5e85e", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Hugging Face model with various cases. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:huggingface/EleutherAI/gpt-neo-1.3B@797174552ae47f449ab70b684cabcb6603e5e85e", "expected_output": "pkg:huggingface/EleutherAI/gpt-neo-1.3B@797174552ae47f449ab70b684cabcb6603e5e85e", "expected_failure": false, "expected_failure_reason": null }, { "description": "Hugging Face model with various cases", "test_group": "base", "test_type": "build", "input": { "type": "huggingface", "namespace": "EleutherAI", "name": "gpt-neo-1.3B", "version": "797174552ae47f449ab70b684cabcb6603e5e85e", "qualifiers": null, "subpath": null }, "expected_output": "pkg:huggingface/EleutherAI/gpt-neo-1.3B@797174552ae47f449ab70b684cabcb6603e5e85e", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: huggingface", "test_group": "base", "test_type": "parse", "input": "pkg:huggingface/distilbert-base-uncased@043235d6088ecd3dd5fb5ca3592b6913fd516027", "expected_output": { "type": "huggingface", "namespace": null, "name": "distilbert-base-uncased", "version": "043235d6088ecd3dd5fb5ca3592b6913fd516027", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: huggingface", "test_group": "base", "test_type": "roundtrip", "input": "pkg:huggingface/distilbert-base-uncased@043235d6088ecd3dd5fb5ca3592b6913fd516027", "expected_output": "pkg:huggingface/distilbert-base-uncased@043235d6088ecd3dd5fb5ca3592b6913fd516027", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: huggingface", "test_group": "base", "test_type": "build", "input": { "type": "huggingface", "namespace": null, "name": "distilbert-base-uncased", "version": "043235d6088ecd3dd5fb5ca3592b6913fd516027", "qualifiers": null, "subpath": null }, "expected_output": "pkg:huggingface/distilbert-base-uncased@043235d6088ecd3dd5fb5ca3592b6913fd516027", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: huggingface", "test_group": "base", "test_type": "parse", "input": "pkg:huggingface/microsoft/deberta-v3-base@559062ad13d311b87b2c455e67dcd5f1c8f65111?repository_url=https://hub-ci.huggingface.co", "expected_output": { "type": "huggingface", "namespace": "microsoft", "name": "deberta-v3-base", "version": "559062ad13d311b87b2c455e67dcd5f1c8f65111", "qualifiers": { "repository_url": "https://hub-ci.huggingface.co" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: huggingface", "test_group": "base", "test_type": "roundtrip", "input": "pkg:huggingface/microsoft/deberta-v3-base@559062ad13d311b87b2c455e67dcd5f1c8f65111?repository_url=https://hub-ci.huggingface.co", "expected_output": "pkg:huggingface/microsoft/deberta-v3-base@559062ad13d311b87b2c455e67dcd5f1c8f65111?repository_url=https:%2F%2Fhub-ci.huggingface.co", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: huggingface", "test_group": "base", "test_type": "build", "input": { "type": "huggingface", "namespace": "microsoft", "name": "deberta-v3-base", "version": "559062ad13d311b87b2c455e67dcd5f1c8f65111", "qualifiers": { "repository_url": "https://hub-ci.huggingface.co" }, "subpath": null }, "expected_output": "pkg:huggingface/microsoft/deberta-v3-base@559062ad13d311b87b2c455e67dcd5f1c8f65111?repository_url=https:%2F%2Fhub-ci.huggingface.co", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/cocoapods-test.json0000644000175000017500000001177315135504042021243 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "Parse test for PURL type: cocoapods", "test_group": "base", "test_type": "parse", "input": "pkg:cocoapods/AFNetworking@4.0.1", "expected_output": { "type": "cocoapods", "namespace": null, "name": "AFNetworking", "version": "4.0.1", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: cocoapods", "test_group": "base", "test_type": "roundtrip", "input": "pkg:cocoapods/AFNetworking@4.0.1", "expected_output": "pkg:cocoapods/AFNetworking@4.0.1", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: cocoapods", "test_group": "base", "test_type": "build", "input": { "type": "cocoapods", "namespace": null, "name": "AFNetworking", "version": "4.0.1", "qualifiers": null, "subpath": null }, "expected_output": "pkg:cocoapods/AFNetworking@4.0.1", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: cocoapods", "test_group": "base", "test_type": "parse", "input": "pkg:cocoapods/MapsIndoors@3.24.0", "expected_output": { "type": "cocoapods", "namespace": null, "name": "MapsIndoors", "version": "3.24.0", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: cocoapods", "test_group": "base", "test_type": "roundtrip", "input": "pkg:cocoapods/MapsIndoors@3.24.0", "expected_output": "pkg:cocoapods/MapsIndoors@3.24.0", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: cocoapods", "test_group": "base", "test_type": "build", "input": { "type": "cocoapods", "namespace": null, "name": "MapsIndoors", "version": "3.24.0", "qualifiers": null, "subpath": null }, "expected_output": "pkg:cocoapods/MapsIndoors@3.24.0", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: cocoapods", "test_group": "base", "test_type": "parse", "input": "pkg:cocoapods/ShareKit@2.0#Twitter", "expected_output": { "type": "cocoapods", "namespace": null, "name": "ShareKit", "version": "2.0", "qualifiers": null, "subpath": "Twitter" }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: cocoapods", "test_group": "base", "test_type": "roundtrip", "input": "pkg:cocoapods/ShareKit@2.0#Twitter", "expected_output": "pkg:cocoapods/ShareKit@2.0#Twitter", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: cocoapods", "test_group": "base", "test_type": "build", "input": { "type": "cocoapods", "namespace": null, "name": "ShareKit", "version": "2.0", "qualifiers": null, "subpath": "Twitter" }, "expected_output": "pkg:cocoapods/ShareKit@2.0#Twitter", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: cocoapods", "test_group": "base", "test_type": "parse", "input": "pkg:cocoapods/GoogleUtilities@7.5.2#NSData+zlib", "expected_output": { "type": "cocoapods", "namespace": null, "name": "GoogleUtilities", "version": "7.5.2", "qualifiers": null, "subpath": "NSData+zlib" }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: cocoapods", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:cocoapods/GoogleUtilities@7.5.2#NSData+zlib", "expected_output": "pkg:cocoapods/GoogleUtilities@7.5.2#NSData%2Bzlib", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: cocoapods", "test_group": "base", "test_type": "build", "input": { "type": "cocoapods", "namespace": null, "name": "GoogleUtilities", "version": "7.5.2", "qualifiers": null, "subpath": "NSData+zlib" }, "expected_output": "pkg:cocoapods/GoogleUtilities@7.5.2#NSData%2Bzlib", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/swid-test.json0000644000175000017500000001117715135504042020235 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "Parse test for PURL type: swid", "test_group": "advanced", "test_type": "parse", "input": "pkg:swid/Acme/example.com/Enterprise+Server@1.0.0?tag_id=75b8c285-fa7b-485b-b199-4745e3004d0d", "expected_output": { "type": "swid", "namespace": "Acme/example.com", "name": "Enterprise+Server", "version": "1.0.0", "qualifiers": { "tag_id": "75b8c285-fa7b-485b-b199-4745e3004d0d" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: swid", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:swid/Acme/example.com/Enterprise+Server@1.0.0?tag_id=75b8c285-fa7b-485b-b199-4745e3004d0d", "expected_output": "pkg:swid/Acme/example.com/Enterprise%2BServer@1.0.0?tag_id=75b8c285-fa7b-485b-b199-4745e3004d0d", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: swid", "test_group": "advanced", "test_type": "build", "input": { "type": "swid", "namespace": "Acme/example.com", "name": "Enterprise+Server", "version": "1.0.0", "qualifiers": { "tag_id": "75b8c285-fa7b-485b-b199-4745e3004d0d" }, "subpath": null }, "expected_output": "pkg:swid/Acme/example.com/Enterprise%2BServer@1.0.0?tag_id=75b8c285-fa7b-485b-b199-4745e3004d0d", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: swid", "test_group": "base", "test_type": "parse", "input": "pkg:swid/Fedora@29?tag_id=org.fedoraproject.Fedora-29", "expected_output": { "type": "swid", "namespace": null, "name": "Fedora", "version": "29", "qualifiers": { "tag_id": "org.fedoraproject.Fedora-29" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: swid", "test_group": "base", "test_type": "roundtrip", "input": "pkg:swid/Fedora@29?tag_id=org.fedoraproject.Fedora-29", "expected_output": "pkg:swid/Fedora@29?tag_id=org.fedoraproject.Fedora-29", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: swid", "test_group": "base", "test_type": "build", "input": { "type": "swid", "namespace": null, "name": "Fedora", "version": "29", "qualifiers": { "tag_id": "org.fedoraproject.Fedora-29" }, "subpath": null }, "expected_output": "pkg:swid/Fedora@29?tag_id=org.fedoraproject.Fedora-29", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: swid", "test_group": "advanced", "test_type": "parse", "input": "pkg:swid/Adobe+Systems+Incorporated/Adobe+InDesign@CC?tag_id=CreativeCloud-CS6-Win-GM-MUL", "expected_output": { "type": "swid", "namespace": "Adobe+Systems+Incorporated", "name": "Adobe+InDesign", "version": "CC", "qualifiers": { "tag_id": "CreativeCloud-CS6-Win-GM-MUL" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: swid", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:swid/Adobe+Systems+Incorporated/Adobe+InDesign@CC?tag_id=CreativeCloud-CS6-Win-GM-MUL", "expected_output": "pkg:swid/Adobe%2BSystems%2BIncorporated/Adobe%2BInDesign@CC?tag_id=CreativeCloud-CS6-Win-GM-MUL", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: swid", "test_group": "advanced", "test_type": "build", "input": { "type": "swid", "namespace": "Adobe+Systems+Incorporated", "name": "Adobe+InDesign", "version": "CC", "qualifiers": { "tag_id": "CreativeCloud-CS6-Win-GM-MUL" }, "subpath": null }, "expected_output": "pkg:swid/Adobe%2BSystems%2BIncorporated/Adobe%2BInDesign@CC?tag_id=CreativeCloud-CS6-Win-GM-MUL", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/rpm-test.json0000644000175000017500000001157015135504042020062 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "rpm often use qualifiers. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:Rpm/fedora/curl@7.50.3-1.fc25?Arch=i386&Distro=fedora-25", "expected_output": "pkg:rpm/fedora/curl@7.50.3-1.fc25?arch=i386&distro=fedora-25", "expected_failure": false, "expected_failure_reason": null }, { "description": "rpm often use qualifiers", "test_group": "base", "test_type": "parse", "input": "pkg:Rpm/fedora/curl@7.50.3-1.fc25?Arch=i386&Distro=fedora-25", "expected_output": { "type": "rpm", "namespace": "fedora", "name": "curl", "version": "7.50.3-1.fc25", "qualifiers": { "arch": "i386", "distro": "fedora-25" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "rpm often use qualifiers. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:rpm/fedora/curl@7.50.3-1.fc25?arch=i386&distro=fedora-25", "expected_output": "pkg:rpm/fedora/curl@7.50.3-1.fc25?arch=i386&distro=fedora-25", "expected_failure": false, "expected_failure_reason": null }, { "description": "rpm often use qualifiers", "test_group": "base", "test_type": "build", "input": { "type": "rpm", "namespace": "fedora", "name": "curl", "version": "7.50.3-1.fc25", "qualifiers": { "arch": "i386", "distro": "fedora-25" }, "subpath": null }, "expected_output": "pkg:rpm/fedora/curl@7.50.3-1.fc25?arch=i386&distro=fedora-25", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: rpm", "test_group": "base", "test_type": "parse", "input": "pkg:rpm/fedora/curl@7.50.3-1.fc25?arch=i386&distro=fedora-25", "expected_output": { "type": "rpm", "namespace": "fedora", "name": "curl", "version": "7.50.3-1.fc25", "qualifiers": { "arch": "i386", "distro": "fedora-25" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: rpm", "test_group": "base", "test_type": "roundtrip", "input": "pkg:rpm/fedora/curl@7.50.3-1.fc25?arch=i386&distro=fedora-25", "expected_output": "pkg:rpm/fedora/curl@7.50.3-1.fc25?arch=i386&distro=fedora-25", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: rpm", "test_group": "base", "test_type": "build", "input": { "type": "rpm", "namespace": "fedora", "name": "curl", "version": "7.50.3-1.fc25", "qualifiers": { "arch": "i386", "distro": "fedora-25" }, "subpath": null }, "expected_output": "pkg:rpm/fedora/curl@7.50.3-1.fc25?arch=i386&distro=fedora-25", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: rpm", "test_group": "base", "test_type": "parse", "input": "pkg:rpm/fedora/centerim@4.22.10-1.el6?arch=i686&epoch=1&distro=fedora-25", "expected_output": { "type": "rpm", "namespace": "fedora", "name": "centerim", "version": "4.22.10-1.el6", "qualifiers": { "arch": "i686", "distro": "fedora-25", "epoch": "1" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: rpm", "test_group": "base", "test_type": "roundtrip", "input": "pkg:rpm/fedora/centerim@4.22.10-1.el6?arch=i686&epoch=1&distro=fedora-25", "expected_output": "pkg:rpm/fedora/centerim@4.22.10-1.el6?arch=i686&distro=fedora-25&epoch=1", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: rpm", "test_group": "base", "test_type": "build", "input": { "type": "rpm", "namespace": "fedora", "name": "centerim", "version": "4.22.10-1.el6", "qualifiers": { "arch": "i686", "distro": "fedora-25", "epoch": "1" }, "subpath": null }, "expected_output": "pkg:rpm/fedora/centerim@4.22.10-1.el6?arch=i686&distro=fedora-25&epoch=1", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/bitbucket-test.json0000644000175000017500000000652115135504042021240 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "bitbucket namespace and name should be lowercased. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:bitbucket/birKenfeld/pyGments-main@244fd47e07d1014f0aed9c", "expected_output": "pkg:bitbucket/birkenfeld/pygments-main@244fd47e07d1014f0aed9c", "expected_failure": false, "expected_failure_reason": null }, { "description": "bitbucket namespace and name should be lowercased", "test_group": "base", "test_type": "parse", "input": "pkg:bitbucket/birKenfeld/pyGments-main@244fd47e07d1014f0aed9c", "expected_output": { "type": "bitbucket", "namespace": "birkenfeld", "name": "pygments-main", "version": "244fd47e07d1014f0aed9c", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "bitbucket namespace and name should be lowercased. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:bitbucket/birkenfeld/pygments-main@244fd47e07d1014f0aed9c", "expected_output": "pkg:bitbucket/birkenfeld/pygments-main@244fd47e07d1014f0aed9c", "expected_failure": false, "expected_failure_reason": null }, { "description": "bitbucket namespace and name should be lowercased", "test_group": "base", "test_type": "build", "input": { "type": "bitbucket", "namespace": "birkenfeld", "name": "pygments-main", "version": "244fd47e07d1014f0aed9c", "qualifiers": null, "subpath": null }, "expected_output": "pkg:bitbucket/birkenfeld/pygments-main@244fd47e07d1014f0aed9c", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: bitbucket", "test_group": "base", "test_type": "parse", "input": "pkg:bitbucket/birkenfeld/pygments-main@244fd47e07d1014f0aed9c", "expected_output": { "type": "bitbucket", "namespace": "birkenfeld", "name": "pygments-main", "version": "244fd47e07d1014f0aed9c", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: bitbucket", "test_group": "base", "test_type": "roundtrip", "input": "pkg:bitbucket/birkenfeld/pygments-main@244fd47e07d1014f0aed9c", "expected_output": "pkg:bitbucket/birkenfeld/pygments-main@244fd47e07d1014f0aed9c", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: bitbucket", "test_group": "base", "test_type": "build", "input": { "type": "bitbucket", "namespace": "birkenfeld", "name": "pygments-main", "version": "244fd47e07d1014f0aed9c", "qualifiers": null, "subpath": null }, "expected_output": "pkg:bitbucket/birkenfeld/pygments-main@244fd47e07d1014f0aed9c", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/golang-test.json0000644000175000017500000001776315135504042020545 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "valid go purl without version and with subpath. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:GOLANG/google.golang.org/genproto#/googleapis/api/annotations/", "expected_output": "pkg:golang/google.golang.org/genproto#googleapis/api/annotations", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid go purl without version and with subpath", "test_group": "base", "test_type": "parse", "input": "pkg:GOLANG/google.golang.org/genproto#/googleapis/api/annotations/", "expected_output": { "type": "golang", "namespace": "google.golang.org", "name": "genproto", "version": null, "qualifiers": null, "subpath": "googleapis/api/annotations" }, "expected_failure": false, "expected_failure_reason": null }, { "description": "valid go purl without version and with subpath. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:golang/google.golang.org/genproto#googleapis/api/annotations", "expected_output": "pkg:golang/google.golang.org/genproto#googleapis/api/annotations", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid go purl without version and with subpath", "test_group": "base", "test_type": "build", "input": { "type": "golang", "namespace": "google.golang.org", "name": "genproto", "version": null, "qualifiers": null, "subpath": "googleapis/api/annotations" }, "expected_output": "pkg:golang/google.golang.org/genproto#googleapis/api/annotations", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid go purl with version and subpath. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:GOLANG/google.golang.org/genproto@abcdedf#/googleapis/api/annotations/", "expected_output": "pkg:golang/google.golang.org/genproto@abcdedf#googleapis/api/annotations", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid go purl with version and subpath", "test_group": "base", "test_type": "parse", "input": "pkg:GOLANG/google.golang.org/genproto@abcdedf#/googleapis/api/annotations/", "expected_output": { "type": "golang", "namespace": "google.golang.org", "name": "genproto", "version": "abcdedf", "qualifiers": null, "subpath": "googleapis/api/annotations" }, "expected_failure": false, "expected_failure_reason": null }, { "description": "valid go purl with version and subpath. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:golang/google.golang.org/genproto@abcdedf#googleapis/api/annotations", "expected_output": "pkg:golang/google.golang.org/genproto@abcdedf#googleapis/api/annotations", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid go purl with version and subpath", "test_group": "base", "test_type": "build", "input": { "type": "golang", "namespace": "google.golang.org", "name": "genproto", "version": "abcdedf", "qualifiers": null, "subpath": "googleapis/api/annotations" }, "expected_output": "pkg:golang/google.golang.org/genproto@abcdedf#googleapis/api/annotations", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: golang", "test_group": "base", "test_type": "parse", "input": "pkg:golang/github.com/gorilla/context@234fd47e07d1004f0aed9c", "expected_output": { "type": "golang", "namespace": "github.com/gorilla", "name": "context", "version": "234fd47e07d1004f0aed9c", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: golang", "test_group": "base", "test_type": "roundtrip", "input": "pkg:golang/github.com/gorilla/context@234fd47e07d1004f0aed9c", "expected_output": "pkg:golang/github.com/gorilla/context@234fd47e07d1004f0aed9c", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: golang", "test_group": "base", "test_type": "build", "input": { "type": "golang", "namespace": "github.com/gorilla", "name": "context", "version": "234fd47e07d1004f0aed9c", "qualifiers": null, "subpath": null }, "expected_output": "pkg:golang/github.com/gorilla/context@234fd47e07d1004f0aed9c", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: golang", "test_group": "base", "test_type": "parse", "input": "pkg:golang/google.golang.org/genproto#googleapis/api/annotations", "expected_output": { "type": "golang", "namespace": "google.golang.org", "name": "genproto", "version": null, "qualifiers": null, "subpath": "googleapis/api/annotations" }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: golang", "test_group": "base", "test_type": "roundtrip", "input": "pkg:golang/google.golang.org/genproto#googleapis/api/annotations", "expected_output": "pkg:golang/google.golang.org/genproto#googleapis/api/annotations", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: golang", "test_group": "base", "test_type": "build", "input": { "type": "golang", "namespace": "google.golang.org", "name": "genproto", "version": null, "qualifiers": null, "subpath": "googleapis/api/annotations" }, "expected_output": "pkg:golang/google.golang.org/genproto#googleapis/api/annotations", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: golang", "test_group": "base", "test_type": "parse", "input": "pkg:golang/github.com/gorilla/context@234fd47e07d1004f0aed9c#api", "expected_output": { "type": "golang", "namespace": "github.com/gorilla", "name": "context", "version": "234fd47e07d1004f0aed9c", "qualifiers": null, "subpath": "api" }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: golang", "test_group": "base", "test_type": "roundtrip", "input": "pkg:golang/github.com/gorilla/context@234fd47e07d1004f0aed9c#api", "expected_output": "pkg:golang/github.com/gorilla/context@234fd47e07d1004f0aed9c#api", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: golang", "test_group": "base", "test_type": "build", "input": { "type": "golang", "namespace": "github.com/gorilla", "name": "context", "version": "234fd47e07d1004f0aed9c", "qualifiers": null, "subpath": "api" }, "expected_output": "pkg:golang/github.com/gorilla/context@234fd47e07d1004f0aed9c#api", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/bitnami-test.json0000644000175000017500000001276115135504042020712 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "Parse test for PURL type: bitnami", "test_group": "base", "test_type": "parse", "input": "pkg:bitnami/wordpress?distro=debian-12", "expected_output": { "type": "bitnami", "namespace": null, "name": "wordpress", "version": null, "qualifiers": { "distro": "debian-12" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: bitnami", "test_group": "base", "test_type": "roundtrip", "input": "pkg:bitnami/wordpress?distro=debian-12", "expected_output": "pkg:bitnami/wordpress?distro=debian-12", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: bitnami", "test_group": "base", "test_type": "build", "input": { "type": "bitnami", "namespace": null, "name": "wordpress", "version": null, "qualifiers": { "distro": "debian-12" }, "subpath": null }, "expected_output": "pkg:bitnami/wordpress?distro=debian-12", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: bitnami", "test_group": "base", "test_type": "parse", "input": "pkg:bitnami/wordpress@6.2.0?distro=debian-12", "expected_output": { "type": "bitnami", "namespace": null, "name": "wordpress", "version": "6.2.0", "qualifiers": { "distro": "debian-12" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: bitnami", "test_group": "base", "test_type": "roundtrip", "input": "pkg:bitnami/wordpress@6.2.0?distro=debian-12", "expected_output": "pkg:bitnami/wordpress@6.2.0?distro=debian-12", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: bitnami", "test_group": "base", "test_type": "build", "input": { "type": "bitnami", "namespace": null, "name": "wordpress", "version": "6.2.0", "qualifiers": { "distro": "debian-12" }, "subpath": null }, "expected_output": "pkg:bitnami/wordpress@6.2.0?distro=debian-12", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: bitnami", "test_group": "base", "test_type": "parse", "input": "pkg:bitnami/wordpress@6.2.0?arch=arm64&distro=debian-12", "expected_output": { "type": "bitnami", "namespace": null, "name": "wordpress", "version": "6.2.0", "qualifiers": { "arch": "arm64", "distro": "debian-12" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: bitnami", "test_group": "base", "test_type": "roundtrip", "input": "pkg:bitnami/wordpress@6.2.0?arch=arm64&distro=debian-12", "expected_output": "pkg:bitnami/wordpress@6.2.0?arch=arm64&distro=debian-12", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: bitnami", "test_group": "base", "test_type": "build", "input": { "type": "bitnami", "namespace": null, "name": "wordpress", "version": "6.2.0", "qualifiers": { "arch": "arm64", "distro": "debian-12" }, "subpath": null }, "expected_output": "pkg:bitnami/wordpress@6.2.0?arch=arm64&distro=debian-12", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: bitnami", "test_group": "base", "test_type": "parse", "input": "pkg:bitnami/wordpress@6.2.0?arch=arm64&distro=photon-4", "expected_output": { "type": "bitnami", "namespace": null, "name": "wordpress", "version": "6.2.0", "qualifiers": { "arch": "arm64", "distro": "photon-4" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: bitnami", "test_group": "base", "test_type": "roundtrip", "input": "pkg:bitnami/wordpress@6.2.0?arch=arm64&distro=photon-4", "expected_output": "pkg:bitnami/wordpress@6.2.0?arch=arm64&distro=photon-4", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: bitnami", "test_group": "base", "test_type": "build", "input": { "type": "bitnami", "namespace": null, "name": "wordpress", "version": "6.2.0", "qualifiers": { "arch": "arm64", "distro": "photon-4" }, "subpath": null }, "expected_output": "pkg:bitnami/wordpress@6.2.0?arch=arm64&distro=photon-4", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/hackage-test.json0000644000175000017500000001440015135504042020642 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "valid hackage purl. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:hackage/AC-HalfInteger@1.2.1", "expected_output": "pkg:hackage/AC-HalfInteger@1.2.1", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid hackage purl", "test_group": "base", "test_type": "parse", "input": "pkg:hackage/AC-HalfInteger@1.2.1", "expected_output": { "type": "hackage", "namespace": null, "name": "AC-HalfInteger", "version": "1.2.1", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "valid hackage purl. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:hackage/AC-HalfInteger@1.2.1", "expected_output": "pkg:hackage/AC-HalfInteger@1.2.1", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid hackage purl", "test_group": "base", "test_type": "build", "input": { "type": "hackage", "namespace": null, "name": "AC-HalfInteger", "version": "1.2.1", "qualifiers": null, "subpath": null }, "expected_output": "pkg:hackage/AC-HalfInteger@1.2.1", "expected_failure": false, "expected_failure_reason": null }, { "description": "name and version are always required", "test_group": "base", "test_type": "parse", "input": "pkg:hackage", "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to parse a PURL from invalid purl input" }, { "description": "name and version are always required", "test_group": "base", "test_type": "parse", "input": "pkg:hackage", "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to parse a PURL from invalid canonical purl input" }, { "description": "name and version are always required", "test_group": "base", "test_type": "build", "input": { "type": "hackage", "namespace": null, "name": null, "version": null, "qualifiers": null, "subpath": null }, "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to build a PURL from invalid input components" }, { "description": "Parse test for PURL type: hackage", "test_group": "base", "test_type": "parse", "input": "pkg:hackage/a50@0.5", "expected_output": { "type": "hackage", "namespace": null, "name": "a50", "version": "0.5", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: hackage", "test_group": "base", "test_type": "roundtrip", "input": "pkg:hackage/a50@0.5", "expected_output": "pkg:hackage/a50@0.5", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: hackage", "test_group": "base", "test_type": "build", "input": { "type": "hackage", "namespace": null, "name": "a50", "version": "0.5", "qualifiers": null, "subpath": null }, "expected_output": "pkg:hackage/a50@0.5", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: hackage", "test_group": "base", "test_type": "parse", "input": "pkg:hackage/AC-HalfInteger@1.2.1", "expected_output": { "type": "hackage", "namespace": null, "name": "AC-HalfInteger", "version": "1.2.1", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: hackage", "test_group": "base", "test_type": "roundtrip", "input": "pkg:hackage/AC-HalfInteger@1.2.1", "expected_output": "pkg:hackage/AC-HalfInteger@1.2.1", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: hackage", "test_group": "base", "test_type": "build", "input": { "type": "hackage", "namespace": null, "name": "AC-HalfInteger", "version": "1.2.1", "qualifiers": null, "subpath": null }, "expected_output": "pkg:hackage/AC-HalfInteger@1.2.1", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: hackage", "test_group": "base", "test_type": "parse", "input": "pkg:hackage/3d-graphics-examples@0.0.0.2", "expected_output": { "type": "hackage", "namespace": null, "name": "3d-graphics-examples", "version": "0.0.0.2", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: hackage", "test_group": "base", "test_type": "roundtrip", "input": "pkg:hackage/3d-graphics-examples@0.0.0.2", "expected_output": "pkg:hackage/3d-graphics-examples@0.0.0.2", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: hackage", "test_group": "base", "test_type": "build", "input": { "type": "hackage", "namespace": null, "name": "3d-graphics-examples", "version": "0.0.0.2", "qualifiers": null, "subpath": null }, "expected_output": "pkg:hackage/3d-graphics-examples@0.0.0.2", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/oci-test.json0000644000175000017500000001437115135504042020040 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "Parse test for PURL type: oci", "test_group": "advanced", "test_type": "parse", "input": "pkg:oci/debian@sha256%3A244fd47e07d10?repository_url=docker.io/library/debian&arch=amd64&tag=latest", "expected_output": { "type": "oci", "namespace": null, "name": "debian", "version": "sha256:244fd47e07d10", "qualifiers": { "arch": "amd64", "repository_url": "docker.io/library/debian", "tag": "latest" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: oci", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:oci/debian@sha256%3A244fd47e07d10?repository_url=docker.io/library/debian&arch=amd64&tag=latest", "expected_output": "pkg:oci/debian@sha256:244fd47e07d10?arch=amd64&repository_url=docker.io%2Flibrary%2Fdebian&tag=latest", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: oci", "test_group": "base", "test_type": "build", "input": { "type": "oci", "namespace": null, "name": "debian", "version": "sha256:244fd47e07d10", "qualifiers": { "arch": "amd64", "repository_url": "docker.io/library/debian", "tag": "latest" }, "subpath": null }, "expected_output": "pkg:oci/debian@sha256:244fd47e07d10?arch=amd64&repository_url=docker.io%2Flibrary%2Fdebian&tag=latest", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: oci", "test_group": "advanced", "test_type": "parse", "input": "pkg:oci/debian@sha256%3A244fd47e07d10?repository_url=ghcr.io/debian&tag=bullseye", "expected_output": { "type": "oci", "namespace": null, "name": "debian", "version": "sha256:244fd47e07d10", "qualifiers": { "repository_url": "ghcr.io/debian", "tag": "bullseye" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: oci", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:oci/debian@sha256%3A244fd47e07d10?repository_url=ghcr.io/debian&tag=bullseye", "expected_output": "pkg:oci/debian@sha256:244fd47e07d10?repository_url=ghcr.io%2Fdebian&tag=bullseye", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: oci", "test_group": "advanced", "test_type": "build", "input": { "type": "oci", "namespace": null, "name": "debian", "version": "sha256:244fd47e07d10", "qualifiers": { "repository_url": "ghcr.io/debian", "tag": "bullseye" }, "subpath": null }, "expected_output": "pkg:oci/debian@sha256:244fd47e07d10?repository_url=ghcr.io%2Fdebian&tag=bullseye", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: oci", "test_group": "advanced", "test_type": "parse", "input": "pkg:oci/static@sha256%3A244fd47e07d10?repository_url=gcr.io/distroless/static&tag=latest", "expected_output": { "type": "oci", "namespace": null, "name": "static", "version": "sha256:244fd47e07d10", "qualifiers": { "repository_url": "gcr.io/distroless/static", "tag": "latest" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: oci", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:oci/static@sha256%3A244fd47e07d10?repository_url=gcr.io/distroless/static&tag=latest", "expected_output": "pkg:oci/static@sha256:244fd47e07d10?repository_url=gcr.io%2Fdistroless%2Fstatic&tag=latest", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: oci", "test_group": "base", "test_type": "build", "input": { "type": "oci", "namespace": null, "name": "static", "version": "sha256:244fd47e07d10", "qualifiers": { "repository_url": "gcr.io/distroless/static", "tag": "latest" }, "subpath": null }, "expected_output": "pkg:oci/static@sha256:244fd47e07d10?repository_url=gcr.io%2Fdistroless%2Fstatic&tag=latest", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: oci", "test_group": "advanced", "test_type": "parse", "input": "pkg:oci/hello-wasm@sha256%3A244fd47e07d10?tag=v1", "expected_output": { "type": "oci", "namespace": null, "name": "hello-wasm", "version": "sha256:244fd47e07d10", "qualifiers": { "tag": "v1" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: oci", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:oci/hello-wasm@sha256%3A244fd47e07d10?tag=v1", "expected_output": "pkg:oci/hello-wasm@sha256:244fd47e07d10?tag=v1", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: oci", "test_group": "base", "test_type": "build", "input": { "type": "oci", "namespace": null, "name": "hello-wasm", "version": "sha256:244fd47e07d10", "qualifiers": { "tag": "v1" }, "subpath": null }, "expected_output": "pkg:oci/hello-wasm@sha256:244fd47e07d10?tag=v1", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/swift-test.json0000644000175000017500000001723215135504042020421 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "valid swift purl. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:swift/github.com/Alamofire/Alamofire@5.4.3", "expected_output": "pkg:swift/github.com/Alamofire/Alamofire@5.4.3", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid swift purl", "test_group": "base", "test_type": "parse", "input": "pkg:swift/github.com/Alamofire/Alamofire@5.4.3", "expected_output": { "type": "swift", "namespace": "github.com/Alamofire", "name": "Alamofire", "version": "5.4.3", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "valid swift purl. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:swift/github.com/Alamofire/Alamofire@5.4.3", "expected_output": "pkg:swift/github.com/Alamofire/Alamofire@5.4.3", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid swift purl", "test_group": "base", "test_type": "build", "input": { "type": "swift", "namespace": "github.com/Alamofire", "name": "Alamofire", "version": "5.4.3", "qualifiers": null, "subpath": null }, "expected_output": "pkg:swift/github.com/Alamofire/Alamofire@5.4.3", "expected_failure": false, "expected_failure_reason": null }, { "description": "invalid swift purl without namespace", "test_group": "base", "test_type": "parse", "input": "pkg:swift/Alamofire@5.4.3", "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to parse a PURL from invalid purl input" }, { "description": "invalid swift purl without namespace", "test_group": "base", "test_type": "parse", "input": "pkg:swift/Alamofire@5.4.3", "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to parse a PURL from invalid canonical purl input" }, { "description": "invalid swift purl without namespace", "test_group": "base", "test_type": "build", "input": { "type": "swift", "namespace": null, "name": "Alamofire", "version": "5.4.3", "qualifiers": null, "subpath": null }, "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to build a PURL from invalid input components" }, { "description": "invalid swift purl without name", "test_group": "base", "test_type": "parse", "input": "pkg:swift/github.com/Alamofire/@5.4.3", "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to parse a PURL from invalid purl input" }, { "description": "invalid swift purl without name", "test_group": "base", "test_type": "parse", "input": "pkg:swift/github.com/Alamofire/@5.4.3", "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to parse a PURL from invalid canonical purl input" }, { "description": "invalid swift purl without name", "test_group": "base", "test_type": "build", "input": { "type": "swift", "namespace": "github.com/Alamofire", "name": null, "version": "5.4.3", "qualifiers": null, "subpath": null }, "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to build a PURL from invalid input components" }, { "description": "invalid swift purl without version", "test_group": "base", "test_type": "parse", "input": "pkg:swift/github.com/Alamofire/Alamofire", "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to parse a PURL from invalid purl input" }, { "description": "invalid swift purl without version", "test_group": "base", "test_type": "parse", "input": "pkg:swift/github.com/Alamofire/Alamofire", "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to parse a PURL from invalid canonical purl input" }, { "description": "invalid swift purl without version", "test_group": "base", "test_type": "build", "input": { "type": "swift", "namespace": "github.com/Alamofire", "name": "Alamofire", "version": null, "qualifiers": null, "subpath": null }, "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to build a PURL from invalid input components" }, { "description": "Parse test for PURL type: swift", "test_group": "base", "test_type": "parse", "input": "pkg:swift/github.com/Alamofire/Alamofire@5.4.3", "expected_output": { "type": "swift", "namespace": "github.com/Alamofire", "name": "Alamofire", "version": "5.4.3", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: swift", "test_group": "base", "test_type": "roundtrip", "input": "pkg:swift/github.com/Alamofire/Alamofire@5.4.3", "expected_output": "pkg:swift/github.com/Alamofire/Alamofire@5.4.3", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: swift", "test_group": "base", "test_type": "build", "input": { "type": "swift", "namespace": "github.com/Alamofire", "name": "Alamofire", "version": "5.4.3", "qualifiers": null, "subpath": null }, "expected_output": "pkg:swift/github.com/Alamofire/Alamofire@5.4.3", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: swift", "test_group": "base", "test_type": "parse", "input": "pkg:swift/github.com/RxSwiftCommunity/RxFlow@2.12.4", "expected_output": { "type": "swift", "namespace": "github.com/RxSwiftCommunity", "name": "RxFlow", "version": "2.12.4", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: swift", "test_group": "base", "test_type": "roundtrip", "input": "pkg:swift/github.com/RxSwiftCommunity/RxFlow@2.12.4", "expected_output": "pkg:swift/github.com/RxSwiftCommunity/RxFlow@2.12.4", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: swift", "test_group": "base", "test_type": "build", "input": { "type": "swift", "namespace": "github.com/RxSwiftCommunity", "name": "RxFlow", "version": "2.12.4", "qualifiers": null, "subpath": null }, "expected_output": "pkg:swift/github.com/RxSwiftCommunity/RxFlow@2.12.4", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/luarocks-test.json0000644000175000017500000001024715135504042021107 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "Parse test for PURL type: luarocks", "test_group": "base", "test_type": "parse", "input": "pkg:luarocks/luasocket@3.1.0-1", "expected_output": { "type": "luarocks", "namespace": null, "name": "luasocket", "version": "3.1.0-1", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: luarocks", "test_group": "base", "test_type": "roundtrip", "input": "pkg:luarocks/luasocket@3.1.0-1", "expected_output": "pkg:luarocks/luasocket@3.1.0-1", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: luarocks", "test_group": "base", "test_type": "build", "input": { "type": "luarocks", "namespace": null, "name": "luasocket", "version": "3.1.0-1", "qualifiers": null, "subpath": null }, "expected_output": "pkg:luarocks/luasocket@3.1.0-1", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: luarocks", "test_group": "base", "test_type": "parse", "input": "pkg:luarocks/hisham/luafilesystem@1.8.0-1", "expected_output": { "type": "luarocks", "namespace": "hisham", "name": "luafilesystem", "version": "1.8.0-1", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: luarocks", "test_group": "base", "test_type": "roundtrip", "input": "pkg:luarocks/hisham/luafilesystem@1.8.0-1", "expected_output": "pkg:luarocks/hisham/luafilesystem@1.8.0-1", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: luarocks", "test_group": "base", "test_type": "build", "input": { "type": "luarocks", "namespace": "hisham", "name": "luafilesystem", "version": "1.8.0-1", "qualifiers": null, "subpath": null }, "expected_output": "pkg:luarocks/hisham/luafilesystem@1.8.0-1", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: luarocks", "test_group": "base", "test_type": "parse", "input": "pkg:luarocks/username/packagename@0.1.0-1?repository_url=https://example.com/private_rocks_server/", "expected_output": { "type": "luarocks", "namespace": "username", "name": "packagename", "version": "0.1.0-1", "qualifiers": { "repository_url": "https://example.com/private_rocks_server/" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: luarocks", "test_group": "base", "test_type": "roundtrip", "input": "pkg:luarocks/username/packagename@0.1.0-1?repository_url=https://example.com/private_rocks_server/", "expected_output": "pkg:luarocks/username/packagename@0.1.0-1?repository_url=https:%2F%2Fexample.com%2Fprivate_rocks_server%2F", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: luarocks", "test_group": "base", "test_type": "build", "input": { "type": "luarocks", "namespace": "username", "name": "packagename", "version": "0.1.0-1", "qualifiers": { "repository_url": "https://example.com/private_rocks_server/" }, "subpath": null }, "expected_output": "pkg:luarocks/username/packagename@0.1.0-1?repository_url=https:%2F%2Fexample.com%2Fprivate_rocks_server%2F", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/docker-test.json0000644000175000017500000001414215135504042020531 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "docker uses qualifiers and hash image id as versions. Roundtrip an input purl wrongly percent encoded to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:docker/customer/dockerimage@sha256%3A244fd47e07d1004f0aed9c?repository_url=gcr.io", "expected_output": "pkg:docker/customer/dockerimage@sha256:244fd47e07d1004f0aed9c?repository_url=gcr.io", "expected_failure": false, "expected_failure_reason": null }, { "description": "docker uses qualifiers and hash image id as versions", "test_group": "base", "test_type": "parse", "input": "pkg:docker/customer/dockerimage@sha256:244fd47e07d1004f0aed9c?repository_url=gcr.io", "expected_output": { "type": "docker", "namespace": "customer", "name": "dockerimage", "version": "sha256:244fd47e07d1004f0aed9c", "qualifiers": { "repository_url": "gcr.io" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "docker uses qualifiers and hash image id as versions. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:docker/customer/dockerimage@sha256:244fd47e07d1004f0aed9c?repository_url=gcr.io", "expected_output": "pkg:docker/customer/dockerimage@sha256:244fd47e07d1004f0aed9c?repository_url=gcr.io", "expected_failure": false, "expected_failure_reason": null }, { "description": "docker uses qualifiers and hash image id as versions", "test_group": "base", "test_type": "build", "input": { "type": "docker", "namespace": "customer", "name": "dockerimage", "version": "sha256:244fd47e07d1004f0aed9c", "qualifiers": { "repository_url": "gcr.io" }, "subpath": null }, "expected_output": "pkg:docker/customer/dockerimage@sha256:244fd47e07d1004f0aed9c?repository_url=gcr.io", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: docker", "test_group": "base", "test_type": "parse", "input": "pkg:docker/cassandra@latest", "expected_output": { "type": "docker", "namespace": null, "name": "cassandra", "version": "latest", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: docker", "test_group": "base", "test_type": "roundtrip", "input": "pkg:docker/cassandra@latest", "expected_output": "pkg:docker/cassandra@latest", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: docker", "test_group": "base", "test_type": "build", "input": { "type": "docker", "namespace": null, "name": "cassandra", "version": "latest", "qualifiers": null, "subpath": null }, "expected_output": "pkg:docker/cassandra@latest", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: docker", "test_group": "base", "test_type": "parse", "input": "pkg:docker/smartentry/debian@dc437cc87d10", "expected_output": { "type": "docker", "namespace": "smartentry", "name": "debian", "version": "dc437cc87d10", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: docker", "test_group": "base", "test_type": "roundtrip", "input": "pkg:docker/smartentry/debian@dc437cc87d10", "expected_output": "pkg:docker/smartentry/debian@dc437cc87d10", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: docker", "test_group": "base", "test_type": "build", "input": { "type": "docker", "namespace": "smartentry", "name": "debian", "version": "dc437cc87d10", "qualifiers": null, "subpath": null }, "expected_output": "pkg:docker/smartentry/debian@dc437cc87d10", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: docker", "test_group": "base", "test_type": "parse", "input": "pkg:docker/customer/dockerimage@sha256:244fd47e07d10?repository_url=gcr.io", "expected_output": { "type": "docker", "namespace": "customer", "name": "dockerimage", "version": "sha256:244fd47e07d10", "qualifiers": { "repository_url": "gcr.io" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: docker", "test_group": "base", "test_type": "roundtrip", "input": "pkg:docker/customer/dockerimage@sha256:244fd47e07d10?repository_url=gcr.io", "expected_output": "pkg:docker/customer/dockerimage@sha256:244fd47e07d10?repository_url=gcr.io", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: docker", "test_group": "base", "test_type": "build", "input": { "type": "docker", "namespace": "customer", "name": "dockerimage", "version": "sha256:244fd47e07d10", "qualifiers": { "repository_url": "gcr.io" }, "subpath": null }, "expected_output": "pkg:docker/customer/dockerimage@sha256:244fd47e07d10?repository_url=gcr.io", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/mlflow-test.json0000644000175000017500000003303515135504042020564 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "MLflow model tracked in Azure Databricks (case insensitive). Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:mlflow/CreditFraud@3?repository_url=https://adb-5245952564735461.0.azuredatabricks.net/api/2.0/mlflow", "expected_output": "pkg:mlflow/creditfraud@3?repository_url=https:%2F%2Fadb-5245952564735461.0.azuredatabricks.net%2Fapi%2F2.0%2Fmlflow", "expected_failure": false, "expected_failure_reason": null }, { "description": "MLflow model tracked in Azure Databricks (case insensitive)", "test_group": "base", "test_type": "parse", "input": "pkg:mlflow/CreditFraud@3?repository_url=https://adb-5245952564735461.0.azuredatabricks.net/api/2.0/mlflow", "expected_output": { "type": "mlflow", "namespace": null, "name": "creditfraud", "version": "3", "qualifiers": { "repository_url": "https://adb-5245952564735461.0.azuredatabricks.net/api/2.0/mlflow" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "MLflow model tracked in Azure Databricks (case insensitive). Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:mlflow/creditfraud@3?repository_url=https://adb-5245952564735461.0.azuredatabricks.net/api/2.0/mlflow", "expected_output": "pkg:mlflow/creditfraud@3?repository_url=https:%2F%2Fadb-5245952564735461.0.azuredatabricks.net%2Fapi%2F2.0%2Fmlflow", "expected_failure": false, "expected_failure_reason": null }, { "description": "MLflow model tracked in Azure Databricks (case insensitive)", "test_group": "base", "test_type": "build", "input": { "type": "mlflow", "namespace": null, "name": "creditfraud", "version": "3", "qualifiers": { "repository_url": "https://adb-5245952564735461.0.azuredatabricks.net/api/2.0/mlflow" }, "subpath": null }, "expected_output": "pkg:mlflow/creditfraud@3?repository_url=https:%2F%2Fadb-5245952564735461.0.azuredatabricks.net%2Fapi%2F2.0%2Fmlflow", "expected_failure": false, "expected_failure_reason": null }, { "description": "MLflow model tracked in Azure ML (case sensitive). Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:mlflow/CreditFraud@3?repository_url=https://westus2.api.azureml.ms/mlflow/v1.0/subscriptions/a50f2011-fab8-4164-af23-c62881ef8c95/resourceGroups/TestResourceGroup/providers/Microsoft.MachineLearningServices/workspaces/TestWorkspace", "expected_output": "pkg:mlflow/CreditFraud@3?repository_url=https:%2F%2Fwestus2.api.azureml.ms%2Fmlflow%2Fv1.0%2Fsubscriptions%2Fa50f2011-fab8-4164-af23-c62881ef8c95%2FresourceGroups%2FTestResourceGroup%2Fproviders%2FMicrosoft.MachineLearningServices%2Fworkspaces%2FTestWorkspace", "expected_failure": false, "expected_failure_reason": null }, { "description": "MLflow model tracked in Azure ML (case sensitive)", "test_group": "base", "test_type": "parse", "input": "pkg:mlflow/CreditFraud@3?repository_url=https://westus2.api.azureml.ms/mlflow/v1.0/subscriptions/a50f2011-fab8-4164-af23-c62881ef8c95/resourceGroups/TestResourceGroup/providers/Microsoft.MachineLearningServices/workspaces/TestWorkspace", "expected_output": { "type": "mlflow", "namespace": null, "name": "CreditFraud", "version": "3", "qualifiers": { "repository_url": "https://westus2.api.azureml.ms/mlflow/v1.0/subscriptions/a50f2011-fab8-4164-af23-c62881ef8c95/resourceGroups/TestResourceGroup/providers/Microsoft.MachineLearningServices/workspaces/TestWorkspace" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "MLflow model tracked in Azure ML (case sensitive). Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:mlflow/CreditFraud@3?repository_url=https://westus2.api.azureml.ms/mlflow/v1.0/subscriptions/a50f2011-fab8-4164-af23-c62881ef8c95/resourceGroups/TestResourceGroup/providers/Microsoft.MachineLearningServices/workspaces/TestWorkspace", "expected_output": "pkg:mlflow/CreditFraud@3?repository_url=https:%2F%2Fwestus2.api.azureml.ms%2Fmlflow%2Fv1.0%2Fsubscriptions%2Fa50f2011-fab8-4164-af23-c62881ef8c95%2FresourceGroups%2FTestResourceGroup%2Fproviders%2FMicrosoft.MachineLearningServices%2Fworkspaces%2FTestWorkspace", "expected_failure": false, "expected_failure_reason": null }, { "description": "MLflow model tracked in Azure ML (case sensitive)", "test_group": "base", "test_type": "build", "input": { "type": "mlflow", "namespace": null, "name": "CreditFraud", "version": "3", "qualifiers": { "repository_url": "https://westus2.api.azureml.ms/mlflow/v1.0/subscriptions/a50f2011-fab8-4164-af23-c62881ef8c95/resourceGroups/TestResourceGroup/providers/Microsoft.MachineLearningServices/workspaces/TestWorkspace" }, "subpath": null }, "expected_output": "pkg:mlflow/CreditFraud@3?repository_url=https:%2F%2Fwestus2.api.azureml.ms%2Fmlflow%2Fv1.0%2Fsubscriptions%2Fa50f2011-fab8-4164-af23-c62881ef8c95%2FresourceGroups%2FTestResourceGroup%2Fproviders%2FMicrosoft.MachineLearningServices%2Fworkspaces%2FTestWorkspace", "expected_failure": false, "expected_failure_reason": null }, { "description": "MLflow model with unique identifiers. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:mlflow/trafficsigns@10?model_uuid=36233173b22f4c89b451f1228d700d49&run_id=410a3121-2709-4f88-98dd-dba0ef056b0a&repository_url=https://adb-5245952564735461.0.azuredatabricks.net/api/2.0/mlflow", "expected_output": "pkg:mlflow/trafficsigns@10?model_uuid=36233173b22f4c89b451f1228d700d49&repository_url=https:%2F%2Fadb-5245952564735461.0.azuredatabricks.net%2Fapi%2F2.0%2Fmlflow&run_id=410a3121-2709-4f88-98dd-dba0ef056b0a", "expected_failure": false, "expected_failure_reason": null }, { "description": "MLflow model with unique identifiers", "test_group": "base", "test_type": "parse", "input": "pkg:mlflow/trafficsigns@10?model_uuid=36233173b22f4c89b451f1228d700d49&run_id=410a3121-2709-4f88-98dd-dba0ef056b0a&repository_url=https://adb-5245952564735461.0.azuredatabricks.net/api/2.0/mlflow", "expected_output": { "type": "mlflow", "namespace": null, "name": "trafficsigns", "version": "10", "qualifiers": { "model_uuid": "36233173b22f4c89b451f1228d700d49", "run_id": "410a3121-2709-4f88-98dd-dba0ef056b0a", "repository_url": "https://adb-5245952564735461.0.azuredatabricks.net/api/2.0/mlflow" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "MLflow model with unique identifiers. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:mlflow/trafficsigns@10?model_uuid=36233173b22f4c89b451f1228d700d49&repository_url=https://adb-5245952564735461.0.azuredatabricks.net/api/2.0/mlflow&run_id=410a3121-2709-4f88-98dd-dba0ef056b0a", "expected_output": "pkg:mlflow/trafficsigns@10?model_uuid=36233173b22f4c89b451f1228d700d49&repository_url=https:%2F%2Fadb-5245952564735461.0.azuredatabricks.net%2Fapi%2F2.0%2Fmlflow&run_id=410a3121-2709-4f88-98dd-dba0ef056b0a", "expected_failure": false, "expected_failure_reason": null }, { "description": "MLflow model with unique identifiers", "test_group": "base", "test_type": "build", "input": { "type": "mlflow", "namespace": null, "name": "trafficsigns", "version": "10", "qualifiers": { "model_uuid": "36233173b22f4c89b451f1228d700d49", "run_id": "410a3121-2709-4f88-98dd-dba0ef056b0a", "repository_url": "https://adb-5245952564735461.0.azuredatabricks.net/api/2.0/mlflow" }, "subpath": null }, "expected_output": "pkg:mlflow/trafficsigns@10?model_uuid=36233173b22f4c89b451f1228d700d49&repository_url=https:%2F%2Fadb-5245952564735461.0.azuredatabricks.net%2Fapi%2F2.0%2Fmlflow&run_id=410a3121-2709-4f88-98dd-dba0ef056b0a", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: mlflow", "test_group": "base", "test_type": "parse", "input": "pkg:mlflow/creditfraud@3?repository_url=https://westus2.api.azureml.ms/mlflow/v1.0/subscriptions/a50f2011-fab8-4164-af23-c62881ef8c95/resourceGroups/TestResourceGroup/providers/Microsoft.MachineLearningServices/workspaces/TestWorkspace", "expected_output": { "type": "mlflow", "namespace": null, "name": "creditfraud", "version": "3", "qualifiers": { "repository_url": "https://westus2.api.azureml.ms/mlflow/v1.0/subscriptions/a50f2011-fab8-4164-af23-c62881ef8c95/resourceGroups/TestResourceGroup/providers/Microsoft.MachineLearningServices/workspaces/TestWorkspace" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: mlflow", "test_group": "base", "test_type": "roundtrip", "input": "pkg:mlflow/creditfraud@3?repository_url=https://westus2.api.azureml.ms/mlflow/v1.0/subscriptions/a50f2011-fab8-4164-af23-c62881ef8c95/resourceGroups/TestResourceGroup/providers/Microsoft.MachineLearningServices/workspaces/TestWorkspace", "expected_output": "pkg:mlflow/creditfraud@3?repository_url=https:%2F%2Fwestus2.api.azureml.ms%2Fmlflow%2Fv1.0%2Fsubscriptions%2Fa50f2011-fab8-4164-af23-c62881ef8c95%2FresourceGroups%2FTestResourceGroup%2Fproviders%2FMicrosoft.MachineLearningServices%2Fworkspaces%2FTestWorkspace", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: mlflow", "test_group": "base", "test_type": "build", "input": { "type": "mlflow", "namespace": null, "name": "creditfraud", "version": "3", "qualifiers": { "repository_url": "https://westus2.api.azureml.ms/mlflow/v1.0/subscriptions/a50f2011-fab8-4164-af23-c62881ef8c95/resourceGroups/TestResourceGroup/providers/Microsoft.MachineLearningServices/workspaces/TestWorkspace" }, "subpath": null }, "expected_output": "pkg:mlflow/creditfraud@3?repository_url=https:%2F%2Fwestus2.api.azureml.ms%2Fmlflow%2Fv1.0%2Fsubscriptions%2Fa50f2011-fab8-4164-af23-c62881ef8c95%2FresourceGroups%2FTestResourceGroup%2Fproviders%2FMicrosoft.MachineLearningServices%2Fworkspaces%2FTestWorkspace", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: mlflow", "test_group": "base", "test_type": "parse", "input": "pkg:mlflow/trafficsigns@10?model_uuid=36233173b22f4c89b451f1228d700d49&run_id=410a3121-2709-4f88-98dd-dba0ef056b0a&repository_url=https://adb-5245952564735461.0.azuredatabricks.net/api/2.0/mlflow", "expected_output": { "type": "mlflow", "namespace": null, "name": "trafficsigns", "version": "10", "qualifiers": { "model_uuid": "36233173b22f4c89b451f1228d700d49", "repository_url": "https://adb-5245952564735461.0.azuredatabricks.net/api/2.0/mlflow", "run_id": "410a3121-2709-4f88-98dd-dba0ef056b0a" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: mlflow", "test_group": "base", "test_type": "roundtrip", "input": "pkg:mlflow/trafficsigns@10?model_uuid=36233173b22f4c89b451f1228d700d49&run_id=410a3121-2709-4f88-98dd-dba0ef056b0a&repository_url=https://adb-5245952564735461.0.azuredatabricks.net/api/2.0/mlflow", "expected_output": "pkg:mlflow/trafficsigns@10?model_uuid=36233173b22f4c89b451f1228d700d49&repository_url=https:%2F%2Fadb-5245952564735461.0.azuredatabricks.net%2Fapi%2F2.0%2Fmlflow&run_id=410a3121-2709-4f88-98dd-dba0ef056b0a", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: mlflow", "test_group": "base", "test_type": "build", "input": { "type": "mlflow", "namespace": null, "name": "trafficsigns", "version": "10", "qualifiers": { "model_uuid": "36233173b22f4c89b451f1228d700d49", "repository_url": "https://adb-5245952564735461.0.azuredatabricks.net/api/2.0/mlflow", "run_id": "410a3121-2709-4f88-98dd-dba0ef056b0a" }, "subpath": null }, "expected_output": "pkg:mlflow/trafficsigns@10?model_uuid=36233173b22f4c89b451f1228d700d49&repository_url=https:%2F%2Fadb-5245952564735461.0.azuredatabricks.net%2Fapi%2F2.0%2Fmlflow&run_id=410a3121-2709-4f88-98dd-dba0ef056b0a", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/github-test.json0000644000175000017500000001112615135504042020543 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "github namespace and name should be lowercased. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:github/Package-url/purl-Spec@244fd47e07d1004f0aed9c", "expected_output": "pkg:github/package-url/purl-spec@244fd47e07d1004f0aed9c", "expected_failure": false, "expected_failure_reason": null }, { "description": "github namespace and name should be lowercased", "test_group": "base", "test_type": "parse", "input": "pkg:github/Package-url/purl-Spec@244fd47e07d1004f0aed9c", "expected_output": { "type": "github", "namespace": "package-url", "name": "purl-spec", "version": "244fd47e07d1004f0aed9c", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "github namespace and name should be lowercased. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:github/package-url/purl-spec@244fd47e07d1004f0aed9c", "expected_output": "pkg:github/package-url/purl-spec@244fd47e07d1004f0aed9c", "expected_failure": false, "expected_failure_reason": null }, { "description": "github namespace and name should be lowercased", "test_group": "base", "test_type": "build", "input": { "type": "github", "namespace": "package-url", "name": "purl-spec", "version": "244fd47e07d1004f0aed9c", "qualifiers": null, "subpath": null }, "expected_output": "pkg:github/package-url/purl-spec@244fd47e07d1004f0aed9c", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: github", "test_group": "base", "test_type": "parse", "input": "pkg:github/package-url/purl-spec@244fd47e07d1004", "expected_output": { "type": "github", "namespace": "package-url", "name": "purl-spec", "version": "244fd47e07d1004", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: github", "test_group": "base", "test_type": "roundtrip", "input": "pkg:github/package-url/purl-spec@244fd47e07d1004", "expected_output": "pkg:github/package-url/purl-spec@244fd47e07d1004", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: github", "test_group": "base", "test_type": "build", "input": { "type": "github", "namespace": "package-url", "name": "purl-spec", "version": "244fd47e07d1004", "qualifiers": null, "subpath": null }, "expected_output": "pkg:github/package-url/purl-spec@244fd47e07d1004", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: github", "test_group": "base", "test_type": "parse", "input": "pkg:github/package-url/purl-spec@244fd47e07d1004#everybody/loves/dogs", "expected_output": { "type": "github", "namespace": "package-url", "name": "purl-spec", "version": "244fd47e07d1004", "qualifiers": null, "subpath": "everybody/loves/dogs" }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: github", "test_group": "base", "test_type": "roundtrip", "input": "pkg:github/package-url/purl-spec@244fd47e07d1004#everybody/loves/dogs", "expected_output": "pkg:github/package-url/purl-spec@244fd47e07d1004#everybody/loves/dogs", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: github", "test_group": "base", "test_type": "build", "input": { "type": "github", "namespace": "package-url", "name": "purl-spec", "version": "244fd47e07d1004", "qualifiers": null, "subpath": "everybody/loves/dogs" }, "expected_output": "pkg:github/package-url/purl-spec@244fd47e07d1004#everybody/loves/dogs", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/conan-test.json0000644000175000017500000002121015135504042020352 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "valid conan purl. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:conan/cctz@2.3", "expected_output": "pkg:conan/cctz@2.3", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid conan purl", "test_group": "base", "test_type": "parse", "input": "pkg:conan/cctz@2.3", "expected_output": { "type": "conan", "namespace": null, "name": "cctz", "version": "2.3", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "valid conan purl. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:conan/cctz@2.3", "expected_output": "pkg:conan/cctz@2.3", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid conan purl", "test_group": "base", "test_type": "build", "input": { "type": "conan", "namespace": null, "name": "cctz", "version": "2.3", "qualifiers": null, "subpath": null }, "expected_output": "pkg:conan/cctz@2.3", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid conan purl with namespace and qualifier channel. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:conan/bincrafters/cctz@2.3?channel=stable", "expected_output": "pkg:conan/bincrafters/cctz@2.3?channel=stable", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid conan purl with namespace and qualifier channel", "test_group": "base", "test_type": "parse", "input": "pkg:conan/bincrafters/cctz@2.3?channel=stable", "expected_output": { "type": "conan", "namespace": "bincrafters", "name": "cctz", "version": "2.3", "qualifiers": { "channel": "stable" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "valid conan purl with namespace and qualifier channel. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:conan/bincrafters/cctz@2.3?channel=stable", "expected_output": "pkg:conan/bincrafters/cctz@2.3?channel=stable", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid conan purl with namespace and qualifier channel", "test_group": "base", "test_type": "build", "input": { "type": "conan", "namespace": "bincrafters", "name": "cctz", "version": "2.3", "qualifiers": { "channel": "stable" }, "subpath": null }, "expected_output": "pkg:conan/bincrafters/cctz@2.3?channel=stable", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: conan", "test_group": "base", "test_type": "parse", "input": "pkg:conan/openssl@3.0.3", "expected_output": { "type": "conan", "namespace": null, "name": "openssl", "version": "3.0.3", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: conan", "test_group": "base", "test_type": "roundtrip", "input": "pkg:conan/openssl@3.0.3", "expected_output": "pkg:conan/openssl@3.0.3", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: conan", "test_group": "base", "test_type": "build", "input": { "type": "conan", "namespace": null, "name": "openssl", "version": "3.0.3", "qualifiers": null, "subpath": null }, "expected_output": "pkg:conan/openssl@3.0.3", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: conan", "test_group": "base", "test_type": "parse", "input": "pkg:conan/openssl.org/openssl@3.0.3?user=bincrafters&channel=stable", "expected_output": { "type": "conan", "namespace": "openssl.org", "name": "openssl", "version": "3.0.3", "qualifiers": { "channel": "stable", "user": "bincrafters" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: conan", "test_group": "base", "test_type": "roundtrip", "input": "pkg:conan/openssl.org/openssl@3.0.3?user=bincrafters&channel=stable", "expected_output": "pkg:conan/openssl.org/openssl@3.0.3?channel=stable&user=bincrafters", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: conan", "test_group": "base", "test_type": "build", "input": { "type": "conan", "namespace": "openssl.org", "name": "openssl", "version": "3.0.3", "qualifiers": { "channel": "stable", "user": "bincrafters" }, "subpath": null }, "expected_output": "pkg:conan/openssl.org/openssl@3.0.3?channel=stable&user=bincrafters", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: conan", "test_group": "base", "test_type": "parse", "input": "pkg:conan/openssl.org/openssl@3.0.3?arch=x86_64&build_type=Debug&compiler=Visual%20Studio&compiler.runtime=MDd&compiler.version=16&os=Windows&shared=True&rrev=93a82349c31917d2d674d22065c7a9ef9f380c8e&prev=b429db8a0e324114c25ec387bfd8281f330d7c5c", "expected_output": { "type": "conan", "namespace": "openssl.org", "name": "openssl", "version": "3.0.3", "qualifiers": { "arch": "x86_64", "build_type": "Debug", "compiler": "Visual Studio", "compiler.runtime": "MDd", "compiler.version": "16", "os": "Windows", "prev": "b429db8a0e324114c25ec387bfd8281f330d7c5c", "rrev": "93a82349c31917d2d674d22065c7a9ef9f380c8e", "shared": "True" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: conan", "test_group": "base", "test_type": "roundtrip", "input": "pkg:conan/openssl.org/openssl@3.0.3?arch=x86_64&build_type=Debug&compiler=Visual%20Studio&compiler.runtime=MDd&compiler.version=16&os=Windows&shared=True&rrev=93a82349c31917d2d674d22065c7a9ef9f380c8e&prev=b429db8a0e324114c25ec387bfd8281f330d7c5c", "expected_output": "pkg:conan/openssl.org/openssl@3.0.3?arch=x86_64&build_type=Debug&compiler=Visual%20Studio&compiler.runtime=MDd&compiler.version=16&os=Windows&prev=b429db8a0e324114c25ec387bfd8281f330d7c5c&rrev=93a82349c31917d2d674d22065c7a9ef9f380c8e&shared=True", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: conan", "test_group": "base", "test_type": "build", "input": { "type": "conan", "namespace": "openssl.org", "name": "openssl", "version": "3.0.3", "qualifiers": { "arch": "x86_64", "build_type": "Debug", "compiler": "Visual Studio", "compiler.runtime": "MDd", "compiler.version": "16", "os": "Windows", "prev": "b429db8a0e324114c25ec387bfd8281f330d7c5c", "rrev": "93a82349c31917d2d674d22065c7a9ef9f380c8e", "shared": "True" }, "subpath": null }, "expected_output": "pkg:conan/openssl.org/openssl@3.0.3?arch=x86_64&build_type=Debug&compiler=Visual%20Studio&compiler.runtime=MDd&compiler.version=16&os=Windows&prev=b429db8a0e324114c25ec387bfd8281f330d7c5c&rrev=93a82349c31917d2d674d22065c7a9ef9f380c8e&shared=True", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/apk-test.json0000644000175000017500000000514515135504042020040 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "Parse test for PURL type: apk", "test_group": "base", "test_type": "parse", "input": "pkg:apk/alpine/curl@7.83.0-r0?arch=x86", "expected_output": { "type": "apk", "namespace": "alpine", "name": "curl", "version": "7.83.0-r0", "qualifiers": { "arch": "x86" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: apk", "test_group": "base", "test_type": "roundtrip", "input": "pkg:apk/alpine/curl@7.83.0-r0?arch=x86", "expected_output": "pkg:apk/alpine/curl@7.83.0-r0?arch=x86", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: apk", "test_group": "base", "test_type": "build", "input": { "type": "apk", "namespace": "alpine", "name": "curl", "version": "7.83.0-r0", "qualifiers": { "arch": "x86" }, "subpath": null }, "expected_output": "pkg:apk/alpine/curl@7.83.0-r0?arch=x86", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: apk", "test_group": "base", "test_type": "parse", "input": "pkg:apk/alpine/apk@2.12.9-r3?arch=x86", "expected_output": { "type": "apk", "namespace": "alpine", "name": "apk", "version": "2.12.9-r3", "qualifiers": { "arch": "x86" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: apk", "test_group": "base", "test_type": "roundtrip", "input": "pkg:apk/alpine/apk@2.12.9-r3?arch=x86", "expected_output": "pkg:apk/alpine/apk@2.12.9-r3?arch=x86", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: apk", "test_group": "base", "test_type": "build", "input": { "type": "apk", "namespace": "alpine", "name": "apk", "version": "2.12.9-r3", "qualifiers": { "arch": "x86" }, "subpath": null }, "expected_output": "pkg:apk/alpine/apk@2.12.9-r3?arch=x86", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/cran-test.json0000644000175000017500000001362115135504042020206 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "valid cran purl. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:cran/A3@0.9.1", "expected_output": "pkg:cran/A3@0.9.1", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid cran purl", "test_group": "base", "test_type": "parse", "input": "pkg:cran/A3@0.9.1", "expected_output": { "type": "cran", "namespace": null, "name": "A3", "version": "0.9.1", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "valid cran purl. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:cran/A3@0.9.1", "expected_output": "pkg:cran/A3@0.9.1", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid cran purl", "test_group": "base", "test_type": "build", "input": { "type": "cran", "namespace": null, "name": "A3", "version": "0.9.1", "qualifiers": null, "subpath": null }, "expected_output": "pkg:cran/A3@0.9.1", "expected_failure": false, "expected_failure_reason": null }, { "description": "invalid cran purl without name", "test_group": "base", "test_type": "parse", "input": "pkg:cran/@0.9.1", "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to parse a PURL from invalid purl input" }, { "description": "invalid cran purl without name", "test_group": "base", "test_type": "parse", "input": "pkg:cran/@0.9.1", "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to parse a PURL from invalid canonical purl input" }, { "description": "invalid cran purl without name", "test_group": "base", "test_type": "build", "input": { "type": "cran", "namespace": null, "name": null, "version": "0.9.1", "qualifiers": null, "subpath": null }, "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to build a PURL from invalid input components" }, { "description": "Parse test for PURL type: cran", "test_group": "base", "test_type": "parse", "input": "pkg:cran/A3@1.0.0", "expected_output": { "type": "cran", "namespace": null, "name": "A3", "version": "1.0.0", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: cran", "test_group": "base", "test_type": "roundtrip", "input": "pkg:cran/A3@1.0.0", "expected_output": "pkg:cran/A3@1.0.0", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: cran", "test_group": "base", "test_type": "build", "input": { "type": "cran", "namespace": null, "name": "A3", "version": "1.0.0", "qualifiers": null, "subpath": null }, "expected_output": "pkg:cran/A3@1.0.0", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: cran", "test_group": "base", "test_type": "parse", "input": "pkg:cran/rJava@1.0-4", "expected_output": { "type": "cran", "namespace": null, "name": "rJava", "version": "1.0-4", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: cran", "test_group": "base", "test_type": "roundtrip", "input": "pkg:cran/rJava@1.0-4", "expected_output": "pkg:cran/rJava@1.0-4", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: cran", "test_group": "base", "test_type": "build", "input": { "type": "cran", "namespace": null, "name": "rJava", "version": "1.0-4", "qualifiers": null, "subpath": null }, "expected_output": "pkg:cran/rJava@1.0-4", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: cran", "test_group": "base", "test_type": "parse", "input": "pkg:cran/caret@6.0-88", "expected_output": { "type": "cran", "namespace": null, "name": "caret", "version": "6.0-88", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: cran", "test_group": "base", "test_type": "roundtrip", "input": "pkg:cran/caret@6.0-88", "expected_output": "pkg:cran/caret@6.0-88", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: cran", "test_group": "base", "test_type": "build", "input": { "type": "cran", "namespace": null, "name": "caret", "version": "6.0-88", "qualifiers": null, "subpath": null }, "expected_output": "pkg:cran/caret@6.0-88", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/deb-test.json0000644000175000017500000002073715135504042020023 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "debian can use qualifiers. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie", "expected_output": "pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie", "expected_failure": false, "expected_failure_reason": null }, { "description": "debian can use qualifiers", "test_group": "base", "test_type": "parse", "input": "pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie", "expected_output": { "type": "deb", "namespace": "debian", "name": "curl", "version": "7.50.3-1", "qualifiers": { "arch": "i386", "distro": "jessie" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "debian can use qualifiers. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie", "expected_output": "pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie", "expected_failure": false, "expected_failure_reason": null }, { "description": "debian can use qualifiers", "test_group": "base", "test_type": "build", "input": { "type": "deb", "namespace": "debian", "name": "curl", "version": "7.50.3-1", "qualifiers": { "arch": "i386", "distro": "jessie" }, "subpath": null }, "expected_output": "pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: deb", "test_group": "base", "test_type": "parse", "input": "pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie", "expected_output": { "type": "deb", "namespace": "debian", "name": "curl", "version": "7.50.3-1", "qualifiers": { "arch": "i386", "distro": "jessie" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: deb", "test_group": "base", "test_type": "roundtrip", "input": "pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie", "expected_output": "pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: deb", "test_group": "base", "test_type": "build", "input": { "type": "deb", "namespace": "debian", "name": "curl", "version": "7.50.3-1", "qualifiers": { "arch": "i386", "distro": "jessie" }, "subpath": null }, "expected_output": "pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: deb", "test_group": "base", "test_type": "parse", "input": "pkg:deb/debian/dpkg@1.19.0.4?arch=amd64&distro=stretch", "expected_output": { "type": "deb", "namespace": "debian", "name": "dpkg", "version": "1.19.0.4", "qualifiers": { "arch": "amd64", "distro": "stretch" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: deb", "test_group": "base", "test_type": "roundtrip", "input": "pkg:deb/debian/dpkg@1.19.0.4?arch=amd64&distro=stretch", "expected_output": "pkg:deb/debian/dpkg@1.19.0.4?arch=amd64&distro=stretch", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: deb", "test_group": "base", "test_type": "build", "input": { "type": "deb", "namespace": "debian", "name": "dpkg", "version": "1.19.0.4", "qualifiers": { "arch": "amd64", "distro": "stretch" }, "subpath": null }, "expected_output": "pkg:deb/debian/dpkg@1.19.0.4?arch=amd64&distro=stretch", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: deb", "test_group": "base", "test_type": "parse", "input": "pkg:deb/ubuntu/dpkg@1.19.0.4?arch=amd64", "expected_output": { "type": "deb", "namespace": "ubuntu", "name": "dpkg", "version": "1.19.0.4", "qualifiers": { "arch": "amd64" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: deb", "test_group": "base", "test_type": "roundtrip", "input": "pkg:deb/ubuntu/dpkg@1.19.0.4?arch=amd64", "expected_output": "pkg:deb/ubuntu/dpkg@1.19.0.4?arch=amd64", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: deb", "test_group": "base", "test_type": "build", "input": { "type": "deb", "namespace": "ubuntu", "name": "dpkg", "version": "1.19.0.4", "qualifiers": { "arch": "amd64" }, "subpath": null }, "expected_output": "pkg:deb/ubuntu/dpkg@1.19.0.4?arch=amd64", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: deb", "test_group": "base", "test_type": "parse", "input": "pkg:deb/debian/attr@1:2.4.47-2?arch=source", "expected_output": { "type": "deb", "namespace": "debian", "name": "attr", "version": "1:2.4.47-2", "qualifiers": { "arch": "source" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: deb", "test_group": "base", "test_type": "roundtrip", "input": "pkg:deb/debian/attr@1:2.4.47-2?arch=source", "expected_output": "pkg:deb/debian/attr@1:2.4.47-2?arch=source", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: deb", "test_group": "base", "test_type": "build", "input": { "type": "deb", "namespace": "debian", "name": "attr", "version": "1:2.4.47-2", "qualifiers": { "arch": "source" }, "subpath": null }, "expected_output": "pkg:deb/debian/attr@1:2.4.47-2?arch=source", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: deb", "test_group": "base", "test_type": "parse", "input": "pkg:deb/debian/attr@1:2.4.47-2%2Bb1?arch=amd64", "expected_output": { "type": "deb", "namespace": "debian", "name": "attr", "version": "1:2.4.47-2+b1", "qualifiers": { "arch": "amd64" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: deb", "test_group": "base", "test_type": "roundtrip", "input": "pkg:deb/debian/attr@1:2.4.47-2%2Bb1?arch=amd64", "expected_output": "pkg:deb/debian/attr@1:2.4.47-2%2Bb1?arch=amd64", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: deb", "test_group": "base", "test_type": "build", "input": { "type": "deb", "namespace": "debian", "name": "attr", "version": "1:2.4.47-2+b1", "qualifiers": { "arch": "amd64" }, "subpath": null }, "expected_output": "pkg:deb/debian/attr@1:2.4.47-2%2Bb1?arch=amd64", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/conda-test.json0000644000175000017500000000760315135504042020352 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "valid conda purl with qualifiers. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:conda/absl-py@0.4.1?build=py36h06a4308_0&channel=main&subdir=linux-64&type=tar.bz2", "expected_output": "pkg:conda/absl-py@0.4.1?build=py36h06a4308_0&channel=main&subdir=linux-64&type=tar.bz2", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid conda purl with qualifiers", "test_group": "base", "test_type": "parse", "input": "pkg:conda/absl-py@0.4.1?build=py36h06a4308_0&channel=main&subdir=linux-64&type=tar.bz2", "expected_output": { "type": "conda", "namespace": null, "name": "absl-py", "version": "0.4.1", "qualifiers": { "build": "py36h06a4308_0", "channel": "main", "subdir": "linux-64", "type": "tar.bz2" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "valid conda purl with qualifiers. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:conda/absl-py@0.4.1?build=py36h06a4308_0&channel=main&subdir=linux-64&type=tar.bz2", "expected_output": "pkg:conda/absl-py@0.4.1?build=py36h06a4308_0&channel=main&subdir=linux-64&type=tar.bz2", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid conda purl with qualifiers", "test_group": "base", "test_type": "build", "input": { "type": "conda", "namespace": null, "name": "absl-py", "version": "0.4.1", "qualifiers": { "build": "py36h06a4308_0", "channel": "main", "subdir": "linux-64", "type": "tar.bz2" }, "subpath": null }, "expected_output": "pkg:conda/absl-py@0.4.1?build=py36h06a4308_0&channel=main&subdir=linux-64&type=tar.bz2", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: conda", "test_group": "base", "test_type": "parse", "input": "pkg:conda/absl-py@0.4.1?build=py36h06a4308_0&channel=main&subdir=linux-64&type=tar.bz2", "expected_output": { "type": "conda", "namespace": null, "name": "absl-py", "version": "0.4.1", "qualifiers": { "build": "py36h06a4308_0", "channel": "main", "subdir": "linux-64", "type": "tar.bz2" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: conda", "test_group": "base", "test_type": "roundtrip", "input": "pkg:conda/absl-py@0.4.1?build=py36h06a4308_0&channel=main&subdir=linux-64&type=tar.bz2", "expected_output": "pkg:conda/absl-py@0.4.1?build=py36h06a4308_0&channel=main&subdir=linux-64&type=tar.bz2", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: conda", "test_group": "base", "test_type": "build", "input": { "type": "conda", "namespace": null, "name": "absl-py", "version": "0.4.1", "qualifiers": { "build": "py36h06a4308_0", "channel": "main", "subdir": "linux-64", "type": "tar.bz2" }, "subpath": null }, "expected_output": "pkg:conda/absl-py@0.4.1?build=py36h06a4308_0&channel=main&subdir=linux-64&type=tar.bz2", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/pub-test.json0000644000175000017500000000454515135504042020056 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "Parse test for PURL type: pub", "test_group": "base", "test_type": "parse", "input": "pkg:pub/characters@1.2.0", "expected_output": { "type": "pub", "namespace": null, "name": "characters", "version": "1.2.0", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: pub", "test_group": "base", "test_type": "roundtrip", "input": "pkg:pub/characters@1.2.0", "expected_output": "pkg:pub/characters@1.2.0", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: pub", "test_group": "base", "test_type": "build", "input": { "type": "pub", "namespace": null, "name": "characters", "version": "1.2.0", "qualifiers": null, "subpath": null }, "expected_output": "pkg:pub/characters@1.2.0", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: pub", "test_group": "base", "test_type": "parse", "input": "pkg:pub/flutter@0.0.0", "expected_output": { "type": "pub", "namespace": null, "name": "flutter", "version": "0.0.0", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: pub", "test_group": "base", "test_type": "roundtrip", "input": "pkg:pub/flutter@0.0.0", "expected_output": "pkg:pub/flutter@0.0.0", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: pub", "test_group": "base", "test_type": "build", "input": { "type": "pub", "namespace": null, "name": "flutter", "version": "0.0.0", "qualifiers": null, "subpath": null }, "expected_output": "pkg:pub/flutter@0.0.0", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/cpan-test.json0000644000175000017500000001740315135504042020206 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "CPAN distribution name are case sensitive. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:cpan/DROLSKY/DateTime@1.55", "expected_output": "pkg:cpan/DROLSKY/DateTime@1.55", "expected_failure": false, "expected_failure_reason": null }, { "description": "CPAN distribution name are case sensitive", "test_group": "base", "test_type": "parse", "input": "pkg:cpan/DROLSKY/DateTime@1.55", "expected_output": { "type": "cpan", "namespace": "DROLSKY", "name": "DateTime", "version": "1.55", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "CPAN distribution name are case sensitive. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:cpan/DROLSKY/DateTime@1.55", "expected_output": "pkg:cpan/DROLSKY/DateTime@1.55", "expected_failure": false, "expected_failure_reason": null }, { "description": "CPAN distribution name are case sensitive", "test_group": "base", "test_type": "build", "input": { "type": "cpan", "namespace": "DROLSKY", "name": "DateTime", "version": "1.55", "qualifiers": null, "subpath": null }, "expected_output": "pkg:cpan/DROLSKY/DateTime@1.55", "expected_failure": false, "expected_failure_reason": null }, { "description": "CPAN distribution without author", "test_group": "base", "test_type": "build", "input": { "type": "cpan", "namespace": null, "name": "Perl-Version", "version": "1.013", "qualifiers": null, "subpath": null }, "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to build a PURL from invalid input components" }, { "description": "CPAN with just the module name and version", "test_group": "base", "test_type": "parse", "input": "pkg:cpan/LWP::UserAgent@6.7.6", "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to parse a PURL from invalid purl input" }, { "description": "CPAN distribution name as module name", "test_group": "base", "test_type": "parse", "input": "pkg:cpan/GDT/URI::PackageURL", "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to parse a PURL from invalid canonical purl input" }, { "description": "CPAN distribution name like module name", "test_group": "base", "test_type": "build", "input": { "type": "cpan", "namespace": "GDT", "name": "URI::PackageURL", "version": null, "qualifiers": null, "subpath": null }, "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to build a PURL from invalid input components" }, { "description": "Roundtrip test for PURL type: cpan", "test_group": "base", "test_type": "roundtrip", "input": "pkg:cpan/DROLSKY/DateTime@1.55", "expected_output": "pkg:cpan/DROLSKY/DateTime@1.55", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: cpan", "test_group": "base", "test_type": "build", "input": { "type": "cpan", "namespace": "DROLSKY", "name": "DateTime", "version": "1.55", "qualifiers": null, "subpath": null }, "expected_output": "pkg:cpan/DROLSKY/DateTime@1.55", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: cpan", "test_group": "base", "test_type": "parse", "input": "pkg:cpan/GDT/URI-PackageURL", "expected_output": { "type": "cpan", "namespace": "GDT", "name": "URI-PackageURL", "version": null, "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: cpan", "test_group": "base", "test_type": "roundtrip", "input": "pkg:cpan/GDT/URI-PackageURL", "expected_output": "pkg:cpan/GDT/URI-PackageURL", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: cpan", "test_group": "base", "test_type": "build", "input": { "type": "cpan", "namespace": "GDT", "name": "URI-PackageURL", "version": null, "qualifiers": null, "subpath": null }, "expected_output": "pkg:cpan/GDT/URI-PackageURL", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: cpan", "test_group": "base", "test_type": "parse", "input": "pkg:cpan/OALDERS/libwww-perl@6.76", "expected_output": { "type": "cpan", "namespace": "OALDERS", "name": "libwww-perl", "version": "6.76", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: cpan", "test_group": "base", "test_type": "roundtrip", "input": "pkg:cpan/OALDERS/libwww-perl@6.76", "expected_output": "pkg:cpan/OALDERS/libwww-perl@6.76", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: cpan", "test_group": "base", "test_type": "build", "input": { "type": "cpan", "namespace": "OALDERS", "name": "libwww-perl", "version": "6.76", "qualifiers": null, "subpath": null }, "expected_output": "pkg:cpan/OALDERS/libwww-perl@6.76", "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: cpan", "test_group": "base", "test_type": "roundtrip", "input": "pkg:cpan/DROLSKY/DateTime@1.55?repository_url=backpan.perl.org", "expected_output": "pkg:cpan/DROLSKY/DateTime@1.55?repository_url=backpan.perl.org", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: cpan", "test_group": "base", "test_type": "parse", "input": "pkg:cpan/DROLSKY/DateTime@1.55?repository_url=backpan.perl.org", "expected_output": { "type": "cpan", "namespace": "DROLSKY", "name": "DateTime", "version": "1.55", "qualifiers": { "repository_url": "backpan.perl.org" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: cpan", "test_group": "base", "test_type": "build", "input": { "type": "cpan", "namespace": "DROLSKY", "name": "DateTime", "version": "1.55", "qualifiers": { "repository_url": "backpan.perl.org" }, "subpath": null }, "expected_output": "pkg:cpan/DROLSKY/DateTime@1.55?repository_url=backpan.perl.org", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/nuget-test.json0000644000175000017500000000601115135504042020400 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "nuget names are case sensitive. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:Nuget/EnterpriseLibrary.Common@6.0.1304", "expected_output": "pkg:nuget/EnterpriseLibrary.Common@6.0.1304", "expected_failure": false, "expected_failure_reason": null }, { "description": "nuget names are case sensitive", "test_group": "base", "test_type": "parse", "input": "pkg:Nuget/EnterpriseLibrary.Common@6.0.1304", "expected_output": { "type": "nuget", "namespace": null, "name": "EnterpriseLibrary.Common", "version": "6.0.1304", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "nuget names are case sensitive. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:nuget/EnterpriseLibrary.Common@6.0.1304", "expected_output": "pkg:nuget/EnterpriseLibrary.Common@6.0.1304", "expected_failure": false, "expected_failure_reason": null }, { "description": "nuget names are case sensitive", "test_group": "base", "test_type": "build", "input": { "type": "nuget", "namespace": null, "name": "EnterpriseLibrary.Common", "version": "6.0.1304", "qualifiers": null, "subpath": null }, "expected_output": "pkg:nuget/EnterpriseLibrary.Common@6.0.1304", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: nuget", "test_group": "base", "test_type": "parse", "input": "pkg:nuget/EnterpriseLibrary.Common@6.0.1304", "expected_output": { "type": "nuget", "namespace": null, "name": "EnterpriseLibrary.Common", "version": "6.0.1304", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: nuget", "test_group": "base", "test_type": "roundtrip", "input": "pkg:nuget/EnterpriseLibrary.Common@6.0.1304", "expected_output": "pkg:nuget/EnterpriseLibrary.Common@6.0.1304", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: nuget", "test_group": "base", "test_type": "build", "input": { "type": "nuget", "namespace": null, "name": "EnterpriseLibrary.Common", "version": "6.0.1304", "qualifiers": null, "subpath": null }, "expected_output": "pkg:nuget/EnterpriseLibrary.Common@6.0.1304", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/npm-test.json0000644000175000017500000001630515135504042020057 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "npm can be scoped. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:npm/%40angular/animation@12.3.1", "expected_output": "pkg:npm/%40angular/animation@12.3.1", "expected_failure": false, "expected_failure_reason": null }, { "description": "npm can be scoped", "test_group": "base", "test_type": "parse", "input": "pkg:npm/%40angular/animation@12.3.1", "expected_output": { "type": "npm", "namespace": "@angular", "name": "animation", "version": "12.3.1", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "npm can be scoped. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:npm/%40angular/animation@12.3.1", "expected_output": "pkg:npm/%40angular/animation@12.3.1", "expected_failure": false, "expected_failure_reason": null }, { "description": "npm can be scoped", "test_group": "base", "test_type": "build", "input": { "type": "npm", "namespace": "@angular", "name": "animation", "version": "12.3.1", "qualifiers": null, "subpath": null }, "expected_output": "pkg:npm/%40angular/animation@12.3.1", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: npm", "test_group": "base", "test_type": "parse", "input": "pkg:npm/foobar@12.3.1", "expected_output": { "type": "npm", "namespace": null, "name": "foobar", "version": "12.3.1", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: npm", "test_group": "base", "test_type": "roundtrip", "input": "pkg:npm/foobar@12.3.1", "expected_output": "pkg:npm/foobar@12.3.1", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: npm", "test_group": "base", "test_type": "build", "input": { "type": "npm", "namespace": null, "name": "foobar", "version": "12.3.1", "qualifiers": null, "subpath": null }, "expected_output": "pkg:npm/foobar@12.3.1", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: npm", "test_group": "base", "test_type": "parse", "input": "pkg:npm/%40angular/animation@12.3.1", "expected_output": { "type": "npm", "namespace": "@angular", "name": "animation", "version": "12.3.1", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: npm", "test_group": "base", "test_type": "roundtrip", "input": "pkg:npm/%40angular/animation@12.3.1", "expected_output": "pkg:npm/%40angular/animation@12.3.1", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: npm", "test_group": "base", "test_type": "build", "input": { "type": "npm", "namespace": "@angular", "name": "animation", "version": "12.3.1", "qualifiers": null, "subpath": null }, "expected_output": "pkg:npm/%40angular/animation@12.3.1", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: npm", "test_group": "base", "test_type": "parse", "input": "pkg:npm/mypackage@12.4.5?vcs_url=git://host.com/path/to/repo.git%404345abcd34343", "expected_output": { "type": "npm", "namespace": null, "name": "mypackage", "version": "12.4.5", "qualifiers": { "vcs_url": "git://host.com/path/to/repo.git@4345abcd34343" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: npm", "test_group": "base", "test_type": "roundtrip", "input": "pkg:npm/mypackage@12.4.5?vcs_url=git://host.com/path/to/repo.git%404345abcd34343", "expected_output": "pkg:npm/mypackage@12.4.5?vcs_url=git:%2F%2Fhost.com%2Fpath%2Fto%2Frepo.git%404345abcd34343", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: npm", "test_group": "base", "test_type": "build", "input": { "type": "npm", "namespace": null, "name": "mypackage", "version": "12.4.5", "qualifiers": { "vcs_url": "git://host.com/path/to/repo.git@4345abcd34343" }, "subpath": null }, "expected_output": "pkg:npm/mypackage@12.4.5?vcs_url=git:%2F%2Fhost.com%2Fpath%2Fto%2Frepo.git%404345abcd34343", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid npm purl without version and with subpath, scope unencoded", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:npm/@babel/core#/googleapis/api/annotations/", "expected_output": "pkg:npm/%40babel/core#googleapis/api/annotations", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid npm purl without version and with subpath, scope unencoded", "test_group": "advanced", "test_type": "parse", "input": "pkg:npm/@babel/core#/googleapis/api/annotations/", "expected_output": { "type": "npm", "namespace": "@babel", "name": "core", "version": null, "qualifiers": null, "subpath": "googleapis/api/annotations" }, "expected_failure": false, "expected_failure_reason": null }, { "description": "valid npm purl without version and with subpath, scope unencoded", "test_group": "base", "test_type": "parse", "input": "pkg:npm/%40babel/core#/googleapis/api/annotations/", "expected_output": { "type": "npm", "namespace": "@babel", "name": "core", "version": null, "qualifiers": null, "subpath": "googleapis/api/annotations" }, "expected_failure": false, "expected_failure_reason": null }, { "description": "valid npm purl without namespace and with subpath", "test_group": "base", "test_type": "roundtrip", "input": "pkg:npm/core@2.0.1#/googleapis/api/annotations/", "expected_output": "pkg:npm/core@2.0.1#googleapis/api/annotations", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/generic-test.json0000644000175000017500000001117615135504042020702 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "Parse test for PURL type: generic", "test_group": "base", "test_type": "parse", "input": "pkg:generic/openssl@1.1.10g", "expected_output": { "type": "generic", "namespace": null, "name": "openssl", "version": "1.1.10g", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: generic", "test_group": "base", "test_type": "roundtrip", "input": "pkg:generic/openssl@1.1.10g", "expected_output": "pkg:generic/openssl@1.1.10g", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: generic", "test_group": "base", "test_type": "build", "input": { "type": "generic", "namespace": null, "name": "openssl", "version": "1.1.10g", "qualifiers": null, "subpath": null }, "expected_output": "pkg:generic/openssl@1.1.10g", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: generic", "test_group": "base", "test_type": "parse", "input": "pkg:generic/openssl@1.1.10g?download_url=https://openssl.org/source/openssl-1.1.0g.tar.gz&checksum=sha256:de4d501267da", "expected_output": { "type": "generic", "namespace": null, "name": "openssl", "version": "1.1.10g", "qualifiers": { "checksum": "sha256:de4d501267da", "download_url": "https://openssl.org/source/openssl-1.1.0g.tar.gz" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: generic", "test_group": "base", "test_type": "roundtrip", "input": "pkg:generic/openssl@1.1.10g?download_url=https://openssl.org/source/openssl-1.1.0g.tar.gz&checksum=sha256:de4d501267da", "expected_output": "pkg:generic/openssl@1.1.10g?checksum=sha256:de4d501267da&download_url=https:%2F%2Fopenssl.org%2Fsource%2Fopenssl-1.1.0g.tar.gz", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: generic", "test_group": "base", "test_type": "build", "input": { "type": "generic", "namespace": null, "name": "openssl", "version": "1.1.10g", "qualifiers": { "checksum": "sha256:de4d501267da", "download_url": "https://openssl.org/source/openssl-1.1.0g.tar.gz" }, "subpath": null }, "expected_output": "pkg:generic/openssl@1.1.10g?checksum=sha256:de4d501267da&download_url=https:%2F%2Fopenssl.org%2Fsource%2Fopenssl-1.1.0g.tar.gz", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: generic", "test_group": "base", "test_type": "parse", "input": "pkg:generic/bitwarderl?vcs_url=git%2Bhttps://git.fsfe.org/dxtr/bitwarderl%40cc55108da32", "expected_output": { "type": "generic", "namespace": null, "name": "bitwarderl", "version": null, "qualifiers": { "vcs_url": "git+https://git.fsfe.org/dxtr/bitwarderl@cc55108da32" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: generic", "test_group": "base", "test_type": "roundtrip", "input": "pkg:generic/bitwarderl?vcs_url=git%2Bhttps://git.fsfe.org/dxtr/bitwarderl%40cc55108da32", "expected_output": "pkg:generic/bitwarderl?vcs_url=git%2Bhttps:%2F%2Fgit.fsfe.org%2Fdxtr%2Fbitwarderl%40cc55108da32", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: generic", "test_group": "base", "test_type": "build", "input": { "type": "generic", "namespace": null, "name": "bitwarderl", "version": null, "qualifiers": { "vcs_url": "git+https://git.fsfe.org/dxtr/bitwarderl@cc55108da32" }, "subpath": null }, "expected_output": "pkg:generic/bitwarderl?vcs_url=git%2Bhttps:%2F%2Fgit.fsfe.org%2Fdxtr%2Fbitwarderl%40cc55108da32", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/qpkg-test.json0000644000175000017500000000547715135504042020237 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "Parse test for PURL type: qpkg", "test_group": "base", "test_type": "parse", "input": "pkg:qpkg/blackberry/com.qnx.sdp@7.0.0.SGA201702151847", "expected_output": { "type": "qpkg", "namespace": "blackberry", "name": "com.qnx.sdp", "version": "7.0.0.SGA201702151847", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: qpkg", "test_group": "base", "test_type": "roundtrip", "input": "pkg:qpkg/blackberry/com.qnx.sdp@7.0.0.SGA201702151847", "expected_output": "pkg:qpkg/blackberry/com.qnx.sdp@7.0.0.SGA201702151847", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: qpkg", "test_group": "base", "test_type": "build", "input": { "type": "qpkg", "namespace": "blackberry", "name": "com.qnx.sdp", "version": "7.0.0.SGA201702151847", "qualifiers": null, "subpath": null }, "expected_output": "pkg:qpkg/blackberry/com.qnx.sdp@7.0.0.SGA201702151847", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: qpkg", "test_group": "base", "test_type": "parse", "input": "pkg:qpkg/blackberry/com.qnx.qnx710.foo.bar.qux@0.0.4.01449T202205040833L", "expected_output": { "type": "qpkg", "namespace": "blackberry", "name": "com.qnx.qnx710.foo.bar.qux", "version": "0.0.4.01449T202205040833L", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: qpkg", "test_group": "base", "test_type": "roundtrip", "input": "pkg:qpkg/blackberry/com.qnx.qnx710.foo.bar.qux@0.0.4.01449T202205040833L", "expected_output": "pkg:qpkg/blackberry/com.qnx.qnx710.foo.bar.qux@0.0.4.01449T202205040833L", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: qpkg", "test_group": "base", "test_type": "build", "input": { "type": "qpkg", "namespace": "blackberry", "name": "com.qnx.qnx710.foo.bar.qux", "version": "0.0.4.01449T202205040833L", "qualifiers": null, "subpath": null }, "expected_output": "pkg:qpkg/blackberry/com.qnx.qnx710.foo.bar.qux@0.0.4.01449T202205040833L", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/composer-test.json0000644000175000017500000000723615135504042021117 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "valid packagist purl", "test_group": "base", "test_type": "roundtrip", "input": "pkg:composer/guzzlehttp/promises@2.0.2", "expected_output": "pkg:composer/guzzlehttp/promises@2.0.2", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid packagist purl", "test_group": "base", "test_type": "parse", "input": "pkg:composer/guzzlehttp/promises@2.0.2", "expected_output": { "type": "composer", "namespace": "guzzlehttp", "name": "promises", "version": "2.0.2", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "composer names are not case sensitive. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:composer/Laravel/Laravel@5.5.0", "expected_output": "pkg:composer/laravel/laravel@5.5.0", "expected_failure": false, "expected_failure_reason": null }, { "description": "composer names are not case sensitive", "test_group": "base", "test_type": "parse", "input": "pkg:composer/Laravel/Laravel@5.5.0", "expected_output": { "type": "composer", "namespace": "laravel", "name": "laravel", "version": "5.5.0", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "composer names are not case sensitive. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:composer/laravel/laravel@5.5.0", "expected_output": "pkg:composer/laravel/laravel@5.5.0", "expected_failure": false, "expected_failure_reason": null }, { "description": "composer names are not case sensitive", "test_group": "base", "test_type": "build", "input": { "type": "composer", "namespace": "laravel", "name": "laravel", "version": "5.5.0", "qualifiers": null, "subpath": null }, "expected_output": "pkg:composer/laravel/laravel@5.5.0", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: composer", "test_group": "base", "test_type": "parse", "input": "pkg:composer/laravel/laravel@5.5.0", "expected_output": { "type": "composer", "namespace": "laravel", "name": "laravel", "version": "5.5.0", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: composer", "test_group": "base", "test_type": "roundtrip", "input": "pkg:composer/laravel/laravel@5.5.0", "expected_output": "pkg:composer/laravel/laravel@5.5.0", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: composer", "test_group": "base", "test_type": "build", "input": { "type": "composer", "namespace": "laravel", "name": "laravel", "version": "5.5.0", "qualifiers": null, "subpath": null }, "expected_output": "pkg:composer/laravel/laravel@5.5.0", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/cargo-test.json0000644000175000017500000000677015135504042020365 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "Parse test for PURL type: cargo", "test_group": "base", "test_type": "parse", "input": "pkg:cargo/rand@0.7.2", "expected_output": { "type": "cargo", "namespace": null, "name": "rand", "version": "0.7.2", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: cargo", "test_group": "base", "test_type": "roundtrip", "input": "pkg:cargo/rand@0.7.2", "expected_output": "pkg:cargo/rand@0.7.2", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: cargo", "test_group": "base", "test_type": "build", "input": { "type": "cargo", "namespace": null, "name": "rand", "version": "0.7.2", "qualifiers": null, "subpath": null }, "expected_output": "pkg:cargo/rand@0.7.2", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: cargo", "test_group": "base", "test_type": "parse", "input": "pkg:cargo/clap@2.33.0", "expected_output": { "type": "cargo", "namespace": null, "name": "clap", "version": "2.33.0", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: cargo", "test_group": "base", "test_type": "roundtrip", "input": "pkg:cargo/clap@2.33.0", "expected_output": "pkg:cargo/clap@2.33.0", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: cargo", "test_group": "base", "test_type": "build", "input": { "type": "cargo", "namespace": null, "name": "clap", "version": "2.33.0", "qualifiers": null, "subpath": null }, "expected_output": "pkg:cargo/clap@2.33.0", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: cargo", "test_group": "base", "test_type": "parse", "input": "pkg:cargo/structopt@0.3.11", "expected_output": { "type": "cargo", "namespace": null, "name": "structopt", "version": "0.3.11", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: cargo", "test_group": "base", "test_type": "roundtrip", "input": "pkg:cargo/structopt@0.3.11", "expected_output": "pkg:cargo/structopt@0.3.11", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: cargo", "test_group": "base", "test_type": "build", "input": { "type": "cargo", "namespace": null, "name": "structopt", "version": "0.3.11", "qualifiers": null, "subpath": null }, "expected_output": "pkg:cargo/structopt@0.3.11", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/bazel-test.json0000644000175000017500000002233715135504042020364 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "bazel module with default registry", "test_group": "base", "test_type": "roundtrip", "input": "pkg:bazel/rules_java@7.8.0?repository_url=https://bcr.bazel.build/", "expected_output": "pkg:bazel/rules_java@7.8.0?repository_url=https:%2F%2Fbcr.bazel.build%2F", "expected_failure": false, "expected_failure_reason": null }, { "description": "bazel module with default registry", "test_group": "base", "test_type": "parse", "input": "pkg:bazel/rules_java@7.8.0?repository_url=https://bcr.bazel.build/", "expected_output": { "type": "bazel", "namespace": null, "name": "rules_java", "version": "7.8.0", "qualifiers": { "repository_url":"https://bcr.bazel.build/" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "bazel module with default registry", "test_group": "base", "test_type": "build", "input": { "type": "bazel", "namespace": null, "name": "rules_java", "version": "7.8.0", "qualifiers": null, "subpath": null }, "expected_output": "pkg:bazel/rules_java@7.8.0", "expected_failure": false, "expected_failure_reason": null }, { "description": "bazel module with custom registry", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:bazel/rules_java@7.8.0?repository_url=https://example.org/bazel-registry/", "expected_output": "pkg:bazel/rules_java@7.8.0?repository_url=https:%2F%2Fexample.org%2Fbazel-registry%2F", "expected_failure": false, "expected_failure_reason": null }, { "description": "bazel module with custom registry", "test_group": "base", "test_type": "parse", "input": "pkg:bazel/rules_java@7.8.0?repository_url=https://example.org/bazel-registry/", "expected_output": { "type": "bazel", "namespace": null, "name": "rules_java", "version": "7.8.0", "qualifiers": { "repository_url": "https://example.org/bazel-registry/" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "bazel module with custom registry", "test_group": "advanced", "test_type": "build", "input": { "type": "bazel", "namespace": null, "name": "rules_java", "version": "7.8.0", "qualifiers": { "repository_url": "https://example.org/bazel-registry" }, "subpath": null }, "expected_output": "pkg:bazel/rules_java@7.8.0?repository_url=https:%2F%2Fexample.org%2Fbazel-registry", "expected_failure": false, "expected_failure_reason": null }, { "description": "bazel module with relaxed semver version", "test_group": "base", "test_type": "roundtrip", "input": "pkg:bazel/curl@8.8.0.bcr.1", "expected_output": "pkg:bazel/curl@8.8.0.bcr.1", "expected_failure": false, "expected_failure_reason": null }, { "description": "bazel module with relaxed semver version", "test_group": "base", "test_type": "parse", "input": "pkg:bazel/curl@8.8.0.bcr.1", "expected_output": { "type": "bazel", "namespace": null, "name": "curl", "version": "8.8.0.bcr.1", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "bazel module with relaxed semver version", "test_group": "base", "test_type": "build", "input": { "type": "bazel", "namespace": null, "name": "curl", "version": "8.8.0.bcr.1", "qualifiers": null, "subpath": null }, "expected_output": "pkg:bazel/curl@8.8.0.bcr.1", "expected_failure": false, "expected_failure_reason": null }, { "description": "bazel module names are actually all lowercased, but this is not enforced by the PURL type spec for reasons", "test_group": "base", "test_type": "roundtrip", "input": "pkg:bazel/Curl@8.8.0.bcr.1", "expected_output": "pkg:bazel/Curl@8.8.0.bcr.1", "expected_failure": false, "expected_failure_reason": null }, { "description": "bazel module names are actually all lowercased, but this is not enforced by the PURL type spec for reasons", "test_group": "base", "test_type": "parse", "input": "pkg:bazel/Curl@8.8.0.bcr.1", "expected_output": { "type": "bazel", "namespace": null, "name": "Curl", "version": "8.8.0.bcr.1", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "bazel module names are actually all lowercased, but this is not enforced by the PURL type spec for reasons", "test_group": "base", "test_type": "build", "input": { "type": "bazel", "namespace": null, "name": "Curl", "version": "8.8.0.bcr.1", "qualifiers": null, "subpath": null }, "expected_output": "pkg:bazel/Curl@8.8.0.bcr.1", "expected_failure": false, "expected_failure_reason": null }, { "description": "bazel module with multi-segment package", "test_group": "base", "test_type": "roundtrip", "input": "pkg:bazel/rules_java@8.5.0#java/runfiles", "expected_output": "pkg:bazel/rules_java@8.5.0#java/runfiles", "expected_failure": false, "expected_failure_reason": null }, { "description": "bazel module with multi-segment package", "test_group": "base", "test_type": "parse", "input": "pkg:bazel/rules_java@8.5.0#java/runfiles", "expected_output": { "type": "bazel", "namespace": null, "name": "rules_java", "version": "8.5.0", "qualifiers": null, "subpath": "java/runfiles" }, "expected_failure": false, "expected_failure_reason": null }, { "description": "bazel module with multi-segment package", "test_group": "base", "test_type": "build", "input": { "type": "bazel", "namespace": null, "name": "rules_java", "version": "8.5.0", "qualifiers": null, "subpath": "java/runfiles" }, "expected_output": "pkg:bazel/rules_java@8.5.0#java/runfiles", "expected_failure": false, "expected_failure_reason": null }, { "description": "bazel module with target reference", "test_group": "base", "test_type": "roundtrip", "input": "pkg:bazel/rules_java@8.5.0#java/runfiles:runfiles", "expected_output": "pkg:bazel/rules_java@8.5.0#java/runfiles:runfiles", "expected_failure": false, "expected_failure_reason": null }, { "description": "bazel module with target reference", "test_group": "base", "test_type": "parse", "input": "pkg:bazel/rules_java@8.5.0#java/runfiles:runfiles", "expected_output": { "type": "bazel", "namespace": null, "name": "rules_java", "version": "8.5.0", "qualifiers": null, "subpath": "java/runfiles:runfiles" }, "expected_failure": false, "expected_failure_reason": null }, { "description": "bazel module with target reference", "test_group": "base", "test_type": "build", "input": { "type": "bazel", "namespace": null, "name": "rules_java", "version": "8.5.0", "qualifiers": null, "subpath": "java/runfiles:runfiles" }, "expected_output": "pkg:bazel/rules_java@8.5.0#java/runfiles:runfiles", "expected_failure": false, "expected_failure_reason": null }, { "description": "bazel module with single-segment package", "test_group": "base", "test_type": "roundtrip", "input": "pkg:bazel/rules_go@0.48.0#go", "expected_output": "pkg:bazel/rules_go@0.48.0#go", "expected_failure": false, "expected_failure_reason": null }, { "description": "bazel module with single-segment package", "test_group": "base", "test_type": "parse", "input": "pkg:bazel/rules_go@0.48.0#go", "expected_output": { "type": "bazel", "namespace": null, "name": "rules_go", "version": "0.48.0", "qualifiers": null, "subpath": "go" }, "expected_failure": false, "expected_failure_reason": null }, { "description": "bazel module with single-segment package", "test_group": "base", "test_type": "build", "input": { "type": "bazel", "namespace": null, "name": "rules_go", "version": "0.48.0", "qualifiers": null, "subpath": "go" }, "expected_output": "pkg:bazel/rules_go@0.48.0#go", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/julia-test.json0000644000175000017500000001477515135504042020402 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "valid julia purl for stdlib package with version and uuid", "test_group": "base", "test_type": "parse", "input": "pkg:julia/Dates@1.9.0?uuid=ade2ca70-3891-5945-98fb-dc099432e06a", "expected_output": { "type": "julia", "namespace": null, "name": "Dates", "version": "1.9.0", "qualifiers": { "uuid": "ade2ca70-3891-5945-98fb-dc099432e06a" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "valid julia purl for stdlib package with uuid but no version", "test_group": "base", "test_type": "parse", "input": "pkg:julia/Dates?uuid=ade2ca70-3891-5945-98fb-dc099432e06a", "expected_output": { "type": "julia", "namespace": null, "name": "Dates", "version": null, "qualifiers": { "uuid": "ade2ca70-3891-5945-98fb-dc099432e06a" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "valid julia purl, version and uuid", "test_group": "base", "test_type": "parse", "input": "pkg:julia/AWS@1.88.0?uuid=fbe9abb3-538b-5e4e-ba9e-bc94f4f92ebc", "expected_output": { "type": "julia", "namespace": null, "name": "AWS", "version": "1.88.0", "qualifiers": { "uuid": "fbe9abb3-538b-5e4e-ba9e-bc94f4f92ebc" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "valid julia purl with both uuid and repository_url qualifiers", "test_group": "base", "test_type": "parse", "input": "pkg:julia/RegisterQD@0.3.1?repository_url=https://github.com/HolyLab/HolyLabRegistry&uuid=ac24ea0c-1830-11e9-18d4-81f172323054", "expected_output": { "type": "julia", "namespace": null, "name": "RegisterQD", "version": "0.3.1", "qualifiers": { "repository_url": "https://github.com/HolyLab/HolyLabRegistry", "uuid": "ac24ea0c-1830-11e9-18d4-81f172323054" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "valid julia purl build test - stdlib package with version and uuid", "test_group": "base", "test_type": "build", "input": { "type": "julia", "namespace": null, "name": "Dates", "version": "1.9.0", "qualifiers": { "uuid": "ade2ca70-3891-5945-98fb-dc099432e06a" }, "subpath": null }, "expected_output": "pkg:julia/Dates@1.9.0?uuid=ade2ca70-3891-5945-98fb-dc099432e06a", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid julia purl build test with both qualifiers", "test_group": "base", "test_type": "build", "input": { "type": "julia", "namespace": null, "name": "RegisterQD", "version": "0.3.1", "qualifiers": { "repository_url": "https://github.com/HolyLab/HolyLabRegistry", "uuid": "ac24ea0c-1830-11e9-18d4-81f172323054" }, "subpath": null }, "expected_output": "pkg:julia/RegisterQD@0.3.1?repository_url=https:%2F%2Fgithub.com%2FHolyLab%2FHolyLabRegistry&uuid=ac24ea0c-1830-11e9-18d4-81f172323054", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid julia purl roundtrip test - basic package", "test_group": "base", "test_type": "roundtrip", "input": "pkg:julia/Dates@1.9.0?uuid=ade2ca70-3891-5945-98fb-dc099432e06a", "expected_output": "pkg:julia/Dates@1.9.0?uuid=ade2ca70-3891-5945-98fb-dc099432e06a", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid julia purl roundtrip test - multiple qualifiers", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:julia/RegisterQD@0.3.1?repository_url=https://github.com/HolyLab/HolyLabRegistry&uuid=ac24ea0c-1830-11e9-18d4-81f172323054", "expected_output": "pkg:julia/RegisterQD@0.3.1?repository_url=https:%2F%2Fgithub.com%2FHolyLab%2FHolyLabRegistry&uuid=ac24ea0c-1830-11e9-18d4-81f172323054", "expected_failure": false, "expected_failure_reason": null }, { "description": "invalid julia purl without name", "test_group": "base", "test_type": "parse", "input": "pkg:julia/@1.9.0", "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to parse a PURL from invalid purl input" }, { "description": "invalid julia purl with only type", "test_group": "base", "test_type": "parse", "input": "pkg:julia", "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to parse a PURL from invalid purl input" }, { "description": "invalid julia purl build test - null name", "test_group": "base", "test_type": "build", "input": { "type": "julia", "namespace": null, "name": null, "version": "1.9.0", "qualifiers": { "uuid": "ade2ca70-3891-5945-98fb-dc099432e06a" }, "subpath": null }, "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to build a PURL from invalid input components" }, { "description": "invalid julia purl build test - empty name", "test_group": "base", "test_type": "build", "input": { "type": "julia", "namespace": null, "name": "", "version": "1.9.0", "qualifiers": { "uuid": "ade2ca70-3891-5945-98fb-dc099432e06a" }, "subpath": null }, "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to build a PURL from invalid input components" }, { "description": "invalid julia purl for package without uuid", "test_group": "base", "test_type": "parse", "input": "pkg:julia/Dates", "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to parse a PURL from invalid purl input" } ] } URI-PackageURL-2.24/t/purl/types/maven-test.json0000644000175000017500000007013215135504042020371 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "valid maven purl. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:maven/org.apache.commons/io@1.3.4", "expected_output": "pkg:maven/org.apache.commons/io@1.3.4", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid maven purl", "test_group": "base", "test_type": "parse", "input": "pkg:maven/org.apache.commons/io@1.3.4", "expected_output": { "type": "maven", "namespace": "org.apache.commons", "name": "io", "version": "1.3.4", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "valid maven purl. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:maven/org.apache.commons/io@1.3.4", "expected_output": "pkg:maven/org.apache.commons/io@1.3.4", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid maven purl", "test_group": "base", "test_type": "build", "input": { "type": "maven", "namespace": "org.apache.commons", "name": "io", "version": "1.3.4", "qualifiers": null, "subpath": null }, "expected_output": "pkg:maven/org.apache.commons/io@1.3.4", "expected_failure": false, "expected_failure_reason": null }, { "description": "basic valid maven purl without version. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:maven/org.apache.commons/io", "expected_output": "pkg:maven/org.apache.commons/io", "expected_failure": false, "expected_failure_reason": null }, { "description": "basic valid maven purl without version", "test_group": "base", "test_type": "parse", "input": "pkg:maven/org.apache.commons/io", "expected_output": { "type": "maven", "namespace": "org.apache.commons", "name": "io", "version": null, "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "basic valid maven purl without version. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:maven/org.apache.commons/io", "expected_output": "pkg:maven/org.apache.commons/io", "expected_failure": false, "expected_failure_reason": null }, { "description": "basic valid maven purl without version", "test_group": "base", "test_type": "build", "input": { "type": "maven", "namespace": "org.apache.commons", "name": "io", "version": null, "qualifiers": null, "subpath": null }, "expected_output": "pkg:maven/org.apache.commons/io", "expected_failure": false, "expected_failure_reason": null }, { "description": "maven often uses qualifiers. Roundtrip an input purl to canonical using mixedcase type", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:Maven/org.apache.xmlgraphics/batik-anim@1.9.1?classifier=sources&repositorY_url=https://repo.spring.io/release", "expected_output": "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?classifier=sources&repository_url=https:%2F%2Frepo.spring.io%2Frelease", "expected_failure": false, "expected_failure_reason": null }, { "description": "maven often uses qualifiers here mixedcase type", "test_group": "advanced", "test_type": "parse", "input": "pkg:Maven/org.apache.xmlgraphics/batik-anim@1.9.1?classifier=sources&repositorY_url=https://repo.spring.io/release", "expected_output": { "type": "maven", "namespace": "org.apache.xmlgraphics", "name": "batik-anim", "version": "1.9.1", "qualifiers": { "classifier": "sources", "repository_url": "https://repo.spring.io/release" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "maven often uses qualifiers. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?classifier=sources&repository_url=repo.spring.io/release", "expected_output": "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?classifier=sources&repository_url=repo.spring.io%2Frelease", "expected_failure": false, "expected_failure_reason": null }, { "description": "maven often uses qualifiers", "test_group": "base", "test_type": "build", "input": { "type": "maven", "namespace": "org.apache.xmlgraphics", "name": "batik-anim", "version": "1.9.1", "qualifiers": { "classifier": "sources", "repository_url": "repo.spring.io/release" }, "subpath": null }, "expected_output": "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?classifier=sources&repository_url=repo.spring.io%2Frelease", "expected_failure": false, "expected_failure_reason": null }, { "description": "maven pom reference. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:Maven/org.apache.xmlgraphics/batik-anim@1.9.1?type=pom&repositorY_url=repo.spring.io/release", "expected_output": "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?repository_url=repo.spring.io%2Frelease&type=pom", "expected_failure": false, "expected_failure_reason": null }, { "description": "maven pom reference", "test_group": "base", "test_type": "parse", "input": "pkg:Maven/org.apache.xmlgraphics/batik-anim@1.9.1?type=pom&repositorY_url=repo.spring.io/release", "expected_output": { "type": "maven", "namespace": "org.apache.xmlgraphics", "name": "batik-anim", "version": "1.9.1", "qualifiers": { "type": "pom", "repository_url": "repo.spring.io/release" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "maven pom reference. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?type=war&repository_url=https://repo.spring.io/release", "expected_output": "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?repository_url=https:%2F%2Frepo.spring.io%2Frelease&type=war", "expected_failure": false, "expected_failure_reason": null }, { "description": "maven pom reference", "test_group": "base", "test_type": "build", "input": { "type": "maven", "namespace": "org.apache.xmlgraphics", "name": "batik-anim", "version": "1.9.1", "qualifiers": { "classifier": "foo", "repository_url": "repo.spring.io/release" }, "subpath": null }, "expected_output": "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?classifier=foo&repository_url=repo.spring.io%2Frelease", "expected_failure": false, "expected_failure_reason": null }, { "description": "maven can come with a type qualifier. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:Maven/net.sf.jacob-project/jacob@1.14.3?classifier=x86&type=dll", "expected_output": "pkg:maven/net.sf.jacob-project/jacob@1.14.3?classifier=x86&type=dll", "expected_failure": false, "expected_failure_reason": null }, { "description": "maven can come with a type qualifier", "test_group": "base", "test_type": "parse", "input": "pkg:Maven/net.sf.jacob-project/jacob@1.14.3?classifier=x86&type=dll", "expected_output": { "type": "maven", "namespace": "net.sf.jacob-project", "name": "jacob", "version": "1.14.3", "qualifiers": { "classifier": "x86", "type": "dll" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "maven can come with a type qualifier. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:maven/net.sf.jacob-project/jacob@1.14.3?classifier=x86&type=dll", "expected_output": "pkg:maven/net.sf.jacob-project/jacob@1.14.3?classifier=x86&type=dll", "expected_failure": false, "expected_failure_reason": null }, { "description": "maven can come with a type qualifier", "test_group": "base", "test_type": "build", "input": { "type": "maven", "namespace": "net.sf.jacob-project", "name": "jacob", "version": "1.14.3", "qualifiers": { "classifier": "x86", "type": "dll" }, "subpath": null }, "expected_output": "pkg:maven/net.sf.jacob-project/jacob@1.14.3?classifier=x86&type=dll", "expected_failure": false, "expected_failure_reason": null }, { "description": "slash / after type is not significant. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:/maven/org.apache.commons/io", "expected_output": "pkg:maven/org.apache.commons/io", "expected_failure": false, "expected_failure_reason": null }, { "description": "slash / after type is not significant", "test_group": "base", "test_type": "parse", "input": "pkg:/maven/org.apache.commons/io", "expected_output": { "type": "maven", "namespace": "org.apache.commons", "name": "io", "version": null, "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "slash / after type is not significant. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:maven/org.apache.commons/io", "expected_output": "pkg:maven/org.apache.commons/io", "expected_failure": false, "expected_failure_reason": null }, { "description": "slash / after type is not significant", "test_group": "base", "test_type": "build", "input": { "type": "maven", "namespace": "org.apache.commons", "name": "io", "version": null, "qualifiers": null, "subpath": null }, "expected_output": "pkg:maven/org.apache.commons/io", "expected_failure": false, "expected_failure_reason": null }, { "description": "double slash // after type is not significant. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg://maven/org.apache.commons/io", "expected_output": "pkg:maven/org.apache.commons/io", "expected_failure": false, "expected_failure_reason": null }, { "description": "double slash // after type is not significant", "test_group": "base", "test_type": "parse", "input": "pkg://maven/org.apache.commons/io", "expected_output": { "type": "maven", "namespace": "org.apache.commons", "name": "io", "version": null, "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "double slash // after type is not significant. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:maven/org.apache.commons/io", "expected_output": "pkg:maven/org.apache.commons/io", "expected_failure": false, "expected_failure_reason": null }, { "description": "double slash // after type is not significant", "test_group": "base", "test_type": "build", "input": { "type": "maven", "namespace": "org.apache.commons", "name": "io", "version": null, "qualifiers": null, "subpath": null }, "expected_output": "pkg:maven/org.apache.commons/io", "expected_failure": false, "expected_failure_reason": null }, { "description": "slash /// after type is not significant. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:///maven/org.apache.commons/io", "expected_output": "pkg:maven/org.apache.commons/io", "expected_failure": false, "expected_failure_reason": null }, { "description": "slash /// after type is not significant", "test_group": "base", "test_type": "parse", "input": "pkg:///maven/org.apache.commons/io", "expected_output": { "type": "maven", "namespace": "org.apache.commons", "name": "io", "version": null, "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "slash /// after type is not significant. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:maven/org.apache.commons/io", "expected_output": "pkg:maven/org.apache.commons/io", "expected_failure": false, "expected_failure_reason": null }, { "description": "slash /// after type is not significant", "test_group": "base", "test_type": "build", "input": { "type": "maven", "namespace": "org.apache.commons", "name": "io", "version": null, "qualifiers": null, "subpath": null }, "expected_output": "pkg:maven/org.apache.commons/io", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid maven purl with case sensitive namespace and name. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:maven/HTTPClient/HTTPClient@0.3-3", "expected_output": "pkg:maven/HTTPClient/HTTPClient@0.3-3", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid maven purl with case sensitive namespace and name", "test_group": "base", "test_type": "parse", "input": "pkg:maven/HTTPClient/HTTPClient@0.3-3", "expected_output": { "type": "maven", "namespace": "HTTPClient", "name": "HTTPClient", "version": "0.3-3", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "valid maven purl with case sensitive namespace and name. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:maven/HTTPClient/HTTPClient@0.3-3", "expected_output": "pkg:maven/HTTPClient/HTTPClient@0.3-3", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid maven purl with case sensitive namespace and name", "test_group": "base", "test_type": "build", "input": { "type": "maven", "namespace": "HTTPClient", "name": "HTTPClient", "version": "0.3-3", "qualifiers": null, "subpath": null }, "expected_output": "pkg:maven/HTTPClient/HTTPClient@0.3-3", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid maven purl containing a space in the version and qualifier. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:maven/mygroup/myartifact@1.0.0%20Final?mykey=my%20value", "expected_output": "pkg:maven/mygroup/myartifact@1.0.0%20Final?mykey=my%20value", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid maven purl containing a space in the version and qualifier", "test_group": "base", "test_type": "parse", "input": "pkg:maven/mygroup/myartifact@1.0.0%20Final?mykey=my%20value", "expected_output": { "type": "maven", "namespace": "mygroup", "name": "myartifact", "version": "1.0.0 Final", "qualifiers": { "mykey": "my value" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "valid maven purl containing a space in the version and qualifier. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:maven/mygroup/myartifact@1.0.0%20Final?mykey=my%20value", "expected_output": "pkg:maven/mygroup/myartifact@1.0.0%20Final?mykey=my%20value", "expected_failure": false, "expected_failure_reason": null }, { "description": "valid maven purl containing a space in the version and qualifier", "test_group": "base", "test_type": "build", "input": { "type": "maven", "namespace": "mygroup", "name": "myartifact", "version": "1.0.0 Final", "qualifiers": { "mykey": "my value" }, "subpath": null }, "expected_output": "pkg:maven/mygroup/myartifact@1.0.0%20Final?mykey=my%20value", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: maven", "test_group": "base", "test_type": "parse", "input": "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1", "expected_output": { "type": "maven", "namespace": "org.apache.xmlgraphics", "name": "batik-anim", "version": "1.9.1", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: maven", "test_group": "base", "test_type": "roundtrip", "input": "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1", "expected_output": "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: maven", "test_group": "base", "test_type": "build", "input": { "type": "maven", "namespace": "org.apache.xmlgraphics", "name": "batik-anim", "version": "1.9.1", "qualifiers": null, "subpath": null }, "expected_output": "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: maven", "test_group": "base", "test_type": "parse", "input": "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?type=pom", "expected_output": { "type": "maven", "namespace": "org.apache.xmlgraphics", "name": "batik-anim", "version": "1.9.1", "qualifiers": { "type": "pom" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: maven", "test_group": "base", "test_type": "roundtrip", "input": "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?type=pom", "expected_output": "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?type=pom", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: maven", "test_group": "base", "test_type": "build", "input": { "type": "maven", "namespace": "org.apache.xmlgraphics", "name": "batik-anim", "version": "1.9.1", "qualifiers": { "type": "pom" }, "subpath": null }, "expected_output": "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?type=pom", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: maven", "test_group": "base", "test_type": "parse", "input": "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?classifier=sources", "expected_output": { "type": "maven", "namespace": "org.apache.xmlgraphics", "name": "batik-anim", "version": "1.9.1", "qualifiers": { "classifier": "sources" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: maven", "test_group": "base", "test_type": "roundtrip", "input": "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?classifier=sources", "expected_output": "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?classifier=sources", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: maven", "test_group": "base", "test_type": "build", "input": { "type": "maven", "namespace": "org.apache.xmlgraphics", "name": "batik-anim", "version": "1.9.1", "qualifiers": { "classifier": "sources" }, "subpath": null }, "expected_output": "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?classifier=sources", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: maven", "test_group": "base", "test_type": "parse", "input": "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?type=zip&classifier=dist", "expected_output": { "type": "maven", "namespace": "org.apache.xmlgraphics", "name": "batik-anim", "version": "1.9.1", "qualifiers": { "classifier": "dist", "type": "zip" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: maven", "test_group": "base", "test_type": "roundtrip", "input": "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?type=zip&classifier=dist", "expected_output": "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?classifier=dist&type=zip", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: maven", "test_group": "base", "test_type": "build", "input": { "type": "maven", "namespace": "org.apache.xmlgraphics", "name": "batik-anim", "version": "1.9.1", "qualifiers": { "classifier": "dist", "type": "zip" }, "subpath": null }, "expected_output": "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?classifier=dist&type=zip", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: maven", "test_group": "base", "test_type": "parse", "input": "pkg:maven/net.sf.jacob-projec/jacob@1.14.3?classifier=x86&type=dll", "expected_output": { "type": "maven", "namespace": "net.sf.jacob-projec", "name": "jacob", "version": "1.14.3", "qualifiers": { "classifier": "x86", "type": "dll" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: maven", "test_group": "base", "test_type": "roundtrip", "input": "pkg:maven/net.sf.jacob-projec/jacob@1.14.3?classifier=x86&type=dll", "expected_output": "pkg:maven/net.sf.jacob-projec/jacob@1.14.3?classifier=x86&type=dll", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: maven", "test_group": "base", "test_type": "build", "input": { "type": "maven", "namespace": "net.sf.jacob-projec", "name": "jacob", "version": "1.14.3", "qualifiers": { "classifier": "x86", "type": "dll" }, "subpath": null }, "expected_output": "pkg:maven/net.sf.jacob-projec/jacob@1.14.3?classifier=x86&type=dll", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: maven", "test_group": "base", "test_type": "parse", "input": "pkg:maven/net.sf.jacob-projec/jacob@1.14.3?classifier=x64&type=dll", "expected_output": { "type": "maven", "namespace": "net.sf.jacob-projec", "name": "jacob", "version": "1.14.3", "qualifiers": { "classifier": "x64", "type": "dll" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: maven", "test_group": "base", "test_type": "roundtrip", "input": "pkg:maven/net.sf.jacob-projec/jacob@1.14.3?classifier=x64&type=dll", "expected_output": "pkg:maven/net.sf.jacob-projec/jacob@1.14.3?classifier=x64&type=dll", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: maven", "test_group": "base", "test_type": "build", "input": { "type": "maven", "namespace": "net.sf.jacob-projec", "name": "jacob", "version": "1.14.3", "qualifiers": { "classifier": "x64", "type": "dll" }, "subpath": null }, "expected_output": "pkg:maven/net.sf.jacob-projec/jacob@1.14.3?classifier=x64&type=dll", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: maven", "test_group": "base", "test_type": "parse", "input": "pkg:maven/groovy/groovy@1.0?repository_url=https://maven.google.com", "expected_output": { "type": "maven", "namespace": "groovy", "name": "groovy", "version": "1.0", "qualifiers": { "repository_url": "https://maven.google.com" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: maven", "test_group": "base", "test_type": "roundtrip", "input": "pkg:maven/groovy/groovy@1.0?repository_url=https://maven.google.com", "expected_output": "pkg:maven/groovy/groovy@1.0?repository_url=https:%2F%2Fmaven.google.com", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: maven", "test_group": "base", "test_type": "build", "input": { "type": "maven", "namespace": "groovy", "name": "groovy", "version": "1.0", "qualifiers": { "repository_url": "https://maven.google.com" }, "subpath": null }, "expected_output": "pkg:maven/groovy/groovy@1.0?repository_url=https:%2F%2Fmaven.google.com", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/gem-test.json0000644000175000017500000001044015135504042020027 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "Ruby gems can use qualifiers. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:gem/jruby-launcher@1.1.2?Platform=java", "expected_output": "pkg:gem/jruby-launcher@1.1.2?platform=java", "expected_failure": false, "expected_failure_reason": null }, { "description": "Ruby gems can use qualifiers", "test_group": "base", "test_type": "parse", "input": "pkg:gem/jruby-launcher@1.1.2?Platform=java", "expected_output": { "type": "gem", "namespace": null, "name": "jruby-launcher", "version": "1.1.2", "qualifiers": { "platform": "java" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Ruby gems can use qualifiers. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:gem/jruby-launcher@1.1.2?platform=java", "expected_output": "pkg:gem/jruby-launcher@1.1.2?platform=java", "expected_failure": false, "expected_failure_reason": null }, { "description": "Ruby gems can use qualifiers", "test_group": "base", "test_type": "build", "input": { "type": "gem", "namespace": null, "name": "jruby-launcher", "version": "1.1.2", "qualifiers": { "platform": "java" }, "subpath": null }, "expected_output": "pkg:gem/jruby-launcher@1.1.2?platform=java", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: gem", "test_group": "base", "test_type": "parse", "input": "pkg:gem/ruby-advisory-db-check@0.12.4", "expected_output": { "type": "gem", "namespace": null, "name": "ruby-advisory-db-check", "version": "0.12.4", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: gem", "test_group": "base", "test_type": "roundtrip", "input": "pkg:gem/ruby-advisory-db-check@0.12.4", "expected_output": "pkg:gem/ruby-advisory-db-check@0.12.4", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: gem", "test_group": "base", "test_type": "build", "input": { "type": "gem", "namespace": null, "name": "ruby-advisory-db-check", "version": "0.12.4", "qualifiers": null, "subpath": null }, "expected_output": "pkg:gem/ruby-advisory-db-check@0.12.4", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: gem", "test_group": "base", "test_type": "parse", "input": "pkg:gem/jruby-launcher@1.1.2?platform=java", "expected_output": { "type": "gem", "namespace": null, "name": "jruby-launcher", "version": "1.1.2", "qualifiers": { "platform": "java" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: gem", "test_group": "base", "test_type": "roundtrip", "input": "pkg:gem/jruby-launcher@1.1.2?platform=java", "expected_output": "pkg:gem/jruby-launcher@1.1.2?platform=java", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: gem", "test_group": "base", "test_type": "build", "input": { "type": "gem", "namespace": null, "name": "jruby-launcher", "version": "1.1.2", "qualifiers": { "platform": "java" }, "subpath": null }, "expected_output": "pkg:gem/jruby-launcher@1.1.2?platform=java", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/pypi-test.json0000644000175000017500000001556615135504042020256 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "pypi names have special rules and not case sensitive. Roundtrip an input purl to canonical.", "test_group": "advanced", "test_type": "roundtrip", "input": "pkg:PYPI/Django_package@1.11.1.dev1", "expected_output": "pkg:pypi/django-package@1.11.1.dev1", "expected_failure": false, "expected_failure_reason": null }, { "description": "pypi names have special rules and not case sensitive", "test_group": "base", "test_type": "parse", "input": "pkg:PYPI/Django_package@1.11.1.dev1", "expected_output": { "type": "pypi", "namespace": null, "name": "django-package", "version": "1.11.1.dev1", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "pypi names have special rules and not case sensitive. Roundtrip a canonical input to canonical output.", "test_group": "base", "test_type": "roundtrip", "input": "pkg:pypi/django-package@1.11.1.dev1", "expected_output": "pkg:pypi/django-package@1.11.1.dev1", "expected_failure": false, "expected_failure_reason": null }, { "description": "pypi names have special rules and not case sensitive", "test_group": "base", "test_type": "build", "input": { "type": "pypi", "namespace": null, "name": "django-package", "version": "1.11.1.dev1", "qualifiers": null, "subpath": null }, "expected_output": "pkg:pypi/django-package@1.11.1.dev1", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: pypi", "test_group": "base", "test_type": "parse", "input": "pkg:pypi/django@1.11.1", "expected_output": { "type": "pypi", "namespace": null, "name": "django", "version": "1.11.1", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: pypi", "test_group": "base", "test_type": "roundtrip", "input": "pkg:pypi/django@1.11.1", "expected_output": "pkg:pypi/django@1.11.1", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: pypi", "test_group": "base", "test_type": "build", "input": { "type": "pypi", "namespace": null, "name": "django", "version": "1.11.1", "qualifiers": null, "subpath": null }, "expected_output": "pkg:pypi/django@1.11.1", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: pypi", "test_group": "base", "test_type": "parse", "input": "pkg:pypi/django@1.11.1?file_name=Django-1.11.1.tar.gz", "expected_output": { "type": "pypi", "namespace": null, "name": "django", "version": "1.11.1", "qualifiers": { "file_name": "Django-1.11.1.tar.gz" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: pypi", "test_group": "base", "test_type": "roundtrip", "input": "pkg:pypi/django@1.11.1?file_name=Django-1.11.1.tar.gz", "expected_output": "pkg:pypi/django@1.11.1?file_name=Django-1.11.1.tar.gz", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: pypi", "test_group": "base", "test_type": "build", "input": { "type": "pypi", "namespace": null, "name": "django", "version": "1.11.1", "qualifiers": { "file_name": "Django-1.11.1.tar.gz" }, "subpath": null }, "expected_output": "pkg:pypi/django@1.11.1?file_name=Django-1.11.1.tar.gz", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: pypi", "test_group": "base", "test_type": "parse", "input": "pkg:pypi/django@1.11.1?file_name=Django-1.11.1-py2.py3-none-any.whl", "expected_output": { "type": "pypi", "namespace": null, "name": "django", "version": "1.11.1", "qualifiers": { "file_name": "Django-1.11.1-py2.py3-none-any.whl" }, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: pypi", "test_group": "base", "test_type": "roundtrip", "input": "pkg:pypi/django@1.11.1?file_name=Django-1.11.1-py2.py3-none-any.whl", "expected_output": "pkg:pypi/django@1.11.1?file_name=Django-1.11.1-py2.py3-none-any.whl", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: pypi", "test_group": "base", "test_type": "build", "input": { "type": "pypi", "namespace": null, "name": "django", "version": "1.11.1", "qualifiers": { "file_name": "Django-1.11.1-py2.py3-none-any.whl" }, "subpath": null }, "expected_output": "pkg:pypi/django@1.11.1?file_name=Django-1.11.1-py2.py3-none-any.whl", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL type: pypi", "test_group": "base", "test_type": "parse", "input": "pkg:pypi/django-allauth@12.23", "expected_output": { "type": "pypi", "namespace": null, "name": "django-allauth", "version": "12.23", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL type: pypi", "test_group": "base", "test_type": "roundtrip", "input": "pkg:pypi/django-allauth@12.23", "expected_output": "pkg:pypi/django-allauth@12.23", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL type: pypi", "test_group": "base", "test_type": "build", "input": { "type": "pypi", "namespace": null, "name": "django-allauth", "version": "12.23", "qualifiers": null, "subpath": null }, "expected_output": "pkg:pypi/django-allauth@12.23", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/purl/types/otp-test.json0000644000175000017500000001004615135504042020063 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "Parse test for PURL", "test_group": "base", "test_type": "parse", "input": "pkg:otp/asn1@5.4.1?arch=amd64&platform=linux&repository_url=https:%2F%2Fgithub.com%2Ferlang%2Fotp&vcs_url=git%2Bhttps:%2F%2Fgithub.com%2Ferlang%2Fotp.git#src/asn1ct.erl", "expected_output": { "type": "otp", "namespace": null, "name": "asn1", "version": "5.4.1", "qualifiers": { "platform": "linux", "arch": "amd64", "repository_url": "https://github.com/erlang/otp", "vcs_url": "git+https://github.com/erlang/otp.git" }, "subpath": "src/asn1ct.erl" }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL", "test_group": "base", "test_type": "roundtrip", "input": "pkg:otp/asn1@5.4.1?arch=amd64&platform=linux&repository_url=https://github.com/erlang/otp&vcs_url=git%2Bhttps://github.com/erlang/otp.git#src/asn1ct.erl", "expected_output": "pkg:otp/asn1@5.4.1?arch=amd64&platform=linux&repository_url=https:%2F%2Fgithub.com%2Ferlang%2Fotp&vcs_url=git%2Bhttps:%2F%2Fgithub.com%2Ferlang%2Fotp.git#src/asn1ct.erl", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL", "test_group": "base", "test_type": "build", "input": { "type": "otp", "namespace": null, "name": "asn1", "version": "5.4.1", "qualifiers": { "platform": "linux", "arch": "amd64", "repository_url": "https://github.com/erlang/otp", "vcs_url": "git+https://github.com/erlang/otp.git" }, "subpath": "src/asn1ct.erl" }, "expected_output": "pkg:otp/asn1@5.4.1?arch=amd64&platform=linux&repository_url=https:%2F%2Fgithub.com%2Ferlang%2Fotp&vcs_url=git%2Bhttps:%2F%2Fgithub.com%2Ferlang%2Fotp.git#src/asn1ct.erl", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL", "test_group": "base", "test_type": "parse", "input": "pkg:otp/hex@2.1.1", "expected_output": { "type": "otp", "namespace": null, "name": "hex", "version": "2.1.1", "qualifiers": null, "subpath": null }, "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip test for PURL", "test_group": "base", "test_type": "roundtrip", "input": "pkg:otp/hex@2.1.1", "expected_output": "pkg:otp/hex@2.1.1", "expected_failure": false, "expected_failure_reason": null }, { "description": "Build test for PURL", "test_group": "base", "test_type": "build", "input": { "type": "otp", "namespace": null, "name": "hex", "version": "2.1.1", "qualifiers": null, "subpath": null }, "expected_output": "pkg:otp/hex@2.1.1", "expected_failure": false, "expected_failure_reason": null }, { "description": "Parse test for PURL", "test_group": "base", "test_type": "parse", "input": "pkg:otp/namespace/hex@2.1.1", "expected_failure": true, "expected_failure_reason": "Should fail to parse an OTP PURL containing a prohibited namespace component" }, { "description": "Build test for PURL", "test_group": "base", "test_type": "build", "input": { "type": "otp", "namespace": "namespace", "name": "hex", "version": "2.1.1", "qualifiers": null, "subpath": null }, "expected_failure": true, "expected_failure_reason": "Should fail to build an OTP PURL containing a prohibited namespace component" } ] } URI-PackageURL-2.24/t/purl/spec/0000755000175000017500000000000015135504367015210 5ustar peppepeppeURI-PackageURL-2.24/t/purl/spec/specification-test.json0000644000175000017500000001575315135504042021701 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", "tests": [ { "description": "a scheme is always required", "test_group": "base", "test_type": "parse", "input": "EnterpriseLibrary.Common@6.0.1304", "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to parse a PURL from invalid purl input" }, { "description": "a scheme is always required", "test_group": "base", "test_type": "parse", "input": "EnterpriseLibrary.Common@6.0.1304", "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to parse a PURL from invalid canonical purl input" }, { "description": "a type is always required", "test_group": "base", "test_type": "parse", "input": "pkg:EnterpriseLibrary.Common@6.0.1304", "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to parse a PURL from invalid purl input" }, { "description": "a type is always required", "test_group": "base", "test_type": "parse", "input": "pkg:EnterpriseLibrary.Common@6.0.1304", "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to parse a PURL from invalid canonical purl input" }, { "description": "a type is always required", "test_group": "base", "test_type": "build", "input": { "type": null, "namespace": null, "name": "EnterpriseLibrary.Common", "version": "6.0.1304", "qualifiers": null, "subpath": null }, "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to build a PURL from invalid input components" }, { "description": "check for invalid character in type", "test_group": "base", "test_type": "parse", "input": "pkg:n&g?inx/nginx@0.8.9", "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to parse a PURL from invalid purl input" }, { "description": "check for null type", "test_group": "base", "test_type": "build", "input": { "type": null, "namespace": null, "name": "nginx", "version": "0.8.9", "qualifiers": null, "subpath": null }, "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to build a PURL from null type" }, { "description": "check for type that starts with number", "test_group": "base", "test_type": "parse", "input": "pkg:3nginx/nginx@0.8.9", "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to parse a PURL from invalid purl type (cannot start with number)" }, { "description": "check for type that starts with number", "test_group": "base", "test_type": "build", "input": { "type": null, "namespace": null, "name": "nginx", "version": "0.8.9", "qualifiers": null, "subpath": null }, "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to build a PURL from invalid input components" }, { "description": "check for colon in type", "test_group": "base", "test_type": "parse", "input": "pkg:nginx:a/nginx@0.8.9", "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to parse a PURL from invalid purl input" }, { "description": "check for colon in type", "test_group": "base", "test_type": "build", "input": { "type": null, "namespace": null, "name": "nginx", "version": "0.8.9", "qualifiers": null, "subpath": null }, "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to build a PURL from invalid input components" }, { "description": "checks for invalid qualifier keys", "test_group": "base", "test_type": "parse", "input": "pkg:npm/myartifact@1.0.0?in%20production=true", "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to parse a PURL from invalid purl input" }, { "description": "checks for invalid qualifier keys", "test_group": "base", "test_type": "build", "input": { "type": "npm", "namespace": null, "name": "myartifact", "version": "1.0.0", "qualifiers": { "in production": "true" }, "subpath": null }, "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to build a PURL from invalid input components" }, { "description": "a name is required", "test_group": "base", "test_type": "parse", "input": "pkg:maven/@1.3.4", "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to parse a PURL from invalid purl input" }, { "description": "a name is required", "test_group": "base", "test_type": "build", "input": { "type": "maven", "namespace": null, "name": null, "version": null, "qualifiers": null, "subpath": null }, "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to build a PURL from invalid input components" }, { "description": "invalid encoded colon : between scheme and type", "test_group": "base", "test_type": "parse", "input": "pkg%3Amaven/org.apache.commons/io", "expected_output": null, "expected_failure": true, "expected_failure_reason": "Should fail to parse a PURL from invalid purl input" }, { "description": "Build with multiple checksum", "test_group": "base", "test_type": "build", "input": { "type": "generic", "namespace": null, "name": "openssl", "version": "1.1.10g", "qualifiers": { "checksum": "sha1:ad9503c3e994a4f,sha256:41bf9088b3a1e6c1ef1d" }, "subpath": null }, "expected_output": "pkg:generic/openssl@1.1.10g?checksum=sha1:ad9503c3e994a4f%2Csha256:41bf9088b3a1e6c1ef1d", "expected_failure": false, "expected_failure_reason": null }, { "description": "Roundtrip with multiple checksum", "test_group": "base", "test_type": "roundtrip", "input": "pkg:generic/bitwarderl?checksum=sha1:ad9503c3e994a4f%2Csha256:41bf9088b3a1e6c1ef1d", "expected_output": "pkg:generic/bitwarderl?checksum=sha1:ad9503c3e994a4f%2Csha256:41bf9088b3a1e6c1ef1d", "expected_failure": false, "expected_failure_reason": null } ] } URI-PackageURL-2.24/t/30-util.t0000644000175000017500000001110215135504042014637 0ustar peppepeppe#!perl -T use strict; use warnings; use Test::More; use URI::PackageURL::Util qw(purl_to_urls); #<<< my @tests = ( { purl => 'pkg:cpan/GDT/URI-PackageURL@2.01', download => 'https://www.cpan.org/authors/id/G/GD/GDT/URI-PackageURL-2.01.tar.gz', repository => 'https://metacpan.org/release/GDT/URI-PackageURL-2.01' }, { purl => 'pkg:github/package-url/purl-spec@40d01e26f9ae0af6b50a1309e6b089c14d6d2244', repository => 'https://github.com/package-url/purl-spec', download => 'https://github.com/package-url/purl-spec/archive/40d01e26f9ae0af6b50a1309e6b089c14d6d2244.tar.gz', }, { purl => 'pkg:gitlab/gitlab-org/gitlab-runner@v16.0.2', download => 'https://gitlab.com/gitlab-org/gitlab-runner/-/archive/v16.0.2/gitlab-runner-v16.0.2.tar.gz', repository => 'https://gitlab.com/gitlab-org/gitlab-runner' }, { purl => 'pkg:bitbucket/birkenfeld/pygments-main@244fd47e07d1014f0aed9c', download => 'https://bitbucket.org/birkenfeld/pygments-main/get/244fd47e07d1014f0aed9c.tar.gz', repository => 'https://bitbucket.org/birkenfeld/pygments-main' }, { purl => 'pkg:gem/ruby-advisory-db-check@0.0.4', repository => 'https://rubygems.org/gems/ruby-advisory-db-check/versions/0.0.4', download => 'https://rubygems.org/downloads/ruby-advisory-db-check-0.0.4.gem' }, { purl => 'pkg:cargo/rand@0.7.2', repository => 'https://crates.io/crates/rand/0.7.2', download => 'https://crates.io/api/v1/crates/rand/0.7.2/download' }, { purl => 'pkg:npm/%40angular/animations@12.2.17', repository => 'https://www.npmjs.com/package/@angular/animations/v/12.2.17', download => 'https://registry.npmjs.org/@angular/animations/-/animations-12.2.17.tgz' }, { purl => 'pkg:nuget/EnterpriseLibrary.Common@6.0.1304', repository => 'https://www.nuget.org/packages/EnterpriseLibrary.Common/6.0.1304', download => 'https://www.nuget.org/api/v2/package/EnterpriseLibrary.Common/6.0.1304' }, { purl => 'pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?packaging=sources', repository => 'https://mvnrepository.com/artifact/org.apache.xmlgraphics/batik-anim/1.9.1', download => 'https://repo.maven.apache.org/maven2/org/apache/xmlgraphics/batik-anim/1.9.1/batik-anim-1.9.1.jar' }, { purl => 'pkg:pypi/django@1.11.1', repository => 'https://pypi.org/project/django/1.11.1' }, { purl => 'pkg:composer/laravel/laravel@5.5.0', repository => 'https://packagist.org/packages/laravel/laravel' }, { purl => 'pkg:docker/cassandra@latest', repository => 'https://hub.docker.com/_/cassandra' }, { purl => 'pkg:docker/smartentry/debian@dc437cc87d10', repository => 'https://hub.docker.com/r/smartentry/debian' }, { purl => 'pkg:github/nexb/scancode-toolkit@v3.1.1', download => 'https://github.com/nexb/scancode-toolkit/archive/refs/tags/v3.1.1.tar.gz', repository => 'https://github.com/nexb/scancode-toolkit' }, { purl => 'pkg:cpan/ILYAZ/Term-Gnuplot@0.90380906?distpath=I/IL/ILYAZ/modules/Term-Gnuplot-0.90380906.zip', download => 'https://www.cpan.org/authors/id/I/IL/ILYAZ/modules/Term-Gnuplot-0.90380906.zip', repository => 'https://metacpan.org/release/ILYAZ/Term-Gnuplot-0.90380906', }, { purl => 'pkg:cpan/ILYAZ/Term-Gnuplot@0.90380906?distpath=authors/id/I/IL/ILYAZ/modules/Term-Gnuplot-0.90380906.zip', download => 'https://www.cpan.org/authors/id/I/IL/ILYAZ/modules/Term-Gnuplot-0.90380906.zip', repository => 'https://metacpan.org/release/ILYAZ/Term-Gnuplot-0.90380906', }, { purl => 'pkg:cpan/ILYAZ/Term-Gnuplot@0.90380906?distpath=ILYAZ/modules/Term-Gnuplot-0.90380906.zip', download => 'https://www.cpan.org/authors/id/I/IL/ILYAZ/modules/Term-Gnuplot-0.90380906.zip', repository => 'https://metacpan.org/release/ILYAZ/Term-Gnuplot-0.90380906', }, ); #>>> foreach my $test (@tests) { my $purl = $test->{purl}; my $urls = purl_to_urls($purl); for my $type (qw[download repository]) { next unless defined $urls->{$type}; my $got = $urls->{$type}; my $expected = $test->{$type}; my $label = sprintf('%s - %s (%s URL)', $purl, $urls->{$type}, $type); is($got, $expected, $label); } } done_testing(); URI-PackageURL-2.24/t/20-decode.t0000644000175000017500000000615015135504042015113 0ustar peppepeppe#!perl -T use strict; use warnings; use Test::More; use URI::PackageURL; my $t1 = 'pkg:cpan/GDT/URI-PackageURL@2.23'; my $t2 = 'pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie'; my $t3 = 'pkg:golang/google.golang.org/genproto@abcdedf#googleapis/api/annotations'; my $t4 = 'pkg:docker/customer/dockerimage@sha256:244fd47e07d1004f0aed9c?repository_url=gcr.io'; my $t5 = 'pkg:generic/ns/n@m#?@version?qualifier=#v@lue#subp@th?'; my $t6 = 'pkg:/generic/test?checksum=sha1:ad9503c3e994a4f,sha256:41bf9088b3a1e6c1ef1d'; my $t7 = 'pkg:pypi/django?vers=vers:pypi%2F%3E%3D1.11.0%7C%21%3D1.11.1%7C%3C2.0.0'; subtest "Decode '$t1'" => sub { my $purl = decode_purl($t1); is($purl->type, 'cpan', 'Type'); is($purl->namespace, 'GDT', 'Namespace'); is($purl->name, 'URI-PackageURL', 'Name'); is($purl->version, '2.23', 'Version'); is($purl->to_string, $t1, 'PackageURL'); }; subtest "Decode '$t2'" => sub { my $purl = decode_purl($t2); is($purl->type, 'deb', 'Type'); is($purl->namespace, 'debian', 'Namespace'); is($purl->name, 'curl', 'Name'); is($purl->version, '7.50.3-1', 'Version'); is($purl->qualifiers->{arch}, 'i386', 'Qualifier "arch"'); is($purl->qualifiers->{distro}, 'jessie', 'Qualifier "distro"'); is($purl->to_string, $t2, 'PackageURL'); }; subtest "Decode '$t3'" => sub { my $purl = decode_purl($t3); is($purl->type, 'golang', 'Type'); is($purl->namespace, 'google.golang.org', 'Namespace'); is($purl->name, 'genproto', 'Name'); is($purl->version, 'abcdedf', 'Version'); is($purl->subpath, 'googleapis/api/annotations', 'Subpath'); is($purl->to_string, $t3, 'PackageURL'); }; subtest "Decode '$t4'" => sub { my $purl = decode_purl($t4); is($purl->type, 'docker', 'Type'); is($purl->namespace, 'customer', 'Namespace'); is($purl->name, 'dockerimage', 'Name'); is($purl->version, 'sha256:244fd47e07d1004f0aed9c', 'Version'); is($purl->qualifiers->{repository_url}, 'gcr.io', 'Qualifier "repository_url"'); is($purl->to_string, $t4, 'PackageURL'); }; subtest "Decode '$t5'" => sub { my $purl = decode_purl($t5); is($purl->type, 'generic', 'Type'); is($purl->namespace, 'ns', 'Namespace'); is($purl->name, 'n@m#?', 'Name'); is($purl->version, 'version', 'Version'); is($purl->qualifiers->{qualifier}, '#v@lue', 'Qualifier "qualifier"'); is($purl->subpath, 'subp@th?', 'Subpath'); }; subtest "Decode '$t6'" => sub { my $purl = decode_purl($t6); is($purl->type, 'generic', 'Type'); is($purl->name, 'test', 'Name'); isa_ok($purl->qualifiers->{checksum}, 'ARRAY', 'Qualifier "checksum" as ARRAY'); }; done_testing(); URI-PackageURL-2.24/t/sync-tests.sh0000644000175000017500000000153415135504042015735 0ustar peppepeppe#!/bin/bash # sync-purl-tests - Sync the PURL and VERS tests # # (C) 2025, Giuseppe Di Terlizzi cd $(dirname $0) ; CWD=$(pwd) GIT_REF=tags/v1.0.0 PURL_ARCHIVE_URL="https://github.com/package-url/purl-spec/archive/refs/$GIT_REF.zip" PURL_ARCHIVE_FILE=$(mktemp) GIT_REF=heads/main VERS_ARCHIVE_URL="https://github.com/package-url/vers-spec/archive/refs/$GIT_REF.zip" VERS_ARCHIVE_FILE=$(mktemp) rm -rf $CWD/{purl,vers}/* mkdir -p $CWD/{purl,vers} # PURL tests wget -O $PURL_ARCHIVE_FILE $PURL_ARCHIVE_URL unzip -j $PURL_ARCHIVE_FILE 'purl-spec-*/tests/spec/*' -d $CWD/purl/spec unzip -j $PURL_ARCHIVE_FILE 'purl-spec-*/tests/types/*' -d $CWD/purl/types rm $PURL_ARCHIVE_FILE # VERS tests wget -O $VERS_ARCHIVE_FILE $VERS_ARCHIVE_URL unzip -j $VERS_ARCHIVE_FILE 'vers-spec-*/tests/*' -d $CWD/vers rm $VERS_ARCHIVE_FILE URI-PackageURL-2.24/t/60-semver-compare.t0000644000175000017500000000665515135504042016633 0ustar peppepeppe#!perl -T use strict; use warnings; use Test::More; use URI::VersionRange::Util qw(semver_version_compare); #<<< my @test_cases = ( # equal – base & build metadata ignored ["1.0.0", "1.0.0", 0], ["1.0.0+20130313144700", "1.0.0", 0], ["1.0.0+exp.sha.5114f85", "1.0.0+build.1", 0], ["2.1.0", "2.1.0", 0], ["0.0.0", "0.0.0", 0], # major/minor/patch ordering ["1.0.0", "2.0.0", -1], ["2.0.0", "1.0.0", 1], ["2.1.0", "2.2.0", -1], ["2.2.0", "2.1.0", 1], ["2.1.0", "2.1.1", -1], ["2.1.1", "2.1.0", 1], ["1.9.9", "1.10.0", -1], ["1.10.0", "1.9.9", 1], # prerelease < release ["1.0.0-alpha", "1.0.0", -1], ["1.0.0-rc.1", "1.0.0", -1], ["1.0.0-rc.1", "1.0.0-rc.1", 0], # prerelease chain (numeric vs alphabetic; length) ["1.0.0-alpha", "1.0.0-alpha.1", -1], ["1.0.0-alpha.1", "1.0.0-alpha.beta", -1], ["1.0.0-alpha.beta", "1.0.0-beta", -1], ["1.0.0-beta", "1.0.0-beta.2", -1], ["1.0.0-beta.2", "1.0.0-beta.11", -1], ["1.0.0-beta.11", "1.0.0-rc.1", -1], ["1.0.0-rc.1", "1.0.0", -1], # the same but reversed ( > ) ["1.0.0-alpha.1", "1.0.0-alpha", 1], ["1.0.0-alpha.beta", "1.0.0-alpha.1", 1], ["1.0.0-beta", "1.0.0-alpha.beta", 1], ["1.0.0-beta.2", "1.0.0-beta", 1], ["1.0.0-beta.11", "1.0.0-beta.2", 1], ["1.0.0-rc.1", "1.0.0-beta.11", 1], ["1.0.0", "1.0.0-rc.1", 1], # numeric vs alphanumeric in prerelease tokens ["1.0.0-alpha.10", "1.0.0-alpha.2", 1], # 10 > 2 (numeric) ["1.0.0-alpha.2", "1.0.0-alpha.10", -1], ["1.0.0-alpha.1", "1.0.0-alpha.a", -1], # numeric < alphanumeric ["1.0.0-alpha.a", "1.0.0-alpha.1", 1], # length comparison when prefixes are equal ["1.0.0-alpha", "1.0.0-alpha.0", -1], # shorter < longer ["1.0.0-alpha.0", "1.0.0-alpha", 1], ["1.0.0-a.b", "1.0.0-a.b.c", -1], ["1.0.0-a.b.c", "1.0.0-a.b", 1], # complex mixes (from the common node-semver suite) ["1.2.3-a.10", "1.2.3-a.5", 1], ["1.2.3-a.b", "1.2.3-a.5", 1], # alpha > numeric ["1.2.3-a.b", "1.2.3-a", 1], # extra token => greater ["1.2.3-a.b.c.10.d.5", "1.2.3-a.b.c.5.d.100", 1], # shorthand equivalences (not in pure standard, but often supported) ["1.0", "1.0.0", 0], ["1", "1.0.0", 0], # build metadata with prerelease (ignored) ["1.0.0-beta+exp.sha", "1.0.0-beta+abc", 0], ["1.0.0+exp.sha", "1.0.0", 0], ); #>>> foreach my $test (@test_cases) { my ($a, $b, $expected) = @{$test}; my $label = "$a <=> $b == $expected"; my $got = semver_version_compare($a, $b); is($got, $expected, $label) or diag explain {a => $a, b => $b, expected => $expected, got => $got}; # Reverse test my $rev_got = semver_version_compare($b, $a); my $rev_expected = -$expected; my $rev_label = "$b <=> $a == $rev_expected (reverse test)"; is($rev_got, $rev_expected, $rev_label) or diag explain {a => $a, b => $b, expected => $rev_expected, got => $rev_got}; } done_testing(); URI-PackageURL-2.24/t/99-vers-tests.t0000644000175000017500000000504115135504042016025 0ustar peppepeppe#!perl use File::Find qw(find); use File::Spec; use JSON::PP; use Test::More; require_ok('URI::VersionRange'); my $purl_tests_dir = File::Spec->catdir('t', 'vers'); BAIL_OUT('"vers" tests directory not found') if (!-d $purl_tests_dir); find {wanted => \&execute_test, no_chdir => 1}, $purl_tests_dir; sub execute_test { my $test_file = $_; return if -d $test_file; return unless $test_file =~ /\.json/; open my $fh, '<', $test_file or Carp::croak "Can't open file: $!"; my $test_content = do { local $/; <$fh> }; my $test_data = eval { JSON::PP::decode_json($test_content) }; BAIL_OUT("$test_file - $@") if $@; foreach my $test (@{$test_data->{tests}}) { TODO: { execute_containment_test($test) if $test->{test_type} eq 'containment'; execute_roundtrip_test($test) if $test->{test_type} eq 'roundtrip'; execute_from_native_test($test) if $test->{test_type} eq 'from_native'; } } } sub execute_containment_test { my $test = shift; my $test_description = $test->{description}; my $vers_string = $test->{input}->{vers}; my $version = $test->{input}->{version}; my $expected_output = $test->{expected_output}; my $vers = eval { URI::VersionRange->from_string($vers_string) }; is $vers->contains($version), !!1, "$version version in range ($vers)" if $expected_output; is $vers->contains($version), !!0, "$version version not in range ($vers)" unless $expected_output; } sub execute_roundtrip_test { my $test = shift; my $test_description = $test->{description}; my $vers_string = $test->{input}->{vers}; my $expected = $test->{expected_output}; my $got = eval { URI::VersionRange->from_string($vers_string) }; is "$got", $expected, "$test_description ($got)"; } sub execute_from_native_test { my $test = shift; my $test_description = $test->{description}; my $native_range = $test->{input}->{native_range}; my $scheme = $test->{input}->{scheme}; my $expected = $test->{expected_output}; local $TODO = "SKIP vers:conan/" if $expected eq 'vers:conan/'; my $got = eval { URI::VersionRange->from_native(scheme => $scheme, range => $native_range) }; local $TODO = 'Skip because VERS require a range' if $expected_output eq 'vers:conan/'; local $TODO = 'Skip include_prerelease=True' if $native_range =~ 'include_prerelease=True'; is "$got", $expected, "[$scheme] $test_description ($native_range --> $got)"; } done_testing(); URI-PackageURL-2.24/t/99-purl-legacy-test-suite.t0000644000175000017500000000613415135504042020242 0ustar peppepeppe#!perl use JSON::PP; use Test::More; use File::Spec; # Official "legacy" PURL test suite (https://raw.githubusercontent.com/package-url/purl-spec/e56202efb16b943add2ae27b81a00efd25add47a/test-suite-data.json) require_ok('URI::PackageURL'); sub test_purl_encode { my ($test) = @_; my $test_name = $test->{description}; my $purl = eval { URI::PackageURL->new( type => $test->{type}, namespace => $test->{namespace}, name => $test->{name}, version => $test->{version}, qualifiers => $test->{qualifiers}, subpath => $test->{subpath} ); }; local $TODO = 'SKIP test because in ENCODE always generate well format PURL string' if ($test->{purl} =~ /pkg%3A/); if ($test->{is_invalid}) { like($@, qr/Invalid PURL/i, "ENCODE: $test_name"); return; } if (!$test->{is_invalid} && $@) { fail("ENCODE: $test_name"); return; } if (!$test->{is_invalid}) { is($purl->to_string, $test->{canonical_purl}, "ENCODE: $test_name"); return; } } sub test_purl_decode { my ($test, $purl_string_field) = @_; $purl_string_field //= 'canonical_purl'; return unless defined $test->{$purl_string_field}; my $purl_string = $test->{$purl_string_field}; my $test_name = $test->{description}; my $purl = eval { URI::PackageURL->from_string($purl_string) }; if ($test->{is_invalid}) { like($@, qr/(Invalid|Malformed) PURL/i, "DECODE $purl_string_field: $test_name"); return; } if (!$test->{is_invalid} && $@) { fail("DECODE: $test_name --> $purl_string"); return; } if (!$test->{is_invalid}) { is($purl->to_string, $test->{canonical_purl}, "DECODE $purl_string_field: $test_name"); my @components = qw(type namespace name version subpath); TODO: { local $TODO = 'SKIP test because in canonical subpath exist "." or ".."' if ($test->{subpath} && $test->{subpath} =~ /\./); foreach my $component (@components) { is($purl->$component, $test->{$component}, "DECODE $purl_string_field: Compare '$test_name' $component component"); } } my $qualifiers = $purl->qualifiers; is_deeply($qualifiers, $test->{qualifiers}, "DECODE $purl_string_field: Compare '$test_name' qualifiers") if %{$qualifiers}; return; } } my $test_suite_file = File::Spec->catfile('t', 'test-suite-data.json'); BAIL_OUT('"test-suite-data.json" file not found') if (!-e $test_suite_file); open my $fh, '<', $test_suite_file or Carp::croak "Can't open file: $!"; my $test_suite_content = do { local $/; <$fh> }; my $test_suite_data = JSON::PP::decode_json($test_suite_content); foreach my $test (@{$test_suite_data}) { TODO: { local $TODO = '(!) Disabled test!'; $ENV{PURL_LEGACY_CPAN_TYPE} = 1; test_purl_encode($test); test_purl_decode($test, 'purl'); test_purl_decode($test, 'canonical_purl'); } } done_testing(); URI-PackageURL-2.24/t/50-version-range.t0000644000175000017500000000412715135504042016454 0ustar peppepeppe#!perl -T use strict; use warnings; use Test::More; use URI::VersionRange; my $vers = 'vers:cpan/>v1.00|!=v2.10|<=v3.00'; my $v1 = URI::VersionRange->from_string($vers); my $v2 = URI::VersionRange->new( scheme => 'cpan', constraints => [ URI::VersionRange::Constraint->new(comparator => '>', version => 'v1.00'), URI::VersionRange::Constraint->new(comparator => '!=', version => 'v2.10'), URI::VersionRange::Constraint->new(comparator => '<=', version => 'v3.00') ] ); my $v3 = URI::VersionRange->new(scheme => 'cpan', constraints => ['>v1.00', '!=v2.10', '<=v3.00']); my $v4 = decode_vers($vers); my $v5 = decode_vers(encode_vers(scheme => 'cpan', constraints => ['>v1.00', '!=v2.10', '<=v3.00'])); my %TESTS = ( 'from_string' => $v1, 'object-oriented #1' => $v2, 'object-oriented #2' => $v3, 'decode_vers' => $v4, 'encode_vers + decode_vers' => $v5, ); my @in_range = ('v2.11', 'v2.99', 'v3.00'); my @not_in_range = ('v0.01', 'v0.99', 'v2.10'); foreach (sort keys %TESTS) { is $v1, $TESTS{$_}, "Version range ($_)"; } is $v1->contains($_), !!1, "$_ version in range ($v1)" for (sort @in_range); is $v1->contains($_), !!0, "$_ version not in range ($v1)" for (sort @not_in_range); is decode_vers('vers:cpan/contains($_), !!1, "$_ version in range" for (sort @in_range); eval { decode_vers('foo:barcontains($_), !!1, "$_ version in range" for (sort @in_range); is decode_vers('vers:none/*')->contains($_), !!1, "$_ version in range" for (sort @in_range); is decode_vers('vers:all/*')->contains($_), !!1, "$_ version in range" for (sort @in_range); is decode_vers('vers:intdot/*')->contains($_), !!1, "$_ version in range" for (sort @in_range); is decode_vers('vers:semver/*')->contains($_), !!1, "$_ version in range" for (sort @in_range); eval { decode_vers('vers:none/1.00') }; like "$@", qr/Malformed/; eval { decode_vers('vers:all/1.00') }; like "$@", qr/Malformed/; done_testing(); URI-PackageURL-2.24/t/pod.t0000644000175000017500000000052014442172325014233 0ustar peppepeppe#!perl -T use strict; use warnings; use Test::More; unless ($ENV{RELEASE_TESTING}) { plan(skip_all => "Author tests not required for installation"); } # Ensure a recent version of Test::Pod my $min_tp = 1.22; eval "use Test::Pod $min_tp"; plan skip_all => "Test::Pod $min_tp required for testing POD" if $@; all_pod_files_ok(); URI-PackageURL-2.24/t/70-vers-from-native.t0000644000175000017500000000224015135504042017075 0ustar peppepeppe#!perl -T use strict; use warnings; use Test::More; use URI::VersionRange::Util qw(native_range_to_vers); #<<< my @test_cases = ( ['nuget', '1.0', 'vers:nuget/1.0'], ['nuget', '[1.0,)', 'vers:nuget/>=1.0'], ['nuget', '(1.0,)', 'vers:nuget/>1.0'], ['nuget', '[1.0]', 'vers:nuget/1.0'], ['nuget', '(,1.0]', 'vers:nuget/>0.0|<=1.0'], ['nuget', '(,1.0)', 'vers:nuget/>0.0|<1.0'], ['nuget', '[1.0,2.0]', 'vers:nuget/>=1.0|<=2.0'], ['nuget', '(1.0,2.0)', 'vers:nuget/>1.0|<2.0'], ['nuget', '[1.0,2.0)', 'vers:nuget/>=1.0|<2.0'], ['raku', '*', 'vers:raku/*'], ['raku', '1.*', 'vers:raku/>=1'], ['raku', '1.0', 'vers:raku/1.0'], ['raku', '1.0.*', 'vers:raku/>=1.0'], ['raku', '1.0.*.5', 'vers:raku/>=1.0'], ['raku', '1.0+', 'vers:raku/>=1.0'], ); #>>> foreach my $test (@test_cases) { my ($scheme, $native_range, $expected) = @{$test}; my $got = native_range_to_vers($scheme, $native_range); my $label = "[$scheme] $native_range == $expected"; is $got, $expected, $label or diag explain {got => $got, expected => $expected, scheme => $scheme}; } done_testing(); URI-PackageURL-2.24/t/00-load.t0000644000175000017500000000061515135504042014605 0ustar peppepeppe#!perl -T use strict; use warnings; use Test::More; my @CLASSES = qw( URI::PackageURL URI::PackageURL::App URI::PackageURL::Type URI::PackageURL::Util URI::VersionRange URI::VersionRange::App URI::VersionRange::Constraint URI::VersionRange::Version ); use_ok($_) for @CLASSES; done_testing(); diag("URI::PackageURL $URI::PackageURL::VERSION, Perl $], $^X"); URI-PackageURL-2.24/t/manifest.t0000644000175000017500000000045214442172325015263 0ustar peppepeppe#!perl -T use strict; use warnings; use Test::More; unless ($ENV{RELEASE_TESTING}) { plan(skip_all => "Author tests not required for installation"); } my $min_tcm = 0.9; eval "use Test::CheckManifest $min_tcm"; plan skip_all => "Test::CheckManifest $min_tcm required" if $@; ok_manifest(); URI-PackageURL-2.24/t/pod-coverage.t0000644000175000017500000000122214442172325016024 0ustar peppepeppe#!perl -T use strict; use warnings; use Test::More; unless ($ENV{RELEASE_TESTING}) { plan(skip_all => "Author tests not required for installation"); } # Ensure a recent version of Test::Pod::Coverage my $min_tpc = 1.08; eval "use Test::Pod::Coverage $min_tpc"; plan skip_all => "Test::Pod::Coverage $min_tpc required for testing POD coverage" if $@; # Test::Pod::Coverage doesn't require a minimum Pod::Coverage version, # but older versions don't recognize some common documentation styles my $min_pc = 0.18; eval "use Pod::Coverage $min_pc"; plan skip_all => "Pod::Coverage $min_pc required for testing POD coverage" if $@; all_pod_coverage_ok(); URI-PackageURL-2.24/t/99-purl-tests.t0000644000175000017500000000755615135504042016045 0ustar peppepeppe#!perl use File::Spec; use JSON::PP; use Test::More; use File::Find qw(find); require_ok('URI::PackageURL'); my $purl_tests_dir = File::Spec->catdir('t', 'purl'); BAIL_OUT('"purl" tests directory not found') if (!-d $purl_tests_dir); find {wanted => \&execute_test, no_chdir => 1}, $purl_tests_dir; sub test_context { my $test = shift; return sprintf '%s [%s] %s', $test->{test_type}, $test->{test_group}, $test->{description}; } sub execute_test { my $test_file = $_; return if -d $test_file; return unless $test_file =~ /\.json/; if (my $purl_type = $ENV{PURL_TYPE}) { return unless ($test_file =~ /$purl_type/); diag "Test only $ENV{PURL_TYPE} testcases"; } note "--- $test_file ---"; open my $fh, '<', $test_file or Carp::croak "Can't open file: $!"; my $test_content = do { local $/; <$fh> }; my $test_data = eval { JSON::PP::decode_json($test_content) }; BAIL_OUT("$test_file - $@") if $@; foreach my $test (@{$test_data->{tests}}) { $test->{file} = $test_file; TODO: { local $TODO = 'Maven - SKIP test because in ENCODE always generate well format PURL string' if ($test->{description} eq 'invalid encoded colon : between scheme and type'); # (!) Skip some tests for PRs and issues in purl-spec that are still open local $TODO = 'Huggingface - missing namespace - test issue' if ($test_file =~ /huggingface/); execute_parse_test($test) if $test->{test_type} eq 'parse'; execute_build_test($test) if $test->{test_type} eq 'build'; execute_roundtrip_test($test) if $test->{test_type} eq 'roundtrip'; execute_validation_test($test) if $test->{test_type} eq 'validation'; } } } sub execute_build_test { my $test = shift; my $test_context = test_context($test); my $purl = eval { URI::PackageURL->new(%{$test->{input}}); }; if ($test->{expected_failure}) { like($@, qr/Invalid PURL/i, $test_context); return; } if (!$test->{expected_failure} && $@) { fail("$test_context ($@)"); return; } is($purl->to_string, $test->{expected_output}, $test_context); } sub execute_parse_test { my $test = shift; my $test_context = test_context($test); my $purl_string = $test->{input}; note $purl_string; my $purl = eval { URI::PackageURL->from_string($purl_string, 0) }; if ($test->{expected_failure}) { like($@, qr/(Invalid|Malformed) PURL/i, $test_context); return; } if (!$test->{expected_failure} && $@) { fail("$test_context ($@)"); return; } my @components = qw(type namespace name version subpath); foreach my $component (@components) { is( $purl->$component, $test->{expected_output}->{$component}, "$test_context --> Compare '$component' component" ); } } sub execute_roundtrip_test { my $test = shift; my $test_context = test_context($test); my $purl_string = $test->{input}; note $purl_string; my $purl = eval { URI::PackageURL->from_string($purl_string, 0) }; if ($@) { fail("$test_context ($@)"); return; } is($purl->to_string, $test->{expected_output}, $test_context); } sub execute_validation_test { my $test = shift; my $test_context = test_context($test); my $purl = eval { URI::PackageURL->new(%{$test->{input}}); }; if (@{$test->{expected_messages}}) { like($@, qr/Invalid PURL/i, $test_context); diag "-- URI::PackageURL exception: $@"; diag "-- Expected message: $_" for @{$test->{expected_messages}}; return; } if (!@{$test->{expected_messages}} && $@) { fail("$test_context ($@)"); return; } ok($purl->to_string, $test_context); } done_testing(); URI-PackageURL-2.24/t/test-suite-data.json0000644000175000017500000005563415041750763017220 0ustar peppepeppe[ { "description": "valid maven purl", "purl": "pkg:maven/org.apache.commons/io@1.3.4", "canonical_purl": "pkg:maven/org.apache.commons/io@1.3.4", "type": "maven", "namespace": "org.apache.commons", "name": "io", "version": "1.3.4", "qualifiers": null, "subpath": null, "is_invalid": false }, { "description": "basic valid maven purl without version", "purl": "pkg:maven/org.apache.commons/io", "canonical_purl": "pkg:maven/org.apache.commons/io", "type": "maven", "namespace": "org.apache.commons", "name": "io", "version": null, "qualifiers": null, "subpath": null, "is_invalid": false }, { "description": "valid go purl without version and with subpath", "purl": "pkg:GOLANG/google.golang.org/genproto#/googleapis/api/annotations/", "canonical_purl": "pkg:golang/google.golang.org/genproto#googleapis/api/annotations", "type": "golang", "namespace": "google.golang.org", "name": "genproto", "version": null, "qualifiers": null, "subpath": "googleapis/api/annotations", "is_invalid": false }, { "description": "valid go purl with version and subpath", "purl": "pkg:GOLANG/google.golang.org/genproto@abcdedf#/googleapis/api/annotations/", "canonical_purl": "pkg:golang/google.golang.org/genproto@abcdedf#googleapis/api/annotations", "type": "golang", "namespace": "google.golang.org", "name": "genproto", "version": "abcdedf", "qualifiers": null, "subpath": "googleapis/api/annotations", "is_invalid": false }, { "description": "invalid subpath - unencoded subpath cannot contain '..'", "purl": "pkg:GOLANG/google.golang.org/genproto@abcdedf#/googleapis/%2E%2E/api/annotations/", "canonical_purl": "pkg:golang/google.golang.org/genproto@abcdedf#googleapis/api/annotations", "type": "golang", "namespace": "google.golang.org", "name": "genproto", "version": "abcdedf", "qualifiers": null, "subpath": "googleapis/../api/annotations", "is_invalid": false }, { "description": "invalid subpath - unencoded subpath cannot contain '.'", "purl": "pkg:GOLANG/google.golang.org/genproto@abcdedf#/googleapis/%2E/api/annotations/", "canonical_purl": "pkg:golang/google.golang.org/genproto@abcdedf#googleapis/api/annotations", "type": "golang", "namespace": "google.golang.org", "name": "genproto", "version": "abcdedf", "qualifiers": null, "subpath": "googleapis/./api/annotations", "is_invalid": false }, { "description": "bitbucket namespace and name should be lowercased", "purl": "pkg:bitbucket/birKenfeld/pyGments-main@244fd47e07d1014f0aed9c", "canonical_purl": "pkg:bitbucket/birkenfeld/pygments-main@244fd47e07d1014f0aed9c", "type": "bitbucket", "namespace": "birkenfeld", "name": "pygments-main", "version": "244fd47e07d1014f0aed9c", "qualifiers": null, "subpath": null, "is_invalid": false }, { "description": "github namespace and name should be lowercased", "purl": "pkg:github/Package-url/purl-Spec@244fd47e07d1004f0aed9c", "canonical_purl": "pkg:github/package-url/purl-spec@244fd47e07d1004f0aed9c", "type": "github", "namespace": "package-url", "name": "purl-spec", "version": "244fd47e07d1004f0aed9c", "qualifiers": null, "subpath": null, "is_invalid": false }, { "description": "debian can use qualifiers", "purl": "pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie", "canonical_purl": "pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie", "type": "deb", "namespace": "debian", "name": "curl", "version": "7.50.3-1", "qualifiers": {"arch": "i386", "distro": "jessie"}, "subpath": null, "is_invalid": false }, { "description": "docker uses qualifiers and hash image id as versions", "purl": "pkg:docker/customer/dockerimage@sha256:244fd47e07d1004f0aed9c?repository_url=gcr.io", "canonical_purl": "pkg:docker/customer/dockerimage@sha256:244fd47e07d1004f0aed9c?repository_url=gcr.io", "type": "docker", "namespace": "customer", "name": "dockerimage", "version": "sha256:244fd47e07d1004f0aed9c", "qualifiers": {"repository_url": "gcr.io"}, "subpath": null, "is_invalid": false }, { "description": "Java gem can use a qualifier", "purl": "pkg:gem/jruby-launcher@1.1.2?Platform=java", "canonical_purl": "pkg:gem/jruby-launcher@1.1.2?platform=java", "type": "gem", "namespace": null, "name": "jruby-launcher", "version": "1.1.2", "qualifiers": {"platform": "java"}, "subpath": null, "is_invalid": false }, { "description": "maven often uses qualifiers", "purl": "pkg:Maven/org.apache.xmlgraphics/batik-anim@1.9.1?classifier=sources&repositorY_url=repo.spring.io/release", "canonical_purl": "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?classifier=sources&repository_url=repo.spring.io/release", "type": "maven", "namespace": "org.apache.xmlgraphics", "name": "batik-anim", "version": "1.9.1", "qualifiers": {"classifier": "sources", "repository_url": "repo.spring.io/release"}, "subpath": null, "is_invalid": false }, { "description": "maven pom reference", "purl": "pkg:Maven/org.apache.xmlgraphics/batik-anim@1.9.1?extension=pom&repositorY_url=repo.spring.io/release", "canonical_purl": "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?extension=pom&repository_url=repo.spring.io/release", "type": "maven", "namespace": "org.apache.xmlgraphics", "name": "batik-anim", "version": "1.9.1", "qualifiers": {"extension": "pom", "repository_url": "repo.spring.io/release"}, "subpath": null, "is_invalid": false }, { "description": "maven can come with a type qualifier", "purl": "pkg:Maven/net.sf.jacob-project/jacob@1.14.3?classifier=x86&type=dll", "canonical_purl": "pkg:maven/net.sf.jacob-project/jacob@1.14.3?classifier=x86&type=dll", "type": "maven", "namespace": "net.sf.jacob-project", "name": "jacob", "version": "1.14.3", "qualifiers": {"classifier": "x86", "type": "dll"}, "subpath": null, "is_invalid": false }, { "description": "npm can be scoped", "purl": "pkg:npm/%40angular/animation@12.3.1", "canonical_purl": "pkg:npm/%40angular/animation@12.3.1", "type": "npm", "namespace": "@angular", "name": "animation", "version": "12.3.1", "qualifiers": null, "subpath": null, "is_invalid": false }, { "description": "nuget names are case sensitive", "purl": "pkg:Nuget/EnterpriseLibrary.Common@6.0.1304", "canonical_purl": "pkg:nuget/EnterpriseLibrary.Common@6.0.1304", "type": "nuget", "namespace": null, "name": "EnterpriseLibrary.Common", "version": "6.0.1304", "qualifiers": null, "subpath": null, "is_invalid": false }, { "description": "pypi names have special rules and not case sensitive", "purl": "pkg:PYPI/Django_package@1.11.1.dev1", "canonical_purl": "pkg:pypi/django-package@1.11.1.dev1", "type": "pypi", "namespace": null, "name": "django-package", "version": "1.11.1.dev1", "qualifiers": null, "subpath": null, "is_invalid": false }, { "description": "rpm often use qualifiers", "purl": "pkg:Rpm/fedora/curl@7.50.3-1.fc25?Arch=i386&Distro=fedora-25", "canonical_purl": "pkg:rpm/fedora/curl@7.50.3-1.fc25?arch=i386&distro=fedora-25", "type": "rpm", "namespace": "fedora", "name": "curl", "version": "7.50.3-1.fc25", "qualifiers": {"arch": "i386", "distro": "fedora-25"}, "subpath": null, "is_invalid": false }, { "description": "a scheme is always required", "purl": "EnterpriseLibrary.Common@6.0.1304", "canonical_purl": "EnterpriseLibrary.Common@6.0.1304", "type": null, "namespace": null, "name": "EnterpriseLibrary.Common", "version": null, "qualifiers": null, "subpath": null, "is_invalid": true }, { "description": "a type is always required", "purl": "pkg:EnterpriseLibrary.Common@6.0.1304", "canonical_purl": "pkg:EnterpriseLibrary.Common@6.0.1304", "type": null, "namespace": null, "name": "EnterpriseLibrary.Common", "version": "6.0.1304", "qualifiers": null, "subpath": null, "is_invalid": true }, { "description": "a name is required", "purl": "pkg:maven/@1.3.4", "canonical_purl": "pkg:maven/@1.3.4", "type": "maven", "namespace": null, "name": null, "version": null, "qualifiers": null, "subpath": null, "is_invalid": true }, { "description": "slash / after scheme is not significant", "purl": "pkg:/maven/org.apache.commons/io", "canonical_purl": "pkg:maven/org.apache.commons/io", "type": "maven", "namespace": "org.apache.commons", "name": "io", "version": null, "qualifiers": null, "subpath": null, "is_invalid": false }, { "description": "double slash // after scheme is not significant", "purl": "pkg://maven/org.apache.commons/io", "canonical_purl": "pkg:maven/org.apache.commons/io", "type": "maven", "namespace": "org.apache.commons", "name": "io", "version": null, "qualifiers": null, "subpath": null, "is_invalid": false }, { "description": "slash /// after scheme is not significant", "purl": "pkg:///maven/org.apache.commons/io", "canonical_purl": "pkg:maven/org.apache.commons/io", "type": "maven", "namespace": "org.apache.commons", "name": "io", "version": null, "qualifiers": null, "subpath": null, "is_invalid": false }, { "description": "valid maven purl with case sensitive namespace and name", "purl": "pkg:maven/HTTPClient/HTTPClient@0.3-3", "canonical_purl": "pkg:maven/HTTPClient/HTTPClient@0.3-3", "type": "maven", "namespace": "HTTPClient", "name": "HTTPClient", "version": "0.3-3", "qualifiers": null, "subpath": null, "is_invalid": false }, { "description": "valid maven purl containing a space in the version and qualifier", "purl": "pkg:maven/mygroup/myartifact@1.0.0%20Final?mykey=my%20value", "canonical_purl": "pkg:maven/mygroup/myartifact@1.0.0%20Final?mykey=my%20value", "type": "maven", "namespace": "mygroup", "name": "myartifact", "version": "1.0.0 Final", "qualifiers": {"mykey": "my value"}, "subpath": null, "is_invalid": false }, { "description": "checks for invalid qualifier keys", "purl": "pkg:npm/myartifact@1.0.0?in%20production=true", "canonical_purl": null, "type": "npm", "namespace": null, "name": "myartifact", "version": "1.0.0", "qualifiers": {"in production": "true"}, "subpath": null, "is_invalid": true }, { "description": "valid conan purl", "purl": "pkg:conan/cctz@2.3", "canonical_purl": "pkg:conan/cctz@2.3", "type": "conan", "namespace": null, "name": "cctz", "version": "2.3", "qualifiers": null, "subpath": null, "is_invalid": false }, { "description": "valid conan purl with namespace and qualifier channel", "purl": "pkg:conan/bincrafters/cctz@2.3?channel=stable", "canonical_purl": "pkg:conan/bincrafters/cctz@2.3?channel=stable", "type": "conan", "namespace": "bincrafters", "name": "cctz", "version": "2.3", "qualifiers": {"channel": "stable"}, "subpath": null, "is_invalid": false }, { "description": "invalid conan purl only namespace", "purl": "pkg:conan/bincrafters/cctz@2.3", "canonical_purl": "pkg:conan/bincrafters/cctz@2.3", "type": "conan", "namespace": "bincrafters", "name": "cctz", "version": "2.3", "qualifiers": null, "subpath": null, "is_invalid": true }, { "description": "invalid conan purl only channel qualifier", "purl": "pkg:conan/cctz@2.3?channel=stable", "canonical_purl": "pkg:conan/cctz@2.3?channel=stable", "type": "conan", "namespace": null, "name": "cctz", "version": "2.3", "qualifiers": {"channel": "stable"}, "subpath": null, "is_invalid": true }, { "description": "valid conda purl with qualifiers", "purl": "pkg:conda/absl-py@0.4.1?build=py36h06a4308_0&channel=main&subdir=linux-64&type=tar.bz2", "canonical_purl": "pkg:conda/absl-py@0.4.1?build=py36h06a4308_0&channel=main&subdir=linux-64&type=tar.bz2", "type": "conda", "namespace": null, "name": "absl-py", "version": "0.4.1", "qualifiers": {"build": "py36h06a4308_0", "channel": "main", "subdir": "linux-64", "type": "tar.bz2"}, "subpath": null, "is_invalid": false }, { "description": "valid cran purl", "purl": "pkg:cran/A3@0.9.1", "canonical_purl": "pkg:cran/A3@0.9.1", "type": "cran", "namespace": null, "name": "A3", "version": "0.9.1", "qualifiers": null, "subpath": null, "is_invalid": false }, { "description": "invalid cran purl without name", "purl": "pkg:cran/@0.9.1", "canonical_purl": "pkg:cran/@0.9.1", "type": "cran", "namespace": null, "name": null, "version": "0.9.1", "qualifiers": null, "subpath": null, "is_invalid": true }, { "description": "invalid cran purl without version", "purl": "pkg:cran/A3", "canonical_purl": "pkg:cran/A3", "type": "cran", "namespace": null, "name": "A3", "version": null, "qualifiers": null, "subpath": null, "is_invalid": true }, { "description": "valid swift purl", "purl": "pkg:swift/github.com/Alamofire/Alamofire@5.4.3", "canonical_purl": "pkg:swift/github.com/Alamofire/Alamofire@5.4.3", "type": "swift", "namespace": "github.com/Alamofire", "name": "Alamofire", "version": "5.4.3", "qualifiers": null, "subpath": null, "is_invalid": false }, { "description": "invalid swift purl without namespace", "purl": "pkg:swift/Alamofire@5.4.3", "canonical_purl": "pkg:swift/Alamofire@5.4.3", "type": "swift", "namespace": null, "name": "Alamofire", "version": "5.4.3", "qualifiers": null, "subpath": null, "is_invalid": true }, { "description": "invalid swift purl without name", "purl": "pkg:swift/github.com/Alamofire/@5.4.3", "canonical_purl": "pkg:swift/github.com/Alamofire/@5.4.3", "type": "swift", "namespace": "github.com/Alamofire", "name": null, "version": "5.4.3", "qualifiers": null, "subpath": null, "is_invalid": true }, { "description": "invalid swift purl without version", "purl": "pkg:swift/github.com/Alamofire/Alamofire", "canonical_purl": "pkg:swift/github.com/Alamofire/Alamofire", "type": "swift", "namespace": "github.com/Alamofire", "name": "Alamofire", "version": null, "qualifiers": null, "subpath": null, "is_invalid": true }, { "description": "valid hackage purl", "purl": "pkg:hackage/AC-HalfInteger@1.2.1", "canonical_purl": "pkg:hackage/AC-HalfInteger@1.2.1", "type": "hackage", "namespace": null, "name": "AC-HalfInteger", "version": "1.2.1", "qualifiers": null, "subpath": null, "is_invalid": false }, { "description": "name and version are always required", "purl": "pkg:hackage", "canonical_purl": "pkg:hackage", "type": "hackage", "namespace": null, "name": null, "version": null, "qualifiers": null, "subpath": null, "is_invalid": true }, { "description": "minimal Hugging Face model", "purl": "pkg:huggingface/distilbert-base-uncased@043235d6088ecd3dd5fb5ca3592b6913fd516027", "canonical_purl": "pkg:huggingface/distilbert-base-uncased@043235d6088ecd3dd5fb5ca3592b6913fd516027", "type": "huggingface", "namespace": null, "name": "distilbert-base-uncased", "version": "043235d6088ecd3dd5fb5ca3592b6913fd516027", "qualifiers": null, "subpath": null, "is_invalid": false }, { "description": "Hugging Face model with staging endpoint", "purl": "pkg:huggingface/microsoft/deberta-v3-base@559062ad13d311b87b2c455e67dcd5f1c8f65111?repository_url=https://hub-ci.huggingface.co", "canonical_purl": "pkg:huggingface/microsoft/deberta-v3-base@559062ad13d311b87b2c455e67dcd5f1c8f65111?repository_url=https://hub-ci.huggingface.co", "type": "huggingface", "namespace": "microsoft", "name": "deberta-v3-base", "version": "559062ad13d311b87b2c455e67dcd5f1c8f65111", "qualifiers": {"repository_url": "https://hub-ci.huggingface.co"}, "subpath": null, "is_invalid": false }, { "description": "Hugging Face model with various cases", "purl": "pkg:huggingface/EleutherAI/gpt-neo-1.3B@797174552AE47F449AB70B684CABCB6603E5E85E", "canonical_purl": "pkg:huggingface/EleutherAI/gpt-neo-1.3B@797174552ae47f449ab70b684cabcb6603e5e85e", "type": "huggingface", "namespace": "EleutherAI", "name": "gpt-neo-1.3B", "version": "797174552ae47f449ab70b684cabcb6603e5e85e", "qualifiers": null, "subpath": null, "is_invalid": false }, { "description": "MLflow model tracked in Azure Databricks (case insensitive)", "purl": "pkg:mlflow/CreditFraud@3?repository_url=https://adb-5245952564735461.0.azuredatabricks.net/api/2.0/mlflow", "canonical_purl": "pkg:mlflow/creditfraud@3?repository_url=https://adb-5245952564735461.0.azuredatabricks.net/api/2.0/mlflow", "type": "mlflow", "namespace": null, "name": "creditfraud", "version": "3", "qualifiers": {"repository_url": "https://adb-5245952564735461.0.azuredatabricks.net/api/2.0/mlflow"}, "subpath": null, "is_invalid": false }, { "description": "MLflow model tracked in Azure ML (case sensitive)", "purl": "pkg:mlflow/CreditFraud@3?repository_url=https://westus2.api.azureml.ms/mlflow/v1.0/subscriptions/a50f2011-fab8-4164-af23-c62881ef8c95/resourceGroups/TestResourceGroup/providers/Microsoft.MachineLearningServices/workspaces/TestWorkspace", "canonical_purl": "pkg:mlflow/CreditFraud@3?repository_url=https://westus2.api.azureml.ms/mlflow/v1.0/subscriptions/a50f2011-fab8-4164-af23-c62881ef8c95/resourceGroups/TestResourceGroup/providers/Microsoft.MachineLearningServices/workspaces/TestWorkspace", "type": "mlflow", "namespace": null, "name": "CreditFraud", "version": "3", "qualifiers": {"repository_url": "https://westus2.api.azureml.ms/mlflow/v1.0/subscriptions/a50f2011-fab8-4164-af23-c62881ef8c95/resourceGroups/TestResourceGroup/providers/Microsoft.MachineLearningServices/workspaces/TestWorkspace"}, "subpath": null, "is_invalid": false }, { "description": "MLflow model with unique identifiers", "purl": "pkg:mlflow/trafficsigns@10?model_uuid=36233173b22f4c89b451f1228d700d49&run_id=410a3121-2709-4f88-98dd-dba0ef056b0a&repository_url=https://adb-5245952564735461.0.azuredatabricks.net/api/2.0/mlflow", "canonical_purl": "pkg:mlflow/trafficsigns@10?model_uuid=36233173b22f4c89b451f1228d700d49&repository_url=https://adb-5245952564735461.0.azuredatabricks.net/api/2.0/mlflow&run_id=410a3121-2709-4f88-98dd-dba0ef056b0a", "type": "mlflow", "namespace": null, "name": "trafficsigns", "version": "10", "qualifiers": {"model_uuid": "36233173b22f4c89b451f1228d700d49", "run_id": "410a3121-2709-4f88-98dd-dba0ef056b0a", "repository_url": "https://adb-5245952564735461.0.azuredatabricks.net/api/2.0/mlflow"}, "subpath": null, "is_invalid": false }, { "description": "composer names are not case sensitive", "purl": "pkg:composer/Laravel/Laravel@5.5.0", "canonical_purl": "pkg:composer/laravel/laravel@5.5.0", "type": "composer", "namespace": "laravel", "name": "laravel", "version": "5.5.0", "qualifiers": null, "subpath": null, "is_invalid": false }, { "description": "cpan distribution name are case sensitive", "purl": "pkg:cpan/DROLSKY/DateTime@1.55", "canonical_purl": "pkg:cpan/DROLSKY/DateTime@1.55", "type": "cpan", "namespace": "DROLSKY", "name": "DateTime", "version": "1.55", "qualifiers": null, "subpath": null, "is_invalid": false }, { "description": "cpan module name are case sensitive", "purl": "pkg:cpan/URI::PackageURL@2.11", "canonical_purl": "pkg:cpan/URI::PackageURL@2.11", "type": "cpan", "namespace": null, "name": "URI::PackageURL", "version": "2.11", "qualifiers": null, "subpath": null, "is_invalid": false }, { "description": "cpan module name like distribution name", "purl": "pkg:cpan/Perl-Version@1.013", "canonical_purl": "pkg:cpan/Perl-Version@1.013", "type": "cpan", "namespace": null, "name": "Perl-Version", "version": "1.013", "qualifiers": null, "subpath": null, "is_invalid": true }, { "description": "cpan distribution name like module name", "purl": "pkg:cpan/GDT/URI::PackageURL@2.11", "canonical_purl": "pkg:cpan/GDT/URI::PackageURL", "type": "cpan", "namespace": "GDT", "name": "URI::PackageURL", "version": null, "qualifiers": null, "subpath": null, "is_invalid": true }, { "description": "cpan valid module name", "purl": "pkg:cpan/DateTime@1.55", "canonical_purl": "pkg:cpan/DateTime@1.55", "type": "cpan", "namespace": null, "name": "DateTime", "version": "1.55", "qualifiers": null, "subpath": null, "is_invalid": false }, { "description": "cpan valid module name without version", "purl": "pkg:cpan/URI", "canonical_purl": "pkg:cpan/URI", "type": "cpan", "namespace": null, "name": "URI", "version": null, "qualifiers": null, "subpath": null, "is_invalid": false }, { "description": "ensure namespace allows multiple segments", "purl": "pkg:bintray/apache/couchdb/couchdb-mac@2.3.0", "canonical_purl": "pkg:bintray/apache/couchdb/couchdb-mac@2.3.0", "type": "bintray", "namespace": "apache/couchdb", "name": "couchdb-mac", "version": "2.3.0", "qualifiers": null, "subpath": null, "is_invalid": false }, { "description": "invalid encoded colon : between scheme and type", "purl": "pkg%3Amaven/org.apache.commons/io", "canonical_purl": null, "type": "maven", "namespace": "org.apache.commons", "name": "io", "version": null, "qualifiers": null, "subpath": null, "is_invalid": true }, { "description": "check for invalid character in type", "purl": "pkg:n&g?inx/nginx@0.8.9", "canonical_purl": null, "type": null, "namespace": null, "name": "nginx", "version": "0.8.9", "qualifiers": null, "subpath": null, "is_invalid": true }, { "description": "check for type that starts with number", "purl": "pkg:3nginx/nginx@0.8.9", "canonical_purl": null, "type": null, "namespace": null, "name": "nginx", "version": "0.8.9", "qualifiers": null, "subpath": null, "is_invalid": true }, { "description": "check for colon in type", "purl": "pkg:nginx:a/nginx@0.8.9", "canonical_purl": null, "type": null, "namespace": null, "name": "nginx", "version": "0.8.9", "qualifiers": null, "subpath": null, "is_invalid": true } ] URI-PackageURL-2.24/t/vers/0000755000175000017500000000000015135504367014253 5ustar peppepeppeURI-PackageURL-2.24/t/vers/openssl_version_cmp_test.json0000644000175000017500000003325415135504042022271 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/vers-test.schema-0.1.json", "tests": [ { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "openssl", "versions": [ "1.0.0e", "1.0.0r" ] }, "expected_output": [ "1.0.0e", "1.0.0r" ] }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "openssl", "versions": [ "1.0.0e", "1.0.0r" ] }, "expected_output": false }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "openssl", "versions": [ "1.0.1f", "1.0.1m" ] }, "expected_output": [ "1.0.1f", "1.0.1m" ] }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "openssl", "versions": [ "1.0.1f", "1.0.1m" ] }, "expected_output": false }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "openssl", "versions": [ "1.0.1g", "1.0.2a" ] }, "expected_output": [ "1.0.1g", "1.0.2a" ] }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "openssl", "versions": [ "1.0.1g", "1.0.2a" ] }, "expected_output": false }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "openssl", "versions": [ "1.0.1h", "0.9.8" ] }, "expected_output": [ "0.9.8", "1.0.1h" ] }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "openssl", "versions": [ "1.0.1h", "0.9.8" ] }, "expected_output": false }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "openssl", "versions": [ "1.0.1h", "0.9.8a" ] }, "expected_output": [ "0.9.8a", "1.0.1h" ] }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "openssl", "versions": [ "1.0.1h", "0.9.8a" ] }, "expected_output": false }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "openssl", "versions": [ "0.9.8lt", "0.9.8ztl" ] }, "expected_output": [ "0.9.8lt", "0.9.8ztl" ] }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "openssl", "versions": [ "0.9.8lt", "0.9.8ztl" ] }, "expected_output": false }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "openssl", "versions": [ "1.1.1ag", "1.1.1ag" ] }, "expected_output": [ "1.1.1ag", "1.1.1ag" ] }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "openssl", "versions": [ "1.1.1ag", "1.1.1ag" ] }, "expected_output": true }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "openssl", "versions": [ "3.0.0", "1.1.1z" ] }, "expected_output": [ "1.1.1z", "3.0.0" ] }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "openssl", "versions": [ "3.0.0", "1.1.1z" ] }, "expected_output": false }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "openssl", "versions": [ "3.1.0", "1.0.1m" ] }, "expected_output": [ "1.0.1m", "3.1.0" ] }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "openssl", "versions": [ "3.1.0", "1.0.1m" ] }, "expected_output": false }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "openssl", "versions": [ "3.0.3", "1.0.2a" ] }, "expected_output": [ "1.0.2a", "3.0.3" ] }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "openssl", "versions": [ "3.0.3", "1.0.2a" ] }, "expected_output": false }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "openssl", "versions": [ "3.0.1", "0.9.8ztl" ] }, "expected_output": [ "0.9.8ztl", "3.0.1" ] }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "openssl", "versions": [ "3.0.1", "0.9.8ztl" ] }, "expected_output": false }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "openssl", "versions": [ "4.1.11", "1.1.1ag" ] }, "expected_output": [ "1.1.1ag", "4.1.11" ] }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "openssl", "versions": [ "4.1.11", "1.1.1ag" ] }, "expected_output": false }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "openssl", "versions": [ "1.1.1z", "3.0.0" ] }, "expected_output": [ "1.1.1z", "3.0.0" ] }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "openssl", "versions": [ "1.1.1z", "3.0.0" ] }, "expected_output": false }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "openssl", "versions": [ "1.0.1m", "3.1.0" ] }, "expected_output": [ "1.0.1m", "3.1.0" ] }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "openssl", "versions": [ "1.0.1m", "3.1.0" ] }, "expected_output": false }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "openssl", "versions": [ "1.0.2a", "3.0.3" ] }, "expected_output": [ "1.0.2a", "3.0.3" ] }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "openssl", "versions": [ "1.0.2a", "3.0.3" ] }, "expected_output": false }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "openssl", "versions": [ "0.9.8ztl", "3.0.1" ] }, "expected_output": [ "0.9.8ztl", "3.0.1" ] }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "openssl", "versions": [ "0.9.8ztl", "3.0.1" ] }, "expected_output": false }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "openssl", "versions": [ "1.1.1ag", "4.1.11" ] }, "expected_output": [ "1.1.1ag", "4.1.11" ] }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "openssl", "versions": [ "1.1.1ag", "4.1.11" ] }, "expected_output": false }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "openssl", "versions": [ "3.0.0", "3.0.0" ] }, "expected_output": [ "3.0.0", "3.0.0" ] }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "openssl", "versions": [ "3.0.0", "3.0.0" ] }, "expected_output": true }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "openssl", "versions": [ "3.1.0", "3.0.2" ] }, "expected_output": [ "3.0.2", "3.1.0" ] }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "openssl", "versions": [ "3.1.0", "3.0.2" ] }, "expected_output": false }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "openssl", "versions": [ "3.0.3", "4.0.2" ] }, "expected_output": [ "3.0.3", "4.0.2" ] }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "openssl", "versions": [ "3.0.3", "4.0.2" ] }, "expected_output": false }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "openssl", "versions": [ "3.0.1", "3.0.2" ] }, "expected_output": [ "3.0.1", "3.0.2" ] }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "openssl", "versions": [ "3.0.1", "3.0.2" ] }, "expected_output": false }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "openssl", "versions": [ "4.1.11", "4.2.0" ] }, "expected_output": [ "4.1.11", "4.2.0" ] }, { "description": "Comparison test for OpenSSL version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "openssl", "versions": [ "4.1.11", "4.2.0" ] }, "expected_output": false } ] } URI-PackageURL-2.24/t/vers/gentoo_version_cmp_test.json0000644000175000017500000003620315135504042022076 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/vers-test.schema-0.1.json", "tests": [ { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "gentoo", "versions": [ "4.0", "4.0" ] }, "expected_output": true }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "gentoo", "versions": [ "1.0", "1.0" ] }, "expected_output": true }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "gentoo", "versions": [ "1.0-r0", "1.0" ] }, "expected_output": true }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "gentoo", "versions": [ "1.0", "1.0-r0" ] }, "expected_output": true }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "gentoo", "versions": [ "1.0-r0", "1.0-r0" ] }, "expected_output": true }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "gentoo", "versions": [ "1.0-r1", "1.0-r1" ] }, "expected_output": true }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "6.0", "5.0" ] }, "expected_output": [ "5.0", "6.0" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "5.0", "5" ] }, "expected_output": [ "5", "5.0" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "1.0-r1", "1.0-r0" ] }, "expected_output": [ "1.0-r0", "1.0-r1" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "1.0-r1", "1.0" ] }, "expected_output": [ "1.0", "1.0-r1" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "999999999999999999999999999999", "999999999999999999999999999998" ] }, "expected_output": [ "999999999999999999999999999998", "999999999999999999999999999999" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "1.0.0", "1.0" ] }, "expected_output": [ "1.0", "1.0.0" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "1.0.0", "1.0b" ] }, "expected_output": [ "1.0b", "1.0.0" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "1b", "1" ] }, "expected_output": [ "1", "1b" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "1b_p1", "1_p1" ] }, "expected_output": [ "1_p1", "1b_p1" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "1.1b", "1.1" ] }, "expected_output": [ "1.1", "1.1b" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "12.2.5", "12.2b" ] }, "expected_output": [ "12.2b", "12.2.5" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "4.0", "5.0" ] }, "expected_output": [ "4.0", "5.0" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "5", "5.0" ] }, "expected_output": [ "5", "5.0" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "1.0_pre2", "1.0_p2" ] }, "expected_output": [ "1.0_pre2", "1.0_p2" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "1.0_alpha2", "1.0_p2" ] }, "expected_output": [ "1.0_alpha2", "1.0_p2" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "1.0_alpha1", "1.0_beta1" ] }, "expected_output": [ "1.0_alpha1", "1.0_beta1" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "1.0_beta3", "1.0_rc3" ] }, "expected_output": [ "1.0_beta3", "1.0_rc3" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "1.001000000000000000001", "1.001000000000000000002" ] }, "expected_output": [ "1.001000000000000000001", "1.001000000000000000002" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "1.00100000000", "1.0010000000000000001" ] }, "expected_output": [ "1.00100000000", "1.0010000000000000001" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "999999999999999999999999999998", "999999999999999999999999999999" ] }, "expected_output": [ "999999999999999999999999999998", "999999999999999999999999999999" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "1.01", "1.1" ] }, "expected_output": [ "1.01", "1.1" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "1.0-r0", "1.0-r1" ] }, "expected_output": [ "1.0-r0", "1.0-r1" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "1.0", "1.0-r1" ] }, "expected_output": [ "1.0", "1.0-r1" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "1.0", "1.0.0" ] }, "expected_output": [ "1.0", "1.0.0" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "1.0b", "1.0.0" ] }, "expected_output": [ "1.0b", "1.0.0" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "1_p1", "1b_p1" ] }, "expected_output": [ "1_p1", "1b_p1" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "1", "1b" ] }, "expected_output": [ "1", "1b" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "1.1", "1.1b" ] }, "expected_output": [ "1.1", "1.1b" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "gentoo", "versions": [ "12.2b", "12.2.5" ] }, "expected_output": [ "12.2b", "12.2.5" ] }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "gentoo", "versions": [ "1", "2" ] }, "expected_output": false }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "gentoo", "versions": [ "1.0_alpha", "1.0_pre" ] }, "expected_output": false }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "gentoo", "versions": [ "1.0_beta", "1.0_alpha" ] }, "expected_output": false }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "gentoo", "versions": [ "0", "0.0" ] }, "expected_output": false }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "gentoo", "versions": [ "1.0-r0", "1.0-r1" ] }, "expected_output": false }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "gentoo", "versions": [ "1.0-r1", "1.0-r0" ] }, "expected_output": false }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "gentoo", "versions": [ "1.0", "1.0-r1" ] }, "expected_output": false }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "gentoo", "versions": [ "1.0-r1", "1.0" ] }, "expected_output": false }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "gentoo", "versions": [ "1.0", "1.0.0" ] }, "expected_output": false }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "gentoo", "versions": [ "1_p1", "1b_p1" ] }, "expected_output": false }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "gentoo", "versions": [ "1b", "1" ] }, "expected_output": false }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "gentoo", "versions": [ "1.1b", "1.1" ] }, "expected_output": false }, { "description": "Comparison test for Gentoo version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "gentoo", "versions": [ "12.2b", "12.2" ] }, "expected_output": false } ] } URI-PackageURL-2.24/t/vers/gem_range_from_native_test.json0000644000175000017500000000056715135504042022520 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/vers-test.schema-0.1.json", "tests": [ { "description": "Construct VERS range from native RubyGems range.", "test_group": "base", "test_type": "from_native", "input": { "native_range": "~>2.0.8", "scheme": "gem" }, "expected_output": "vers:gem/>=2.0.8|<2.1" } ] } URI-PackageURL-2.24/t/vers/conan_range_from_native_basic_test.json0000644000175000017500000001331315135504042024200 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/vers-test.schema-0.1.json", "tests": [ { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "base", "test_type": "from_native", "input": { "scheme": "conan", "native_range": ">1.0.0" }, "expected_output": "vers:conan/>1.0.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "base", "test_type": "from_native", "input": { "scheme": "conan", "native_range": "<2.0" }, "expected_output": "vers:conan/<2.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "base", "test_type": "from_native", "input": { "scheme": "conan", "native_range": ">1 <2.0" }, "expected_output": "vers:conan/>1|<2.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "base", "test_type": "from_native", "input": { "scheme": "conan", "native_range": "~2.5" }, "expected_output": "vers:conan/>=2.5|<2.6-" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "base", "test_type": "from_native", "input": { "scheme": "conan", "native_range": "~2.5.1" }, "expected_output": "vers:conan/>=2.5.1|<2.6-" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "base", "test_type": "from_native", "input": { "scheme": "conan", "native_range": "~1" }, "expected_output": "vers:conan/>=1|<2-" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "base", "test_type": "from_native", "input": { "scheme": "conan", "native_range": "^1.2" }, "expected_output": "vers:conan/>=1.2|<2-" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "base", "test_type": "from_native", "input": { "scheme": "conan", "native_range": "^1.2.3" }, "expected_output": "vers:conan/>=1.2.3|<2-" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "base", "test_type": "from_native", "input": { "scheme": "conan", "native_range": "^0.1.2" }, "expected_output": "vers:conan/>=0.1.2|<0.2-" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "base", "test_type": "from_native", "input": { "scheme": "conan", "native_range": "1.0.0" }, "expected_output": "vers:conan/1.0.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "base", "test_type": "from_native", "input": { "scheme": "conan", "native_range": "=1.0.0" }, "expected_output": "vers:conan/1.0.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "base", "test_type": "from_native", "input": { "scheme": "conan", "native_range": "*" }, "expected_output": "vers:conan/>=0.0.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "base", "test_type": "from_native", "input": { "scheme": "conan", "native_range": "1.0.0 || 2.1.3" }, "expected_output": "vers:conan/1.0.0|2.1.3" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "base", "test_type": "from_native", "input": { "scheme": "conan", "native_range": ">1 <2.0 || ^3.2 " }, "expected_output": "vers:conan/>1|<2.0|>=3.2|<4-" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "base", "test_type": "from_native", "input": { "scheme": "conan", "native_range": "*, include_prerelease=True" }, "expected_output": "vers:conan/>=0.0.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "base", "test_type": "from_native", "input": { "scheme": "conan", "native_range": "*-" }, "expected_output": "vers:conan/>=0.0.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "base", "test_type": "from_native", "input": { "scheme": "conan", "native_range": ">1- <2.0" }, "expected_output": "vers:conan/>1|<2.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "base", "test_type": "from_native", "input": { "scheme": "conan", "native_range": ">1- <2.0 || ^3.2 " }, "expected_output": "vers:conan/>1|<2.0|>=3.2|<4-" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "base", "test_type": "from_native", "input": { "scheme": "conan", "native_range": "^1.1.2-" }, "expected_output": "vers:conan/>=1.1.2|<2-" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "base", "test_type": "from_native", "input": { "scheme": "conan", "native_range": "~1.1.2-" }, "expected_output": "vers:conan/>=1.1.2|<1.2-" } ] } URI-PackageURL-2.24/t/vers/pypi_range_roundtrip_test.json0000644000175000017500000001213115135504042022434 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/vers-test.schema-0.1.json", "tests": [ { "description": "Roundtrip test for PyPI VERS range.", "test_group": "advanced", "test_type": "roundtrip", "input": { "vers": "vers:pypi/>0.0.2" }, "expected_output": "vers:pypi/>0.0.2" }, { "description": "Roundtrip test for PyPI VERS range.", "test_group": "advanced", "test_type": "roundtrip", "input": { "vers": "vers:pypi/0.0.2|0.0.6|0.0.0|0.0.1|0.0.4|0.0.5|0.0.3" }, "expected_output": "vers:pypi/0.0.0|0.0.1|0.0.2|0.0.3|0.0.4|0.0.5|0.0.6" }, { "description": "Roundtrip test for PyPI VERS range.", "test_group": "advanced", "test_type": "roundtrip", "input": { "vers": "vers:pypi/>0.0.0|>=0.0.1|0.0.2|<0.0.3|0.0.4|<0.0.5|>=0.0.6" }, "expected_output": "vers:pypi/>0.0.0|>=0.0.1|0.0.2|<0.0.3|0.0.4|<0.0.5|>=0.0.6" }, { "description": "Roundtrip test for PyPI VERS range.", "test_group": "advanced", "test_type": "roundtrip", "input": { "vers": "vers:pypi/>0.0.0|>=0.0.1|>=0.0.1|0.0.2|0.0.3|0.0.4|<0.0.5|<=0.0.6|!=0.7|8.0|>12|<15.3" }, "expected_output": "vers:pypi/>0.0.0|>=0.0.1|>=0.0.1|0.0.2|0.0.3|0.0.4|<0.0.5|<=0.0.6|!=0.7|8.0|>12|<15.3" }, { "description": "Roundtrip test for PyPI VERS range.", "test_group": "advanced", "test_type": "roundtrip", "input": { "vers": "vers:pypi/>0.0.0|>=0.0.1|0.0.2|0.0.3|0.0.4|<0.0.5|>=0.0.6|!=0.8" }, "expected_output": "vers:pypi/>0.0.0|>=0.0.1|0.0.2|0.0.3|0.0.4|<0.0.5|>=0.0.6|!=0.8" }, { "description": "Roundtrip test for PyPI VERS range.", "test_group": "advanced", "test_type": "roundtrip", "input": { "vers": "vers:pypi/>0.0.1" }, "expected_output": "vers:pypi/>0.0.1" }, { "description": "Roundtrip test for PyPI VERS range.", "test_group": "advanced", "test_type": "roundtrip", "input": { "vers": "vers:pypi/>=0.0.1" }, "expected_output": "vers:pypi/>=0.0.1" }, { "description": "Roundtrip test for PyPI VERS range.", "test_group": "advanced", "test_type": "roundtrip", "input": { "vers": "vers:pypi/<0.0.1" }, "expected_output": "vers:pypi/<0.0.1" }, { "description": "Roundtrip test for PyPI VERS range.", "test_group": "advanced", "test_type": "roundtrip", "input": { "vers": "vers:pypi/<=0.0.1" }, "expected_output": "vers:pypi/<=0.0.1" }, { "description": "Roundtrip test for PyPI VERS range.", "test_group": "advanced", "test_type": "roundtrip", "input": { "vers": "vers:pypi/0.0.1" }, "expected_output": "vers:pypi/0.0.1" }, { "description": "Roundtrip test for PyPI VERS range.", "test_group": "advanced", "test_type": "roundtrip", "input": { "vers": "vers:pypi/!=0.0.1" }, "expected_output": "vers:pypi/!=0.0.1" }, { "description": "Roundtrip test for PyPI VERS range.", "test_group": "advanced", "test_type": "roundtrip", "input": { "vers": "vers:pypi/*" }, "expected_output": "vers:pypi/*" }, { "description": "Roundtrip test for PyPI VERS range.", "test_group": "advanced", "test_type": "roundtrip", "input": { "vers": "vers:pypi/>0.0.1|<0.1" }, "expected_output": "vers:pypi/>0.0.1|<0.1" }, { "description": "Roundtrip test for PyPI VERS range.", "test_group": "advanced", "test_type": "roundtrip", "input": { "vers": "vers:pypi/>=0.0.1|<0.1" }, "expected_output": "vers:pypi/>=0.0.1|<0.1" }, { "description": "Roundtrip test for PyPI VERS range.", "test_group": "advanced", "test_type": "roundtrip", "input": { "vers": "vers:pypi/<0.0.1|>0.1" }, "expected_output": "vers:pypi/<0.0.1|>0.1" }, { "description": "Roundtrip test for PyPI VERS range.", "test_group": "advanced", "test_type": "roundtrip", "input": { "vers": "vers:pypi/<=0.0.1|>0.1" }, "expected_output": "vers:pypi/<=0.0.1|>0.1" }, { "description": "Roundtrip test for PyPI VERS range.", "test_group": "advanced", "test_type": "roundtrip", "input": { "vers": "vers:pypi/0.0.1|>0.1" }, "expected_output": "vers:pypi/0.0.1|>0.1" }, { "description": "Roundtrip test for PyPI VERS range.", "test_group": "advanced", "test_type": "roundtrip", "input": { "vers": "vers:pypi/!=0.0.1|>0.1" }, "expected_output": "vers:pypi/!=0.0.1|>0.1" }, { "description": "Roundtrip test for PyPI VERS range.", "test_group": "advanced", "test_type": "roundtrip", "input": { "vers": "vers:pypi/0.0.2|0.0.6|>=0.0.0|0.0.1|0.0.4|0.0.5|0.0.3" }, "expected_output": "vers:pypi/>=0.0.0|0.0.1|0.0.2|0.0.3|0.0.4|0.0.5|0.0.6" } ] } URI-PackageURL-2.24/t/vers/conan_version_cmp_test.json0000644000175000017500000003603615135504042021705 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/vers-test.schema-0.1.json", "tests": [ { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "2", "1" ] }, "expected_output": [ "1", "2" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.1", "1.0" ] }, "expected_output": [ "1.0", "1.1" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.1.0", "1.0.2" ] }, "expected_output": [ "1.0.2", "1.1.0" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.22", "1.3" ] }, "expected_output": [ "1.3", "1.22" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.1.22", "1.1.3" ] }, "expected_output": [ "1.1.3", "1.1.22" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.1.1.22", "1.1.1.3" ] }, "expected_output": [ "1.1.1.3", "1.1.1.22" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.1.1.1.22", "1.1.1.1.3" ] }, "expected_output": [ "1.1.1.1.3", "1.1.1.1.22" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "2", "1.0" ] }, "expected_output": [ "1.0", "2" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.3.1", "1.2" ] }, "expected_output": [ "1.2", "1.3.1" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.1", "1.0.2" ] }, "expected_output": [ "1.0.2", "1.1" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.1.b", "1.1.a" ] }, "expected_output": [ "1.1.a", "1.1.b" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.1.1.abz", "1.1.1.abc" ] }, "expected_output": [ "1.1.1.abc", "1.1.1.abz" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "b.c", "a.b.c" ] }, "expected_output": [ "a.b.c", "b.c" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.a", "1.1" ] }, "expected_output": [ "1.1", "1.a" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.1a", "1.1" ] }, "expected_output": [ "1.1", "1.1a" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.1.a", "1.1" ] }, "expected_output": [ "1.1", "1.1.a" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.2", "1.1.a" ] }, "expected_output": [ "1.1.a", "1.2" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.20", "1.1*" ] }, "expected_output": [ "1.1*", "1.20" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.20", "1.1.*" ] }, "expected_output": [ "1.1.*", "1.20" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.3.*", "1.2.2" ] }, "expected_output": [ "1.2.2", "1.3.*" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.2.3*", "1.2.2" ] }, "expected_output": [ "1.2.2", "1.2.3*" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.1+b2", "1.1+b1" ] }, "expected_output": [ "1.1+b1", "1.1+b2" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.1+b2", "1.1" ] }, "expected_output": [ "1.1", "1.1+b2" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.2", "1.1+b1" ] }, "expected_output": [ "1.1+b1", "1.2" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.1+b.22", "1.1+b.3" ] }, "expected_output": [ "1.1+b.3", "1.1+b.22" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.1-pre2", "1.1-pre1" ] }, "expected_output": [ "1.1-pre1", "1.1-pre2" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.1-alpha.22", "1.1-alpha.3" ] }, "expected_output": [ "1.1-alpha.3", "1.1-alpha.22" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.1-alpha.3+b2", "1.1-alpha.3+b1" ] }, "expected_output": [ "1.1-alpha.3+b1", "1.1-alpha.3+b2" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.1", "1.1-alpha.1" ] }, "expected_output": [ "1.1-alpha.1", "1.1" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.2-alpha1", "1.1" ] }, "expected_output": [ "1.1", "1.2-alpha1" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.1.0", "1.1-alpha.1" ] }, "expected_output": [ "1.1-alpha.1", "1.1.0" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "conan", "versions": [ "1.0.0-alpha1", "1.0.0-" ] }, "expected_output": [ "1.0.0-", "1.0.0-alpha1" ] }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "conan", "versions": [ "1", "1.0" ] }, "expected_output": true }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "conan", "versions": [ "1", "1.0.0" ] }, "expected_output": true }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "conan", "versions": [ "1.0", "1.0.0" ] }, "expected_output": true }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "conan", "versions": [ "1.0", "1.0.0.0" ] }, "expected_output": true }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "conan", "versions": [ "1-pre1", "1.0-pre1" ] }, "expected_output": true }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "conan", "versions": [ "1-pre1", "1.0.0-pre1" ] }, "expected_output": true }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "conan", "versions": [ "1.0-pre1", "1.0.0-pre1" ] }, "expected_output": true }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "conan", "versions": [ "1.0-pre1.0", "1.0.0-pre1" ] }, "expected_output": true }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "conan", "versions": [ "1-pre1+b1", "1.0-pre1+b1" ] }, "expected_output": true }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "conan", "versions": [ "1-pre1+b1", "1.0.0-pre1+b1" ] }, "expected_output": true }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "conan", "versions": [ "1.0-pre1+b1", "1.0.0-pre1+b1" ] }, "expected_output": true }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "conan", "versions": [ "1+b1", "1.0+b1" ] }, "expected_output": true }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "conan", "versions": [ "1+b1", "1.0+b1.0" ] }, "expected_output": true }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "conan", "versions": [ "1+b1", "1.0.0+b1" ] }, "expected_output": true }, { "description": "Comparison test for Conan C/C++ version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "conan", "versions": [ "1.0+b1", "1.0.0+b1" ] }, "expected_output": true } ] } URI-PackageURL-2.24/t/vers/conan_range_from_native_test.json0000644000175000017500000017065415135504042023053 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/vers-test.schema-0.1.json", "tests": [ { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=5.1.0 <=5.1.1", "scheme": "conan" }, "expected_output": "vers:conan/>=5.1.0|<=5.1.1" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=5.2.5", "scheme": "conan" }, "expected_output": "vers:conan/5.2.5" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<3.5.4", "scheme": "conan" }, "expected_output": "vers:conan/<3.5.4" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=3.7", "scheme": "conan" }, "expected_output": "vers:conan/3.7" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0", "scheme": "conan" }, "expected_output": "vers:conan/<0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.17.3", "scheme": "conan" }, "expected_output": "vers:conan/<2.17.3" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=2.18.1", "scheme": "conan" }, "expected_output": "vers:conan/<=2.18.1" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.11.34 <2.19.3", "scheme": "conan" }, "expected_output": "vers:conan/>=1.11.34|<2.19.3" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.0.8", "scheme": "conan" }, "expected_output": "vers:conan/<1.0.8" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=1.16.0", "scheme": "conan" }, "expected_output": "vers:conan/1.16.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.16.0", "scheme": "conan" }, "expected_output": "vers:conan/<1.16.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.0.0 <1.17.2", "scheme": "conan" }, "expected_output": "vers:conan/>=1.0.0|<1.17.2" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.17.4", "scheme": "conan" }, "expected_output": "vers:conan/<1.17.4" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.13.7||>=0.14.0 <0.14.11||>=0.15.0 <0.15.2", "scheme": "conan" }, "expected_output": "vers:conan/<0.13.7|>=0.14.0|<0.14.11|>=0.15.0|<0.15.2" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.3.0", "scheme": "conan" }, "expected_output": "vers:conan/<=1.3.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.9.3", "scheme": "conan" }, "expected_output": "vers:conan/<2.9.3" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<3.1.0", "scheme": "conan" }, "expected_output": "vers:conan/<3.1.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.5.8", "scheme": "conan" }, "expected_output": "vers:conan/<=0.5.8" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.1.12", "scheme": "conan" }, "expected_output": "vers:conan/<=0.1.12" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=2.1.27", "scheme": "conan" }, "expected_output": "vers:conan/<=2.1.27" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.1.17 <=2.1.27", "scheme": "conan" }, "expected_output": "vers:conan/>=2.1.17|<=2.1.27" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=3.6.6", "scheme": "conan" }, "expected_output": "vers:conan/<=3.6.6" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<3.6.7", "scheme": "conan" }, "expected_output": "vers:conan/<3.6.7" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=3.6.7", "scheme": "conan" }, "expected_output": "vers:conan/3.6.7" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2021.07.22.00", "scheme": "conan" }, "expected_output": "vers:conan/<2021.07.22.00" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.0.12", "scheme": "conan" }, "expected_output": "vers:conan/<1.0.12" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.3.0 <=3.4.0", "scheme": "conan" }, "expected_output": "vers:conan/>=3.3.0|<=3.4.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=2.42.6", "scheme": "conan" }, "expected_output": "vers:conan/2.42.6" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=5.1.4", "scheme": "conan" }, "expected_output": "vers:conan/<=5.1.4" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=5.1.4", "scheme": "conan" }, "expected_output": "vers:conan/5.1.4" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=5.2.1", "scheme": "conan" }, "expected_output": "vers:conan/5.2.1" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.65.3", "scheme": "conan" }, "expected_output": "vers:conan/<2.65.3" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.60.0 <=2.62.4", "scheme": "conan" }, "expected_output": "vers:conan/>=2.60.0|<=2.62.4" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.66.7||>=2.67.0 <2.67.4", "scheme": "conan" }, "expected_output": "vers:conan/<2.66.7|>=2.67.0|<2.67.4" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.66.6||>=2.67.0 <2.67.3", "scheme": "conan" }, "expected_output": "vers:conan/<2.66.6|>=2.67.0|<2.67.3" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.66.8", "scheme": "conan" }, "expected_output": "vers:conan/<2.66.8" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.63.6", "scheme": "conan" }, "expected_output": "vers:conan/<2.63.6" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=3.2", "scheme": "conan" }, "expected_output": "vers:conan/<=3.2" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=2.8.107", "scheme": "conan" }, "expected_output": "vers:conan/2.8.107" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=2.9.0", "scheme": "conan" }, "expected_output": "vers:conan/2.9.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=4.3.0", "scheme": "conan" }, "expected_output": "vers:conan/4.3.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.12.0", "scheme": "conan" }, "expected_output": "vers:conan/<=1.12.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=1.13.1-1", "scheme": "conan" }, "expected_output": "vers:conan/1.13.1-1" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=1.10.4", "scheme": "conan" }, "expected_output": "vers:conan/1.10.4" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.14.0", "scheme": "conan" }, "expected_output": "vers:conan/<=0.14.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=2.13.1", "scheme": "conan" }, "expected_output": "vers:conan/<=2.13.1" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.0.23", "scheme": "conan" }, "expected_output": "vers:conan/<2.0.23" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.0.25", "scheme": "conan" }, "expected_output": "vers:conan/<2.0.25" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.0.0 <2.0.17", "scheme": "conan" }, "expected_output": "vers:conan/>=2.0.0|<2.0.17" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=2.0.24", "scheme": "conan" }, "expected_output": "vers:conan/2.0.24" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.0.27", "scheme": "conan" }, "expected_output": "vers:conan/<2.0.27" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.0.26", "scheme": "conan" }, "expected_output": "vers:conan/<2.0.26" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=3.0.6", "scheme": "conan" }, "expected_output": "vers:conan/3.0.6" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=2.2.0", "scheme": "conan" }, "expected_output": "vers:conan/2.2.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=2.3.0", "scheme": "conan" }, "expected_output": "vers:conan/<=2.3.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=2.3.0", "scheme": "conan" }, "expected_output": "vers:conan/2.3.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=2.4.0", "scheme": "conan" }, "expected_output": "vers:conan/2.4.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=2.4.0", "scheme": "conan" }, "expected_output": "vers:conan/<=2.4.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "", "scheme": "conan" }, "expected_output": "vers:conan/" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2021-10-15", "scheme": "conan" }, "expected_output": "vers:conan/<2021-10-15" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=3.0.0", "scheme": "conan" }, "expected_output": "vers:conan/3.0.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.14", "scheme": "conan" }, "expected_output": "vers:conan/<=0.14" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.80.0", "scheme": "conan" }, "expected_output": "vers:conan/<1.80.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=3.4.1", "scheme": "conan" }, "expected_output": "vers:conan/3.4.1" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.4.0 <3.4.2", "scheme": "conan" }, "expected_output": "vers:conan/>=3.4.0|<3.4.2" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<3.5.2", "scheme": "conan" }, "expected_output": "vers:conan/<3.5.2" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.4.1 <=3.5.2", "scheme": "conan" }, "expected_output": "vers:conan/>=3.4.1|<=3.5.2" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=3.6.0", "scheme": "conan" }, "expected_output": "vers:conan/3.6.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.0.0 <3.6.2", "scheme": "conan" }, "expected_output": "vers:conan/>=3.0.0|<3.6.2" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.6.0 <=0.6.1", "scheme": "conan" }, "expected_output": "vers:conan/>=0.6.0|<=0.6.1" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=3.3", "scheme": "conan" }, "expected_output": "vers:conan/3.3" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=7.29.0 <=7.71.1", "scheme": "conan" }, "expected_output": "vers:conan/>=7.29.0|<=7.71.1" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=7.21.0 <7.74.0", "scheme": "conan" }, "expected_output": "vers:conan/>=7.21.0|<7.74.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=7.41.0 <7.74.0", "scheme": "conan" }, "expected_output": "vers:conan/>=7.41.0|<7.74.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=7.1.1 <=7.75.0", "scheme": "conan" }, "expected_output": "vers:conan/>=7.1.1|<=7.75.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=7.63.0 <=7.75.0", "scheme": "conan" }, "expected_output": "vers:conan/>=7.63.0|<=7.75.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=7.10.4 <7.77.0", "scheme": "conan" }, "expected_output": "vers:conan/>=7.10.4|<7.77.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=7.73.0 <=7.78.0", "scheme": "conan" }, "expected_output": "vers:conan/>=7.73.0|<=7.78.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=1.0.8", "scheme": "conan" }, "expected_output": "vers:conan/1.0.8" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.0.8", "scheme": "conan" }, "expected_output": "vers:conan/<=1.0.8" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=1.0.9", "scheme": "conan" }, "expected_output": "vers:conan/1.0.9" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=0.4.0", "scheme": "conan" }, "expected_output": "vers:conan/0.4.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=0.4.1", "scheme": "conan" }, "expected_output": "vers:conan/0.4.1" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.28.4", "scheme": "conan" }, "expected_output": "vers:conan/<0.28.4" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=2.0.4", "scheme": "conan" }, "expected_output": "vers:conan/2.0.4" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.0.4", "scheme": "conan" }, "expected_output": "vers:conan/<2.0.4" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=2.0.90", "scheme": "conan" }, "expected_output": "vers:conan/2.0.90" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">1.5.3 <=2.0.90", "scheme": "conan" }, "expected_output": "vers:conan/>1.5.3|<=2.0.90" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<9d", "scheme": "conan" }, "expected_output": "vers:conan/<9d" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.64", "scheme": "conan" }, "expected_output": "vers:conan/<1.64" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<3.1.7", "scheme": "conan" }, "expected_output": "vers:conan/<3.1.7" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=1.6.0", "scheme": "conan" }, "expected_output": "vers:conan/1.6.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.20", "scheme": "conan" }, "expected_output": "vers:conan/<0.20" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.20", "scheme": "conan" }, "expected_output": "vers:conan/<=0.20" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.20.1", "scheme": "conan" }, "expected_output": "vers:conan/<0.20.1" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.20.0", "scheme": "conan" }, "expected_output": "vers:conan/<0.20.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=0.20.0", "scheme": "conan" }, "expected_output": "vers:conan/0.20.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=3.4.0", "scheme": "conan" }, "expected_output": "vers:conan/<=3.4.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=1.0.30", "scheme": "conan" }, "expected_output": "vers:conan/1.0.30" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=1.1.10", "scheme": "conan" }, "expected_output": "vers:conan/1.1.10" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<4.2.0", "scheme": "conan" }, "expected_output": "vers:conan/<4.2.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.9.0 <=4.3.0", "scheme": "conan" }, "expected_output": "vers:conan/>=3.9.0|<=4.3.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=4.0.0 <=4.3.0", "scheme": "conan" }, "expected_output": "vers:conan/>=4.0.0|<=4.3.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=4.3.0", "scheme": "conan" }, "expected_output": "vers:conan/<=4.3.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<4.4.0", "scheme": "conan" }, "expected_output": "vers:conan/<4.4.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=4.4.0", "scheme": "conan" }, "expected_output": "vers:conan/4.4.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=4.4.0", "scheme": "conan" }, "expected_output": "vers:conan/<=4.4.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=4.0.3-35", "scheme": "conan" }, "expected_output": "vers:conan/4.0.3-35" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.9.0 <=4.4.0", "scheme": "conan" }, "expected_output": "vers:conan/>=3.9.0|<=4.4.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<4.5.0", "scheme": "conan" }, "expected_output": "vers:conan/<4.5.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.0.1", "scheme": "conan" }, "expected_output": "vers:conan/<1.0.1" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=2.9.10", "scheme": "conan" }, "expected_output": "vers:conan/2.9.10" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.9.11", "scheme": "conan" }, "expected_output": "vers:conan/<2.9.11" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.9.13", "scheme": "conan" }, "expected_output": "vers:conan/<2.9.13" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.9.14", "scheme": "conan" }, "expected_output": "vers:conan/<2.9.14" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.10.3", "scheme": "conan" }, "expected_output": "vers:conan/<2.10.3" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.1.35", "scheme": "conan" }, "expected_output": "vers:conan/<1.1.35" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.11.4", "scheme": "conan" }, "expected_output": "vers:conan/<=0.11.4" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.12.1", "scheme": "conan" }, "expected_output": "vers:conan/<0.12.1" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.12.1", "scheme": "conan" }, "expected_output": "vers:conan/<=0.12.1" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=0.12.1", "scheme": "conan" }, "expected_output": "vers:conan/0.12.1" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=5.4.0", "scheme": "conan" }, "expected_output": "vers:conan/<=5.4.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=5.4.0", "scheme": "conan" }, "expected_output": "vers:conan/5.4.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=5.1.0 <5.3.5||>=5.4.0 <5.4.4", "scheme": "conan" }, "expected_output": "vers:conan/>=5.1.0|<5.3.5|>=5.4.0|<5.4.4" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=5.4.3", "scheme": "conan" }, "expected_output": "vers:conan/5.4.3" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=5.4.0 <=5.4.3", "scheme": "conan" }, "expected_output": "vers:conan/>=5.4.0|<=5.4.3" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=5.4.0 <=5.4.4", "scheme": "conan" }, "expected_output": "vers:conan/>=5.4.0|<=5.4.4" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=5.4.2 <=5.4.4", "scheme": "conan" }, "expected_output": "vers:conan/>=5.4.2|<=5.4.4" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=1.8.3", "scheme": "conan" }, "expected_output": "vers:conan/1.8.3" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.7.17||>=2.8.0 <2.16.8||>=2.17.0 <2.24.0", "scheme": "conan" }, "expected_output": "vers:conan/<2.7.17|>=2.8.0|<2.16.8|>=2.17.0|<2.24.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=4.0.0", "scheme": "conan" }, "expected_output": "vers:conan/4.0.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=6.2.1", "scheme": "conan" }, "expected_output": "vers:conan/<=6.2.1" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<6.3", "scheme": "conan" }, "expected_output": "vers:conan/<6.3" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<3.7.2", "scheme": "conan" }, "expected_output": "vers:conan/<3.7.2" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<3.7.3", "scheme": "conan" }, "expected_output": "vers:conan/<3.7.3" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.4.1", "scheme": "conan" }, "expected_output": "vers:conan/<2.4.1" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.5.2", "scheme": "conan" }, "expected_output": "vers:conan/<2.5.2" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.4.3||>=2.5.0 <2.5.4", "scheme": "conan" }, "expected_output": "vers:conan/<2.4.3|>=2.5.0|<2.5.4" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=2.5.7", "scheme": "conan" }, "expected_output": "vers:conan/<=2.5.7" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.5.4", "scheme": "conan" }, "expected_output": "vers:conan/<2.5.4" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<3.0.1", "scheme": "conan" }, "expected_output": "vers:conan/<3.0.1" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<3.0.5", "scheme": "conan" }, "expected_output": "vers:conan/<3.0.5" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<3.1.2", "scheme": "conan" }, "expected_output": "vers:conan/<3.1.2" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=3.1.2", "scheme": "conan" }, "expected_output": "vers:conan/3.1.2" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.1.0 <3.1.4", "scheme": "conan" }, "expected_output": "vers:conan/>=3.1.0|<3.1.4" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=2.3.1", "scheme": "conan" }, "expected_output": "vers:conan/<=2.3.1" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.5.1||>=2.0.0 <2.4.0", "scheme": "conan" }, "expected_output": "vers:conan/<=1.5.1|>=2.0.0|<2.4.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.4.0", "scheme": "conan" }, "expected_output": "vers:conan/<2.4.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=2.3.1", "scheme": "conan" }, "expected_output": "vers:conan/2.3.1" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.1.1d <=1.1.1f", "scheme": "conan" }, "expected_output": "vers:conan/>=1.1.1d|<=1.1.1f" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.0.2 <=1.0.2v", "scheme": "conan" }, "expected_output": "vers:conan/>=1.0.2|<=1.0.2v" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.0.2 <=1.0.2w||>=1.1.1 <=1.1.1h", "scheme": "conan" }, "expected_output": "vers:conan/>=1.0.2|<=1.0.2w|>=1.1.1|<=1.1.1h" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=1.0.2s", "scheme": "conan" }, "expected_output": "vers:conan/1.0.2s" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.0.2 <1.0.2y||>=1.1.1 <1.1.1j", "scheme": "conan" }, "expected_output": "vers:conan/>=1.0.2|<1.0.2y|>=1.1.1|<1.1.1j" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.1.1 <1.1.1k", "scheme": "conan" }, "expected_output": "vers:conan/>=1.1.1|<1.1.1k" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.1.1h <1.1.1k", "scheme": "conan" }, "expected_output": "vers:conan/>=1.1.1h|<1.1.1k" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.1.1 <1.1.1l", "scheme": "conan" }, "expected_output": "vers:conan/>=1.1.1|<1.1.1l" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.0.2 <1.0.2za||>=1.1.1 <1.1.1l", "scheme": "conan" }, "expected_output": "vers:conan/>=1.0.2|<1.0.2za|>=1.1.1|<1.1.1l" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.0.2||=1.1.0||=3.0.0", "scheme": "conan" }, "expected_output": "vers:conan/<1.0.2|1.1.0|3.0.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.0.2 <1.1.1m||=3.0.0", "scheme": "conan" }, "expected_output": "vers:conan/>=1.0.2|<1.1.1m|3.0.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.0.2 <1.0.2zd||>=1.1.0 <1.1.1n||>=3.0.0 <3.0.2", "scheme": "conan" }, "expected_output": "vers:conan/>=1.0.2|<1.0.2zd|>=1.1.0|<1.1.1n|>=3.0.0|<3.0.2" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.0.2 <1.0.2ze||>=1.1.1 <1.1.1o||>=3.0.0 <3.0.3", "scheme": "conan" }, "expected_output": "vers:conan/>=1.0.2|<1.0.2ze|>=1.1.1|<1.1.1o|>=3.0.0|<3.0.3" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.0.0 <3.0.3", "scheme": "conan" }, "expected_output": "vers:conan/>=3.0.0|<3.0.3" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.0.2 <1.0.2zf||>=1.1.1 <1.1.1p||>=3.0.0 <3.0.4", "scheme": "conan" }, "expected_output": "vers:conan/>=1.0.2|<1.0.2zf|>=1.1.1|<1.1.1p|>=3.0.0|<3.0.4" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.1.1 <1.1.1q||>=3.0.0 <3.0.5", "scheme": "conan" }, "expected_output": "vers:conan/>=1.1.1|<1.1.1q|>=3.0.0|<3.0.5" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=3.0.4", "scheme": "conan" }, "expected_output": "vers:conan/3.0.4" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.0.0 <3.0.6", "scheme": "conan" }, "expected_output": "vers:conan/>=3.0.0|<3.0.6" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.0.0 <3.0.7", "scheme": "conan" }, "expected_output": "vers:conan/>=3.0.0|<3.0.7" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.0.0 <=3.0.7", "scheme": "conan" }, "expected_output": "vers:conan/>=3.0.0|<=3.0.7" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<8.44", "scheme": "conan" }, "expected_output": "vers:conan/<8.44" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<10.40", "scheme": "conan" }, "expected_output": "vers:conan/<10.40" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<3.15.0", "scheme": "conan" }, "expected_output": "vers:conan/<3.15.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<3.18.3||>=3.19.0 <3.19.5||>=3.20.0 <3.20.2||>=3.21.0 <3.21.6", "scheme": "conan" }, "expected_output": "vers:conan/<3.18.3|>=3.19.0|<3.19.5|>=3.20.0|<3.20.2|>=3.21.0|<3.21.6" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=1.3", "scheme": "conan" }, "expected_output": "vers:conan/1.3" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=2.2", "scheme": "conan" }, "expected_output": "vers:conan/2.2" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.5.0", "scheme": "conan" }, "expected_output": "vers:conan/<=1.5.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=4.0 <4.4.1", "scheme": "conan" }, "expected_output": "vers:conan/>=4.0|<4.4.1" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=4.0 <4.4.3", "scheme": "conan" }, "expected_output": "vers:conan/>=4.0|<4.4.3" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=2.0.1", "scheme": "conan" }, "expected_output": "vers:conan/<=2.0.1" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=cci.20200203", "scheme": "conan" }, "expected_output": "vers:conan/cci.20200203" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=2.27", "scheme": "conan" }, "expected_output": "vers:conan/2.27" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=8.6.11", "scheme": "conan" }, "expected_output": "vers:conan/8.6.11" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=5.0.0", "scheme": "conan" }, "expected_output": "vers:conan/5.0.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.9.3 <=0.13.0", "scheme": "conan" }, "expected_output": "vers:conan/>=0.9.3|<=0.13.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2021.02.22.00", "scheme": "conan" }, "expected_output": "vers:conan/<2021.02.22.00" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.05.01", "scheme": "conan" }, "expected_output": "vers:conan/<1.05.01" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.9.6", "scheme": "conan" }, "expected_output": "vers:conan/<0.9.6" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=19.0.0 <=20.8.0", "scheme": "conan" }, "expected_output": "vers:conan/>=19.0.0|<=20.8.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.19.0 <0.30.0", "scheme": "conan" }, "expected_output": "vers:conan/>=0.19.0|<0.30.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.26.0 <0.30.0", "scheme": "conan" }, "expected_output": "vers:conan/>=0.26.0|<0.30.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.30.0", "scheme": "conan" }, "expected_output": "vers:conan/<0.30.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.33.1||>0.33.1 <0.34.1", "scheme": "conan" }, "expected_output": "vers:conan/<0.33.1|>0.33.1|<0.34.1" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.34.0 <0.34.2||>=0.35.0 <0.35.2", "scheme": "conan" }, "expected_output": "vers:conan/>=0.34.0|<0.34.2|>=0.35.0|<0.35.2" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.38.1", "scheme": "conan" }, "expected_output": "vers:conan/<0.38.1" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.37.0 <0.38.2", "scheme": "conan" }, "expected_output": "vers:conan/>=0.37.0|<0.38.2" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.0.2||>=2.0.0 <2.0.2", "scheme": "conan" }, "expected_output": "vers:conan/<1.0.2|>=2.0.0|<2.0.2" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<4.6.0", "scheme": "conan" }, "expected_output": "vers:conan/<4.6.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<4.7.0", "scheme": "conan" }, "expected_output": "vers:conan/<4.7.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=4.6.0 <4.8.0", "scheme": "conan" }, "expected_output": "vers:conan/>=4.6.0|<4.8.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<4.8.1", "scheme": "conan" }, "expected_output": "vers:conan/<4.8.1" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=5.0.0", "scheme": "conan" }, "expected_output": "vers:conan/<=5.0.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=5.0.0 <5.1.1", "scheme": "conan" }, "expected_output": "vers:conan/>=5.0.0|<5.1.1" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<5.2.0", "scheme": "conan" }, "expected_output": "vers:conan/<5.2.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<5.4.0", "scheme": "conan" }, "expected_output": "vers:conan/<5.4.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<5.5.0", "scheme": "conan" }, "expected_output": "vers:conan/<5.5.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=5.3.0", "scheme": "conan" }, "expected_output": "vers:conan/5.3.0" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<5.5.1", "scheme": "conan" }, "expected_output": "vers:conan/<5.5.1" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<5.5.2", "scheme": "conan" }, "expected_output": "vers:conan/<5.5.2" }, { "description": "Construct VERS range from native Conan C/C++ range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<4.3.3", "scheme": "conan" }, "expected_output": "vers:conan/<4.3.3" } ] } URI-PackageURL-2.24/t/vers/nginx_range_from_native_test.json0000644000175000017500000000236115135504042023065 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/vers-test.schema-0.1.json", "tests": [ { "description": "Construct VERS range from native Nginx range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "0.8.40+", "scheme": "nginx" }, "expected_output": "vers:nginx/>=0.8.40|<0.9.0" }, { "description": "Construct VERS range from native Nginx range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "0.7.52-0.8.39", "scheme": "nginx" }, "expected_output": "vers:nginx/>=0.7.52|<=0.8.39" }, { "description": "Construct VERS range from native Nginx range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "0.9.10", "scheme": "nginx" }, "expected_output": "vers:nginx/0.9.10" }, { "description": "Construct VERS range from native Nginx range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "1.5.0+, 1.4.1+", "scheme": "nginx" }, "expected_output": "vers:nginx/>=1.4.1|<1.5.0|>=1.5.0" } ] } URI-PackageURL-2.24/t/vers/pypi_range_from_native_test.json0000644000175000017500000000152615135504042022725 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/vers-test.schema-0.1.json", "tests": [ { "description": "Construct VERS range from native PyPI range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 1.0", "scheme": "pypi" }, "expected_output": "vers:pypi/>=1.0" }, { "description": "Construct VERS range from native PyPI range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.1.0", "scheme": "pypi" }, "expected_output": "vers:pypi/<2.1.0" }, { "description": "Construct VERS range from native PyPI range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "!=5", "scheme": "pypi" }, "expected_output": "vers:pypi/!=5" } ]} URI-PackageURL-2.24/t/vers/maven_version_cmp_test.json0000644000175000017500000116113315135504042021713 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/vers-test.schema-0.1.json", "tests": [ { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "2" ] }, "expected_output": [ "1", "2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.5", "2" ] }, "expected_output": [ "1.5", "2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "2.5" ] }, "expected_output": [ "1", "2.5" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0", "1.1" ] }, "expected_output": [ "1.0", "1.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.1", "1.2" ] }, "expected_output": [ "1.1", "1.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0.0", "1.1" ] }, "expected_output": [ "1.0.0", "1.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0.1", "1.1" ] }, "expected_output": [ "1.0.1", "1.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.1", "1.2.0" ] }, "expected_output": [ "1.1", "1.2.0" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0", "1.0-alpha-1" ] }, "expected_output": [ "1.0-alpha-1", "1.0" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0-alpha-1", "1.0-alpha-2" ] }, "expected_output": [ "1.0-alpha-1", "1.0-alpha-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0-alpha-1", "1.0-beta-1" ] }, "expected_output": [ "1.0-alpha-1", "1.0-beta-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0-SNAPSHOT", "1.0-beta-1" ] }, "expected_output": [ "1.0-beta-1", "1.0-SNAPSHOT" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0", "1.0-SNAPSHOT" ] }, "expected_output": [ "1.0-SNAPSHOT", "1.0" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0-alpha-1", "1.0-alpha-1-SNAPSHOT" ] }, "expected_output": [ "1.0-alpha-1-SNAPSHOT", "1.0-alpha-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0", "1.0-1" ] }, "expected_output": [ "1.0", "1.0-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0-1", "1.0-2" ] }, "expected_output": [ "1.0-1", "1.0-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0-1", "1.0.0" ] }, "expected_output": [ "1.0.0", "1.0-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0-1", "2.0.1" ] }, "expected_output": [ "2.0-1", "2.0.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.1-klm", "2.0.1-lmn" ] }, "expected_output": [ "2.0.1-klm", "2.0.1-lmn" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.1", "2.0.1-xyz" ] }, "expected_output": [ "2.0.1", "2.0.1-xyz" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.1", "2.0.1-123" ] }, "expected_output": [ "2.0.1", "2.0.1-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.1-123", "2.0.1-xyz" ] }, "expected_output": [ "2.0.1-xyz", "2.0.1-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "2" ] }, "expected_output": [ "1", "2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.5", "2" ] }, "expected_output": [ "1.5", "2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "2.5" ] }, "expected_output": [ "1", "2.5" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0", "1.1" ] }, "expected_output": [ "1.0", "1.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.1", "1.2" ] }, "expected_output": [ "1.1", "1.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0.0", "1.1" ] }, "expected_output": [ "1.0.0", "1.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0.1", "1.1" ] }, "expected_output": [ "1.0.1", "1.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.1", "1.2.0" ] }, "expected_output": [ "1.1", "1.2.0" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0", "1.0-alpha-1" ] }, "expected_output": [ "1.0-alpha-1", "1.0" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0-alpha-1", "1.0-alpha-2" ] }, "expected_output": [ "1.0-alpha-1", "1.0-alpha-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0-alpha-1", "1.0-beta-1" ] }, "expected_output": [ "1.0-alpha-1", "1.0-beta-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0-SNAPSHOT", "1.0-beta-1" ] }, "expected_output": [ "1.0-beta-1", "1.0-SNAPSHOT" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0", "1.0-SNAPSHOT" ] }, "expected_output": [ "1.0-SNAPSHOT", "1.0" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0-alpha-1", "1.0-alpha-1-SNAPSHOT" ] }, "expected_output": [ "1.0-alpha-1-SNAPSHOT", "1.0-alpha-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0", "1.0-1" ] }, "expected_output": [ "1.0", "1.0-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0-1", "1.0-2" ] }, "expected_output": [ "1.0-1", "1.0-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0-1", "1.0.0" ] }, "expected_output": [ "1.0.0", "1.0-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0-1", "2.0.1" ] }, "expected_output": [ "2.0-1", "2.0.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.1-klm", "2.0.1-lmn" ] }, "expected_output": [ "2.0.1-klm", "2.0.1-lmn" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.1", "2.0.1-xyz" ] }, "expected_output": [ "2.0.1", "2.0.1-xyz" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.1", "2.0.1-123" ] }, "expected_output": [ "2.0.1", "2.0.1-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.1-123", "2.0.1-xyz" ] }, "expected_output": [ "2.0.1-xyz", "2.0.1-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "2" ] }, "expected_output": [ "1", "2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.5", "2" ] }, "expected_output": [ "1.5", "2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "2.5" ] }, "expected_output": [ "1", "2.5" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0", "1.1" ] }, "expected_output": [ "1.0", "1.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.1", "1.2" ] }, "expected_output": [ "1.1", "1.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0.0", "1.1" ] }, "expected_output": [ "1.0.0", "1.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0.1", "1.1" ] }, "expected_output": [ "1.0.1", "1.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.1", "1.2.0" ] }, "expected_output": [ "1.1", "1.2.0" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0", "1.0-alpha-1" ] }, "expected_output": [ "1.0-alpha-1", "1.0" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0-alpha-1", "1.0-alpha-2" ] }, "expected_output": [ "1.0-alpha-1", "1.0-alpha-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0-alpha-1", "1.0-beta-1" ] }, "expected_output": [ "1.0-alpha-1", "1.0-beta-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0-SNAPSHOT", "1.0-beta-1" ] }, "expected_output": [ "1.0-beta-1", "1.0-SNAPSHOT" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0", "1.0-SNAPSHOT" ] }, "expected_output": [ "1.0-SNAPSHOT", "1.0" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0-alpha-1", "1.0-alpha-1-SNAPSHOT" ] }, "expected_output": [ "1.0-alpha-1-SNAPSHOT", "1.0-alpha-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0", "1.0-1" ] }, "expected_output": [ "1.0", "1.0-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0-1", "1.0-2" ] }, "expected_output": [ "1.0-1", "1.0-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0-1", "1.0.0" ] }, "expected_output": [ "1.0.0", "1.0-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0-1", "2.0.1" ] }, "expected_output": [ "2.0-1", "2.0.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.1-klm", "2.0.1-lmn" ] }, "expected_output": [ "2.0.1-klm", "2.0.1-lmn" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.1", "2.0.1-xyz" ] }, "expected_output": [ "2.0.1", "2.0.1-xyz" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.1", "2.0.1-123" ] }, "expected_output": [ "2.0.1", "2.0.1-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.1-123", "2.0.1-xyz" ] }, "expected_output": [ "2.0.1-xyz", "2.0.1-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "2" ] }, "expected_output": [ "1", "2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.5", "2" ] }, "expected_output": [ "1.5", "2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "2.5" ] }, "expected_output": [ "1", "2.5" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0", "1.1" ] }, "expected_output": [ "1.0", "1.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.1", "1.2" ] }, "expected_output": [ "1.1", "1.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0.0", "1.1" ] }, "expected_output": [ "1.0.0", "1.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0.1", "1.1" ] }, "expected_output": [ "1.0.1", "1.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.1", "1.2.0" ] }, "expected_output": [ "1.1", "1.2.0" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0", "1.0-alpha-1" ] }, "expected_output": [ "1.0-alpha-1", "1.0" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0-alpha-1", "1.0-alpha-2" ] }, "expected_output": [ "1.0-alpha-1", "1.0-alpha-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0-alpha-1", "1.0-beta-1" ] }, "expected_output": [ "1.0-alpha-1", "1.0-beta-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0-SNAPSHOT", "1.0-beta-1" ] }, "expected_output": [ "1.0-beta-1", "1.0-SNAPSHOT" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0", "1.0-SNAPSHOT" ] }, "expected_output": [ "1.0-SNAPSHOT", "1.0" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0-alpha-1", "1.0-alpha-1-SNAPSHOT" ] }, "expected_output": [ "1.0-alpha-1-SNAPSHOT", "1.0-alpha-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0", "1.0-1" ] }, "expected_output": [ "1.0", "1.0-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0-1", "1.0-2" ] }, "expected_output": [ "1.0-1", "1.0-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1.0-1", "1.0.0" ] }, "expected_output": [ "1.0.0", "1.0-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0-1", "2.0.1" ] }, "expected_output": [ "2.0-1", "2.0.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.1-klm", "2.0.1-lmn" ] }, "expected_output": [ "2.0.1-klm", "2.0.1-lmn" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.1", "2.0.1-xyz" ] }, "expected_output": [ "2.0.1", "2.0.1-xyz" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.1", "2.0.1-123" ] }, "expected_output": [ "2.0.1", "2.0.1-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.1-123", "2.0.1-xyz" ] }, "expected_output": [ "2.0.1-xyz", "2.0.1-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1", "1" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1", "1.0" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1", "1.0.0" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1.0", "1.0.0" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1", "1-0" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1", "1.0-0" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1.0", "1.0-0" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1a", "1-a" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1a", "1.0-a" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1a", "1.0.0-a" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1.0a", "1-a" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1.0.0a", "1-a" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1x", "1-x" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1x", "1.0-x" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1x", "1.0.0-x" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1.0x", "1-x" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1.0.0x", "1-x" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1ga", "1" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1final", "1" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1cr", "1rc" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1a1", "1-alpha-1" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1b2", "1-beta-2" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1m3", "1-milestone-3" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1X", "1x" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1A", "1a" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1B", "1b" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1M", "1m" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1Ga", "1" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1GA", "1" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1Final", "1" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1FinaL", "1" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1FINAL", "1" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1Cr", "1Rc" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1cR", "1rC" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1m3", "1Milestone3" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1m3", "1MileStone3" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1m3", "1MILESTONE3" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1", "1" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1", "1.0" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1", "1.0.0" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1.0", "1.0.0" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1", "1-0" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1", "1.0-0" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1.0", "1.0-0" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1", "1" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1", "1.0" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1", "1.0.0" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1.0", "1.0.0" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1", "1-0" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1", "1.0-0" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1.0", "1.0-0" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1", "1" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1", "1.0" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1", "1.0.0" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1.0", "1.0.0" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1", "1-0" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1", "1.0-0" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "maven", "versions": [ "1.0", "1.0-0" ] }, "expected_output": true }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2-1", "2.0" ] }, "expected_output": [ "2.0", "2-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0", "2.0.a" ] }, "expected_output": [ "2.0", "2.0.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0", "2.0.0.a" ] }, "expected_output": [ "2.0", "2.0.0.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0", "2.0.2" ] }, "expected_output": [ "2.0", "2.0.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0", "2.0.123" ] }, "expected_output": [ "2.0", "2.0.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0", "2.1.0" ] }, "expected_output": [ "2.0", "2.1.0" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0", "2.1-a" ] }, "expected_output": [ "2.0", "2.1-a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0", "2.1b" ] }, "expected_output": [ "2.0", "2.1b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0", "2.1-x" ] }, "expected_output": [ "2.0", "2.1-x" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0", "2.1-1" ] }, "expected_output": [ "2.0", "2.1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0", "2.1.0.1" ] }, "expected_output": [ "2.0", "2.1.0.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0", "2.2" ] }, "expected_output": [ "2.0", "2.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0", "2.123" ] }, "expected_output": [ "2.0", "2.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "2.0" ] }, "expected_output": [ "2.0", "11.a2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "2.0" ] }, "expected_output": [ "2.0", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "2.0" ] }, "expected_output": [ "2.0", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "2.0" ] }, "expected_output": [ "2.0", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "2.0" ] }, "expected_output": [ "2.0", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "2.0" ] }, "expected_output": [ "2.0", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "2.0" ] }, "expected_output": [ "2.0", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "2.0" ] }, "expected_output": [ "2.0", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "2.0" ] }, "expected_output": [ "2.0", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "2.0" ] }, "expected_output": [ "2.0", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11m", "2.0" ] }, "expected_output": [ "2.0", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2-1", "2.0.a" ] }, "expected_output": [ "2-1", "2.0.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2-1", "2.0.0.a" ] }, "expected_output": [ "2-1", "2.0.0.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2-1", "2.0.2" ] }, "expected_output": [ "2-1", "2.0.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2-1", "2.0.123" ] }, "expected_output": [ "2-1", "2.0.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2-1", "2.1.0" ] }, "expected_output": [ "2-1", "2.1.0" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2-1", "2.1-a" ] }, "expected_output": [ "2-1", "2.1-a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2-1", "2.1b" ] }, "expected_output": [ "2-1", "2.1b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2-1", "2.1-x" ] }, "expected_output": [ "2-1", "2.1-x" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2-1", "2.1-1" ] }, "expected_output": [ "2-1", "2.1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2-1", "2.1.0.1" ] }, "expected_output": [ "2-1", "2.1.0.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2-1", "2.2" ] }, "expected_output": [ "2-1", "2.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2-1", "2.123" ] }, "expected_output": [ "2-1", "2.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "2-1" ] }, "expected_output": [ "2-1", "11.a2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "2-1" ] }, "expected_output": [ "2-1", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "2-1" ] }, "expected_output": [ "2-1", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "2-1" ] }, "expected_output": [ "2-1", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "2-1" ] }, "expected_output": [ "2-1", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "2-1" ] }, "expected_output": [ "2-1", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "2-1" ] }, "expected_output": [ "2-1", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "2-1" ] }, "expected_output": [ "2-1", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "2-1" ] }, "expected_output": [ "2-1", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "2-1" ] }, "expected_output": [ "2-1", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11m", "2-1" ] }, "expected_output": [ "2-1", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.0.a", "2.0.a" ] }, "expected_output": [ "2.0.a", "2.0.0.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.2", "2.0.a" ] }, "expected_output": [ "2.0.a", "2.0.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.123", "2.0.a" ] }, "expected_output": [ "2.0.a", "2.0.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.a", "2.1.0" ] }, "expected_output": [ "2.0.a", "2.1.0" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.a", "2.1-a" ] }, "expected_output": [ "2.0.a", "2.1-a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.a", "2.1b" ] }, "expected_output": [ "2.0.a", "2.1b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.a", "2.1-x" ] }, "expected_output": [ "2.0.a", "2.1-x" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.a", "2.1-1" ] }, "expected_output": [ "2.0.a", "2.1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.a", "2.1.0.1" ] }, "expected_output": [ "2.0.a", "2.1.0.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.a", "2.2" ] }, "expected_output": [ "2.0.a", "2.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.a", "2.123" ] }, "expected_output": [ "2.0.a", "2.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "2.0.a" ] }, "expected_output": [ "2.0.a", "11.a2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "2.0.a" ] }, "expected_output": [ "2.0.a", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "2.0.a" ] }, "expected_output": [ "2.0.a", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "2.0.a" ] }, "expected_output": [ "2.0.a", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "2.0.a" ] }, "expected_output": [ "2.0.a", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "2.0.a" ] }, "expected_output": [ "2.0.a", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "2.0.a" ] }, "expected_output": [ "2.0.a", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "2.0.a" ] }, "expected_output": [ "2.0.a", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "2.0.a" ] }, "expected_output": [ "2.0.a", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "2.0.a" ] }, "expected_output": [ "2.0.a", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11m", "2.0.a" ] }, "expected_output": [ "2.0.a", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.0.a", "2.0.2" ] }, "expected_output": [ "2.0.0.a", "2.0.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.0.a", "2.0.123" ] }, "expected_output": [ "2.0.0.a", "2.0.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.0.a", "2.1.0" ] }, "expected_output": [ "2.0.0.a", "2.1.0" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.0.a", "2.1-a" ] }, "expected_output": [ "2.0.0.a", "2.1-a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.0.a", "2.1b" ] }, "expected_output": [ "2.0.0.a", "2.1b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.0.a", "2.1-x" ] }, "expected_output": [ "2.0.0.a", "2.1-x" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.0.a", "2.1-1" ] }, "expected_output": [ "2.0.0.a", "2.1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.0.a", "2.1.0.1" ] }, "expected_output": [ "2.0.0.a", "2.1.0.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.0.a", "2.2" ] }, "expected_output": [ "2.0.0.a", "2.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.0.a", "2.123" ] }, "expected_output": [ "2.0.0.a", "2.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "2.0.0.a" ] }, "expected_output": [ "2.0.0.a", "11.a2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "2.0.0.a" ] }, "expected_output": [ "2.0.0.a", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "2.0.0.a" ] }, "expected_output": [ "2.0.0.a", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "2.0.0.a" ] }, "expected_output": [ "2.0.0.a", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "2.0.0.a" ] }, "expected_output": [ "2.0.0.a", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "2.0.0.a" ] }, "expected_output": [ "2.0.0.a", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "2.0.0.a" ] }, "expected_output": [ "2.0.0.a", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "2.0.0.a" ] }, "expected_output": [ "2.0.0.a", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "2.0.0.a" ] }, "expected_output": [ "2.0.0.a", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "2.0.0.a" ] }, "expected_output": [ "2.0.0.a", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11m", "2.0.0.a" ] }, "expected_output": [ "2.0.0.a", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.123", "2.0.2" ] }, "expected_output": [ "2.0.2", "2.0.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.2", "2.1.0" ] }, "expected_output": [ "2.0.2", "2.1.0" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.2", "2.1-a" ] }, "expected_output": [ "2.0.2", "2.1-a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.2", "2.1b" ] }, "expected_output": [ "2.0.2", "2.1b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.2", "2.1-x" ] }, "expected_output": [ "2.0.2", "2.1-x" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.2", "2.1-1" ] }, "expected_output": [ "2.0.2", "2.1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.2", "2.1.0.1" ] }, "expected_output": [ "2.0.2", "2.1.0.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.2", "2.2" ] }, "expected_output": [ "2.0.2", "2.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.2", "2.123" ] }, "expected_output": [ "2.0.2", "2.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "2.0.2" ] }, "expected_output": [ "2.0.2", "11.a2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "2.0.2" ] }, "expected_output": [ "2.0.2", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "2.0.2" ] }, "expected_output": [ "2.0.2", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "2.0.2" ] }, "expected_output": [ "2.0.2", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "2.0.2" ] }, "expected_output": [ "2.0.2", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "2.0.2" ] }, "expected_output": [ "2.0.2", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "2.0.2" ] }, "expected_output": [ "2.0.2", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "2.0.2" ] }, "expected_output": [ "2.0.2", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "2.0.2" ] }, "expected_output": [ "2.0.2", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "2.0.2" ] }, "expected_output": [ "2.0.2", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11m", "2.0.2" ] }, "expected_output": [ "2.0.2", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.123", "2.1.0" ] }, "expected_output": [ "2.0.123", "2.1.0" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.123", "2.1-a" ] }, "expected_output": [ "2.0.123", "2.1-a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.123", "2.1b" ] }, "expected_output": [ "2.0.123", "2.1b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.123", "2.1-x" ] }, "expected_output": [ "2.0.123", "2.1-x" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.123", "2.1-1" ] }, "expected_output": [ "2.0.123", "2.1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.123", "2.1.0.1" ] }, "expected_output": [ "2.0.123", "2.1.0.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.123", "2.2" ] }, "expected_output": [ "2.0.123", "2.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.123", "2.123" ] }, "expected_output": [ "2.0.123", "2.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "2.0.123" ] }, "expected_output": [ "2.0.123", "11.a2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "2.0.123" ] }, "expected_output": [ "2.0.123", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "2.0.123" ] }, "expected_output": [ "2.0.123", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "2.0.123" ] }, "expected_output": [ "2.0.123", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "2.0.123" ] }, "expected_output": [ "2.0.123", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "2.0.123" ] }, "expected_output": [ "2.0.123", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "2.0.123" ] }, "expected_output": [ "2.0.123", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "2.0.123" ] }, "expected_output": [ "2.0.123", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "2.0.123" ] }, "expected_output": [ "2.0.123", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "2.0.123" ] }, "expected_output": [ "2.0.123", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11m", "2.0.123" ] }, "expected_output": [ "2.0.123", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-a", "2.1.0" ] }, "expected_output": [ "2.1.0", "2.1-a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1.0", "2.1b" ] }, "expected_output": [ "2.1.0", "2.1b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-x", "2.1.0" ] }, "expected_output": [ "2.1.0", "2.1-x" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-1", "2.1.0" ] }, "expected_output": [ "2.1.0", "2.1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1.0", "2.1.0.1" ] }, "expected_output": [ "2.1.0", "2.1.0.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1.0", "2.2" ] }, "expected_output": [ "2.1.0", "2.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1.0", "2.123" ] }, "expected_output": [ "2.1.0", "2.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "2.1.0" ] }, "expected_output": [ "2.1.0", "11.a2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "2.1.0" ] }, "expected_output": [ "2.1.0", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "2.1.0" ] }, "expected_output": [ "2.1.0", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "2.1.0" ] }, "expected_output": [ "2.1.0", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "2.1.0" ] }, "expected_output": [ "2.1.0", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "2.1.0" ] }, "expected_output": [ "2.1.0", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "2.1.0" ] }, "expected_output": [ "2.1.0", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "2.1.0" ] }, "expected_output": [ "2.1.0", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "2.1.0" ] }, "expected_output": [ "2.1.0", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "2.1.0" ] }, "expected_output": [ "2.1.0", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11m", "2.1.0" ] }, "expected_output": [ "2.1.0", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-a", "2.1b" ] }, "expected_output": [ "2.1-a", "2.1b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-a", "2.1-x" ] }, "expected_output": [ "2.1-a", "2.1-x" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-1", "2.1-a" ] }, "expected_output": [ "2.1-a", "2.1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-a", "2.1.0.1" ] }, "expected_output": [ "2.1-a", "2.1.0.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-a", "2.2" ] }, "expected_output": [ "2.1-a", "2.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-a", "2.123" ] }, "expected_output": [ "2.1-a", "2.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "2.1-a" ] }, "expected_output": [ "2.1-a", "11.a2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "2.1-a" ] }, "expected_output": [ "2.1-a", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "2.1-a" ] }, "expected_output": [ "2.1-a", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "2.1-a" ] }, "expected_output": [ "2.1-a", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "2.1-a" ] }, "expected_output": [ "2.1-a", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "2.1-a" ] }, "expected_output": [ "2.1-a", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "2.1-a" ] }, "expected_output": [ "2.1-a", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "2.1-a" ] }, "expected_output": [ "2.1-a", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "2.1-a" ] }, "expected_output": [ "2.1-a", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "2.1-a" ] }, "expected_output": [ "2.1-a", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11m", "2.1-a" ] }, "expected_output": [ "2.1-a", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-x", "2.1b" ] }, "expected_output": [ "2.1b", "2.1-x" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-1", "2.1b" ] }, "expected_output": [ "2.1b", "2.1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1.0.1", "2.1b" ] }, "expected_output": [ "2.1b", "2.1.0.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1b", "2.2" ] }, "expected_output": [ "2.1b", "2.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.123", "2.1b" ] }, "expected_output": [ "2.1b", "2.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "2.1b" ] }, "expected_output": [ "2.1b", "11.a2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "2.1b" ] }, "expected_output": [ "2.1b", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "2.1b" ] }, "expected_output": [ "2.1b", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "2.1b" ] }, "expected_output": [ "2.1b", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "2.1b" ] }, "expected_output": [ "2.1b", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "2.1b" ] }, "expected_output": [ "2.1b", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "2.1b" ] }, "expected_output": [ "2.1b", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "2.1b" ] }, "expected_output": [ "2.1b", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "2.1b" ] }, "expected_output": [ "2.1b", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "2.1b" ] }, "expected_output": [ "2.1b", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11m", "2.1b" ] }, "expected_output": [ "2.1b", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-1", "2.1-x" ] }, "expected_output": [ "2.1-x", "2.1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-x", "2.1.0.1" ] }, "expected_output": [ "2.1-x", "2.1.0.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-x", "2.2" ] }, "expected_output": [ "2.1-x", "2.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-x", "2.123" ] }, "expected_output": [ "2.1-x", "2.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "2.1-x" ] }, "expected_output": [ "2.1-x", "11.a2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "2.1-x" ] }, "expected_output": [ "2.1-x", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "2.1-x" ] }, "expected_output": [ "2.1-x", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "2.1-x" ] }, "expected_output": [ "2.1-x", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "2.1-x" ] }, "expected_output": [ "2.1-x", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "2.1-x" ] }, "expected_output": [ "2.1-x", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "2.1-x" ] }, "expected_output": [ "2.1-x", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "2.1-x" ] }, "expected_output": [ "2.1-x", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "2.1-x" ] }, "expected_output": [ "2.1-x", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "2.1-x" ] }, "expected_output": [ "2.1-x", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11m", "2.1-x" ] }, "expected_output": [ "2.1-x", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-1", "2.1.0.1" ] }, "expected_output": [ "2.1-1", "2.1.0.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-1", "2.2" ] }, "expected_output": [ "2.1-1", "2.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-1", "2.123" ] }, "expected_output": [ "2.1-1", "2.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "2.1-1" ] }, "expected_output": [ "2.1-1", "11.a2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "2.1-1" ] }, "expected_output": [ "2.1-1", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "2.1-1" ] }, "expected_output": [ "2.1-1", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "2.1-1" ] }, "expected_output": [ "2.1-1", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "2.1-1" ] }, "expected_output": [ "2.1-1", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "2.1-1" ] }, "expected_output": [ "2.1-1", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "2.1-1" ] }, "expected_output": [ "2.1-1", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "2.1-1" ] }, "expected_output": [ "2.1-1", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "2.1-1" ] }, "expected_output": [ "2.1-1", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "2.1-1" ] }, "expected_output": [ "2.1-1", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11m", "2.1-1" ] }, "expected_output": [ "2.1-1", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1.0.1", "2.2" ] }, "expected_output": [ "2.1.0.1", "2.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1.0.1", "2.123" ] }, "expected_output": [ "2.1.0.1", "2.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "2.1.0.1" ] }, "expected_output": [ "2.1.0.1", "11.a2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "2.1.0.1" ] }, "expected_output": [ "2.1.0.1", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "2.1.0.1" ] }, "expected_output": [ "2.1.0.1", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "2.1.0.1" ] }, "expected_output": [ "2.1.0.1", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "2.1.0.1" ] }, "expected_output": [ "2.1.0.1", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "2.1.0.1" ] }, "expected_output": [ "2.1.0.1", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "2.1.0.1" ] }, "expected_output": [ "2.1.0.1", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "2.1.0.1" ] }, "expected_output": [ "2.1.0.1", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "2.1.0.1" ] }, "expected_output": [ "2.1.0.1", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "2.1.0.1" ] }, "expected_output": [ "2.1.0.1", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11m", "2.1.0.1" ] }, "expected_output": [ "2.1.0.1", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.123", "2.2" ] }, "expected_output": [ "2.2", "2.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "2.2" ] }, "expected_output": [ "2.2", "11.a2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "2.2" ] }, "expected_output": [ "2.2", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "2.2" ] }, "expected_output": [ "2.2", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "2.2" ] }, "expected_output": [ "2.2", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "2.2" ] }, "expected_output": [ "2.2", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "2.2" ] }, "expected_output": [ "2.2", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "2.2" ] }, "expected_output": [ "2.2", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "2.2" ] }, "expected_output": [ "2.2", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "2.2" ] }, "expected_output": [ "2.2", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "2.2" ] }, "expected_output": [ "2.2", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11m", "2.2" ] }, "expected_output": [ "2.2", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "2.123" ] }, "expected_output": [ "2.123", "11.a2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "2.123" ] }, "expected_output": [ "2.123", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "2.123" ] }, "expected_output": [ "2.123", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "2.123" ] }, "expected_output": [ "2.123", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "2.123" ] }, "expected_output": [ "2.123", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "2.123" ] }, "expected_output": [ "2.123", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "2.123" ] }, "expected_output": [ "2.123", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "2.123" ] }, "expected_output": [ "2.123", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "2.123" ] }, "expected_output": [ "2.123", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "2.123" ] }, "expected_output": [ "2.123", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11m", "2.123" ] }, "expected_output": [ "2.123", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "11.a2" ] }, "expected_output": [ "11.a2", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "11.b2" ] }, "expected_output": [ "11.a2", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "11.b11" ] }, "expected_output": [ "11.a2", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "11.m2" ] }, "expected_output": [ "11.a2", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "11.m11" ] }, "expected_output": [ "11.a2", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "11.a2" ] }, "expected_output": [ "11.a2", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "11.a2" ] }, "expected_output": [ "11.a2", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "11b" ] }, "expected_output": [ "11.a2", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "11c" ] }, "expected_output": [ "11.a2", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "11m" ] }, "expected_output": [ "11.a2", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "11.b2" ] }, "expected_output": [ "11.a11", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "11.b11" ] }, "expected_output": [ "11.a11", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "11.m2" ] }, "expected_output": [ "11.a11", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "11.m11" ] }, "expected_output": [ "11.a11", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "11.a11" ] }, "expected_output": [ "11.a11", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "11.a11" ] }, "expected_output": [ "11.a11", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "11b" ] }, "expected_output": [ "11.a11", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "11c" ] }, "expected_output": [ "11.a11", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "11m" ] }, "expected_output": [ "11.a11", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "11.b2" ] }, "expected_output": [ "11.b2", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "11.m2" ] }, "expected_output": [ "11.b2", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "11.m11" ] }, "expected_output": [ "11.b2", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "11.b2" ] }, "expected_output": [ "11.b2", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "11.b2" ] }, "expected_output": [ "11.b2", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "11b" ] }, "expected_output": [ "11.b2", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "11c" ] }, "expected_output": [ "11.b2", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "11m" ] }, "expected_output": [ "11.b2", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "11.m2" ] }, "expected_output": [ "11.b11", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "11.m11" ] }, "expected_output": [ "11.b11", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "11.b11" ] }, "expected_output": [ "11.b11", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "11.b11" ] }, "expected_output": [ "11.b11", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "11b" ] }, "expected_output": [ "11.b11", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "11c" ] }, "expected_output": [ "11.b11", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "11m" ] }, "expected_output": [ "11.b11", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "11.m2" ] }, "expected_output": [ "11.m2", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "11.m2" ] }, "expected_output": [ "11.m2", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "11.m2" ] }, "expected_output": [ "11.m2", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "11b" ] }, "expected_output": [ "11.m2", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "11c" ] }, "expected_output": [ "11.m2", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "11m" ] }, "expected_output": [ "11.m2", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "11.m11" ] }, "expected_output": [ "11.m11", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "11.m11" ] }, "expected_output": [ "11.m11", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "11b" ] }, "expected_output": [ "11.m11", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "11c" ] }, "expected_output": [ "11.m11", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "11m" ] }, "expected_output": [ "11.m11", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "11.a" ] }, "expected_output": [ "11", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "11b" ] }, "expected_output": [ "11", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "11c" ] }, "expected_output": [ "11", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "11m" ] }, "expected_output": [ "11", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "11b" ] }, "expected_output": [ "11.a", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "11c" ] }, "expected_output": [ "11.a", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "11m" ] }, "expected_output": [ "11.a", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "11c" ] }, "expected_output": [ "11b", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "11m" ] }, "expected_output": [ "11b", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "11m" ] }, "expected_output": [ "11c", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2-1", "2.0" ] }, "expected_output": [ "2.0", "2-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0", "2.0.a" ] }, "expected_output": [ "2.0", "2.0.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0", "2.0.0.a" ] }, "expected_output": [ "2.0", "2.0.0.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0", "2.0.2" ] }, "expected_output": [ "2.0", "2.0.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0", "2.0.123" ] }, "expected_output": [ "2.0", "2.0.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0", "2.1.0" ] }, "expected_output": [ "2.0", "2.1.0" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0", "2.1-a" ] }, "expected_output": [ "2.0", "2.1-a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0", "2.1b" ] }, "expected_output": [ "2.0", "2.1b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0", "2.1-x" ] }, "expected_output": [ "2.0", "2.1-x" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0", "2.1-1" ] }, "expected_output": [ "2.0", "2.1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0", "2.1.0.1" ] }, "expected_output": [ "2.0", "2.1.0.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0", "2.2" ] }, "expected_output": [ "2.0", "2.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0", "2.123" ] }, "expected_output": [ "2.0", "2.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "2.0" ] }, "expected_output": [ "2.0", "11.a2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "2.0" ] }, "expected_output": [ "2.0", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "2.0" ] }, "expected_output": [ "2.0", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "2.0" ] }, "expected_output": [ "2.0", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "2.0" ] }, "expected_output": [ "2.0", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "2.0" ] }, "expected_output": [ "2.0", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "2.0" ] }, "expected_output": [ "2.0", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "2.0" ] }, "expected_output": [ "2.0", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "2.0" ] }, "expected_output": [ "2.0", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "2.0" ] }, "expected_output": [ "2.0", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11m", "2.0" ] }, "expected_output": [ "2.0", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2-1", "2.0.a" ] }, "expected_output": [ "2-1", "2.0.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2-1", "2.0.0.a" ] }, "expected_output": [ "2-1", "2.0.0.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2-1", "2.0.2" ] }, "expected_output": [ "2-1", "2.0.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2-1", "2.0.123" ] }, "expected_output": [ "2-1", "2.0.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2-1", "2.1.0" ] }, "expected_output": [ "2-1", "2.1.0" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2-1", "2.1-a" ] }, "expected_output": [ "2-1", "2.1-a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2-1", "2.1b" ] }, "expected_output": [ "2-1", "2.1b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2-1", "2.1-x" ] }, "expected_output": [ "2-1", "2.1-x" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2-1", "2.1-1" ] }, "expected_output": [ "2-1", "2.1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2-1", "2.1.0.1" ] }, "expected_output": [ "2-1", "2.1.0.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2-1", "2.2" ] }, "expected_output": [ "2-1", "2.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2-1", "2.123" ] }, "expected_output": [ "2-1", "2.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "2-1" ] }, "expected_output": [ "2-1", "11.a2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "2-1" ] }, "expected_output": [ "2-1", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "2-1" ] }, "expected_output": [ "2-1", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "2-1" ] }, "expected_output": [ "2-1", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "2-1" ] }, "expected_output": [ "2-1", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "2-1" ] }, "expected_output": [ "2-1", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "2-1" ] }, "expected_output": [ "2-1", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "2-1" ] }, "expected_output": [ "2-1", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "2-1" ] }, "expected_output": [ "2-1", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "2-1" ] }, "expected_output": [ "2-1", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11m", "2-1" ] }, "expected_output": [ "2-1", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.0.a", "2.0.a" ] }, "expected_output": [ "2.0.a", "2.0.0.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.2", "2.0.a" ] }, "expected_output": [ "2.0.a", "2.0.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.123", "2.0.a" ] }, "expected_output": [ "2.0.a", "2.0.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.a", "2.1.0" ] }, "expected_output": [ "2.0.a", "2.1.0" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.a", "2.1-a" ] }, "expected_output": [ "2.0.a", "2.1-a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.a", "2.1b" ] }, "expected_output": [ "2.0.a", "2.1b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.a", "2.1-x" ] }, "expected_output": [ "2.0.a", "2.1-x" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.a", "2.1-1" ] }, "expected_output": [ "2.0.a", "2.1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.a", "2.1.0.1" ] }, "expected_output": [ "2.0.a", "2.1.0.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.a", "2.2" ] }, "expected_output": [ "2.0.a", "2.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.a", "2.123" ] }, "expected_output": [ "2.0.a", "2.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "2.0.a" ] }, "expected_output": [ "2.0.a", "11.a2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "2.0.a" ] }, "expected_output": [ "2.0.a", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "2.0.a" ] }, "expected_output": [ "2.0.a", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "2.0.a" ] }, "expected_output": [ "2.0.a", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "2.0.a" ] }, "expected_output": [ "2.0.a", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "2.0.a" ] }, "expected_output": [ "2.0.a", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "2.0.a" ] }, "expected_output": [ "2.0.a", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "2.0.a" ] }, "expected_output": [ "2.0.a", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "2.0.a" ] }, "expected_output": [ "2.0.a", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "2.0.a" ] }, "expected_output": [ "2.0.a", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11m", "2.0.a" ] }, "expected_output": [ "2.0.a", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.0.a", "2.0.2" ] }, "expected_output": [ "2.0.0.a", "2.0.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.0.a", "2.0.123" ] }, "expected_output": [ "2.0.0.a", "2.0.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.0.a", "2.1.0" ] }, "expected_output": [ "2.0.0.a", "2.1.0" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.0.a", "2.1-a" ] }, "expected_output": [ "2.0.0.a", "2.1-a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.0.a", "2.1b" ] }, "expected_output": [ "2.0.0.a", "2.1b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.0.a", "2.1-x" ] }, "expected_output": [ "2.0.0.a", "2.1-x" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.0.a", "2.1-1" ] }, "expected_output": [ "2.0.0.a", "2.1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.0.a", "2.1.0.1" ] }, "expected_output": [ "2.0.0.a", "2.1.0.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.0.a", "2.2" ] }, "expected_output": [ "2.0.0.a", "2.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.0.a", "2.123" ] }, "expected_output": [ "2.0.0.a", "2.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "2.0.0.a" ] }, "expected_output": [ "2.0.0.a", "11.a2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "2.0.0.a" ] }, "expected_output": [ "2.0.0.a", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "2.0.0.a" ] }, "expected_output": [ "2.0.0.a", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "2.0.0.a" ] }, "expected_output": [ "2.0.0.a", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "2.0.0.a" ] }, "expected_output": [ "2.0.0.a", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "2.0.0.a" ] }, "expected_output": [ "2.0.0.a", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "2.0.0.a" ] }, "expected_output": [ "2.0.0.a", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "2.0.0.a" ] }, "expected_output": [ "2.0.0.a", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "2.0.0.a" ] }, "expected_output": [ "2.0.0.a", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "2.0.0.a" ] }, "expected_output": [ "2.0.0.a", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11m", "2.0.0.a" ] }, "expected_output": [ "2.0.0.a", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.123", "2.0.2" ] }, "expected_output": [ "2.0.2", "2.0.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.2", "2.1.0" ] }, "expected_output": [ "2.0.2", "2.1.0" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.2", "2.1-a" ] }, "expected_output": [ "2.0.2", "2.1-a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.2", "2.1b" ] }, "expected_output": [ "2.0.2", "2.1b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.2", "2.1-x" ] }, "expected_output": [ "2.0.2", "2.1-x" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.2", "2.1-1" ] }, "expected_output": [ "2.0.2", "2.1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.2", "2.1.0.1" ] }, "expected_output": [ "2.0.2", "2.1.0.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.2", "2.2" ] }, "expected_output": [ "2.0.2", "2.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.2", "2.123" ] }, "expected_output": [ "2.0.2", "2.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "2.0.2" ] }, "expected_output": [ "2.0.2", "11.a2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "2.0.2" ] }, "expected_output": [ "2.0.2", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "2.0.2" ] }, "expected_output": [ "2.0.2", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "2.0.2" ] }, "expected_output": [ "2.0.2", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "2.0.2" ] }, "expected_output": [ "2.0.2", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "2.0.2" ] }, "expected_output": [ "2.0.2", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "2.0.2" ] }, "expected_output": [ "2.0.2", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "2.0.2" ] }, "expected_output": [ "2.0.2", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "2.0.2" ] }, "expected_output": [ "2.0.2", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "2.0.2" ] }, "expected_output": [ "2.0.2", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11m", "2.0.2" ] }, "expected_output": [ "2.0.2", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.123", "2.1.0" ] }, "expected_output": [ "2.0.123", "2.1.0" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.123", "2.1-a" ] }, "expected_output": [ "2.0.123", "2.1-a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.123", "2.1b" ] }, "expected_output": [ "2.0.123", "2.1b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.123", "2.1-x" ] }, "expected_output": [ "2.0.123", "2.1-x" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.123", "2.1-1" ] }, "expected_output": [ "2.0.123", "2.1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.123", "2.1.0.1" ] }, "expected_output": [ "2.0.123", "2.1.0.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.123", "2.2" ] }, "expected_output": [ "2.0.123", "2.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.0.123", "2.123" ] }, "expected_output": [ "2.0.123", "2.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "2.0.123" ] }, "expected_output": [ "2.0.123", "11.a2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "2.0.123" ] }, "expected_output": [ "2.0.123", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "2.0.123" ] }, "expected_output": [ "2.0.123", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "2.0.123" ] }, "expected_output": [ "2.0.123", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "2.0.123" ] }, "expected_output": [ "2.0.123", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "2.0.123" ] }, "expected_output": [ "2.0.123", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "2.0.123" ] }, "expected_output": [ "2.0.123", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "2.0.123" ] }, "expected_output": [ "2.0.123", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "2.0.123" ] }, "expected_output": [ "2.0.123", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "2.0.123" ] }, "expected_output": [ "2.0.123", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11m", "2.0.123" ] }, "expected_output": [ "2.0.123", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-a", "2.1.0" ] }, "expected_output": [ "2.1.0", "2.1-a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1.0", "2.1b" ] }, "expected_output": [ "2.1.0", "2.1b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-x", "2.1.0" ] }, "expected_output": [ "2.1.0", "2.1-x" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-1", "2.1.0" ] }, "expected_output": [ "2.1.0", "2.1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1.0", "2.1.0.1" ] }, "expected_output": [ "2.1.0", "2.1.0.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1.0", "2.2" ] }, "expected_output": [ "2.1.0", "2.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1.0", "2.123" ] }, "expected_output": [ "2.1.0", "2.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "2.1.0" ] }, "expected_output": [ "2.1.0", "11.a2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "2.1.0" ] }, "expected_output": [ "2.1.0", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "2.1.0" ] }, "expected_output": [ "2.1.0", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "2.1.0" ] }, "expected_output": [ "2.1.0", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "2.1.0" ] }, "expected_output": [ "2.1.0", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "2.1.0" ] }, "expected_output": [ "2.1.0", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "2.1.0" ] }, "expected_output": [ "2.1.0", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "2.1.0" ] }, "expected_output": [ "2.1.0", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "2.1.0" ] }, "expected_output": [ "2.1.0", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "2.1.0" ] }, "expected_output": [ "2.1.0", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11m", "2.1.0" ] }, "expected_output": [ "2.1.0", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-a", "2.1b" ] }, "expected_output": [ "2.1-a", "2.1b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-a", "2.1-x" ] }, "expected_output": [ "2.1-a", "2.1-x" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-1", "2.1-a" ] }, "expected_output": [ "2.1-a", "2.1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-a", "2.1.0.1" ] }, "expected_output": [ "2.1-a", "2.1.0.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-a", "2.2" ] }, "expected_output": [ "2.1-a", "2.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-a", "2.123" ] }, "expected_output": [ "2.1-a", "2.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "2.1-a" ] }, "expected_output": [ "2.1-a", "11.a2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "2.1-a" ] }, "expected_output": [ "2.1-a", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "2.1-a" ] }, "expected_output": [ "2.1-a", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "2.1-a" ] }, "expected_output": [ "2.1-a", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "2.1-a" ] }, "expected_output": [ "2.1-a", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "2.1-a" ] }, "expected_output": [ "2.1-a", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "2.1-a" ] }, "expected_output": [ "2.1-a", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "2.1-a" ] }, "expected_output": [ "2.1-a", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "2.1-a" ] }, "expected_output": [ "2.1-a", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "2.1-a" ] }, "expected_output": [ "2.1-a", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11m", "2.1-a" ] }, "expected_output": [ "2.1-a", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-x", "2.1b" ] }, "expected_output": [ "2.1b", "2.1-x" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-1", "2.1b" ] }, "expected_output": [ "2.1b", "2.1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1.0.1", "2.1b" ] }, "expected_output": [ "2.1b", "2.1.0.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1b", "2.2" ] }, "expected_output": [ "2.1b", "2.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.123", "2.1b" ] }, "expected_output": [ "2.1b", "2.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "2.1b" ] }, "expected_output": [ "2.1b", "11.a2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "2.1b" ] }, "expected_output": [ "2.1b", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "2.1b" ] }, "expected_output": [ "2.1b", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "2.1b" ] }, "expected_output": [ "2.1b", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "2.1b" ] }, "expected_output": [ "2.1b", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "2.1b" ] }, "expected_output": [ "2.1b", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "2.1b" ] }, "expected_output": [ "2.1b", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "2.1b" ] }, "expected_output": [ "2.1b", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "2.1b" ] }, "expected_output": [ "2.1b", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "2.1b" ] }, "expected_output": [ "2.1b", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11m", "2.1b" ] }, "expected_output": [ "2.1b", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-1", "2.1-x" ] }, "expected_output": [ "2.1-x", "2.1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-x", "2.1.0.1" ] }, "expected_output": [ "2.1-x", "2.1.0.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-x", "2.2" ] }, "expected_output": [ "2.1-x", "2.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-x", "2.123" ] }, "expected_output": [ "2.1-x", "2.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "2.1-x" ] }, "expected_output": [ "2.1-x", "11.a2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "2.1-x" ] }, "expected_output": [ "2.1-x", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "2.1-x" ] }, "expected_output": [ "2.1-x", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "2.1-x" ] }, "expected_output": [ "2.1-x", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "2.1-x" ] }, "expected_output": [ "2.1-x", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "2.1-x" ] }, "expected_output": [ "2.1-x", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "2.1-x" ] }, "expected_output": [ "2.1-x", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "2.1-x" ] }, "expected_output": [ "2.1-x", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "2.1-x" ] }, "expected_output": [ "2.1-x", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "2.1-x" ] }, "expected_output": [ "2.1-x", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11m", "2.1-x" ] }, "expected_output": [ "2.1-x", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-1", "2.1.0.1" ] }, "expected_output": [ "2.1-1", "2.1.0.1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-1", "2.2" ] }, "expected_output": [ "2.1-1", "2.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1-1", "2.123" ] }, "expected_output": [ "2.1-1", "2.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "2.1-1" ] }, "expected_output": [ "2.1-1", "11.a2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "2.1-1" ] }, "expected_output": [ "2.1-1", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "2.1-1" ] }, "expected_output": [ "2.1-1", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "2.1-1" ] }, "expected_output": [ "2.1-1", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "2.1-1" ] }, "expected_output": [ "2.1-1", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "2.1-1" ] }, "expected_output": [ "2.1-1", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "2.1-1" ] }, "expected_output": [ "2.1-1", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "2.1-1" ] }, "expected_output": [ "2.1-1", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "2.1-1" ] }, "expected_output": [ "2.1-1", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "2.1-1" ] }, "expected_output": [ "2.1-1", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11m", "2.1-1" ] }, "expected_output": [ "2.1-1", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1.0.1", "2.2" ] }, "expected_output": [ "2.1.0.1", "2.2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.1.0.1", "2.123" ] }, "expected_output": [ "2.1.0.1", "2.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "2.1.0.1" ] }, "expected_output": [ "2.1.0.1", "11.a2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "2.1.0.1" ] }, "expected_output": [ "2.1.0.1", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "2.1.0.1" ] }, "expected_output": [ "2.1.0.1", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "2.1.0.1" ] }, "expected_output": [ "2.1.0.1", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "2.1.0.1" ] }, "expected_output": [ "2.1.0.1", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "2.1.0.1" ] }, "expected_output": [ "2.1.0.1", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "2.1.0.1" ] }, "expected_output": [ "2.1.0.1", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "2.1.0.1" ] }, "expected_output": [ "2.1.0.1", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "2.1.0.1" ] }, "expected_output": [ "2.1.0.1", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "2.1.0.1" ] }, "expected_output": [ "2.1.0.1", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11m", "2.1.0.1" ] }, "expected_output": [ "2.1.0.1", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "2.123", "2.2" ] }, "expected_output": [ "2.2", "2.123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "2.2" ] }, "expected_output": [ "2.2", "11.a2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "2.2" ] }, "expected_output": [ "2.2", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "2.2" ] }, "expected_output": [ "2.2", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "2.2" ] }, "expected_output": [ "2.2", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "2.2" ] }, "expected_output": [ "2.2", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "2.2" ] }, "expected_output": [ "2.2", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "2.2" ] }, "expected_output": [ "2.2", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "2.2" ] }, "expected_output": [ "2.2", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "2.2" ] }, "expected_output": [ "2.2", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "2.2" ] }, "expected_output": [ "2.2", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11m", "2.2" ] }, "expected_output": [ "2.2", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "2.123" ] }, "expected_output": [ "2.123", "11.a2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "2.123" ] }, "expected_output": [ "2.123", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "2.123" ] }, "expected_output": [ "2.123", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "2.123" ] }, "expected_output": [ "2.123", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "2.123" ] }, "expected_output": [ "2.123", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "2.123" ] }, "expected_output": [ "2.123", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "2.123" ] }, "expected_output": [ "2.123", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "2.123" ] }, "expected_output": [ "2.123", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "2.123" ] }, "expected_output": [ "2.123", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "2.123" ] }, "expected_output": [ "2.123", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11m", "2.123" ] }, "expected_output": [ "2.123", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "11.a2" ] }, "expected_output": [ "11.a2", "11.a11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "11.b2" ] }, "expected_output": [ "11.a2", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "11.b11" ] }, "expected_output": [ "11.a2", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "11.m2" ] }, "expected_output": [ "11.a2", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "11.m11" ] }, "expected_output": [ "11.a2", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "11.a2" ] }, "expected_output": [ "11.a2", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "11.a2" ] }, "expected_output": [ "11.a2", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "11b" ] }, "expected_output": [ "11.a2", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "11c" ] }, "expected_output": [ "11.a2", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a2", "11m" ] }, "expected_output": [ "11.a2", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "11.b2" ] }, "expected_output": [ "11.a11", "11.b2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "11.b11" ] }, "expected_output": [ "11.a11", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "11.m2" ] }, "expected_output": [ "11.a11", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "11.m11" ] }, "expected_output": [ "11.a11", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "11.a11" ] }, "expected_output": [ "11.a11", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "11.a11" ] }, "expected_output": [ "11.a11", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "11b" ] }, "expected_output": [ "11.a11", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "11c" ] }, "expected_output": [ "11.a11", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a11", "11m" ] }, "expected_output": [ "11.a11", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "11.b2" ] }, "expected_output": [ "11.b2", "11.b11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "11.m2" ] }, "expected_output": [ "11.b2", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "11.m11" ] }, "expected_output": [ "11.b2", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "11.b2" ] }, "expected_output": [ "11.b2", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "11.b2" ] }, "expected_output": [ "11.b2", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "11b" ] }, "expected_output": [ "11.b2", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "11c" ] }, "expected_output": [ "11.b2", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b2", "11m" ] }, "expected_output": [ "11.b2", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "11.m2" ] }, "expected_output": [ "11.b11", "11.m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "11.m11" ] }, "expected_output": [ "11.b11", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "11.b11" ] }, "expected_output": [ "11.b11", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "11.b11" ] }, "expected_output": [ "11.b11", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "11b" ] }, "expected_output": [ "11.b11", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "11c" ] }, "expected_output": [ "11.b11", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.b11", "11m" ] }, "expected_output": [ "11.b11", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "11.m2" ] }, "expected_output": [ "11.m2", "11.m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "11.m2" ] }, "expected_output": [ "11.m2", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "11.m2" ] }, "expected_output": [ "11.m2", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "11b" ] }, "expected_output": [ "11.m2", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "11c" ] }, "expected_output": [ "11.m2", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m2", "11m" ] }, "expected_output": [ "11.m2", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "11.m11" ] }, "expected_output": [ "11.m11", "11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "11.m11" ] }, "expected_output": [ "11.m11", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "11b" ] }, "expected_output": [ "11.m11", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "11c" ] }, "expected_output": [ "11.m11", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.m11", "11m" ] }, "expected_output": [ "11.m11", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "11.a" ] }, "expected_output": [ "11", "11.a" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "11b" ] }, "expected_output": [ "11", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "11c" ] }, "expected_output": [ "11", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11", "11m" ] }, "expected_output": [ "11", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "11b" ] }, "expected_output": [ "11.a", "11b" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "11c" ] }, "expected_output": [ "11.a", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11.a", "11m" ] }, "expected_output": [ "11.a", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "11c" ] }, "expected_output": [ "11b", "11c" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11b", "11m" ] }, "expected_output": [ "11b", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "11c", "11m" ] }, "expected_output": [ "11c", "11m" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha2", "1-alpha2snapshot" ] }, "expected_output": [ "1-alpha2snapshot", "1-alpha2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha-123", "1-alpha2snapshot" ] }, "expected_output": [ "1-alpha2snapshot", "1-alpha-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha2snapshot", "1-beta-2" ] }, "expected_output": [ "1-alpha2snapshot", "1-beta-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha2snapshot", "1-beta123" ] }, "expected_output": [ "1-alpha2snapshot", "1-beta123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha2snapshot", "1-m2" ] }, "expected_output": [ "1-alpha2snapshot", "1-m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha2snapshot", "1-m11" ] }, "expected_output": [ "1-alpha2snapshot", "1-m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha2snapshot", "1-rc" ] }, "expected_output": [ "1-alpha2snapshot", "1-rc" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha2snapshot", "1-cr2" ] }, "expected_output": [ "1-alpha2snapshot", "1-cr2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha2snapshot", "1-rc123" ] }, "expected_output": [ "1-alpha2snapshot", "1-rc123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-SNAPSHOT", "1-alpha2snapshot" ] }, "expected_output": [ "1-alpha2snapshot", "1-SNAPSHOT" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "1-alpha2snapshot" ] }, "expected_output": [ "1-alpha2snapshot", "1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha2snapshot", "1-sp" ] }, "expected_output": [ "1-alpha2snapshot", "1-sp" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha2snapshot", "1-sp2" ] }, "expected_output": [ "1-alpha2snapshot", "1-sp2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha2snapshot", "1-sp123" ] }, "expected_output": [ "1-alpha2snapshot", "1-sp123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-abc", "1-alpha2snapshot" ] }, "expected_output": [ "1-alpha2snapshot", "1-abc" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha2snapshot", "1-def" ] }, "expected_output": [ "1-alpha2snapshot", "1-def" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha2snapshot", "1-pom-1" ] }, "expected_output": [ "1-alpha2snapshot", "1-pom-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1-snapshot", "1-alpha2snapshot" ] }, "expected_output": [ "1-alpha2snapshot", "1-1-snapshot" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1", "1-alpha2snapshot" ] }, "expected_output": [ "1-alpha2snapshot", "1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-2", "1-alpha2snapshot" ] }, "expected_output": [ "1-alpha2snapshot", "1-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-123", "1-alpha2snapshot" ] }, "expected_output": [ "1-alpha2snapshot", "1-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha-123", "1-alpha2" ] }, "expected_output": [ "1-alpha2", "1-alpha-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha2", "1-beta-2" ] }, "expected_output": [ "1-alpha2", "1-beta-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha2", "1-beta123" ] }, "expected_output": [ "1-alpha2", "1-beta123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha2", "1-m2" ] }, "expected_output": [ "1-alpha2", "1-m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha2", "1-m11" ] }, "expected_output": [ "1-alpha2", "1-m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha2", "1-rc" ] }, "expected_output": [ "1-alpha2", "1-rc" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha2", "1-cr2" ] }, "expected_output": [ "1-alpha2", "1-cr2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha2", "1-rc123" ] }, "expected_output": [ "1-alpha2", "1-rc123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-SNAPSHOT", "1-alpha2" ] }, "expected_output": [ "1-alpha2", "1-SNAPSHOT" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "1-alpha2" ] }, "expected_output": [ "1-alpha2", "1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha2", "1-sp" ] }, "expected_output": [ "1-alpha2", "1-sp" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha2", "1-sp2" ] }, "expected_output": [ "1-alpha2", "1-sp2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha2", "1-sp123" ] }, "expected_output": [ "1-alpha2", "1-sp123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-abc", "1-alpha2" ] }, "expected_output": [ "1-alpha2", "1-abc" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha2", "1-def" ] }, "expected_output": [ "1-alpha2", "1-def" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha2", "1-pom-1" ] }, "expected_output": [ "1-alpha2", "1-pom-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1-snapshot", "1-alpha2" ] }, "expected_output": [ "1-alpha2", "1-1-snapshot" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1", "1-alpha2" ] }, "expected_output": [ "1-alpha2", "1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-2", "1-alpha2" ] }, "expected_output": [ "1-alpha2", "1-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-123", "1-alpha2" ] }, "expected_output": [ "1-alpha2", "1-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha-123", "1-beta-2" ] }, "expected_output": [ "1-alpha-123", "1-beta-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha-123", "1-beta123" ] }, "expected_output": [ "1-alpha-123", "1-beta123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha-123", "1-m2" ] }, "expected_output": [ "1-alpha-123", "1-m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha-123", "1-m11" ] }, "expected_output": [ "1-alpha-123", "1-m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha-123", "1-rc" ] }, "expected_output": [ "1-alpha-123", "1-rc" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha-123", "1-cr2" ] }, "expected_output": [ "1-alpha-123", "1-cr2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha-123", "1-rc123" ] }, "expected_output": [ "1-alpha-123", "1-rc123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-SNAPSHOT", "1-alpha-123" ] }, "expected_output": [ "1-alpha-123", "1-SNAPSHOT" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "1-alpha-123" ] }, "expected_output": [ "1-alpha-123", "1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha-123", "1-sp" ] }, "expected_output": [ "1-alpha-123", "1-sp" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha-123", "1-sp2" ] }, "expected_output": [ "1-alpha-123", "1-sp2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha-123", "1-sp123" ] }, "expected_output": [ "1-alpha-123", "1-sp123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-abc", "1-alpha-123" ] }, "expected_output": [ "1-alpha-123", "1-abc" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha-123", "1-def" ] }, "expected_output": [ "1-alpha-123", "1-def" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-alpha-123", "1-pom-1" ] }, "expected_output": [ "1-alpha-123", "1-pom-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1-snapshot", "1-alpha-123" ] }, "expected_output": [ "1-alpha-123", "1-1-snapshot" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1", "1-alpha-123" ] }, "expected_output": [ "1-alpha-123", "1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-2", "1-alpha-123" ] }, "expected_output": [ "1-alpha-123", "1-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-123", "1-alpha-123" ] }, "expected_output": [ "1-alpha-123", "1-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-beta-2", "1-beta123" ] }, "expected_output": [ "1-beta-2", "1-beta123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-beta-2", "1-m2" ] }, "expected_output": [ "1-beta-2", "1-m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-beta-2", "1-m11" ] }, "expected_output": [ "1-beta-2", "1-m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-beta-2", "1-rc" ] }, "expected_output": [ "1-beta-2", "1-rc" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-beta-2", "1-cr2" ] }, "expected_output": [ "1-beta-2", "1-cr2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-beta-2", "1-rc123" ] }, "expected_output": [ "1-beta-2", "1-rc123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-SNAPSHOT", "1-beta-2" ] }, "expected_output": [ "1-beta-2", "1-SNAPSHOT" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "1-beta-2" ] }, "expected_output": [ "1-beta-2", "1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-beta-2", "1-sp" ] }, "expected_output": [ "1-beta-2", "1-sp" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-beta-2", "1-sp2" ] }, "expected_output": [ "1-beta-2", "1-sp2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-beta-2", "1-sp123" ] }, "expected_output": [ "1-beta-2", "1-sp123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-abc", "1-beta-2" ] }, "expected_output": [ "1-beta-2", "1-abc" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-beta-2", "1-def" ] }, "expected_output": [ "1-beta-2", "1-def" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-beta-2", "1-pom-1" ] }, "expected_output": [ "1-beta-2", "1-pom-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1-snapshot", "1-beta-2" ] }, "expected_output": [ "1-beta-2", "1-1-snapshot" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1", "1-beta-2" ] }, "expected_output": [ "1-beta-2", "1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-2", "1-beta-2" ] }, "expected_output": [ "1-beta-2", "1-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-123", "1-beta-2" ] }, "expected_output": [ "1-beta-2", "1-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-beta123", "1-m2" ] }, "expected_output": [ "1-beta123", "1-m2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-beta123", "1-m11" ] }, "expected_output": [ "1-beta123", "1-m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-beta123", "1-rc" ] }, "expected_output": [ "1-beta123", "1-rc" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-beta123", "1-cr2" ] }, "expected_output": [ "1-beta123", "1-cr2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-beta123", "1-rc123" ] }, "expected_output": [ "1-beta123", "1-rc123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-SNAPSHOT", "1-beta123" ] }, "expected_output": [ "1-beta123", "1-SNAPSHOT" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "1-beta123" ] }, "expected_output": [ "1-beta123", "1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-beta123", "1-sp" ] }, "expected_output": [ "1-beta123", "1-sp" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-beta123", "1-sp2" ] }, "expected_output": [ "1-beta123", "1-sp2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-beta123", "1-sp123" ] }, "expected_output": [ "1-beta123", "1-sp123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-abc", "1-beta123" ] }, "expected_output": [ "1-beta123", "1-abc" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-beta123", "1-def" ] }, "expected_output": [ "1-beta123", "1-def" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-beta123", "1-pom-1" ] }, "expected_output": [ "1-beta123", "1-pom-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1-snapshot", "1-beta123" ] }, "expected_output": [ "1-beta123", "1-1-snapshot" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1", "1-beta123" ] }, "expected_output": [ "1-beta123", "1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-2", "1-beta123" ] }, "expected_output": [ "1-beta123", "1-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-123", "1-beta123" ] }, "expected_output": [ "1-beta123", "1-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-m11", "1-m2" ] }, "expected_output": [ "1-m2", "1-m11" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-m2", "1-rc" ] }, "expected_output": [ "1-m2", "1-rc" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-cr2", "1-m2" ] }, "expected_output": [ "1-m2", "1-cr2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-m2", "1-rc123" ] }, "expected_output": [ "1-m2", "1-rc123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-SNAPSHOT", "1-m2" ] }, "expected_output": [ "1-m2", "1-SNAPSHOT" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "1-m2" ] }, "expected_output": [ "1-m2", "1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-m2", "1-sp" ] }, "expected_output": [ "1-m2", "1-sp" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-m2", "1-sp2" ] }, "expected_output": [ "1-m2", "1-sp2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-m2", "1-sp123" ] }, "expected_output": [ "1-m2", "1-sp123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-abc", "1-m2" ] }, "expected_output": [ "1-m2", "1-abc" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-def", "1-m2" ] }, "expected_output": [ "1-m2", "1-def" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-m2", "1-pom-1" ] }, "expected_output": [ "1-m2", "1-pom-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1-snapshot", "1-m2" ] }, "expected_output": [ "1-m2", "1-1-snapshot" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1", "1-m2" ] }, "expected_output": [ "1-m2", "1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-2", "1-m2" ] }, "expected_output": [ "1-m2", "1-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-123", "1-m2" ] }, "expected_output": [ "1-m2", "1-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-m11", "1-rc" ] }, "expected_output": [ "1-m11", "1-rc" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-cr2", "1-m11" ] }, "expected_output": [ "1-m11", "1-cr2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-m11", "1-rc123" ] }, "expected_output": [ "1-m11", "1-rc123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-SNAPSHOT", "1-m11" ] }, "expected_output": [ "1-m11", "1-SNAPSHOT" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "1-m11" ] }, "expected_output": [ "1-m11", "1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-m11", "1-sp" ] }, "expected_output": [ "1-m11", "1-sp" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-m11", "1-sp2" ] }, "expected_output": [ "1-m11", "1-sp2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-m11", "1-sp123" ] }, "expected_output": [ "1-m11", "1-sp123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-abc", "1-m11" ] }, "expected_output": [ "1-m11", "1-abc" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-def", "1-m11" ] }, "expected_output": [ "1-m11", "1-def" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-m11", "1-pom-1" ] }, "expected_output": [ "1-m11", "1-pom-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1-snapshot", "1-m11" ] }, "expected_output": [ "1-m11", "1-1-snapshot" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1", "1-m11" ] }, "expected_output": [ "1-m11", "1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-2", "1-m11" ] }, "expected_output": [ "1-m11", "1-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-123", "1-m11" ] }, "expected_output": [ "1-m11", "1-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-cr2", "1-rc" ] }, "expected_output": [ "1-rc", "1-cr2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-rc", "1-rc123" ] }, "expected_output": [ "1-rc", "1-rc123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-SNAPSHOT", "1-rc" ] }, "expected_output": [ "1-rc", "1-SNAPSHOT" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "1-rc" ] }, "expected_output": [ "1-rc", "1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-rc", "1-sp" ] }, "expected_output": [ "1-rc", "1-sp" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-rc", "1-sp2" ] }, "expected_output": [ "1-rc", "1-sp2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-rc", "1-sp123" ] }, "expected_output": [ "1-rc", "1-sp123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-abc", "1-rc" ] }, "expected_output": [ "1-rc", "1-abc" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-def", "1-rc" ] }, "expected_output": [ "1-rc", "1-def" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-pom-1", "1-rc" ] }, "expected_output": [ "1-rc", "1-pom-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1-snapshot", "1-rc" ] }, "expected_output": [ "1-rc", "1-1-snapshot" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1", "1-rc" ] }, "expected_output": [ "1-rc", "1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-2", "1-rc" ] }, "expected_output": [ "1-rc", "1-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-123", "1-rc" ] }, "expected_output": [ "1-rc", "1-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-cr2", "1-rc123" ] }, "expected_output": [ "1-cr2", "1-rc123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-SNAPSHOT", "1-cr2" ] }, "expected_output": [ "1-cr2", "1-SNAPSHOT" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "1-cr2" ] }, "expected_output": [ "1-cr2", "1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-cr2", "1-sp" ] }, "expected_output": [ "1-cr2", "1-sp" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-cr2", "1-sp2" ] }, "expected_output": [ "1-cr2", "1-sp2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-cr2", "1-sp123" ] }, "expected_output": [ "1-cr2", "1-sp123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-abc", "1-cr2" ] }, "expected_output": [ "1-cr2", "1-abc" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-cr2", "1-def" ] }, "expected_output": [ "1-cr2", "1-def" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-cr2", "1-pom-1" ] }, "expected_output": [ "1-cr2", "1-pom-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1-snapshot", "1-cr2" ] }, "expected_output": [ "1-cr2", "1-1-snapshot" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1", "1-cr2" ] }, "expected_output": [ "1-cr2", "1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-2", "1-cr2" ] }, "expected_output": [ "1-cr2", "1-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-123", "1-cr2" ] }, "expected_output": [ "1-cr2", "1-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-SNAPSHOT", "1-rc123" ] }, "expected_output": [ "1-rc123", "1-SNAPSHOT" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "1-rc123" ] }, "expected_output": [ "1-rc123", "1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-rc123", "1-sp" ] }, "expected_output": [ "1-rc123", "1-sp" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-rc123", "1-sp2" ] }, "expected_output": [ "1-rc123", "1-sp2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-rc123", "1-sp123" ] }, "expected_output": [ "1-rc123", "1-sp123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-abc", "1-rc123" ] }, "expected_output": [ "1-rc123", "1-abc" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-def", "1-rc123" ] }, "expected_output": [ "1-rc123", "1-def" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-pom-1", "1-rc123" ] }, "expected_output": [ "1-rc123", "1-pom-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1-snapshot", "1-rc123" ] }, "expected_output": [ "1-rc123", "1-1-snapshot" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1", "1-rc123" ] }, "expected_output": [ "1-rc123", "1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-2", "1-rc123" ] }, "expected_output": [ "1-rc123", "1-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-123", "1-rc123" ] }, "expected_output": [ "1-rc123", "1-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "1-SNAPSHOT" ] }, "expected_output": [ "1-SNAPSHOT", "1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-SNAPSHOT", "1-sp" ] }, "expected_output": [ "1-SNAPSHOT", "1-sp" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-SNAPSHOT", "1-sp2" ] }, "expected_output": [ "1-SNAPSHOT", "1-sp2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-SNAPSHOT", "1-sp123" ] }, "expected_output": [ "1-SNAPSHOT", "1-sp123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-SNAPSHOT", "1-abc" ] }, "expected_output": [ "1-SNAPSHOT", "1-abc" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-SNAPSHOT", "1-def" ] }, "expected_output": [ "1-SNAPSHOT", "1-def" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-SNAPSHOT", "1-pom-1" ] }, "expected_output": [ "1-SNAPSHOT", "1-pom-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1-snapshot", "1-SNAPSHOT" ] }, "expected_output": [ "1-SNAPSHOT", "1-1-snapshot" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1", "1-SNAPSHOT" ] }, "expected_output": [ "1-SNAPSHOT", "1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-2", "1-SNAPSHOT" ] }, "expected_output": [ "1-SNAPSHOT", "1-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-123", "1-SNAPSHOT" ] }, "expected_output": [ "1-SNAPSHOT", "1-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "1-sp" ] }, "expected_output": [ "1", "1-sp" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "1-sp2" ] }, "expected_output": [ "1", "1-sp2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "1-sp123" ] }, "expected_output": [ "1", "1-sp123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "1-abc" ] }, "expected_output": [ "1", "1-abc" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "1-def" ] }, "expected_output": [ "1", "1-def" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "1-pom-1" ] }, "expected_output": [ "1", "1-pom-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "1-1-snapshot" ] }, "expected_output": [ "1", "1-1-snapshot" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "1-1" ] }, "expected_output": [ "1", "1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "1-2" ] }, "expected_output": [ "1", "1-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1", "1-123" ] }, "expected_output": [ "1", "1-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-sp", "1-sp2" ] }, "expected_output": [ "1-sp", "1-sp2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-sp", "1-sp123" ] }, "expected_output": [ "1-sp", "1-sp123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-abc", "1-sp" ] }, "expected_output": [ "1-sp", "1-abc" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-def", "1-sp" ] }, "expected_output": [ "1-sp", "1-def" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-pom-1", "1-sp" ] }, "expected_output": [ "1-sp", "1-pom-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1-snapshot", "1-sp" ] }, "expected_output": [ "1-sp", "1-1-snapshot" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1", "1-sp" ] }, "expected_output": [ "1-sp", "1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-2", "1-sp" ] }, "expected_output": [ "1-sp", "1-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-123", "1-sp" ] }, "expected_output": [ "1-sp", "1-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-sp123", "1-sp2" ] }, "expected_output": [ "1-sp2", "1-sp123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-abc", "1-sp2" ] }, "expected_output": [ "1-sp2", "1-abc" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-def", "1-sp2" ] }, "expected_output": [ "1-sp2", "1-def" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-pom-1", "1-sp2" ] }, "expected_output": [ "1-sp2", "1-pom-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1-snapshot", "1-sp2" ] }, "expected_output": [ "1-sp2", "1-1-snapshot" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1", "1-sp2" ] }, "expected_output": [ "1-sp2", "1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-2", "1-sp2" ] }, "expected_output": [ "1-sp2", "1-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-123", "1-sp2" ] }, "expected_output": [ "1-sp2", "1-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-abc", "1-sp123" ] }, "expected_output": [ "1-sp123", "1-abc" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-def", "1-sp123" ] }, "expected_output": [ "1-sp123", "1-def" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-pom-1", "1-sp123" ] }, "expected_output": [ "1-sp123", "1-pom-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1-snapshot", "1-sp123" ] }, "expected_output": [ "1-sp123", "1-1-snapshot" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1", "1-sp123" ] }, "expected_output": [ "1-sp123", "1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-2", "1-sp123" ] }, "expected_output": [ "1-sp123", "1-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-123", "1-sp123" ] }, "expected_output": [ "1-sp123", "1-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-abc", "1-def" ] }, "expected_output": [ "1-abc", "1-def" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-abc", "1-pom-1" ] }, "expected_output": [ "1-abc", "1-pom-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1-snapshot", "1-abc" ] }, "expected_output": [ "1-abc", "1-1-snapshot" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1", "1-abc" ] }, "expected_output": [ "1-abc", "1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-2", "1-abc" ] }, "expected_output": [ "1-abc", "1-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-123", "1-abc" ] }, "expected_output": [ "1-abc", "1-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-def", "1-pom-1" ] }, "expected_output": [ "1-def", "1-pom-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1-snapshot", "1-def" ] }, "expected_output": [ "1-def", "1-1-snapshot" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1", "1-def" ] }, "expected_output": [ "1-def", "1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-2", "1-def" ] }, "expected_output": [ "1-def", "1-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-123", "1-def" ] }, "expected_output": [ "1-def", "1-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1-snapshot", "1-pom-1" ] }, "expected_output": [ "1-pom-1", "1-1-snapshot" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1", "1-pom-1" ] }, "expected_output": [ "1-pom-1", "1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-2", "1-pom-1" ] }, "expected_output": [ "1-pom-1", "1-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-123", "1-pom-1" ] }, "expected_output": [ "1-pom-1", "1-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1", "1-1-snapshot" ] }, "expected_output": [ "1-1-snapshot", "1-1" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1-snapshot", "1-2" ] }, "expected_output": [ "1-1-snapshot", "1-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1-snapshot", "1-123" ] }, "expected_output": [ "1-1-snapshot", "1-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1", "1-2" ] }, "expected_output": [ "1-1", "1-2" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-1", "1-123" ] }, "expected_output": [ "1-1", "1-123" ] }, { "description": "Comparison test for Maven version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "maven", "versions": [ "1-123", "1-2" ] }, "expected_output": [ "1-2", "1-123" ] } ] } URI-PackageURL-2.24/t/vers/alpine_version_cmp_test.json0000644000175000017500000072213515135504042022061 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/vers-test.schema-0.1.json", "tests": [ { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.34", "0.1.0_alpha" ] }, "expected_output": [ "0.1.0_alpha", "2.34" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "apk", "versions": [ "0.1.0_alpha", "0.1.0_alpha" ] }, "expected_output": true }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.1.0_alpha", "0.1.3_alpha" ] }, "expected_output": [ "0.1.0_alpha", "0.1.3_alpha" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.1.3_alpha", "0.1.0_alpha" ] }, "expected_output": [ "0.1.0_alpha", "0.1.3_alpha" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.1.0_alpha2", "0.1.0_alpha" ] }, "expected_output": [ "0.1.0_alpha", "0.1.0_alpha2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.1.0_alpha", "2.2.39-r1" ] }, "expected_output": [ "0.1.0_alpha", "2.2.39-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.2.39-r1", "1.0.4-r3" ] }, "expected_output": [ "1.0.4-r3", "2.2.39-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.4-r3", "1.0.4-r4" ] }, "expected_output": [ "1.0.4-r3", "1.0.4-r4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.4-r4", "1.6" ] }, "expected_output": [ "1.0.4-r4", "1.6" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.6", "1.0.2" ] }, "expected_output": [ "1.0.2", "1.6" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.2", "0.7-r1" ] }, "expected_output": [ "0.7-r1", "1.0.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.7-r1", "1.0.0" ] }, "expected_output": [ "0.7-r1", "1.0.0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.0", "1.0.1" ] }, "expected_output": [ "1.0.0", "1.0.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.1", "1.1" ] }, "expected_output": [ "1.0.1", "1.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1", "1.1_alpha1" ] }, "expected_output": [ "1.1_alpha1", "1.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1_alpha1", "1.2.1" ] }, "expected_output": [ "1.1_alpha1", "1.2.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.1", "1.2" ] }, "expected_output": [ "1.2", "1.2.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2", "1.3_alpha" ] }, "expected_output": [ "1.2", "1.3_alpha" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.3_alpha", "1.3_alpha2" ] }, "expected_output": [ "1.3_alpha", "1.3_alpha2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.3_alpha2", "1.3_alpha3" ] }, "expected_output": [ "1.3_alpha2", "1.3_alpha3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.3_alpha8", "0.6.0" ] }, "expected_output": [ "0.6.0", "1.3_alpha8" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.6.0", "0.6.1" ] }, "expected_output": [ "0.6.0", "0.6.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.6.1", "0.7.0" ] }, "expected_output": [ "0.6.1", "0.7.0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.7.0", "0.8_beta1" ] }, "expected_output": [ "0.7.0", "0.8_beta1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.8_beta1", "0.8_beta2" ] }, "expected_output": [ "0.8_beta1", "0.8_beta2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.8_beta4", "4.8-r1" ] }, "expected_output": [ "0.8_beta4", "4.8-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.8-r1", "3.10.18-r1" ] }, "expected_output": [ "3.10.18-r1", "4.8-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.10.18-r1", "2.3.0b-r1" ] }, "expected_output": [ "2.3.0b-r1", "3.10.18-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.3.0b-r1", "2.3.0b-r2" ] }, "expected_output": [ "2.3.0b-r1", "2.3.0b-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.3.0b-r2", "2.3.0b-r3" ] }, "expected_output": [ "2.3.0b-r2", "2.3.0b-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.3.0b-r3", "2.3.0b-r4" ] }, "expected_output": [ "2.3.0b-r3", "2.3.0b-r4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.3.0b-r4", "0.12.1" ] }, "expected_output": [ "0.12.1", "2.3.0b-r4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.12.1", "0.12.2" ] }, "expected_output": [ "0.12.1", "0.12.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.12.2", "0.12.3" ] }, "expected_output": [ "0.12.2", "0.12.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.12.3", "0.12" ] }, "expected_output": [ "0.12", "0.12.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.12", "0.13_beta1" ] }, "expected_output": [ "0.12", "0.13_beta1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.13_beta1", "0.13_beta2" ] }, "expected_output": [ "0.13_beta1", "0.13_beta2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.13_beta2", "0.13_beta3" ] }, "expected_output": [ "0.13_beta2", "0.13_beta3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.13_beta3", "0.13_beta4" ] }, "expected_output": [ "0.13_beta3", "0.13_beta4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.13_beta4", "0.13_beta5" ] }, "expected_output": [ "0.13_beta4", "0.13_beta5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.13_beta5", "0.9.12" ] }, "expected_output": [ "0.9.12", "0.13_beta5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9.12", "0.9.13" ] }, "expected_output": [ "0.9.12", "0.9.13" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9.13", "0.9.12" ] }, "expected_output": [ "0.9.12", "0.9.13" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9.12", "0.9.13" ] }, "expected_output": [ "0.9.12", "0.9.13" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9.13", "0.0.16" ] }, "expected_output": [ "0.0.16", "0.9.13" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.0.16", "0.6" ] }, "expected_output": [ "0.0.16", "0.6" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.6", "2.1.13-r3" ] }, "expected_output": [ "0.6", "2.1.13-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.1.13-r3", "2.1.15-r2" ] }, "expected_output": [ "2.1.13-r3", "2.1.15-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.1.15-r2", "2.1.15-r3" ] }, "expected_output": [ "2.1.15-r2", "2.1.15-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.1.15-r3", "1.2.11" ] }, "expected_output": [ "1.2.11", "2.1.15-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.11", "1.2.12.1" ] }, "expected_output": [ "1.2.11", "1.2.12.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.12.1", "1.2.13" ] }, "expected_output": [ "1.2.12.1", "1.2.13" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.13", "1.2.14-r1" ] }, "expected_output": [ "1.2.13", "1.2.14-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.14-r1", "0.7.1" ] }, "expected_output": [ "0.7.1", "1.2.14-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.7.1", "0.5.4" ] }, "expected_output": [ "0.5.4", "0.7.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.5.4", "0.7.0" ] }, "expected_output": [ "0.5.4", "0.7.0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.7.0", "1.2.13" ] }, "expected_output": [ "0.7.0", "1.2.13" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.13", "1.0.8" ] }, "expected_output": [ "1.0.8", "1.2.13" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.8", "1.2.1" ] }, "expected_output": [ "1.0.8", "1.2.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.1", "0.7-r1" ] }, "expected_output": [ "0.7-r1", "1.2.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.7-r1", "2.4.32" ] }, "expected_output": [ "0.7-r1", "2.4.32" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.4.32", "2.8-r4" ] }, "expected_output": [ "2.4.32", "2.8-r4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.8-r4", "0.9.6" ] }, "expected_output": [ "0.9.6", "2.8-r4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9.6", "0.2.0-r1" ] }, "expected_output": [ "0.2.0-r1", "0.9.6" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "apk", "versions": [ "0.2.0-r1", "0.2.0-r1" ] }, "expected_output": true }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.2.0-r1", "3.1_p16" ] }, "expected_output": [ "0.2.0-r1", "3.1_p16" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.1_p16", "3.1_p17" ] }, "expected_output": [ "3.1_p16", "3.1_p17" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.1_p17", "1.06-r6" ] }, "expected_output": [ "1.06-r6", "3.1_p17" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.0", "1.2.2-r1" ] }, "expected_output": [ "1.0.0", "1.2.2-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.2-r1", "1.2.2" ] }, "expected_output": [ "1.2.2", "1.2.2-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.2", "0.3-r1" ] }, "expected_output": [ "0.3-r1", "1.2.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.3-r1", "9.3.2-r4" ] }, "expected_output": [ "0.3-r1", "9.3.2-r4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "9.3.2-r4", "9.3.4-r2" ] }, "expected_output": [ "9.3.2-r4", "9.3.4-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "9.3.4-r2", "9.3.4" ] }, "expected_output": [ "9.3.4", "9.3.4-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "9.3.4", "9.3.2" ] }, "expected_output": [ "9.3.2", "9.3.4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "9.3.2", "9.3.4" ] }, "expected_output": [ "9.3.2", "9.3.4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "9.3.4", "1.1.3" ] }, "expected_output": [ "1.1.3", "9.3.4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.3", "2.16.1-r3" ] }, "expected_output": [ "1.1.3", "2.16.1-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "apk", "versions": [ "2.16.1-r3", "2.16.1-r3" ] }, "expected_output": true }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.16.1-r3", "2.1.0-r2" ] }, "expected_output": [ "2.1.0-r2", "2.16.1-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.1.0-r2", "2.9.3-r1" ] }, "expected_output": [ "2.1.0-r2", "2.9.3-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.9.3-r1", "0.9-r1" ] }, "expected_output": [ "0.9-r1", "2.9.3-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9-r1", "0.8-r1" ] }, "expected_output": [ "0.8-r1", "0.9-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.8-r1", "1.0.6-r3" ] }, "expected_output": [ "0.8-r1", "1.0.6-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.6-r3", "0.11" ] }, "expected_output": [ "0.11", "1.0.6-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.11", "0.12" ] }, "expected_output": [ "0.11", "0.12" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.12", "1.2.1-r1" ] }, "expected_output": [ "0.12", "1.2.1-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.1-r1", "1.2.2.1" ] }, "expected_output": [ "1.2.1-r1", "1.2.2.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.2.1", "1.4.1-r1" ] }, "expected_output": [ "1.2.2.1", "1.4.1-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.4.1-r1", "1.4.1-r2" ] }, "expected_output": [ "1.4.1-r1", "1.4.1-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.4.1-r2", "1.2.2" ] }, "expected_output": [ "1.2.2", "1.4.1-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.2", "1.3" ] }, "expected_output": [ "1.2.2", "1.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.3", "1.0.3-r6" ] }, "expected_output": [ "1.0.3-r6", "1.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.3-r6", "1.0.4" ] }, "expected_output": [ "1.0.3-r6", "1.0.4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.4", "2.59" ] }, "expected_output": [ "1.0.4", "2.59" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.59", "20050718-r1" ] }, "expected_output": [ "2.59", "20050718-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "20050718-r1", "20050718-r2" ] }, "expected_output": [ "20050718-r1", "20050718-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "20050718-r2", "3.9.8-r5" ] }, "expected_output": [ "3.9.8-r5", "20050718-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.9.8-r5", "2.01.01_alpha10" ] }, "expected_output": [ "2.01.01_alpha10", "3.9.8-r5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.01.01_alpha10", "0.94" ] }, "expected_output": [ "0.94", "2.01.01_alpha10" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.94", "1.0" ] }, "expected_output": [ "0.94", "1.0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0", "0.99.3.20040818" ] }, "expected_output": [ "0.99.3.20040818", "1.0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.99.3.20040818", "0.7" ] }, "expected_output": [ "0.7", "0.99.3.20040818" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.7", "1.21-r1" ] }, "expected_output": [ "0.7", "1.21-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.21-r1", "0.13" ] }, "expected_output": [ "0.13", "1.21-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.13", "0.90.1-r1" ] }, "expected_output": [ "0.13", "0.90.1-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.90.1-r1", "0.10.2" ] }, "expected_output": [ "0.10.2", "0.90.1-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.10.2", "0.10.3" ] }, "expected_output": [ "0.10.2", "0.10.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.10.3", "1.6" ] }, "expected_output": [ "0.10.3", "1.6" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.6", "1.39" ] }, "expected_output": [ "1.6", "1.39" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.39", "1.00_beta2" ] }, "expected_output": [ "1.00_beta2", "1.39" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.00_beta2", "0.9.2" ] }, "expected_output": [ "0.9.2", "1.00_beta2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9.2", "5.94-r1" ] }, "expected_output": [ "0.9.2", "5.94-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "5.94-r1", "6.4" ] }, "expected_output": [ "5.94-r1", "6.4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "6.4", "2.6-r5" ] }, "expected_output": [ "2.6-r5", "6.4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.6-r5", "1.4" ] }, "expected_output": [ "1.4", "2.6-r5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.4", "2.8.9-r1" ] }, "expected_output": [ "1.4", "2.8.9-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.8.9-r1", "2.8.9" ] }, "expected_output": [ "2.8.9", "2.8.9-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.8.9", "1.1" ] }, "expected_output": [ "1.1", "2.8.9" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1", "1.0.3-r2" ] }, "expected_output": [ "1.0.3-r2", "1.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.3-r2", "1.3.4-r3" ] }, "expected_output": [ "1.0.3-r2", "1.3.4-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.3.4-r3", "2.2" ] }, "expected_output": [ "1.3.4-r3", "2.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.2", "1.2.6" ] }, "expected_output": [ "1.2.6", "2.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.6", "7.15.1-r1" ] }, "expected_output": [ "1.2.6", "7.15.1-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "7.15.1-r1", "1.02" ] }, "expected_output": [ "1.02", "7.15.1-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.02", "1.03-r1" ] }, "expected_output": [ "1.02", "1.03-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.03-r1", "1.12.12-r2" ] }, "expected_output": [ "1.03-r1", "1.12.12-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.12.12-r2", "2.8.0.6-r1" ] }, "expected_output": [ "1.12.12-r2", "2.8.0.6-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.8.0.6-r1", "0.5.2.7" ] }, "expected_output": [ "0.5.2.7", "2.8.0.6-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.5.2.7", "4.2.52_p2-r1" ] }, "expected_output": [ "0.5.2.7", "4.2.52_p2-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.2.52_p2-r1", "4.2.52_p4-r2" ] }, "expected_output": [ "4.2.52_p2-r1", "4.2.52_p4-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.2.52_p4-r2", "1.02.07" ] }, "expected_output": [ "1.02.07", "4.2.52_p4-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.02.07", "1.02.10-r1" ] }, "expected_output": [ "1.02.07", "1.02.10-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.02.10-r1", "3.0.3-r9" ] }, "expected_output": [ "1.02.10-r1", "3.0.3-r9" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.0.3-r9", "2.0.5-r1" ] }, "expected_output": [ "2.0.5-r1", "3.0.3-r9" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.0.5-r1", "4.5" ] }, "expected_output": [ "2.0.5-r1", "4.5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.5", "2.8.7-r1" ] }, "expected_output": [ "2.8.7-r1", "4.5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.8.7-r1", "1.0.5" ] }, "expected_output": [ "1.0.5", "2.8.7-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.5", "8" ] }, "expected_output": [ "1.0.5", "8" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "8", "9" ] }, "expected_output": [ "8", "9" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "9", "2.18.3-r10" ] }, "expected_output": [ "2.18.3-r10", "9" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.18.3-r10", "1.05-r18" ] }, "expected_output": [ "1.05-r18", "2.18.3-r10" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.05-r18", "1.05-r19" ] }, "expected_output": [ "1.05-r18", "1.05-r19" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.05-r19", "2.2.5" ] }, "expected_output": [ "1.05-r19", "2.2.5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.2.5", "2.8" ] }, "expected_output": [ "2.2.5", "2.8" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.8", "2.20.1" ] }, "expected_output": [ "2.8", "2.20.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.20.1", "2.20.3" ] }, "expected_output": [ "2.20.1", "2.20.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.20.3", "2.31" ] }, "expected_output": [ "2.20.3", "2.31" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.31", "2.34" ] }, "expected_output": [ "2.31", "2.34" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.34", "2.38" ] }, "expected_output": [ "2.34", "2.38" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.38", "20050405" ] }, "expected_output": [ "2.38", "20050405" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "20050405", "1.8" ] }, "expected_output": [ "1.8", "20050405" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.8", "2.11-r1" ] }, "expected_output": [ "1.8", "2.11-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.11-r1", "2.11" ] }, "expected_output": [ "2.11", "2.11-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.11", "0.1.6-r3" ] }, "expected_output": [ "0.1.6-r3", "2.11" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.1.6-r3", "0.47-r1" ] }, "expected_output": [ "0.1.6-r3", "0.47-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.47-r1", "0.49" ] }, "expected_output": [ "0.47-r1", "0.49" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.49", "3.6.8-r2" ] }, "expected_output": [ "0.49", "3.6.8-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.6.8-r2", "1.39" ] }, "expected_output": [ "1.39", "3.6.8-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.39", "2.43" ] }, "expected_output": [ "1.39", "2.43" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.43", "2.0.6-r1" ] }, "expected_output": [ "2.0.6-r1", "2.43" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.0.6-r1", "0.2-r6" ] }, "expected_output": [ "0.2-r6", "2.0.6-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.2-r6", "0.4" ] }, "expected_output": [ "0.2-r6", "0.4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.4", "1.0.0" ] }, "expected_output": [ "0.4", "1.0.0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.0", "10-r1" ] }, "expected_output": [ "1.0.0", "10-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "10-r1", "4" ] }, "expected_output": [ "4", "10-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4", "0.7.3-r2" ] }, "expected_output": [ "0.7.3-r2", "4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.7.3-r2", "0.7.3" ] }, "expected_output": [ "0.7.3", "0.7.3-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.7.3", "1.95.8" ] }, "expected_output": [ "0.7.3", "1.95.8" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.95.8", "1.1.19" ] }, "expected_output": [ "1.1.19", "1.95.8" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.19", "1.1.5" ] }, "expected_output": [ "1.1.5", "1.1.19" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.5", "6.3.2-r1" ] }, "expected_output": [ "1.1.5", "6.3.2-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "6.3.2-r1", "6.3.3" ] }, "expected_output": [ "6.3.2-r1", "6.3.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "6.3.3", "4.17-r1" ] }, "expected_output": [ "4.17-r1", "6.3.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.17-r1", "4.18" ] }, "expected_output": [ "4.17-r1", "4.18" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.18", "4.19" ] }, "expected_output": [ "4.18", "4.19" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.19", "4.3.0" ] }, "expected_output": [ "4.3.0", "4.19" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.3.0", "4.3.2-r1" ] }, "expected_output": [ "4.3.0", "4.3.2-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.3.2-r1", "4.3.2" ] }, "expected_output": [ "4.3.2", "4.3.2-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.3.2", "0.68-r3" ] }, "expected_output": [ "0.68-r3", "4.3.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.68-r3", "1.0.0" ] }, "expected_output": [ "0.68-r3", "1.0.0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.0", "1.0.1" ] }, "expected_output": [ "1.0.0", "1.0.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.1", "1.0.0" ] }, "expected_output": [ "1.0.0", "1.0.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "apk", "versions": [ "1.0.0", "1.0.0" ] }, "expected_output": true }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.0", "1.0.1" ] }, "expected_output": [ "1.0.0", "1.0.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.1", "2.3.2-r1" ] }, "expected_output": [ "1.0.1", "2.3.2-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.3.2-r1", "2.4.2" ] }, "expected_output": [ "2.3.2-r1", "2.4.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.4.2", "20060720" ] }, "expected_output": [ "2.4.2", "20060720" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "20060720", "3.0.20060720" ] }, "expected_output": [ "3.0.20060720", "20060720" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.0.20060720", "20060720" ] }, "expected_output": [ "3.0.20060720", "20060720" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "20060720", "1.1" ] }, "expected_output": [ "1.1", "20060720" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "apk", "versions": [ "1.1", "1.1" ] }, "expected_output": true }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1", "1.1.1-r1" ] }, "expected_output": [ "1.1", "1.1.1-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.1-r1", "1.1.3-r1" ] }, "expected_output": [ "1.1.1-r1", "1.1.3-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.3-r1", "1.1.3-r2" ] }, "expected_output": [ "1.1.3-r1", "1.1.3-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.3-r2", "2.1.10-r2" ] }, "expected_output": [ "1.1.3-r2", "2.1.10-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.1.10-r2", "0.7.18-r2" ] }, "expected_output": [ "0.7.18-r2", "2.1.10-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.7.18-r2", "0.17-r6" ] }, "expected_output": [ "0.7.18-r2", "0.17-r6" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.17-r6", "2.6.1" ] }, "expected_output": [ "0.17-r6", "2.6.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.6.1", "2.6.3" ] }, "expected_output": [ "2.6.1", "2.6.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.6.3", "3.1.5-r2" ] }, "expected_output": [ "2.6.3", "3.1.5-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.1.5-r2", "3.4.6-r1" ] }, "expected_output": [ "3.1.5-r2", "3.4.6-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.4.6-r1", "3.4.6-r2" ] }, "expected_output": [ "3.4.6-r1", "3.4.6-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "apk", "versions": [ "3.4.6-r2", "3.4.6-r2" ] }, "expected_output": true }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.4.6-r2", "2.0.33" ] }, "expected_output": [ "2.0.33", "3.4.6-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.0.33", "2.0.34" ] }, "expected_output": [ "2.0.33", "2.0.34" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.0.34", "1.8.3-r2" ] }, "expected_output": [ "1.8.3-r2", "2.0.34" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.8.3-r2", "1.8.3-r3" ] }, "expected_output": [ "1.8.3-r2", "1.8.3-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.8.3-r3", "4.1" ] }, "expected_output": [ "1.8.3-r3", "4.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.1", "8.54" ] }, "expected_output": [ "4.1", "8.54" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "8.54", "4.1.4" ] }, "expected_output": [ "4.1.4", "8.54" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.1.4", "1.2.10-r5" ] }, "expected_output": [ "1.2.10-r5", "4.1.4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.10-r5", "4.1.4-r3" ] }, "expected_output": [ "1.2.10-r5", "4.1.4-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "apk", "versions": [ "4.1.4-r3", "4.1.4-r3" ] }, "expected_output": true }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.1.4-r3", "4.2.1" ] }, "expected_output": [ "4.1.4-r3", "4.2.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.2.1", "4.1.0" ] }, "expected_output": [ "4.1.0", "4.2.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.1.0", "8.11" ] }, "expected_output": [ "4.1.0", "8.11" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "8.11", "1.4.4-r1" ] }, "expected_output": [ "1.4.4-r1", "8.11" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.4.4-r1", "2.1.9.200602141850" ] }, "expected_output": [ "1.4.4-r1", "2.1.9.200602141850" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.1.9.200602141850", "1.6" ] }, "expected_output": [ "1.6", "2.1.9.200602141850" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.6", "2.5.1-r8" ] }, "expected_output": [ "1.6", "2.5.1-r8" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.5.1-r8", "2.5.1a-r1" ] }, "expected_output": [ "2.5.1-r8", "2.5.1a-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.5.1a-r1", "1.19.2-r1" ] }, "expected_output": [ "1.19.2-r1", "2.5.1a-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.19.2-r1", "0.97-r2" ] }, "expected_output": [ "0.97-r2", "1.19.2-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.97-r2", "0.97-r3" ] }, "expected_output": [ "0.97-r2", "0.97-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.97-r3", "1.3.5-r10" ] }, "expected_output": [ "0.97-r3", "1.3.5-r10" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.3.5-r10", "1.3.5-r8" ] }, "expected_output": [ "1.3.5-r8", "1.3.5-r10" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.3.5-r8", "1.3.5-r9" ] }, "expected_output": [ "1.3.5-r8", "1.3.5-r9" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.3.5-r9", "1.0" ] }, "expected_output": [ "1.0", "1.3.5-r9" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0", "1.1" ] }, "expected_output": [ "1.0", "1.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1", "0.9.11" ] }, "expected_output": [ "0.9.11", "1.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9.11", "0.9.12" ] }, "expected_output": [ "0.9.11", "0.9.12" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9.12", "0.9.13" ] }, "expected_output": [ "0.9.12", "0.9.13" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9.13", "0.9.14" ] }, "expected_output": [ "0.9.13", "0.9.14" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9.14", "0.9.15" ] }, "expected_output": [ "0.9.14", "0.9.15" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9.15", "0.9.16" ] }, "expected_output": [ "0.9.15", "0.9.16" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9.16", "0.3-r2" ] }, "expected_output": [ "0.3-r2", "0.9.16" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.3-r2", "6.3" ] }, "expected_output": [ "0.3-r2", "6.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "6.3", "6.6" ] }, "expected_output": [ "6.3", "6.6" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "6.6", "6.9" ] }, "expected_output": [ "6.6", "6.9" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "6.9", "0.7.2-r3" ] }, "expected_output": [ "0.7.2-r3", "6.9" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.7.2-r3", "1.2.10" ] }, "expected_output": [ "0.7.2-r3", "1.2.10" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.10", "20040923-r2" ] }, "expected_output": [ "1.2.10", "20040923-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "20040923-r2", "20040401" ] }, "expected_output": [ "20040401", "20040923-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "20040401", "2.0.0_rc3-r1" ] }, "expected_output": [ "2.0.0_rc3-r1", "20040401" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.0.0_rc3-r1", "1.5" ] }, "expected_output": [ "1.5", "2.0.0_rc3-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.5", "4.4" ] }, "expected_output": [ "1.5", "4.4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.4", "1.0.1" ] }, "expected_output": [ "1.0.1", "4.4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.1", "2.2.0" ] }, "expected_output": [ "1.0.1", "2.2.0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.2.0", "1.1.0-r2" ] }, "expected_output": [ "1.1.0-r2", "2.2.0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.0-r2", "0.3" ] }, "expected_output": [ "0.3", "1.1.0-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.3", "20020207-r2" ] }, "expected_output": [ "0.3", "20020207-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "20020207-r2", "1.31-r2" ] }, "expected_output": [ "1.31-r2", "20020207-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.31-r2", "3.7" ] }, "expected_output": [ "1.31-r2", "3.7" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.7", "2.0.1" ] }, "expected_output": [ "2.0.1", "3.7" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.0.1", "2.0.2" ] }, "expected_output": [ "2.0.1", "2.0.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.0.2", "0.99.163" ] }, "expected_output": [ "0.99.163", "2.0.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.99.163", "2.6.15.20060110" ] }, "expected_output": [ "0.99.163", "2.6.15.20060110" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.6.15.20060110", "2.6.16.20060323" ] }, "expected_output": [ "2.6.15.20060110", "2.6.16.20060323" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.6.16.20060323", "2.6.19.20061214" ] }, "expected_output": [ "2.6.16.20060323", "2.6.19.20061214" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.6.19.20061214", "0.6.2-r1" ] }, "expected_output": [ "0.6.2-r1", "2.6.19.20061214" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.6.2-r1", "0.6.3" ] }, "expected_output": [ "0.6.2-r1", "0.6.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.6.3", "0.6.5" ] }, "expected_output": [ "0.6.3", "0.6.5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.6.5", "1.3.5-r1" ] }, "expected_output": [ "0.6.5", "1.3.5-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.3.5-r1", "1.3.5-r4" ] }, "expected_output": [ "1.3.5-r1", "1.3.5-r4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.3.5-r4", "3.0.0-r2" ] }, "expected_output": [ "1.3.5-r4", "3.0.0-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "20060512", "1.24" ] }, "expected_output": [ "1.24", "20060512" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.24", "0.9.16-r1" ] }, "expected_output": [ "0.9.16-r1", "1.24" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9.16-r1", "3.9_pre20060124" ] }, "expected_output": [ "0.9.16-r1", "3.9_pre20060124" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.9_pre20060124", "0.01" ] }, "expected_output": [ "0.01", "3.9_pre20060124" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.01", "0.06" ] }, "expected_output": [ "0.01", "0.06" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.06", "1.1.7" ] }, "expected_output": [ "0.06", "1.1.7" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.7", "6b-r7" ] }, "expected_output": [ "1.1.7", "6b-r7" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "6b-r7", "1.12-r7" ] }, "expected_output": [ "1.12-r7", "6b-r7" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.12-r7", "1.12-r8" ] }, "expected_output": [ "1.12-r7", "1.12-r8" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.12-r8", "1.1.12" ] }, "expected_output": [ "1.1.12", "1.12-r8" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.12", "1.1.13" ] }, "expected_output": [ "1.1.12", "1.1.13" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.13", "0.3" ] }, "expected_output": [ "0.3", "1.1.13" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.3", "0.5" ] }, "expected_output": [ "0.3", "0.5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.5", "3.96.1" ] }, "expected_output": [ "0.5", "3.96.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.96.1", "3.97" ] }, "expected_output": [ "3.96.1", "3.97" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.97", "0.10.0-r1" ] }, "expected_output": [ "0.10.0-r1", "3.97" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.10.0-r1", "0.10.0" ] }, "expected_output": [ "0.10.0", "0.10.0-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.10.0", "0.10.1_rc1" ] }, "expected_output": [ "0.10.0", "0.10.1_rc1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.10.1_rc1", "0.9.11" ] }, "expected_output": [ "0.9.11", "0.10.1_rc1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9.11", "394" ] }, "expected_output": [ "0.9.11", "394" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "394", "2.31" ] }, "expected_output": [ "2.31", "394" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.31", "1.0.1" ] }, "expected_output": [ "1.0.1", "2.31" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "apk", "versions": [ "1.0.1", "1.0.1" ] }, "expected_output": true }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.1", "1.0.3" ] }, "expected_output": [ "1.0.1", "1.0.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.3", "1.0.2" ] }, "expected_output": [ "1.0.2", "1.0.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "apk", "versions": [ "1.0.2", "1.0.2" ] }, "expected_output": true }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.2", "1.0.1" ] }, "expected_output": [ "1.0.1", "1.0.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "apk", "versions": [ "1.0.1", "1.0.1" ] }, "expected_output": true }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.1", "1.2.2" ] }, "expected_output": [ "1.0.1", "1.2.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.2", "2.1.10" ] }, "expected_output": [ "1.2.2", "2.1.10" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.1.10", "1.0.1" ] }, "expected_output": [ "1.0.1", "2.1.10" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.1", "1.0.2" ] }, "expected_output": [ "1.0.1", "1.0.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.2", "3.5.5" ] }, "expected_output": [ "1.0.2", "3.5.5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.5.5", "1.1.1" ] }, "expected_output": [ "1.1.1", "3.5.5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.1", "0.9.1" ] }, "expected_output": [ "0.9.1", "1.1.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9.1", "1.0.2" ] }, "expected_output": [ "0.9.1", "1.0.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.2", "1.0.1" ] }, "expected_output": [ "1.0.1", "1.0.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.1", "1.0.2" ] }, "expected_output": [ "1.0.1", "1.0.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.2", "1.0.1" ] }, "expected_output": [ "1.0.1", "1.0.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "apk", "versions": [ "1.0.1", "1.0.1" ] }, "expected_output": true }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.1", "1.0.5" ] }, "expected_output": [ "1.0.1", "1.0.5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.5", "0.8.5" ] }, "expected_output": [ "0.8.5", "1.0.5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.8.5", "0.8.6-r3" ] }, "expected_output": [ "0.8.5", "0.8.6-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.8.6-r3", "2.3.17" ] }, "expected_output": [ "0.8.6-r3", "2.3.17" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.3.17", "1.10-r5" ] }, "expected_output": [ "1.10-r5", "2.3.17" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.10-r5", "1.10-r9" ] }, "expected_output": [ "1.10-r5", "1.10-r9" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.10-r9", "2.0.2" ] }, "expected_output": [ "1.10-r9", "2.0.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.0.2", "1.1a" ] }, "expected_output": [ "1.1a", "2.0.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1a", "1.3a" ] }, "expected_output": [ "1.1a", "1.3a" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.3a", "1.0.2" ] }, "expected_output": [ "1.0.2", "1.3a" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.2", "1.2.2-r1" ] }, "expected_output": [ "1.0.2", "1.2.2-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.2-r1", "1.0-r1" ] }, "expected_output": [ "1.0-r1", "1.2.2-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0-r1", "0.15.1b" ] }, "expected_output": [ "0.15.1b", "1.0-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.15.1b", "1.0.1" ] }, "expected_output": [ "0.15.1b", "1.0.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.1", "1.06-r1" ] }, "expected_output": [ "1.0.1", "1.06-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.06-r1", "1.06-r2" ] }, "expected_output": [ "1.06-r1", "1.06-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.06-r2", "0.15.1b-r2" ] }, "expected_output": [ "0.15.1b-r2", "1.06-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.15.1b-r2", "0.15.1b" ] }, "expected_output": [ "0.15.1b", "0.15.1b-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.15.1b", "2.5.7" ] }, "expected_output": [ "0.15.1b", "2.5.7" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.5.7", "1.1.2.1-r1" ] }, "expected_output": [ "1.1.2.1-r1", "2.5.7" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.2.1-r1", "0.0.31" ] }, "expected_output": [ "0.0.31", "1.1.2.1-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.0.31", "0.0.50" ] }, "expected_output": [ "0.0.31", "0.0.50" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.0.50", "0.0.16" ] }, "expected_output": [ "0.0.16", "0.0.50" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.0.16", "0.0.25" ] }, "expected_output": [ "0.0.16", "0.0.25" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.0.25", "0.17" ] }, "expected_output": [ "0.0.25", "0.17" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.17", "0.5.0" ] }, "expected_output": [ "0.5.0", "0.17" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.5.0", "1.1.2" ] }, "expected_output": [ "0.5.0", "1.1.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.2", "1.1.3" ] }, "expected_output": [ "1.1.2", "1.1.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.3", "1.1.20" ] }, "expected_output": [ "1.1.3", "1.1.20" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.20", "0.9.4" ] }, "expected_output": [ "0.9.4", "1.1.20" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9.4", "0.9.5" ] }, "expected_output": [ "0.9.4", "0.9.5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9.5", "6.3" ] }, "expected_output": [ "0.9.5", "6.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "6.3", "6.6" ] }, "expected_output": [ "6.3", "6.6" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "6.6", "6.3" ] }, "expected_output": [ "6.3", "6.6" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "6.3", "6.6" ] }, "expected_output": [ "6.3", "6.6" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "6.6", "1.2.12-r1" ] }, "expected_output": [ "1.2.12-r1", "6.6" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.12-r1", "1.2.13" ] }, "expected_output": [ "1.2.12-r1", "1.2.13" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.13", "1.2.14" ] }, "expected_output": [ "1.2.13", "1.2.14" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.14", "1.2.15" ] }, "expected_output": [ "1.2.14", "1.2.15" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.15", "8.0.12" ] }, "expected_output": [ "1.2.15", "8.0.12" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "8.0.12", "8.0.9" ] }, "expected_output": [ "8.0.9", "8.0.12" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "8.0.9", "1.2.3-r1" ] }, "expected_output": [ "1.2.3-r1", "8.0.9" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.3-r1", "1.2.4-r1" ] }, "expected_output": [ "1.2.3-r1", "1.2.4-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.4-r1", "0.1" ] }, "expected_output": [ "0.1", "1.2.4-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.1", "0.3.5" ] }, "expected_output": [ "0.1", "0.3.5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.3.5", "1.5.22" ] }, "expected_output": [ "0.3.5", "1.5.22" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.5.22", "0.1.11" ] }, "expected_output": [ "0.1.11", "1.5.22" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.1.11", "0.1.12" ] }, "expected_output": [ "0.1.11", "0.1.12" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.1.12", "1.1.4.1" ] }, "expected_output": [ "0.1.12", "1.1.4.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.4.1", "1.1.0" ] }, "expected_output": [ "1.1.0", "1.1.4.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.0", "1.1.2" ] }, "expected_output": [ "1.1.0", "1.1.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.2", "1.0.3" ] }, "expected_output": [ "1.0.3", "1.1.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.3", "1.0.2" ] }, "expected_output": [ "1.0.2", "1.0.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.2", "2.6.26" ] }, "expected_output": [ "1.0.2", "2.6.26" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.6.26", "2.6.27" ] }, "expected_output": [ "2.6.26", "2.6.27" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.6.27", "1.1.17" ] }, "expected_output": [ "1.1.17", "2.6.27" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.17", "1.4.11" ] }, "expected_output": [ "1.1.17", "1.4.11" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.4.11", "22.7-r1" ] }, "expected_output": [ "1.4.11", "22.7-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "22.7-r1", "22.7.3-r1" ] }, "expected_output": [ "22.7-r1", "22.7.3-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "22.7.3-r1", "22.7" ] }, "expected_output": [ "22.7", "22.7.3-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "22.7", "2.1_pre20" ] }, "expected_output": [ "2.1_pre20", "22.7" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.1_pre20", "2.1_pre26" ] }, "expected_output": [ "2.1_pre20", "2.1_pre26" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.1_pre26", "0.2.3-r2" ] }, "expected_output": [ "0.2.3-r2", "2.1_pre26" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.2.3-r2", "0.2.2" ] }, "expected_output": [ "0.2.2", "0.2.3-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.2.2", "2.10.0" ] }, "expected_output": [ "0.2.2", "2.10.0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.10.0", "2.10.1" ] }, "expected_output": [ "2.10.0", "2.10.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.77", "0.17" ] }, "expected_output": [ "0.17", "4.77" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.17", "5.1.1-r1" ] }, "expected_output": [ "0.17", "5.1.1-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "5.1.1-r1", "5.1.1-r2" ] }, "expected_output": [ "5.1.1-r1", "5.1.1-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "5.1.1-r2", "5.1.1" ] }, "expected_output": [ "5.1.1", "5.1.1-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "5.1.1", "1.2" ] }, "expected_output": [ "1.2", "5.1.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2", "5.1" ] }, "expected_output": [ "1.2", "5.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "5.1", "2.02.06" ] }, "expected_output": [ "2.02.06", "5.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.02.06", "2.02.10" ] }, "expected_output": [ "2.02.06", "2.02.10" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.02.10", "2.8.5-r3" ] }, "expected_output": [ "2.02.10", "2.8.5-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.8.5-r3", "2.8.6-r1" ] }, "expected_output": [ "2.8.5-r3", "2.8.6-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.8.6-r1", "2.8.6-r2" ] }, "expected_output": [ "2.8.6-r1", "2.8.6-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.8.6-r2", "2.02-r1" ] }, "expected_output": [ "2.02-r1", "2.8.6-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.02-r1", "1.5.0-r1" ] }, "expected_output": [ "1.5.0-r1", "2.02-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.5.0-r1", "1.5.0" ] }, "expected_output": [ "1.5.0", "1.5.0-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.5.0", "0.9.2" ] }, "expected_output": [ "0.9.2", "1.5.0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9.2", "8.1.2.20040524-r1" ] }, "expected_output": [ "0.9.2", "8.1.2.20040524-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "8.1.2.20040524-r1", "8.1.2.20050715-r1" ] }, "expected_output": [ "8.1.2.20040524-r1", "8.1.2.20050715-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "8.1.2.20050715-r1", "20030215" ] }, "expected_output": [ "8.1.2.20050715-r1", "20030215" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "20030215", "3.80-r4" ] }, "expected_output": [ "3.80-r4", "20030215" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.80-r4", "3.81" ] }, "expected_output": [ "3.80-r4", "3.81" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.81", "1.6d" ] }, "expected_output": [ "1.6d", "3.81" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.6d", "1.2.07.8" ] }, "expected_output": [ "1.2.07.8", "1.6d" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.07.8", "1.2.12.04" ] }, "expected_output": [ "1.2.07.8", "1.2.12.04" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.12.04", "1.2.12.05" ] }, "expected_output": [ "1.2.12.04", "1.2.12.05" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.12.05", "1.3.3" ] }, "expected_output": [ "1.2.12.05", "1.3.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.3.3", "2.6.4" ] }, "expected_output": [ "1.3.3", "2.6.4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.6.4", "2.5.2" ] }, "expected_output": [ "2.5.2", "2.6.4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.5.2", "2.6.1" ] }, "expected_output": [ "2.5.2", "2.6.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.6.1", "2.6" ] }, "expected_output": [ "2.6", "2.6.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.6", "6.5.1-r1" ] }, "expected_output": [ "2.6", "6.5.1-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "6.5.1-r1", "1.1.35-r1" ] }, "expected_output": [ "1.1.35-r1", "6.5.1-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.35-r1", "1.1.35-r2" ] }, "expected_output": [ "1.1.35-r1", "1.1.35-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.35-r2", "0.9.2" ] }, "expected_output": [ "0.9.2", "1.1.35-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9.2", "1.07-r1" ] }, "expected_output": [ "0.9.2", "1.07-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.07-r1", "1.07.5" ] }, "expected_output": [ "1.07-r1", "1.07.5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.07.5", "1.07" ] }, "expected_output": [ "1.07", "1.07.5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.07", "1.19" ] }, "expected_output": [ "1.07", "1.19" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.19", "2.1-r2" ] }, "expected_output": [ "1.19", "2.1-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.1-r2", "2.2" ] }, "expected_output": [ "2.1-r2", "2.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.2", "1.0.4" ] }, "expected_output": [ "1.0.4", "2.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.4", "20060811" ] }, "expected_output": [ "1.0.4", "20060811" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "20060811", "20061003" ] }, "expected_output": [ "20060811", "20061003" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "20061003", "0.1_pre20060810" ] }, "expected_output": [ "0.1_pre20060810", "20061003" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.1_pre20060810", "0.1_pre20060817" ] }, "expected_output": [ "0.1_pre20060810", "0.1_pre20060817" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.1_pre20060817", "1.0.3" ] }, "expected_output": [ "0.1_pre20060817", "1.0.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.3", "1.0.2" ] }, "expected_output": [ "1.0.2", "1.0.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.2", "1.0.1" ] }, "expected_output": [ "1.0.1", "1.0.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.1", "3.2.2-r1" ] }, "expected_output": [ "1.0.1", "3.2.2-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.2.2-r1", "3.2.2-r2" ] }, "expected_output": [ "3.2.2-r1", "3.2.2-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.2.2-r2", "3.3.17" ] }, "expected_output": [ "3.2.2-r2", "3.3.17" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.3.17", "0.59s-r11" ] }, "expected_output": [ "0.59s-r11", "3.3.17" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.59s-r11", "0.65" ] }, "expected_output": [ "0.59s-r11", "0.65" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.65", "0.2.10-r2" ] }, "expected_output": [ "0.2.10-r2", "0.65" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.2.10-r2", "2.01" ] }, "expected_output": [ "0.2.10-r2", "2.01" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.01", "3.9.10" ] }, "expected_output": [ "2.01", "3.9.10" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.9.10", "1.2.18" ] }, "expected_output": [ "1.2.18", "3.9.10" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.18", "1.5.11-r2" ] }, "expected_output": [ "1.2.18", "1.5.11-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.5.11-r2", "1.5.13-r1" ] }, "expected_output": [ "1.5.11-r2", "1.5.13-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.5.13-r1", "1.3.12-r1" ] }, "expected_output": [ "1.3.12-r1", "1.5.13-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.3.12-r1", "2.0.1" ] }, "expected_output": [ "1.3.12-r1", "2.0.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.0.1", "2.0.2" ] }, "expected_output": [ "2.0.1", "2.0.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.0.2", "2.0.3" ] }, "expected_output": [ "2.0.2", "2.0.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.0.3", "0.2.0" ] }, "expected_output": [ "0.2.0", "2.0.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.2.0", "5.5-r2" ] }, "expected_output": [ "0.2.0", "5.5-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "5.5-r2", "5.5-r3" ] }, "expected_output": [ "5.5-r2", "5.5-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "5.5-r3", "0.25.3" ] }, "expected_output": [ "0.25.3", "5.5-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.25.3", "0.26.1-r1" ] }, "expected_output": [ "0.25.3", "0.26.1-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.26.1-r1", "5.2.1.2-r1" ] }, "expected_output": [ "0.26.1-r1", "5.2.1.2-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "5.2.1.2-r1", "5.4" ] }, "expected_output": [ "5.2.1.2-r1", "5.4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "5.4", "1.60-r11" ] }, "expected_output": [ "1.60-r11", "5.4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.60-r11", "1.60-r12" ] }, "expected_output": [ "1.60-r11", "1.60-r12" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.60-r12", "110-r8" ] }, "expected_output": [ "1.60-r12", "110-r8" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "110-r8", "0.17-r2" ] }, "expected_output": [ "0.17-r2", "110-r8" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.17-r2", "1.05-r4" ] }, "expected_output": [ "0.17-r2", "1.05-r4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.05-r4", "5.28.0" ] }, "expected_output": [ "1.05-r4", "5.28.0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "5.28.0", "0.51.6-r1" ] }, "expected_output": [ "0.51.6-r1", "5.28.0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.51.6-r1", "1.0.6-r6" ] }, "expected_output": [ "0.51.6-r1", "1.0.6-r6" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.6-r6", "0.8.3" ] }, "expected_output": [ "0.8.3", "1.0.6-r6" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.8.3", "1.42" ] }, "expected_output": [ "0.8.3", "1.42" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.42", "20030719" ] }, "expected_output": [ "1.42", "20030719" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "20030719", "4.01" ] }, "expected_output": [ "4.01", "20030719" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.01", "4.20" ] }, "expected_output": [ "4.01", "4.20" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.20", "0.20070118" ] }, "expected_output": [ "0.20070118", "4.20" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.20070118", "0.20070207_rc1" ] }, "expected_output": [ "0.20070118", "0.20070207_rc1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.20070207_rc1", "1.0" ] }, "expected_output": [ "0.20070207_rc1", "1.0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0", "1.13.0" ] }, "expected_output": [ "1.0", "1.13.0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.13.0", "1.13.1" ] }, "expected_output": [ "1.13.0", "1.13.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.13.1", "0.21" ] }, "expected_output": [ "0.21", "1.13.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.21", "0.3.7-r3" ] }, "expected_output": [ "0.3.7-r3", "0.21" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.3.7-r3", "0.4.10" ] }, "expected_output": [ "0.3.7-r3", "0.4.10" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.4.10", "0.5.0" ] }, "expected_output": [ "0.4.10", "0.5.0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.5.0", "0.5.5" ] }, "expected_output": [ "0.5.0", "0.5.5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.5.5", "0.5.7" ] }, "expected_output": [ "0.5.5", "0.5.7" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.5.7", "0.6.11-r1" ] }, "expected_output": [ "0.5.7", "0.6.11-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.6.11-r1", "2.3.30-r2" ] }, "expected_output": [ "0.6.11-r1", "2.3.30-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.3.30-r2", "3.7_p1" ] }, "expected_output": [ "2.3.30-r2", "3.7_p1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.7_p1", "1.3" ] }, "expected_output": [ "1.3", "3.7_p1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.3", "0.10.1" ] }, "expected_output": [ "0.10.1", "1.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.10.1", "4.3_p2-r1" ] }, "expected_output": [ "0.10.1", "4.3_p2-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.3_p2-r1", "4.3_p2-r5" ] }, "expected_output": [ "4.3_p2-r1", "4.3_p2-r5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.3_p2-r5", "4.4_p1-r6" ] }, "expected_output": [ "4.3_p2-r5", "4.4_p1-r6" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.4_p1-r6", "4.5_p1-r1" ] }, "expected_output": [ "4.4_p1-r6", "4.5_p1-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.5_p1-r1", "4.5_p1" ] }, "expected_output": [ "4.5_p1", "4.5_p1-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.5_p1", "4.5_p1-r1" ] }, "expected_output": [ "4.5_p1", "4.5_p1-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.5_p1-r1", "4.5_p1" ] }, "expected_output": [ "4.5_p1", "4.5_p1-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.5_p1", "0.9.8c-r1" ] }, "expected_output": [ "0.9.8c-r1", "4.5_p1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9.8c-r1", "0.9.8d" ] }, "expected_output": [ "0.9.8c-r1", "0.9.8d" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9.8d", "2.4.4" ] }, "expected_output": [ "0.9.8d", "2.4.4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.4.4", "2.4.7" ] }, "expected_output": [ "2.4.4", "2.4.7" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.4.7", "2.0.6" ] }, "expected_output": [ "2.0.6", "2.4.7" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "apk", "versions": [ "2.0.6", "2.0.6" ] }, "expected_output": true }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.0.6", "0.78-r3" ] }, "expected_output": [ "0.78-r3", "2.0.6" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.78-r3", "0.3.2" ] }, "expected_output": [ "0.3.2", "0.78-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.3.2", "1.7.1-r1" ] }, "expected_output": [ "0.3.2", "1.7.1-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.7.1-r1", "2.5.9" ] }, "expected_output": [ "1.7.1-r1", "2.5.9" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.5.9", "0.1.13" ] }, "expected_output": [ "0.1.13", "2.5.9" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.1.13", "0.1.15" ] }, "expected_output": [ "0.1.13", "0.1.15" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.1.15", "0.4" ] }, "expected_output": [ "0.1.15", "0.4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.4", "0.9.6" ] }, "expected_output": [ "0.4", "0.9.6" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9.6", "2.2.0-r1" ] }, "expected_output": [ "0.9.6", "2.2.0-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.2.0-r1", "2.2.3-r2" ] }, "expected_output": [ "2.2.0-r1", "2.2.3-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.3.1-r1", "5.8.8-r2" ] }, "expected_output": [ "1.3.1-r1", "5.8.8-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "5.8.8-r2", "5.1.6-r4" ] }, "expected_output": [ "5.1.6-r4", "5.8.8-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "5.1.6-r4", "5.1.6-r6" ] }, "expected_output": [ "5.1.6-r4", "5.1.6-r6" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "5.1.6-r6", "5.2.1-r3" ] }, "expected_output": [ "5.1.6-r6", "5.2.1-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "5.2.1-r3", "0.11.3" ] }, "expected_output": [ "0.11.3", "5.2.1-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "apk", "versions": [ "0.11.3", "0.11.3" ] }, "expected_output": true }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.11.3", "1.10.7" ] }, "expected_output": [ "0.11.3", "1.10.7" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.10.7", "1.7-r1" ] }, "expected_output": [ "1.7-r1", "1.10.7" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.7-r1", "0.1.20" ] }, "expected_output": [ "0.1.20", "1.7-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.1.20", "0.1.23" ] }, "expected_output": [ "0.1.20", "0.1.23" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.1.23", "5b-r9" ] }, "expected_output": [ "0.1.23", "5b-r9" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "5b-r9", "2.2.10" ] }, "expected_output": [ "2.2.10", "5b-r9" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.2.10", "2.3.6" ] }, "expected_output": [ "2.2.10", "2.3.6" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.3.6", "8.0.12" ] }, "expected_output": [ "2.3.6", "8.0.12" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "8.0.12", "2.4.3-r16" ] }, "expected_output": [ "2.4.3-r16", "8.0.12" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.4.3-r16", "2.4.4-r4" ] }, "expected_output": [ "2.4.3-r16", "2.4.4-r4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.4.4-r4", "3.0.3-r5" ] }, "expected_output": [ "2.4.4-r4", "3.0.3-r5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.0.3-r5", "3.0.6" ] }, "expected_output": [ "3.0.3-r5", "3.0.6" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.0.6", "3.2.6" ] }, "expected_output": [ "3.0.6", "3.2.6" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.2.6", "3.2.7" ] }, "expected_output": [ "3.2.6", "3.2.7" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.2.7", "0.3.1_rc8" ] }, "expected_output": [ "0.3.1_rc8", "3.2.7" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.3.1_rc8", "22.2" ] }, "expected_output": [ "0.3.1_rc8", "22.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "22.2", "22.3" ] }, "expected_output": [ "22.2", "22.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "22.3", "1.2.2" ] }, "expected_output": [ "1.2.2", "22.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.2", "2.04" ] }, "expected_output": [ "1.2.2", "2.04" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.04", "2.4.3-r1" ] }, "expected_output": [ "2.04", "2.4.3-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.4.3-r1", "2.4.3-r4" ] }, "expected_output": [ "2.4.3-r1", "2.4.3-r4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.4.3-r4", "0.98.6-r1" ] }, "expected_output": [ "0.98.6-r1", "2.4.3-r4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.98.6-r1", "5.7-r2" ] }, "expected_output": [ "0.98.6-r1", "5.7-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "5.7-r2", "5.7-r3" ] }, "expected_output": [ "5.7-r2", "5.7-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "5.7-r3", "5.1_p4" ] }, "expected_output": [ "5.1_p4", "5.7-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "5.1_p4", "1.0.5" ] }, "expected_output": [ "1.0.5", "5.1_p4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.5", "3.6.19-r1" ] }, "expected_output": [ "1.0.5", "3.6.19-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.6.19-r1", "3.6.19" ] }, "expected_output": [ "3.6.19", "3.6.19-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.6.19", "1.0.1" ] }, "expected_output": [ "1.0.1", "3.6.19" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.1", "3.8" ] }, "expected_output": [ "1.0.1", "3.8" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.8", "0.2.3" ] }, "expected_output": [ "0.2.3", "3.8" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.2.3", "1.2.15-r3" ] }, "expected_output": [ "0.2.3", "1.2.15-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.15-r3", "1.2.6-r1" ] }, "expected_output": [ "1.2.6-r1", "1.2.15-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.6-r1", "2.6.8-r2" ] }, "expected_output": [ "1.2.6-r1", "2.6.8-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.6.8-r2", "2.6.9-r1" ] }, "expected_output": [ "2.6.8-r2", "2.6.9-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.6.9-r1", "1.7" ] }, "expected_output": [ "1.7", "2.6.9-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.7", "1.7b" ] }, "expected_output": [ "1.7", "1.7b" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.7b", "1.8.4-r3" ] }, "expected_output": [ "1.7b", "1.8.4-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.8.4-r3", "1.8.5" ] }, "expected_output": [ "1.8.4-r3", "1.8.5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.8.5", "1.8.5_p2" ] }, "expected_output": [ "1.8.5", "1.8.5_p2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.8.5_p2", "1.1.3" ] }, "expected_output": [ "1.1.3", "1.8.5_p2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.3", "3.0.22-r3" ] }, "expected_output": [ "1.1.3", "3.0.22-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.0.22-r3", "3.0.24" ] }, "expected_output": [ "3.0.22-r3", "3.0.24" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "apk", "versions": [ "3.0.24", "3.0.24" ] }, "expected_output": true }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "apk", "versions": [ "3.0.24", "3.0.24" ] }, "expected_output": true }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.0.24", "4.0.2-r5" ] }, "expected_output": [ "3.0.24", "4.0.2-r5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.0.2-r5", "4.0.3" ] }, "expected_output": [ "4.0.2-r5", "4.0.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.0.3", "0.98" ] }, "expected_output": [ "0.98", "4.0.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.98", "1.00" ] }, "expected_output": [ "0.98", "1.00" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.00", "4.1.4-r1" ] }, "expected_output": [ "1.00", "4.1.4-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.1.4-r1", "4.1.5" ] }, "expected_output": [ "4.1.4-r1", "4.1.5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.1.5", "2.3" ] }, "expected_output": [ "2.3", "4.1.5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.3", "2.17-r3" ] }, "expected_output": [ "2.3", "2.17-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.17-r3", "0.1.7" ] }, "expected_output": [ "0.1.7", "2.17-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.1.7", "1.11" ] }, "expected_output": [ "0.1.7", "1.11" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.11", "4.2.1-r11" ] }, "expected_output": [ "1.11", "4.2.1-r11" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.2.1-r11", "3.2.3" ] }, "expected_output": [ "3.2.3", "4.2.1-r11" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.2.3", "3.2.4" ] }, "expected_output": [ "3.2.3", "3.2.4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.2.4", "3.2.8" ] }, "expected_output": [ "3.2.4", "3.2.8" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.2.8", "3.2.9" ] }, "expected_output": [ "3.2.8", "3.2.9" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.2.9", "3.2.3" ] }, "expected_output": [ "3.2.3", "3.2.9" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.2.3", "3.2.4" ] }, "expected_output": [ "3.2.3", "3.2.4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.2.4", "3.2.8" ] }, "expected_output": [ "3.2.4", "3.2.8" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.2.8", "3.2.9" ] }, "expected_output": [ "3.2.8", "3.2.9" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.2.9", "1.4.9-r2" ] }, "expected_output": [ "1.4.9-r2", "3.2.9" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.4.9-r2", "2.9.11_pre20051101-r2" ] }, "expected_output": [ "1.4.9-r2", "2.9.11_pre20051101-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.9.11_pre20051101-r2", "2.9.11_pre20051101-r3" ] }, "expected_output": [ "2.9.11_pre20051101-r2", "2.9.11_pre20051101-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.9.11_pre20051101-r3", "2.9.11_pre20051101" ] }, "expected_output": [ "2.9.11_pre20051101", "2.9.11_pre20051101-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.9.11_pre20051101", "2.9.11_pre20061021-r1" ] }, "expected_output": [ "2.9.11_pre20051101", "2.9.11_pre20061021-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.9.11_pre20061021-r1", "2.9.11_pre20061021-r2" ] }, "expected_output": [ "2.9.11_pre20061021-r1", "2.9.11_pre20061021-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.9.11_pre20061021-r2", "5.36-r1" ] }, "expected_output": [ "2.9.11_pre20061021-r2", "5.36-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "5.36-r1", "1.0.1" ] }, "expected_output": [ "1.0.1", "5.36-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.1", "7.0-r2" ] }, "expected_output": [ "1.0.1", "7.0-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "7.0-r2", "2.4.5" ] }, "expected_output": [ "2.4.5", "7.0-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.4.5", "2.6.1.2" ] }, "expected_output": [ "2.4.5", "2.6.1.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.6.1.2", "2.6.1.3-r1" ] }, "expected_output": [ "2.6.1.2", "2.6.1.3-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.6.1.3-r1", "2.6.1.3" ] }, "expected_output": [ "2.6.1.3", "2.6.1.3-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.6.1.3", "2.6.1.3-r1" ] }, "expected_output": [ "2.6.1.3", "2.6.1.3-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.6.1.3-r1", "12.17.9" ] }, "expected_output": [ "2.6.1.3-r1", "12.17.9" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "12.17.9", "1.1.12" ] }, "expected_output": [ "1.1.12", "12.17.9" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.12", "1.1.7" ] }, "expected_output": [ "1.1.7", "1.1.12" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.7", "2.5.14" ] }, "expected_output": [ "1.1.7", "2.5.14" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.5.14", "2.6.6-r1" ] }, "expected_output": [ "2.5.14", "2.6.6-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.6.6-r1", "2.6.7" ] }, "expected_output": [ "2.6.6-r1", "2.6.7" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.6.7", "2.6.9-r1" ] }, "expected_output": [ "2.6.7", "2.6.9-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.6.9-r1", "2.6.9" ] }, "expected_output": [ "2.6.9", "2.6.9-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.6.9", "1.39" ] }, "expected_output": [ "1.39", "2.6.9" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.39", "0.9" ] }, "expected_output": [ "0.9", "1.39" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9", "2.61-r2" ] }, "expected_output": [ "0.9", "2.61-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.61-r2", "4.5.14" ] }, "expected_output": [ "2.61-r2", "4.5.14" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.5.14", "4.09-r1" ] }, "expected_output": [ "4.09-r1", "4.5.14" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.09-r1", "1.3.1" ] }, "expected_output": [ "1.3.1", "4.09-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.3.1", "1.3.2-r3" ] }, "expected_output": [ "1.3.1", "1.3.2-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.3.2-r3", "1.6.8_p12-r1" ] }, "expected_output": [ "1.3.2-r3", "1.6.8_p12-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.6.8_p12-r1", "1.6.8_p9-r2" ] }, "expected_output": [ "1.6.8_p9-r2", "1.6.8_p12-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.6.8_p9-r2", "1.3.0-r1" ] }, "expected_output": [ "1.3.0-r1", "1.6.8_p9-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.3.0-r1", "3.11" ] }, "expected_output": [ "1.3.0-r1", "3.11" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.11", "3.20" ] }, "expected_output": [ "3.11", "3.20" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.20", "1.6.11-r1" ] }, "expected_output": [ "1.6.11-r1", "3.20" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.6.11-r1", "1.6.9" ] }, "expected_output": [ "1.6.9", "1.6.11-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.6.9", "5.0.5-r2" ] }, "expected_output": [ "1.6.9", "5.0.5-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "5.0.5-r2", "2.86-r5" ] }, "expected_output": [ "2.86-r5", "5.0.5-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.86-r5", "2.86-r6" ] }, "expected_output": [ "2.86-r5", "2.86-r6" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.86-r6", "1.15.1-r1" ] }, "expected_output": [ "1.15.1-r1", "2.86-r6" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.15.1-r1", "8.4.9" ] }, "expected_output": [ "1.15.1-r1", "8.4.9" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "8.4.9", "7.6-r8" ] }, "expected_output": [ "7.6-r8", "8.4.9" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "7.6-r8", "3.9.4-r2" ] }, "expected_output": [ "3.9.4-r2", "7.6-r8" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.9.4-r2", "3.9.4-r3" ] }, "expected_output": [ "3.9.4-r2", "3.9.4-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.9.4-r3", "3.9.5-r2" ] }, "expected_output": [ "3.9.4-r3", "3.9.5-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "3.9.5-r2", "1.1.9" ] }, "expected_output": [ "1.1.9", "3.9.5-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.9", "1.0.6" ] }, "expected_output": [ "1.0.6", "1.1.9" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.6", "5.9" ] }, "expected_output": [ "1.0.6", "5.9" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "5.9", "6.5" ] }, "expected_output": [ "5.9", "6.5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "6.5", "0.40-r1" ] }, "expected_output": [ "0.40-r1", "6.5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.40-r1", "2.25b-r5" ] }, "expected_output": [ "0.40-r1", "2.25b-r5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.25b-r5", "2.25b-r6" ] }, "expected_output": [ "2.25b-r5", "2.25b-r6" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.25b-r6", "1.0.4" ] }, "expected_output": [ "1.0.4", "2.25b-r6" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.4", "1.0.5" ] }, "expected_output": [ "1.0.4", "1.0.5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.5", "1.4_p12-r2" ] }, "expected_output": [ "1.0.5", "1.4_p12-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.4_p12-r2", "1.4_p12-r5" ] }, "expected_output": [ "1.4_p12-r2", "1.4_p12-r5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.4_p12-r5", "1.1" ] }, "expected_output": [ "1.1", "1.4_p12-r5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1", "0.2.0-r1" ] }, "expected_output": [ "0.2.0-r1", "1.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.2.0-r1", "0.2.1" ] }, "expected_output": [ "0.2.0-r1", "0.2.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.2.1", "0.9.28-r1" ] }, "expected_output": [ "0.2.1", "0.9.28-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9.28-r1", "0.9.28-r2" ] }, "expected_output": [ "0.9.28-r1", "0.9.28-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9.28-r2", "0.9.28.1" ] }, "expected_output": [ "0.9.28-r2", "0.9.28.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9.28.1", "0.9.28" ] }, "expected_output": [ "0.9.28", "0.9.28.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9.28", "0.9.28.1" ] }, "expected_output": [ "0.9.28", "0.9.28.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "103", "104-r11" ] }, "expected_output": [ "103", "104-r11" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "104-r11", "104-r9" ] }, "expected_output": [ "104-r9", "104-r11" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "104-r9", "1.23-r1" ] }, "expected_output": [ "1.23-r1", "104-r9" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.23-r1", "1.23" ] }, "expected_output": [ "1.23", "1.23-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.23", "1.23-r1" ] }, "expected_output": [ "1.23", "1.23-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.23-r1", "1.0.2" ] }, "expected_output": [ "1.0.2", "1.23-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.2", "5.52-r1" ] }, "expected_output": [ "1.0.2", "5.52-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "5.52-r1", "1.2.5_rc2" ] }, "expected_output": [ "1.2.5_rc2", "5.52-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.5_rc2", "0.1" ] }, "expected_output": [ "0.1", "1.2.5_rc2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.1", "0.71-r1" ] }, "expected_output": [ "0.1", "0.71-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.71-r1", "20040406-r1" ] }, "expected_output": [ "0.71-r1", "20040406-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "20040406-r1", "2.12r-r4" ] }, "expected_output": [ "2.12r-r4", "20040406-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.12r-r4", "2.12r-r5" ] }, "expected_output": [ "2.12r-r4", "2.12r-r5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.12r-r5", "0.0.7" ] }, "expected_output": [ "0.0.7", "2.12r-r5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.0.7", "1.0.3" ] }, "expected_output": [ "0.0.7", "1.0.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.3", "1.8" ] }, "expected_output": [ "1.0.3", "1.8" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.8", "7.0.17" ] }, "expected_output": [ "1.8", "7.0.17" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "7.0.17", "7.0.174" ] }, "expected_output": [ "7.0.17", "7.0.174" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "7.0.174", "7.0.17" ] }, "expected_output": [ "7.0.17", "7.0.174" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "7.0.17", "7.0.174" ] }, "expected_output": [ "7.0.17", "7.0.174" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "7.0.174", "1.0.1" ] }, "expected_output": [ "1.0.1", "7.0.174" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.1", "1.1.1-r3" ] }, "expected_output": [ "1.0.1", "1.1.1-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.1-r3", "0.3.4_pre20061029" ] }, "expected_output": [ "0.3.4_pre20061029", "1.1.1-r3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.3.4_pre20061029", "0.4.0" ] }, "expected_output": [ "0.3.4_pre20061029", "0.4.0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.4.0", "0.1.2" ] }, "expected_output": [ "0.1.2", "0.4.0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.1.2", "1.10.2" ] }, "expected_output": [ "0.1.2", "1.10.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.10.2", "2.16" ] }, "expected_output": [ "1.10.2", "2.16" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.16", "28" ] }, "expected_output": [ "2.16", "28" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "28", "0.99.4" ] }, "expected_output": [ "0.99.4", "28" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.99.4", "1.13" ] }, "expected_output": [ "0.99.4", "1.13" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.13", "1.0.1" ] }, "expected_output": [ "1.0.1", "1.13" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.1", "1.1.2-r2" ] }, "expected_output": [ "1.0.1", "1.1.2-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.2-r2", "1.1.0" ] }, "expected_output": [ "1.1.0", "1.1.2-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.0", "1.1.1" ] }, "expected_output": [ "1.1.0", "1.1.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "apk", "versions": [ "1.1.1", "1.1.1" ] }, "expected_output": true }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.1", "0.6.0" ] }, "expected_output": [ "0.6.0", "1.1.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.6.0", "6.6.3" ] }, "expected_output": [ "0.6.0", "6.6.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "6.6.3", "1.1.1" ] }, "expected_output": [ "1.1.1", "6.6.3" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.1", "1.1.0" ] }, "expected_output": [ "1.1.0", "1.1.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "apk", "versions": [ "1.1.0", "1.1.0" ] }, "expected_output": true }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.0", "0.2.0" ] }, "expected_output": [ "0.2.0", "1.1.0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.2.0", "0.3.0" ] }, "expected_output": [ "0.2.0", "0.3.0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.3.0", "1.1.1" ] }, "expected_output": [ "0.3.0", "1.1.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.1", "1.2.0" ] }, "expected_output": [ "1.1.1", "1.2.0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.0", "1.1.0" ] }, "expected_output": [ "1.1.0", "1.2.0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.0", "1.6.5" ] }, "expected_output": [ "1.1.0", "1.6.5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.6.5", "1.1.0" ] }, "expected_output": [ "1.1.0", "1.6.5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.0", "1.4.2" ] }, "expected_output": [ "1.1.0", "1.4.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.4.2", "1.1.1" ] }, "expected_output": [ "1.1.1", "1.4.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.1", "2.8.1" ] }, "expected_output": [ "1.1.1", "2.8.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.8.1", "1.2.0" ] }, "expected_output": [ "1.2.0", "2.8.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.0", "4.1.0" ] }, "expected_output": [ "1.2.0", "4.1.0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.1.0", "0.4.1" ] }, "expected_output": [ "0.4.1", "4.1.0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.4.1", "1.9.1" ] }, "expected_output": [ "0.4.1", "1.9.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.9.1", "2.1.1" ] }, "expected_output": [ "1.9.1", "2.1.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.1.1", "1.4.1" ] }, "expected_output": [ "1.4.1", "2.1.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.4.1", "0.9.1-r1" ] }, "expected_output": [ "0.9.1-r1", "1.4.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.9.1-r1", "0.8.1" ] }, "expected_output": [ "0.8.1", "0.9.1-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.8.1", "1.2.1-r1" ] }, "expected_output": [ "0.8.1", "1.2.1-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.1-r1", "1.1.0" ] }, "expected_output": [ "1.1.0", "1.2.1-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.0", "1.2.1" ] }, "expected_output": [ "1.1.0", "1.2.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.1", "1.1.0" ] }, "expected_output": [ "1.1.0", "1.2.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.0", "0.1.1" ] }, "expected_output": [ "0.1.1", "1.1.0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.1.1", "1.2.1" ] }, "expected_output": [ "0.1.1", "1.2.1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.1", "4.1.0" ] }, "expected_output": [ "1.2.1", "4.1.0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.1.0", "0.2.1-r1" ] }, "expected_output": [ "0.2.1-r1", "4.1.0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.2.1-r1", "1.1.0" ] }, "expected_output": [ "0.2.1-r1", "1.1.0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.0", "2.7.11" ] }, "expected_output": [ "1.1.0", "2.7.11" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.7.11", "1.0.2-r6" ] }, "expected_output": [ "1.0.2-r6", "2.7.11" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.2-r6", "1.0.2" ] }, "expected_output": [ "1.0.2", "1.0.2-r6" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.2", "0.8" ] }, "expected_output": [ "0.8", "1.0.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.8", "1.1.1-r4" ] }, "expected_output": [ "0.8", "1.1.1-r4" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.1.1-r4", "222" ] }, "expected_output": [ "1.1.1-r4", "222" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "222", "1.0.1" ] }, "expected_output": [ "1.0.1", "222" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.1", "1.2.12-r1" ] }, "expected_output": [ "1.0.1", "1.2.12-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.12-r1", "1.2.8" ] }, "expected_output": [ "1.2.8", "1.2.12-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.8", "1.2.9.1-r1" ] }, "expected_output": [ "1.2.8", "1.2.9.1-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.9.1-r1", "1.2.9.1" ] }, "expected_output": [ "1.2.9.1", "1.2.9.1-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.9.1", "2.31-r1" ] }, "expected_output": [ "1.2.9.1", "2.31-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.31-r1", "2.31" ] }, "expected_output": [ "2.31", "2.31-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "2.31", "1.2.3-r1" ] }, "expected_output": [ "1.2.3-r1", "2.31" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.3-r1", "1.2.3" ] }, "expected_output": [ "1.2.3", "1.2.3-r1" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.2.3", "4.2.5" ] }, "expected_output": [ "1.2.3", "4.2.5" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "4.2.5", "4.3.2-r2" ] }, "expected_output": [ "4.2.5", "4.3.2-r2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.3-r0", "1.3.1-r0" ] }, "expected_output": [ "1.3-r0", "1.3.1-r0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.3_pre1-r1", "1.3.2" ] }, "expected_output": [ "1.3_pre1-r1", "1.3.2" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0_p10-r0", "1.0_p9-r0" ] }, "expected_output": [ "1.0_p9-r0", "1.0_p10-r0" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "0.1.0_alpha_pre2", "0.1.0_alpha" ] }, "expected_output": [ "0.1.0_alpha_pre2", "0.1.0_alpha" ] }, { "description": "Comparison test for ALpine version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "apk", "versions": [ "1.0.0_pre20191002222144-r0", "1.0.0_pre20210530193627-r0" ] }, "expected_output": [ "1.0.0_pre20191002222144-r0", "1.0.0_pre20210530193627-r0" ] } ] } URI-PackageURL-2.24/t/vers/nuget_range_from_native_test.json0000644000175000017500000000060515135504042023063 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/vers-test.schema-0.1.json", "tests": [ { "description": "Construct VERS range from native NuGet range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "[1.0.0, 2.0.0)", "scheme": "nuget" }, "expected_output": "vers:nuget/>=1.0.0|<2.0.0" } ] } URI-PackageURL-2.24/t/vers/pypi_range_containment_test.json0000644000175000017500000000547015135504042022735 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/vers-test.schema-0.1.json", "tests": [ { "description": "Test version containment for PyPI VERS range.", "test_group": "advanced", "test_type": "containment", "input": { "vers": "vers:pypi/<=1.3.0|3.0.0", "version": "1.0.0" }, "expected_output": true }, { "description": "Test version containment for PyPI VERS range.", "test_group": "advanced", "test_type": "containment", "input": { "vers": "vers:pypi/>0.0.2", "version": "0.0.3" }, "expected_output": true }, { "description": "Test version containment for PyPI VERS range.", "test_group": "advanced", "test_type": "containment", "input": { "vers": "vers:pypi/<0.0.2", "version": "0.0.0.1" }, "expected_output": true }, { "description": "Test version containment for PyPI VERS range.", "test_group": "advanced", "test_type": "containment", "input": { "vers": "vers:pypi/>=1.0.0|<=2.0.0", "version": "1.5" }, "expected_output": true }, { "description": "Test version containment for PyPI VERS range.", "test_group": "advanced", "test_type": "containment", "input": { "vers": "vers:pypi/>=3.0.0|2.0.3", "version": "2.0.3" }, "expected_output": true }, { "description": "Test version containment for PyPI VERS range.", "test_group": "advanced", "test_type": "containment", "input": { "vers": "vers:pypi/>=1.0.0|<=2.0.0", "version": "2.0.3" }, "expected_output": false }, { "description": "Test version containment for PyPI VERS range.", "test_group": "advanced", "test_type": "containment", "input": { "vers": "vers:pypi/>=1.0.0|<=2.0.0", "version": "0.0.9" }, "expected_output": false }, { "description": "Test version containment for PyPI VERS range.", "test_group": "advanced", "test_type": "containment", "input": { "vers": "vers:pypi/>=3.0.0|!=2.0.3", "version": "2.0.3" }, "expected_output": false }, { "description": "Test version containment for PyPI VERS range.", "test_group": "advanced", "test_type": "containment", "input": { "vers": "vers:pypi/<=1.0.0|>=2.0.0", "version": "1.5" }, "expected_output": false }, { "description": "Test version containment for PyPI VERS range.", "test_group": "advanced", "test_type": "containment", "input": { "vers": "vers:pypi/0.0.2|0.0.6|>=3.0.0|0.0.1|0.0.4|0.0.5|0.0.3", "version": "2.0.3" }, "expected_output": false } ] } URI-PackageURL-2.24/t/vers/npm_range_containment_test.json0000644000175000017500000000056115135504042022542 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/vers-test.schema-0.1.json", "tests": [ { "description": "Test version containment for npm range with `*` operator.", "test_group": "advanced", "test_type": "containment", "input": { "vers": "vers:nginx/*", "version": "1.0.0" }, "expected_output": true } ] } URI-PackageURL-2.24/t/vers/nuget_version_cmp_test.json0000644000175000017500000002303015135504042021717 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/vers-test.schema-0.1.json", "tests": [ { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "nuget", "versions": [ "1.0.0", "1.0.0" ] }, "expected_output": true }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "nuget", "versions": [ "1.0.0-BETA", "1.0.0-beta" ] }, "expected_output": true }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "nuget", "versions": [ "1.0.0-BETA+AA", "1.0.0-beta+aa" ] }, "expected_output": true }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "nuget", "versions": [ "1.0.0-BETA.X.y.5.77.0+AA", "1.0.0-beta.x.y.5.77.0+aa" ] }, "expected_output": true }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "nuget", "versions": [ "1.0.0", "1.0.0+beta" ] }, "expected_output": true }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "nuget", "versions": [ "1.0", "1.0.0.0" ] }, "expected_output": true }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "nuget", "versions": [ "1.0+test", "1.0.0.0" ] }, "expected_output": true }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "nuget", "versions": [ "1.0.0.1-1.2.A", "1.0.0.1-1.2.A" ] }, "expected_output": true }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "nuget", "versions": [ "1.0.01", "1.0.1.0" ] }, "expected_output": true }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "nuget", "versions": [ "0.0.0", "1.0.0" ] }, "expected_output": [ "0.0.0", "1.0.0" ] }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "nuget", "versions": [ "1.0.0", "1.1.0" ] }, "expected_output": [ "1.0.0", "1.1.0" ] }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "nuget", "versions": [ "1.0.0", "1.0.1" ] }, "expected_output": [ "1.0.0", "1.0.1" ] }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "nuget", "versions": [ "1.999.9999", "2.1.1" ] }, "expected_output": [ "1.999.9999", "2.1.1" ] }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "nuget", "versions": [ "1.0.0-BETA", "1.0.0-beta2" ] }, "expected_output": [ "1.0.0-beta", "1.0.0-beta2" ] }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "nuget", "versions": [ "1.0.0+aa", "1.0.0-beta+AA" ] }, "expected_output": [ "1.0.0-beta+AA", "1.0.0+aa" ] }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "nuget", "versions": [ "1.0.0-BETA", "1.0.0-beta.1+AA" ] }, "expected_output": [ "1.0.0-beta", "1.0.0-beta.1+AA" ] }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "nuget", "versions": [ "1.0.0-BETA.X.y.5.77.0+AA", "1.0.0-beta.x.y.5.79.0+aa" ] }, "expected_output": [ "1.0.0-beta.x.y.5.77.0+AA", "1.0.0-beta.x.y.5.79.0+aa" ] }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "nuget", "versions": [ "1.0.0-BETA.X.y.5.79.0+AA", "1.0.0-beta.x.y.5.790.0+abc" ] }, "expected_output": [ "1.0.0-beta.x.y.5.79.0+AA", "1.0.0-beta.x.y.5.790.0+abc" ] }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "nuget", "versions": [ "1.0.0", "1.0.0.1" ] }, "expected_output": [ "1.0.0", "1.0.0.1" ] }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "nuget", "versions": [ "1.0.0.1-alpha", "1.0.0.1-pre" ] }, "expected_output": [ "1.0.0.1-alpha", "1.0.0.1-pre" ] }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "nuget", "versions": [ "1.0.0-pre", "1.0.0.1-alpha" ] }, "expected_output": [ "1.0.0-pre", "1.0.0.1-alpha" ] }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "nuget", "versions": [ "1.0.0", "1.0.0.1-alpha" ] }, "expected_output": [ "1.0.0", "1.0.0.1-alpha" ] }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "nuget", "versions": [ "0.9.9.1", "1.0.0" ] }, "expected_output": [ "0.9.9.1", "1.0.0" ] }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "nuget", "versions": [ "1.0", "1.0.0.1" ] }, "expected_output": false }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "nuget", "versions": [ "1.0+test", "1.0.0.1" ] }, "expected_output": false }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "nuget", "versions": [ "1.0.0.1-1.2.A", "1.0.0.1-1.2.a.A+A" ] }, "expected_output": false }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "nuget", "versions": [ "1.0.01", "1.0.1.2" ] }, "expected_output": false }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "nuget", "versions": [ "0.0.0", "1.0.0" ] }, "expected_output": false }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "nuget", "versions": [ "1.0.0", "1.1.0" ] }, "expected_output": false }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "nuget", "versions": [ "1.0.0", "1.0.1" ] }, "expected_output": false }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "nuget", "versions": [ "1.0.0-BETA", "1.0.0-beta2" ] }, "expected_output": false }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "nuget", "versions": [ "1.0.0+AA", "1.0.0-beta+aa" ] }, "expected_output": false }, { "description": "Comparison test for NuGet version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "nuget", "versions": [ "1.0.0-BETA.X.y.5.77.0+AA", "1.0.0-beta.x.y.5.79.0+aa" ] }, "expected_output": false } ]} URI-PackageURL-2.24/t/vers/openssl_range_from_native_test.json0000644000175000017500000000427515135504042023433 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/vers-test.schema-0.1.json", "tests": [ { "description": "Construct VERS range from native openssl range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "3.0.0, 1.0.1b", "scheme": "openssl" }, "expected_output": "vers:openssl/1.0.1b|3.0.0" }, { "description": "Construct VERS range from native openssl range.", "test_group": "base", "test_type": "from_native", "input": { "native_range": "0.9.8j", "scheme": "openssl" }, "expected_output": "vers:openssl/0.9.8j" }, { "description": "Construct VERS range from native openssl range.", "test_group": "base", "test_type": "from_native", "input": { "native_range": "3.0.1", "scheme": "openssl" }, "expected_output": "vers:openssl/3.0.1" }, { "description": "Construct VERS range from native openssl range.", "test_group": "base", "test_type": "from_native", "input": { "native_range": "1.1.1ak", "scheme": "openssl" }, "expected_output": "vers:openssl/1.1.1ak" }, { "description": "Construct VERS range from native openssl range.", "test_group": "base", "test_type": "from_native", "input": { "native_range": "1.1.0", "scheme": "openssl" }, "expected_output": "vers:openssl/1.1.0" }, { "description": "Construct VERS range from native openssl range.", "test_group": "base", "test_type": "from_native", "input": { "native_range": "3.0.2", "scheme": "openssl" }, "expected_output": "vers:openssl/3.0.2" }, { "description": "Construct VERS range from native openssl range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "3.0.1, 0.9.7a", "scheme": "openssl" }, "expected_output": "vers:openssl/0.9.7a|3.0.1" }, { "description": "Construct VERS range from native openssl range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "1.0.2ck, 3.1.2", "scheme": "openssl" }, "expected_output": "vers:openssl/1.0.2ck|3.1.2" } ]} URI-PackageURL-2.24/t/vers/npm_range_from_native_test.json0000644000175000017500000041617315135504042022546 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/vers-test.schema-0.1.json", "tests": [ { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=4.1.0", "scheme": "npm" }, "expected_output": "vers:npm/>=4.1.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.0.0 <=4.0.4", "scheme": "npm" }, "expected_output": "vers:npm/>=2.0.0|<=4.0.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.0.0", "scheme": "npm" }, "expected_output": "vers:npm/<0.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=99.999.99999", "scheme": "npm" }, "expected_output": "vers:npm/<=99.999.99999" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.11.2", "scheme": "npm" }, "expected_output": "vers:npm/>=2.11.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.11.2", "scheme": "npm" }, "expected_output": "vers:npm/<2.11.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.6.2", "scheme": "npm" }, "expected_output": "vers:npm/<=0.6.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.9.0", "scheme": "npm" }, "expected_output": "vers:npm/>=0.9.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.8.4", "scheme": "npm" }, "expected_output": "vers:npm/<=0.8.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 1.6.9", "scheme": "npm" }, "expected_output": "vers:npm/>=1.6.9" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<= 1.6.8", "scheme": "npm" }, "expected_output": "vers:npm/<=1.6.8" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=3.9.2", "scheme": "npm" }, "expected_output": "vers:npm/<=3.9.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=9.1.6", "scheme": "npm" }, "expected_output": "vers:npm/>=9.1.6" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=9.1.5", "scheme": "npm" }, "expected_output": "vers:npm/<=9.1.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.0.0", "scheme": "npm" }, "expected_output": "vers:npm/>=1.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.5.0", "scheme": "npm" }, "expected_output": "vers:npm/<=0.5.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.8.10", "scheme": "npm" }, "expected_output": "vers:npm/>=1.8.10" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.8.10", "scheme": "npm" }, "expected_output": "vers:npm/<1.8.10" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.4.1", "scheme": "npm" }, "expected_output": "vers:npm/>=1.4.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.4.0", "scheme": "npm" }, "expected_output": "vers:npm/<=1.4.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 16.1.1", "scheme": "npm" }, "expected_output": "vers:npm/>=16.1.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 15.0.0 <= 16.1.0", "scheme": "npm" }, "expected_output": "vers:npm/>=15.0.0|<=16.1.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">0.12.7", "scheme": "npm" }, "expected_output": "vers:npm/>0.12.7" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.12.7", "scheme": "npm" }, "expected_output": "vers:npm/<=0.12.7" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "*", "scheme": "npm" }, "expected_output": "vers:npm/*" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.1.5", "scheme": "npm" }, "expected_output": "vers:npm/>=2.1.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "2.1.4", "scheme": "npm" }, "expected_output": "vers:npm/2.1.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.0.0", "scheme": "npm" }, "expected_output": "vers:npm/<1.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 6.1.0", "scheme": "npm" }, "expected_output": "vers:npm/>=6.1.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "< 6.1.0", "scheme": "npm" }, "expected_output": "vers:npm/<6.1.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.4.0", "scheme": "npm" }, "expected_output": "vers:npm/>=1.4.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.4.0", "scheme": "npm" }, "expected_output": "vers:npm/<1.4.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 3.0.0", "scheme": "npm" }, "expected_output": "vers:npm/>=3.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<= 2.1.3", "scheme": "npm" }, "expected_output": "vers:npm/<=2.1.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.0.5", "scheme": "npm" }, "expected_output": "vers:npm/<=0.0.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.4.0", "scheme": "npm" }, "expected_output": "vers:npm/>=3.4.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<3.4.0", "scheme": "npm" }, "expected_output": "vers:npm/<3.4.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.0.2", "scheme": "npm" }, "expected_output": "vers:npm/>=3.0.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 2.0.1 <3.0.2", "scheme": "npm" }, "expected_output": "vers:npm/>=2.0.1|<3.0.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=2.0.2", "scheme": "npm" }, "expected_output": "vers:npm/<=2.0.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<99.999.9999", "scheme": "npm" }, "expected_output": "vers:npm/<99.999.9999" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 1.0.4", "scheme": "npm" }, "expected_output": "vers:npm/>=1.0.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<= 1.0.3", "scheme": "npm" }, "expected_output": "vers:npm/<=1.0.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.5.2 || >=1.4.11 <1.5.0 || >=1.3.2 <1.4.0", "scheme": "npm" }, "expected_output": "vers:npm/>=1.3.2|<1.4.0|>=1.4.11|<1.5.0|>=1.5.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.3.0 <1.3.2 || >=1.4.0 <1.4.11 || >=1.5.0 <1.5.2", "scheme": "npm" }, "expected_output": "vers:npm/>=1.3.0|<1.3.2|>=1.4.0|<1.4.11|>=1.5.0|<1.5.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.1.3", "scheme": "npm" }, "expected_output": "vers:npm/>=2.1.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=2.1.2", "scheme": "npm" }, "expected_output": "vers:npm/<=2.1.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=3.2.0", "scheme": "npm" }, "expected_output": "vers:npm/<=3.2.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.7.0", "scheme": "npm" }, "expected_output": "vers:npm/>=0.7.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.6.6", "scheme": "npm" }, "expected_output": "vers:npm/<=0.6.6" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.0.6", "scheme": "npm" }, "expected_output": "vers:npm/>=1.0.6" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.0.5", "scheme": "npm" }, "expected_output": "vers:npm/<=1.0.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=3.0.1", "scheme": "npm" }, "expected_output": "vers:npm/<=3.0.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 1.1", "scheme": "npm" }, "expected_output": "vers:npm/>=1.1.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<= 1.0", "scheme": "npm" }, "expected_output": "vers:npm/<=1.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.0.0", "scheme": "npm" }, "expected_output": "vers:npm/>=2.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.0.0", "scheme": "npm" }, "expected_output": "vers:npm/<2.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.2.3", "scheme": "npm" }, "expected_output": "vers:npm/<=0.2.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.0.0", "scheme": "npm" }, "expected_output": "vers:npm/>=3.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<3.0.0", "scheme": "npm" }, "expected_output": "vers:npm/<3.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.15.0", "scheme": "npm" }, "expected_output": "vers:npm/>=2.15.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.4.7", "scheme": "npm" }, "expected_output": "vers:npm/>=0.4.7" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.4.7", "scheme": "npm" }, "expected_output": "vers:npm/<0.4.7" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 1.1.1", "scheme": "npm" }, "expected_output": "vers:npm/>=1.1.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "< 1.1.1", "scheme": "npm" }, "expected_output": "vers:npm/<1.1.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.0.1", "scheme": "npm" }, "expected_output": "vers:npm/<=0.0.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.3.1", "scheme": "npm" }, "expected_output": "vers:npm/>=1.3.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.3.0", "scheme": "npm" }, "expected_output": "vers:npm/<=1.3.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.2.5", "scheme": "npm" }, "expected_output": "vers:npm/>=1.2.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.2.4", "scheme": "npm" }, "expected_output": "vers:npm/<=1.2.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.9.3", "scheme": "npm" }, "expected_output": "vers:npm/>=0.9.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.9.3", "scheme": "npm" }, "expected_output": "vers:npm/<0.9.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 0.5.0", "scheme": "npm" }, "expected_output": "vers:npm/>=0.5.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<= 0.3.3", "scheme": "npm" }, "expected_output": "vers:npm/<=0.3.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 1.0.1", "scheme": "npm" }, "expected_output": "vers:npm/>=1.0.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<= 1.0.0", "scheme": "npm" }, "expected_output": "vers:npm/<=1.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.9.1", "scheme": "npm" }, "expected_output": "vers:npm/>=1.9.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.9.1", "scheme": "npm" }, "expected_output": "vers:npm/<1.9.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.30.0", "scheme": "npm" }, "expected_output": "vers:npm/<=0.30.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=v2.0.0-alpha8", "scheme": "npm" }, "expected_output": "vers:npm/>=2.0.0-alpha8" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=v2.0.0-alpha7", "scheme": "npm" }, "expected_output": "vers:npm/<=2.0.0-alpha7" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.3.5", "scheme": "npm" }, "expected_output": "vers:npm/>=1.3.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.3.5", "scheme": "npm" }, "expected_output": "vers:npm/<1.3.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=4.6.0", "scheme": "npm" }, "expected_output": "vers:npm/>=4.6.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<4.6.0", "scheme": "npm" }, "expected_output": "vers:npm/<4.6.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 2.4.24", "scheme": "npm" }, "expected_output": "vers:npm/>=2.4.24" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<= 2.4.23", "scheme": "npm" }, "expected_output": "vers:npm/<=2.4.23" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.12.0", "scheme": "npm" }, "expected_output": "vers:npm/>=1.12.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.11.4", "scheme": "npm" }, "expected_output": "vers:npm/<=1.11.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.1.7", "scheme": "npm" }, "expected_output": "vers:npm/>=1.1.7" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.1.6", "scheme": "npm" }, "expected_output": "vers:npm/<=1.1.6" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=4.0.0", "scheme": "npm" }, "expected_output": "vers:npm/>=4.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<4.0.0", "scheme": "npm" }, "expected_output": "vers:npm/<4.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.4.4", "scheme": "npm" }, "expected_output": "vers:npm/>=0.4.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.4.4", "scheme": "npm" }, "expected_output": "vers:npm/<0.4.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 2.3.3", "scheme": "npm" }, "expected_output": "vers:npm/>=2.3.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "< 2.3.3", "scheme": "npm" }, "expected_output": "vers:npm/<2.3.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.0.1", "scheme": "npm" }, "expected_output": "vers:npm/>=3.0.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<3.0.1", "scheme": "npm" }, "expected_output": "vers:npm/<3.0.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.4.1", "scheme": "npm" }, "expected_output": "vers:npm/>=0.4.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.4.0", "scheme": "npm" }, "expected_output": "vers:npm/<=0.4.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.0.1", "scheme": "npm" }, "expected_output": "vers:npm/>=2.0.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=2.0.0", "scheme": "npm" }, "expected_output": "vers:npm/<=2.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.9.4", "scheme": "npm" }, "expected_output": "vers:npm/>=2.9.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.9.4", "scheme": "npm" }, "expected_output": "vers:npm/<2.9.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "~1.6.5 || >=1.7.2", "scheme": "npm" }, "expected_output": "vers:npm/>=1.6.5|<1.7.0|>=1.7.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.6.5 || >=1.7.0 <1.7.2", "scheme": "npm" }, "expected_output": "vers:npm/<1.6.5|>=1.7.0|<1.7.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.5.2", "scheme": "npm" }, "expected_output": "vers:npm/>=1.5.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.5.1", "scheme": "npm" }, "expected_output": "vers:npm/<=1.5.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.0.6", "scheme": "npm" }, "expected_output": "vers:npm/<=0.0.6" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 2.0.5", "scheme": "npm" }, "expected_output": "vers:npm/>=2.0.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "< 2.0.5", "scheme": "npm" }, "expected_output": "vers:npm/<2.0.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.3.3", "scheme": "npm" }, "expected_output": "vers:npm/>=1.3.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.3.3", "scheme": "npm" }, "expected_output": "vers:npm/<1.3.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.1.6", "scheme": "npm" }, "expected_output": "vers:npm/>=0.1.6" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.1.6", "scheme": "npm" }, "expected_output": "vers:npm/<0.1.6" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.10.3", "scheme": "npm" }, "expected_output": "vers:npm/>=1.10.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.10.2", "scheme": "npm" }, "expected_output": "vers:npm/<=1.10.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=4.17.5", "scheme": "npm" }, "expected_output": "vers:npm/>=4.17.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<4.17.5", "scheme": "npm" }, "expected_output": "vers:npm/<4.17.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.5.0", "scheme": "npm" }, "expected_output": "vers:npm/>=1.5.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.5.0", "scheme": "npm" }, "expected_output": "vers:npm/<1.5.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.5.0", "scheme": "npm" }, "expected_output": "vers:npm/>=0.5.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.5.0", "scheme": "npm" }, "expected_output": "vers:npm/<0.5.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.1.1", "scheme": "npm" }, "expected_output": "vers:npm/>=2.1.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.1.1", "scheme": "npm" }, "expected_output": "vers:npm/<2.1.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.6.1", "scheme": "npm" }, "expected_output": "vers:npm/>=1.6.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.6.1", "scheme": "npm" }, "expected_output": "vers:npm/<1.6.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=2.1.1", "scheme": "npm" }, "expected_output": "vers:npm/<=2.1.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.5.1 <4.0.0 || >=4.1.3 <5.0.0 || >=5.6.1 <6.0.0 || >=6.1.2", "scheme": "npm" }, "expected_output": "vers:npm/>=3.5.1|<4.0.0|>=4.1.3|<5.0.0|>=5.6.1|<6.0.0|>=6.1.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<3.5.1 || >=4.0.0 <4.1.3 || >=5.0.0 <5.6.1 || >=6.0.0 <6.1.2", "scheme": "npm" }, "expected_output": "vers:npm/<3.5.1|>=4.0.0|<4.1.3|>=5.0.0|<5.6.1|>=6.0.0|<6.1.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.0.2", "scheme": "npm" }, "expected_output": "vers:npm/>=1.0.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.0.2", "scheme": "npm" }, "expected_output": "vers:npm/<1.0.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.2.3", "scheme": "npm" }, "expected_output": "vers:npm/>=0.2.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.2.3", "scheme": "npm" }, "expected_output": "vers:npm/<0.2.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.5.0 <= 3.0.0 || >=3.1.0", "scheme": "npm" }, "expected_output": "vers:npm/>=2.5.0|<=3.0.0|>=3.1.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<= 2.4.2 || >= 3.0.0 <=3.0.1", "scheme": "npm" }, "expected_output": "vers:npm/<=2.4.2|>=3.0.0|<=3.0.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.2.1", "scheme": "npm" }, "expected_output": "vers:npm/<=0.2.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 1.4.0", "scheme": "npm" }, "expected_output": "vers:npm/>=1.4.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.1.0", "scheme": "npm" }, "expected_output": "vers:npm/>=2.1.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "2.1.0-M1 || 2.1.0-M2", "scheme": "npm" }, "expected_output": "vers:npm/2.1.0-M1|2.1.0-M2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.3.0", "scheme": "npm" }, "expected_output": "vers:npm/<=0.3.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.8.1", "scheme": "npm" }, "expected_output": "vers:npm/>=2.8.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=2.8.0", "scheme": "npm" }, "expected_output": "vers:npm/<=2.8.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.4.4", "scheme": "npm" }, "expected_output": "vers:npm/>=1.4.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.4.4", "scheme": "npm" }, "expected_output": "vers:npm/<1.4.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=4.2.2", "scheme": "npm" }, "expected_output": "vers:npm/>=4.2.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<4.2.2", "scheme": "npm" }, "expected_output": "vers:npm/<4.2.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.6.0", "scheme": "npm" }, "expected_output": "vers:npm/>=2.6.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.6.0", "scheme": "npm" }, "expected_output": "vers:npm/<2.6.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=4.3.6 || >=3.8.39 <4.0.0", "scheme": "npm" }, "expected_output": "vers:npm/>=3.8.39|<4.0.0|>=4.3.6" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.5.5 <=3.8.38 || >=4.0.0 <=4.3.5", "scheme": "npm" }, "expected_output": "vers:npm/>=3.5.5|<=3.8.38|>=4.0.0|<=4.3.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 0.8.4", "scheme": "npm" }, "expected_output": "vers:npm/>=0.8.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "< 0.8.4", "scheme": "npm" }, "expected_output": "vers:npm/<0.8.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.6.5 <2.0.0 || >= 2.1.7", "scheme": "npm" }, "expected_output": "vers:npm/>=1.6.5|<2.0.0|>=2.1.7" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.6.5 || < 2.1.7 > 2.0.0", "scheme": "npm" }, "expected_output": "vers:npm/<1.6.5|>2.0.0|<2.1.7" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 1.7.0-alpha3", "scheme": "npm" }, "expected_output": "vers:npm/>=1.7.0-alpha3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<= 1.7.0-alpha2", "scheme": "npm" }, "expected_output": "vers:npm/<=1.7.0-alpha2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.1.11", "scheme": "npm" }, "expected_output": "vers:npm/>=3.1.11" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=3.1.10", "scheme": "npm" }, "expected_output": "vers:npm/<=3.1.10" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.0.29", "scheme": "npm" }, "expected_output": "vers:npm/>=1.0.29" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.0.29", "scheme": "npm" }, "expected_output": "vers:npm/<1.0.29" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.0.3", "scheme": "npm" }, "expected_output": "vers:npm/>=0.0.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.0.2", "scheme": "npm" }, "expected_output": "vers:npm/<=0.0.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "> 0.9.6", "scheme": "npm" }, "expected_output": "vers:npm/>0.9.6" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 0.2.0 <= 0.9.6 || ~0.8.0-pre", "scheme": "npm" }, "expected_output": "vers:npm/>=0.2.0|>=0.8.0-pre|<0.8.0|>=0.8.0|<0.8.1|<=0.9.6" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.2.0", "scheme": "npm" }, "expected_output": "vers:npm/<=0.2.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.21.1", "scheme": "npm" }, "expected_output": "vers:npm/>=1.21.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.20.0", "scheme": "npm" }, "expected_output": "vers:npm/<=1.20.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.2.3", "scheme": "npm" }, "expected_output": "vers:npm/>=2.2.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.2.3", "scheme": "npm" }, "expected_output": "vers:npm/<2.2.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.1.1", "scheme": "npm" }, "expected_output": "vers:npm/>=0.1.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.1.1", "scheme": "npm" }, "expected_output": "vers:npm/<0.1.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 2.2.x", "scheme": "npm" }, "expected_output": "vers:npm/>=2.2.0|<2.3.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "2.0.x || 2.1.x", "scheme": "npm" }, "expected_output": "vers:npm/>=2.0.0|<2.1.0|>=2.1.0|<2.2.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.2.1", "scheme": "npm" }, "expected_output": "vers:npm/>=2.2.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.2.1", "scheme": "npm" }, "expected_output": "vers:npm/<2.2.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=3.0.0-rc.1", "scheme": "npm" }, "expected_output": "vers:npm/3.0.0-rc.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.4.0", "scheme": "npm" }, "expected_output": "vers:npm/>=0.4.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.3.8", "scheme": "npm" }, "expected_output": "vers:npm/<=0.3.8" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.0.6", "scheme": "npm" }, "expected_output": "vers:npm/>=0.0.6" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.8.1", "scheme": "npm" }, "expected_output": "vers:npm/<2.8.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.29.0", "scheme": "npm" }, "expected_output": "vers:npm/<=0.29.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=7.0.0", "scheme": "npm" }, "expected_output": "vers:npm/>=7.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=6.5.3", "scheme": "npm" }, "expected_output": "vers:npm/<=6.5.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.8.13", "scheme": "npm" }, "expected_output": "vers:npm/>=0.8.13" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.8.13", "scheme": "npm" }, "expected_output": "vers:npm/<0.8.13" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "^2.0.18 || ^3.0.16 || ^3.1.6 || ^4.0.8 || ^5.0.0-beta.5", "scheme": "npm" }, "expected_output": "vers:npm/>=2.0.18|<3.0.0|>=3.0.16|>=3.1.6|<4.0.0|<4.0.0|>=4.0.8|>=5.0.0-beta.5|<5.0.0|<6.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.0.18 || <3.0.16 || <3.1.6 || <4.0.8 || <5.0.0-beta.5", "scheme": "npm" }, "expected_output": "vers:npm/<2.0.18|<3.0.16|<3.1.6|<4.0.8|<5.0.0-beta.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.0.0-beta.7 || >=2.0.8 <3.0.0-beta.1 || >=1.8.8 <2.0.0 || >=1.7.16 <1.8.0", "scheme": "npm" }, "expected_output": "vers:npm/>=1.7.16|<1.8.0|>=1.8.8|<2.0.0|>=2.0.8|<3.0.0-beta.1|>=3.0.0-beta.7" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.7.0 <1.7.16 || >=1.8.0 <1.8.8 || >=2.0.0 <2.0.8 || >=3.0.0-beta.1 <3.0.0-beta.7", "scheme": "npm" }, "expected_output": "vers:npm/>=1.7.0|<1.7.16|>=1.8.0|<1.8.8|>=2.0.0|<2.0.8|>=3.0.0-beta.1|<3.0.0-beta.7" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.0.1", "scheme": "npm" }, "expected_output": "vers:npm/>=1.0.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.0.1", "scheme": "npm" }, "expected_output": "vers:npm/<1.0.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.2.4", "scheme": "npm" }, "expected_output": "vers:npm/>=0.2.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.2.4", "scheme": "npm" }, "expected_output": "vers:npm/<0.2.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.3.13", "scheme": "npm" }, "expected_output": "vers:npm/<=0.3.13" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "7.0.0", "scheme": "npm" }, "expected_output": "vers:npm/7.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<= 6.5.3", "scheme": "npm" }, "expected_output": "vers:npm/<=6.5.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=9.0.0", "scheme": "npm" }, "expected_output": "vers:npm/>=9.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<9.0.0", "scheme": "npm" }, "expected_output": "vers:npm/<9.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.0.1", "scheme": "npm" }, "expected_output": "vers:npm/<2.0.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.1.2", "scheme": "npm" }, "expected_output": "vers:npm/>=1.1.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.1.0 <=1.1.1", "scheme": "npm" }, "expected_output": "vers:npm/>=1.1.0|<=1.1.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 0.0.6", "scheme": "npm" }, "expected_output": "vers:npm/>=0.0.6" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<= 0.0.5", "scheme": "npm" }, "expected_output": "vers:npm/<=0.0.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "> 0.0.1", "scheme": "npm" }, "expected_output": "vers:npm/>0.0.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<= 0.0.1", "scheme": "npm" }, "expected_output": "vers:npm/<=0.0.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">3.0.0", "scheme": "npm" }, "expected_output": "vers:npm/>3.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=3.0.0", "scheme": "npm" }, "expected_output": "vers:npm/<=3.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.78.0", "scheme": "npm" }, "expected_output": "vers:npm/<=0.78.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.4.3", "scheme": "npm" }, "expected_output": "vers:npm/>=1.4.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.4.3", "scheme": "npm" }, "expected_output": "vers:npm/<1.4.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=2.0.9", "scheme": "npm" }, "expected_output": "vers:npm/<=2.0.9" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.5.1", "scheme": "npm" }, "expected_output": "vers:npm/>=0.5.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.5.1", "scheme": "npm" }, "expected_output": "vers:npm/<0.5.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.6.6 <2.0.0 || >= 2.2.4", "scheme": "npm" }, "expected_output": "vers:npm/>=1.6.6|<2.0.0|>=2.2.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.6.6 || < 2.2.4 > 2.0.0", "scheme": "npm" }, "expected_output": "vers:npm/<1.6.6|>2.0.0|<2.2.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 2.15.1 <= 3.0.0 || >= 3.8.3", "scheme": "npm" }, "expected_output": "vers:npm/>=2.15.1|<=3.0.0|>=3.8.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<= 2.15.0 || >= 3.0.0 <= 3.8.2", "scheme": "npm" }, "expected_output": "vers:npm/<=2.15.0|>=3.0.0|<=3.8.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.25.1", "scheme": "npm" }, "expected_output": "vers:npm/>=2.25.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.25.1", "scheme": "npm" }, "expected_output": "vers:npm/<2.25.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.2.18", "scheme": "npm" }, "expected_output": "vers:npm/>=2.2.18" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=2.2.17", "scheme": "npm" }, "expected_output": "vers:npm/<=2.2.17" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=3.0.5", "scheme": "npm" }, "expected_output": "vers:npm/<=3.0.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.1.0", "scheme": "npm" }, "expected_output": "vers:npm/<=1.1.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.4.1", "scheme": "npm" }, "expected_output": "vers:npm/<1.4.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=11.1.3", "scheme": "npm" }, "expected_output": "vers:npm/>=11.1.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<11.1.3", "scheme": "npm" }, "expected_output": "vers:npm/<11.1.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.1.1", "scheme": "npm" }, "expected_output": "vers:npm/>=1.1.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.11.4", "scheme": "npm" }, "expected_output": "vers:npm/>=1.11.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.11.1", "scheme": "npm" }, "expected_output": "vers:npm/<=1.11.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.3.1", "scheme": "npm" }, "expected_output": "vers:npm/>=2.3.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.3.1", "scheme": "npm" }, "expected_output": "vers:npm/<2.3.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.4.0 <=1.11.3 || >=1.12.3 <=2.2.4", "scheme": "npm" }, "expected_output": "vers:npm/>=1.4.0|<=1.11.3|>=1.12.3|<=2.2.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=6.4.9", "scheme": "npm" }, "expected_output": "vers:npm/>=6.4.9" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=6.4.8", "scheme": "npm" }, "expected_output": "vers:npm/<=6.4.8" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.1.0", "scheme": "npm" }, "expected_output": "vers:npm/>=1.1.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.1.0", "scheme": "npm" }, "expected_output": "vers:npm/<1.1.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.10.0", "scheme": "npm" }, "expected_output": "vers:npm/>=0.10.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.9.1", "scheme": "npm" }, "expected_output": "vers:npm/<=0.9.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.0.1 || >=0.9.5 <1.0.0", "scheme": "npm" }, "expected_output": "vers:npm/>=0.9.5|<1.0.0|>=1.0.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.9.4 || 1.0.0", "scheme": "npm" }, "expected_output": "vers:npm/<=0.9.4|1.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.4.6", "scheme": "npm" }, "expected_output": "vers:npm/<=1.4.6" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=5.0.3 >=4.2.1", "scheme": "npm" }, "expected_output": "vers:npm/>=4.2.1|>=5.0.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<5.0.3 >=5.0.0 || < 4.2.1", "scheme": "npm" }, "expected_output": "vers:npm/<4.2.1|>=5.0.0|<5.0.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.9.74", "scheme": "npm" }, "expected_output": "vers:npm/>=0.9.74" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.9.73", "scheme": "npm" }, "expected_output": "vers:npm/<=0.9.73" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.1.3 < 4.0.0 || >=4.1.1", "scheme": "npm" }, "expected_output": "vers:npm/>=3.1.3|<4.0.0|>=4.1.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "< 3.1.3 || >= 4.0.0 <4.1.1", "scheme": "npm" }, "expected_output": "vers:npm/<3.1.3|>=4.0.0|<4.1.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.0.1", "scheme": "npm" }, "expected_output": "vers:npm/<=1.0.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.3.2", "scheme": "npm" }, "expected_output": "vers:npm/>=0.3.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.3.2", "scheme": "npm" }, "expected_output": "vers:npm/<0.3.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 1.x", "scheme": "npm" }, "expected_output": "vers:npm/>=1.0.0|<2.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.10.4 <1.11.0 || >=1.16.0", "scheme": "npm" }, "expected_output": "vers:npm/>=1.10.4|<1.11.0|>=1.16.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.10.4 || >=1.11.0 <1.16.0", "scheme": "npm" }, "expected_output": "vers:npm/<1.10.4|>=1.11.0|<1.16.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=6.0.0", "scheme": "npm" }, "expected_output": "vers:npm/>=6.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=6.5.2", "scheme": "npm" }, "expected_output": "vers:npm/>=6.5.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<6.5.2", "scheme": "npm" }, "expected_output": "vers:npm/<6.5.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.6.0", "scheme": "npm" }, "expected_output": "vers:npm/>=1.6.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.6.0", "scheme": "npm" }, "expected_output": "vers:npm/<1.6.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.2.0", "scheme": "npm" }, "expected_output": "vers:npm/>=2.2.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.2.0", "scheme": "npm" }, "expected_output": "vers:npm/<2.2.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 0.0.15", "scheme": "npm" }, "expected_output": "vers:npm/>=0.0.15" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 0.0.10 <= 0.0.14", "scheme": "npm" }, "expected_output": "vers:npm/>=0.0.10|<=0.0.14" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.0.4", "scheme": "npm" }, "expected_output": "vers:npm/<=1.0.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.3.0", "scheme": "npm" }, "expected_output": "vers:npm/>=2.3.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=2.2.13", "scheme": "npm" }, "expected_output": "vers:npm/<=2.2.13" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.1.4", "scheme": "npm" }, "expected_output": "vers:npm/>=0.1.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.1.4", "scheme": "npm" }, "expected_output": "vers:npm/<0.1.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.68.0", "scheme": "npm" }, "expected_output": "vers:npm/>=2.68.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.2.6 <2.47.0 || >2.51.0 <=2.67.0", "scheme": "npm" }, "expected_output": "vers:npm/>=2.2.6|<2.47.0|>2.51.0|<=2.67.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.1.5", "scheme": "npm" }, "expected_output": "vers:npm/<=1.1.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.0.7", "scheme": "npm" }, "expected_output": "vers:npm/>=2.0.7" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.0.7", "scheme": "npm" }, "expected_output": "vers:npm/<2.0.7" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.7.0", "scheme": "npm" }, "expected_output": "vers:npm/>=1.7.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.6.2", "scheme": "npm" }, "expected_output": "vers:npm/<=1.6.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.3.4", "scheme": "npm" }, "expected_output": "vers:npm/>=1.3.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.3.3", "scheme": "npm" }, "expected_output": "vers:npm/<=1.3.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.4.2", "scheme": "npm" }, "expected_output": "vers:npm/>=1.4.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.4.2", "scheme": "npm" }, "expected_output": "vers:npm/<1.4.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.1.3", "scheme": "npm" }, "expected_output": "vers:npm/>=0.1.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.1.3", "scheme": "npm" }, "expected_output": "vers:npm/<0.1.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.38.0", "scheme": "npm" }, "expected_output": "vers:npm/>=0.38.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.37.0", "scheme": "npm" }, "expected_output": "vers:npm/<=0.37.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.26.1", "scheme": "npm" }, "expected_output": "vers:npm/>=2.26.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.26.1", "scheme": "npm" }, "expected_output": "vers:npm/<2.26.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.8.0", "scheme": "npm" }, "expected_output": "vers:npm/>=0.8.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.7.0", "scheme": "npm" }, "expected_output": "vers:npm/<=0.7.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.4.16", "scheme": "npm" }, "expected_output": "vers:npm/>=0.4.16" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.4.16", "scheme": "npm" }, "expected_output": "vers:npm/<0.4.16" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.3.1", "scheme": "npm" }, "expected_output": "vers:npm/<1.3.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.1.13", "scheme": "npm" }, "expected_output": "vers:npm/>=2.1.13" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=2.1.12", "scheme": "npm" }, "expected_output": "vers:npm/<=2.1.12" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.2.3", "scheme": "npm" }, "expected_output": "vers:npm/>=1.2.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.2.2", "scheme": "npm" }, "expected_output": "vers:npm/<=1.2.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.4.4", "scheme": "npm" }, "expected_output": "vers:npm/>=3.4.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.0.0 <=3.4.3", "scheme": "npm" }, "expected_output": "vers:npm/>=2.0.0|<=3.4.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">0.7.0", "scheme": "npm" }, "expected_output": "vers:npm/>0.7.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.1.10", "scheme": "npm" }, "expected_output": "vers:npm/>=1.1.10" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.1.9", "scheme": "npm" }, "expected_output": "vers:npm/<=1.1.9" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=2.0.3", "scheme": "npm" }, "expected_output": "vers:npm/<=2.0.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 0.5.1", "scheme": "npm" }, "expected_output": "vers:npm/>=0.5.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "0.5.0", "scheme": "npm" }, "expected_output": "vers:npm/0.5.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.4.3", "scheme": "npm" }, "expected_output": "vers:npm/>=2.4.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=2.4.2", "scheme": "npm" }, "expected_output": "vers:npm/<=2.4.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "> 3.0.0", "scheme": "npm" }, "expected_output": "vers:npm/>3.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<= 3.0.0", "scheme": "npm" }, "expected_output": "vers:npm/<=3.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.1.8", "scheme": "npm" }, "expected_output": "vers:npm/>=1.1.8" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.1.8", "scheme": "npm" }, "expected_output": "vers:npm/<1.1.8" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.0.0", "scheme": "npm" }, "expected_output": "vers:npm/<=1.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.23.6", "scheme": "npm" }, "expected_output": "vers:npm/>=3.23.6" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<3.23.6", "scheme": "npm" }, "expected_output": "vers:npm/<3.23.6" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=5.0.3 <6.0.0 || >=6.8.6", "scheme": "npm" }, "expected_output": "vers:npm/>=5.0.3|<6.0.0|>=6.8.6" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=6.8.5", "scheme": "npm" }, "expected_output": "vers:npm/<=6.8.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.1.3", "scheme": "npm" }, "expected_output": "vers:npm/<=0.1.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=6.4.1", "scheme": "npm" }, "expected_output": "vers:npm/>=6.4.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=6.4.0", "scheme": "npm" }, "expected_output": "vers:npm/<=6.4.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=2.2.0", "scheme": "npm" }, "expected_output": "vers:npm/<=2.2.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.0.24", "scheme": "npm" }, "expected_output": "vers:npm/<=0.0.24" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.0.20", "scheme": "npm" }, "expected_output": "vers:npm/<=0.0.20" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.3.4", "scheme": "npm" }, "expected_output": "vers:npm/>=0.3.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.3.3", "scheme": "npm" }, "expected_output": "vers:npm/<=0.3.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "=3.10.1 || >=3.10.3", "scheme": "npm" }, "expected_output": "vers:npm/3.10.1|>=3.10.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.0.0 <=3.9.1 || =3.10.2", "scheme": "npm" }, "expected_output": "vers:npm/>=3.0.0|<=3.9.1|3.10.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.1.2", "scheme": "npm" }, "expected_output": "vers:npm/>=0.1.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.1.1", "scheme": "npm" }, "expected_output": "vers:npm/<=0.1.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.13.12", "scheme": "npm" }, "expected_output": "vers:npm/<=0.13.12" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">1.1.5", "scheme": "npm" }, "expected_output": "vers:npm/>1.1.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "^1.1.7 || >= 2.0.1", "scheme": "npm" }, "expected_output": "vers:npm/>=1.1.7|<2.0.0|>=2.0.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.0.1 || <1.1.7", "scheme": "npm" }, "expected_output": "vers:npm/<1.1.7|<2.0.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.4.0 <2.0.0", "scheme": "npm" }, "expected_output": "vers:npm/>=1.4.0|<2.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.9.7 <=2.2.2", "scheme": "npm" }, "expected_output": "vers:npm/>=0.9.7|<=2.2.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.2.5", "scheme": "npm" }, "expected_output": "vers:npm/>=0.2.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.2.5", "scheme": "npm" }, "expected_output": "vers:npm/<0.2.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.22.1", "scheme": "npm" }, "expected_output": "vers:npm/>=3.22.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<3.22.1", "scheme": "npm" }, "expected_output": "vers:npm/<3.22.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.0.3", "scheme": "npm" }, "expected_output": "vers:npm/<=0.0.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.4.6 < 4.0.0|| >=4.0.5", "scheme": "npm" }, "expected_output": "vers:npm/>=3.4.6|<4.0.0|>=4.0.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<3.4.6 || > 4.0.0 <4.0.5", "scheme": "npm" }, "expected_output": "vers:npm/<3.4.6|>4.0.0|<4.0.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.8.7", "scheme": "npm" }, "expected_output": "vers:npm/>=1.8.7" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.8.7", "scheme": "npm" }, "expected_output": "vers:npm/<1.8.7" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.1.0", "scheme": "npm" }, "expected_output": "vers:npm/>=0.1.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.6.0", "scheme": "npm" }, "expected_output": "vers:npm/<=1.6.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.9.0", "scheme": "npm" }, "expected_output": "vers:npm/>=3.9.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<3.9.0", "scheme": "npm" }, "expected_output": "vers:npm/<3.9.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.4.3", "scheme": "npm" }, "expected_output": "vers:npm/<=1.4.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.3.1", "scheme": "npm" }, "expected_output": "vers:npm/>=0.3.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=2.2.4", "scheme": "npm" }, "expected_output": "vers:npm/<=2.2.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.1.5", "scheme": "npm" }, "expected_output": "vers:npm/>=1.1.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.1.5", "scheme": "npm" }, "expected_output": "vers:npm/<1.1.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.0.32", "scheme": "npm" }, "expected_output": "vers:npm/<=0.0.32" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.1.4", "scheme": "npm" }, "expected_output": "vers:npm/>=1.1.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.1.3", "scheme": "npm" }, "expected_output": "vers:npm/<=1.1.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.35.1", "scheme": "npm" }, "expected_output": "vers:npm/>=0.35.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.35.0", "scheme": "npm" }, "expected_output": "vers:npm/<=0.35.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=4.1.2", "scheme": "npm" }, "expected_output": "vers:npm/>=4.1.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.1.0 <4.1.2", "scheme": "npm" }, "expected_output": "vers:npm/>=3.1.0|<4.1.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=5.0.2", "scheme": "npm" }, "expected_output": "vers:npm/>=5.0.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=5.0.1", "scheme": "npm" }, "expected_output": "vers:npm/<=5.0.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.20.0", "scheme": "npm" }, "expected_output": "vers:npm/>=3.20.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=3.19.3", "scheme": "npm" }, "expected_output": "vers:npm/<=3.19.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.1.4", "scheme": "npm" }, "expected_output": "vers:npm/<1.1.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.1.1", "scheme": "npm" }, "expected_output": "vers:npm/<=1.1.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.2.2", "scheme": "npm" }, "expected_output": "vers:npm/>=3.2.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<3.2.2", "scheme": "npm" }, "expected_output": "vers:npm/<3.2.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=5.1.3", "scheme": "npm" }, "expected_output": "vers:npm/>=5.1.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<5.1.3", "scheme": "npm" }, "expected_output": "vers:npm/<5.1.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 0.3.0", "scheme": "npm" }, "expected_output": "vers:npm/>=0.3.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "< 0.3.0", "scheme": "npm" }, "expected_output": "vers:npm/<0.3.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.11 <4 || >=4.5", "scheme": "npm" }, "expected_output": "vers:npm/>=3.11.0|<4.0.0|>=4.5.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<3.11 || >= 4 <4.5", "scheme": "npm" }, "expected_output": "vers:npm/<3.11.0|>=4.0.0|<4.5.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.3.0", "scheme": "npm" }, "expected_output": "vers:npm/>=1.3.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.3.0", "scheme": "npm" }, "expected_output": "vers:npm/<1.3.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=4.17.19", "scheme": "npm" }, "expected_output": "vers:npm/>=4.17.19" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=4.17.15 <4.17.19", "scheme": "npm" }, "expected_output": "vers:npm/>=4.17.15|<4.17.19" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=6.0.5", "scheme": "npm" }, "expected_output": "vers:npm/>=6.0.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=6.0.4", "scheme": "npm" }, "expected_output": "vers:npm/<=6.0.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.14.0", "scheme": "npm" }, "expected_output": "vers:npm/>=2.14.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.0.0-alpha8 <=2.0.0-rc2 || >=2.0.0 <=2.13.0", "scheme": "npm" }, "expected_output": "vers:npm/>=2.0.0-alpha8|<=2.0.0-rc2|>=2.0.0|<=2.13.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.8.0", "scheme": "npm" }, "expected_output": "vers:npm/<=0.8.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.3.6", "scheme": "npm" }, "expected_output": "vers:npm/<=0.3.6" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.11.1", "scheme": "npm" }, "expected_output": "vers:npm/>=0.11.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.11.1", "scheme": "npm" }, "expected_output": "vers:npm/<0.11.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">2.3.21", "scheme": "npm" }, "expected_output": "vers:npm/>2.3.21" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "2.3.21", "scheme": "npm" }, "expected_output": "vers:npm/2.3.21" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.3.1", "scheme": "npm" }, "expected_output": "vers:npm/>=3.3.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<3.3.1", "scheme": "npm" }, "expected_output": "vers:npm/<3.3.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 1.4.6 < 2.0.0 || >= 2.0.1", "scheme": "npm" }, "expected_output": "vers:npm/>=1.4.6|<2.0.0|>=2.0.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 1.0.0 < 1.4.6 || 2.0.0", "scheme": "npm" }, "expected_output": "vers:npm/>=1.0.0|<1.4.6|2.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.6.3", "scheme": "npm" }, "expected_output": "vers:npm/>=1.6.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.6.3", "scheme": "npm" }, "expected_output": "vers:npm/<1.6.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=11.0.0", "scheme": "npm" }, "expected_output": "vers:npm/>=11.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<11.0.0", "scheme": "npm" }, "expected_output": "vers:npm/<11.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.1.1", "scheme": "npm" }, "expected_output": "vers:npm/<1.1.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.3.6", "scheme": "npm" }, "expected_output": "vers:npm/>=2.3.6" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=2.3.5", "scheme": "npm" }, "expected_output": "vers:npm/<=2.3.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.3.6", "scheme": "npm" }, "expected_output": "vers:npm/>=0.3.6" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.3.5", "scheme": "npm" }, "expected_output": "vers:npm/<=0.3.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 3.17.0", "scheme": "npm" }, "expected_output": "vers:npm/>=3.17.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<= 3.16.0", "scheme": "npm" }, "expected_output": "vers:npm/<=3.16.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.4.9", "scheme": "npm" }, "expected_output": "vers:npm/>=0.4.9" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.4.9", "scheme": "npm" }, "expected_output": "vers:npm/<0.4.9" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=4.17.11", "scheme": "npm" }, "expected_output": "vers:npm/>=4.17.11" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<4.17.11", "scheme": "npm" }, "expected_output": "vers:npm/<4.17.11" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.9.11", "scheme": "npm" }, "expected_output": "vers:npm/<=0.9.11" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.2.8", "scheme": "npm" }, "expected_output": "vers:npm/<=0.2.8" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.8.8", "scheme": "npm" }, "expected_output": "vers:npm/>=1.8.8" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.8.8", "scheme": "npm" }, "expected_output": "vers:npm/<1.8.8" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.9.0", "scheme": "npm" }, "expected_output": "vers:npm/>=1.9.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.7.1 <=1.8.3", "scheme": "npm" }, "expected_output": "vers:npm/>=1.7.1|<=1.8.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.0.0", "scheme": "npm" }, "expected_output": "vers:npm/<=0.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.4.11", "scheme": "npm" }, "expected_output": "vers:npm/>=0.4.11" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.4.10", "scheme": "npm" }, "expected_output": "vers:npm/<=0.4.10" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 0.6.1", "scheme": "npm" }, "expected_output": "vers:npm/>=0.6.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<= 0.6.0", "scheme": "npm" }, "expected_output": "vers:npm/<=0.6.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=11.1.4", "scheme": "npm" }, "expected_output": "vers:npm/>=11.1.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<11.1.4", "scheme": "npm" }, "expected_output": "vers:npm/<11.1.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=13.0.8", "scheme": "npm" }, "expected_output": "vers:npm/>=13.0.8" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<13.0.8", "scheme": "npm" }, "expected_output": "vers:npm/<13.0.8" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=5.1.2", "scheme": "npm" }, "expected_output": "vers:npm/>=5.1.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "5.1.1", "scheme": "npm" }, "expected_output": "vers:npm/5.1.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.1.2", "scheme": "npm" }, "expected_output": "vers:npm/<=0.1.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.2.4", "scheme": "npm" }, "expected_output": "vers:npm/>=1.2.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.2.4", "scheme": "npm" }, "expected_output": "vers:npm/<1.2.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.10.9", "scheme": "npm" }, "expected_output": "vers:npm/>=0.10.9" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.10.0 <=0.10.8", "scheme": "npm" }, "expected_output": "vers:npm/>=0.10.0|<=0.10.8" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=4.3.2", "scheme": "npm" }, "expected_output": "vers:npm/>=4.3.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<4.3.2", "scheme": "npm" }, "expected_output": "vers:npm/<4.3.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.0.0-rc8", "scheme": "npm" }, "expected_output": "vers:npm/>=2.0.0-rc8" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=2.0.0-rc7", "scheme": "npm" }, "expected_output": "vers:npm/<=2.0.0-rc7" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.13.2", "scheme": "npm" }, "expected_output": "vers:npm/>=1.13.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.13.1", "scheme": "npm" }, "expected_output": "vers:npm/<=1.13.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.5.0", "scheme": "npm" }, "expected_output": "vers:npm/>=3.5.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<3.5.0", "scheme": "npm" }, "expected_output": "vers:npm/<3.5.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=3.7.1 || >= 3.7.3", "scheme": "npm" }, "expected_output": "vers:npm/<=3.7.1|>=3.7.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "3.7.2", "scheme": "npm" }, "expected_output": "vers:npm/3.7.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.1.2", "scheme": "npm" }, "expected_output": "vers:npm/<0.1.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=3.0.4", "scheme": "npm" }, "expected_output": "vers:npm/>=3.0.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<3.0.4", "scheme": "npm" }, "expected_output": "vers:npm/<3.0.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.0.7", "scheme": "npm" }, "expected_output": "vers:npm/>=1.0.7" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.0.6", "scheme": "npm" }, "expected_output": "vers:npm/<=1.0.6" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "> 2.4.3", "scheme": "npm" }, "expected_output": "vers:npm/>2.4.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<= 2.4.3", "scheme": "npm" }, "expected_output": "vers:npm/<=2.4.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.2.3", "scheme": "npm" }, "expected_output": "vers:npm/<=1.2.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.0.2", "scheme": "npm" }, "expected_output": "vers:npm/<=1.0.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.4.2", "scheme": "npm" }, "expected_output": "vers:npm/<=1.4.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.6.0", "scheme": "npm" }, "expected_output": "vers:npm/>=0.6.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.6.0", "scheme": "npm" }, "expected_output": "vers:npm/<0.6.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.1.4", "scheme": "npm" }, "expected_output": "vers:npm/<=1.1.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.12.4", "scheme": "npm" }, "expected_output": "vers:npm/>=2.12.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=2.12.3", "scheme": "npm" }, "expected_output": "vers:npm/<=2.12.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.0.3", "scheme": "npm" }, "expected_output": "vers:npm/<0.0.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">1.10.8", "scheme": "npm" }, "expected_output": "vers:npm/>1.10.8" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.10.8", "scheme": "npm" }, "expected_output": "vers:npm/<=1.10.8" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.4.1", "scheme": "npm" }, "expected_output": "vers:npm/<=1.4.1" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=1.1.8", "scheme": "npm" }, "expected_output": "vers:npm/<=1.1.8" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.3.3", "scheme": "npm" }, "expected_output": "vers:npm/>=0.3.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.3.2", "scheme": "npm" }, "expected_output": "vers:npm/<=0.3.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.3.0", "scheme": "npm" }, "expected_output": "vers:npm/>=0.3.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.3.0", "scheme": "npm" }, "expected_output": "vers:npm/<0.3.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "~0.2.2 || >=0.3.2", "scheme": "npm" }, "expected_output": "vers:npm/>=0.2.2|<0.3.0|>=0.3.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.2.2 || >=0.3.0 <0.3.2", "scheme": "npm" }, "expected_output": "vers:npm/<0.2.2|>=0.3.0|<0.3.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 7.0.0", "scheme": "npm" }, "expected_output": "vers:npm/>=7.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">= 5.2.1 <= 6.0.0 || >=6.0.0 <= 6.0.2", "scheme": "npm" }, "expected_output": "vers:npm/>=5.2.1|<=6.0.0|>=6.0.0|<=6.0.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.4.1 <2.0.0 || >=2.17.2", "scheme": "npm" }, "expected_output": "vers:npm/>=1.4.1|<2.0.0|>=2.17.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.4.1 || >=2.0.0 <2.17.2", "scheme": "npm" }, "expected_output": "vers:npm/<1.4.1|>=2.0.0|<2.17.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.3.16", "scheme": "npm" }, "expected_output": "vers:npm/>=0.3.16" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<0.3.16", "scheme": "npm" }, "expected_output": "vers:npm/<0.3.16" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.2.2", "scheme": "npm" }, "expected_output": "vers:npm/<=0.2.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.2.4", "scheme": "npm" }, "expected_output": "vers:npm/<=0.2.4" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.2.5", "scheme": "npm" }, "expected_output": "vers:npm/>=2.2.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.2.5", "scheme": "npm" }, "expected_output": "vers:npm/<2.2.5" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.0.9", "scheme": "npm" }, "expected_output": "vers:npm/<=0.0.9" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=0.9.7", "scheme": "npm" }, "expected_output": "vers:npm/>=0.9.7" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=0.9.6", "scheme": "npm" }, "expected_output": "vers:npm/<=0.9.6" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=2.4.2", "scheme": "npm" }, "expected_output": "vers:npm/>=2.4.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<2.4.2", "scheme": "npm" }, "expected_output": "vers:npm/<2.4.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": ">=1.2.2", "scheme": "npm" }, "expected_output": "vers:npm/>=1.2.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<1.2.2", "scheme": "npm" }, "expected_output": "vers:npm/<1.2.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "^1.2.9", "scheme": "npm" }, "expected_output": "vers:npm/>=1.2.9|<2.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "~3.8.2", "scheme": "npm" }, "expected_output": "vers:npm/>=3.8.2|<3.9.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "5.0.0 - 7.2.3", "scheme": "npm" }, "expected_output": "vers:npm/>=5.0.0|<=7.2.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "2.1 || 2.6", "scheme": "npm" }, "expected_output": "vers:npm/2.1.0|2.6.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "1.1.2 1.2.2", "scheme": "npm" }, "expected_output": "vers:npm/1.1.2|1.2.2" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=2.1 >=1.1", "scheme": "npm" }, "expected_output": "vers:npm/>=1.1.0|<=2.1.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "^1.2.3-beta.1", "scheme": "npm" }, "expected_output": "vers:npm/>=1.2.3-beta.1|<2.0.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "^0.2.1-beta", "scheme": "npm" }, "expected_output": "vers:npm/>=0.2.1-beta|<0.3.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "^0.0.2-beta", "scheme": "npm" }, "expected_output": "vers:npm/>=0.0.2-beta|<0.0.3" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "2.1.0 || 2.6.0", "scheme": "npm" }, "expected_output": "vers:npm/2.1.0|2.6.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "<=2.1.0 >=1.1.0", "scheme": "npm" }, "expected_output": "vers:npm/>=1.1.0|<=2.1.0" }, { "description": "Construct VERS range from native npm range.", "test_group": "advanced", "test_type": "from_native", "input": { "native_range": "1.2.x", "scheme": "npm" }, "expected_output": "vers:npm/>=1.2.0|<1.3.0" } ] } URI-PackageURL-2.24/t/vers/lexicographic-test.json0000644000175000017500000000577115135504042020744 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/vers-test.schema-0.1.json", "tests": [ { "description": "Simple ASCII ordering (uppercase < lowercase)", "test_group": "utf8-lexicographic", "test_type": "comparison", "input": { "input_scheme": "lexicographic", "versions": [ "A", "a" ] }, "expected_output": [ "A", "a" ] }, { "description": "Prefix ordering: shorter prefix sorts first", "test_group": "utf8-lexicographic", "test_type": "comparison", "input": { "input_scheme": "lexicographic", "versions": [ "aa", "a" ] }, "expected_output": [ "a", "aa" ] }, { "description": "Composed vs decomposed (no normalization): 'é' vs 'é' (e + combining acute)", "test_group": "utf8-lexicographic", "test_type": "comparison", "input": { "input_scheme": "lexicographic", "versions": [ "é", "e\u0301" ] }, "expected_output": [ "e\u0301", "é" ] }, { "description": "Composed vs decomposed: 'Å' vs 'Å' (A + combining ring)", "test_group": "utf8-lexicographic", "test_type": "comparison", "input": { "input_scheme": "lexicographic", "versions": [ "Å", "A\u030A" ] }, "expected_output": [ "A\u030A", "Å" ] }, { "description": "Multi-byte first-byte tie: 'ä' (U+00E4) vs 'é' (U+00E9) — same first UTF-8 byte, compare next byte", "test_group": "utf8-lexicographic", "test_type": "comparison", "input": { "input_scheme": "lexicographic", "versions": [ "é", "ä" ] }, "expected_output": [ "ä", "é" ] }, { "description": "Non-ASCII vs ASCII: emoji sorts after ASCII characters (first UTF-8 byte > ASCII)", "test_group": "utf8-lexicographic", "test_type": "comparison", "input": { "input_scheme": "lexicographic", "versions": [ "z", "😀" ] }, "expected_output": [ "z", "😀" ] }, { "description": "German sharp s vs 'ss' (no normalization)", "test_group": "utf8-lexicographic", "test_type": "comparison", "input": { "input_scheme": "lexicographic", "versions": [ "ß", "ss" ] }, "expected_output": [ "ss", "ß" ] }, { "description": "Different multi-byte leading bytes: U+20AC (Euro) vs U+00E4 ('ä')", "test_group": "utf8-lexicographic", "test_type": "comparison", "input": { "input_scheme": "lexicographic", "versions": [ "€", "ä" ] }, "expected_output": [ "ä", "€" ] } ] } URI-PackageURL-2.24/t/vers/alpm_version_cmp_test.json0000644000175000017500000003271315135504042021536 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/vers-test.schema-0.1.json", "tests": [ { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1.5.1", "1.5.0" ] }, "expected_output": [ "1.5.0", "1.5.1" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1.5.1", "1.5" ] }, "expected_output": [ "1.5", "1.5.1" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1.5.0-1", "1.5.0-2" ] }, "expected_output": [ "1.5.0-1", "1.5.0-2" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1.5.0-1", "1.5.1-1" ] }, "expected_output": [ "1.5.0-1", "1.5.1-1" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1.5.0-2", "1.5.1-1" ] }, "expected_output": [ "1.5.0-2", "1.5.1-1" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1.5.a", "1.5" ] }, "expected_output": [ "1.5", "1.5.a" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1.5.b", "1.5.a" ] }, "expected_output": [ "1.5.a", "1.5.b" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1.5.1", "1.5.b" ] }, "expected_output": [ "1.5.b", "1.5.1" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "0:1.0", "0:1.1" ] }, "expected_output": [ "0:1.0", "0:1.1" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1:1.0", "0:1.0" ] }, "expected_output": [ "0:1.0", "1:1.0" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1:1.0", "0:1.1" ] }, "expected_output": [ "0:1.1", "1:1.0" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1:1.0", "2:1.1" ] }, "expected_output": [ "1:1.0", "2:1.1" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1:1.0", "0:1.0-1" ] }, "expected_output": [ "0:1.0-1", "1:1.0" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1:1.0-1", "0:1.1-1" ] }, "expected_output": [ "0:1.1-1", "1:1.0-1" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "0:1.0", "1.1" ] }, "expected_output": [ "0:1.0", "1.1" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "0:1.1", "1.0" ] }, "expected_output": [ "1.0", "0:1.1" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1:1.0", "1.0" ] }, "expected_output": [ "1.0", "1:1.0" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1:1.0", "1.1" ] }, "expected_output": [ "1.1", "1:1.0" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1:1.1", "1.1" ] }, "expected_output": [ "1.1", "1:1.1" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1.5-1", "1.5.b" ] }, "expected_output": [ "1.5-1", "1.5.b" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1.5-1", "1.5.1-1" ] }, "expected_output": [ "1.5-1", "1.5.1-1" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1.5-2", "1.5.1-1" ] }, "expected_output": [ "1.5-2", "1.5.1-1" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1.5-2", "1.5.1-2" ] }, "expected_output": [ "1.5-2", "1.5.1-2" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1.0-1", "1.1" ] }, "expected_output": [ "1.0-1", "1.1" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1.1-1", "1.0" ] }, "expected_output": [ "1.0", "1.1-1" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1.5b-1", "1.5-1" ] }, "expected_output": [ "1.5b-1", "1.5-1" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1.5b", "1.5" ] }, "expected_output": [ "1.5b", "1.5" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1.5b-1", "1.5" ] }, "expected_output": [ "1.5b-1", "1.5" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1.5b", "1.5.1" ] }, "expected_output": [ "1.5b", "1.5.1" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1.0a", "1.0alpha" ] }, "expected_output": [ "1.0a", "1.0alpha" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1.0alpha", "1.0b" ] }, "expected_output": [ "1.0alpha", "1.0b" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1.0b", "1.0beta" ] }, "expected_output": [ "1.0b", "1.0beta" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1.0beta", "1.0rc" ] }, "expected_output": [ "1.0beta", "1.0rc" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "comparison", "input": { "input_scheme": "alpm", "versions": [ "1.0rc", "1.0" ] }, "expected_output": [ "1.0rc", "1.0" ] }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "alpm", "versions": [ "1.5.0", "1.5.0" ] }, "expected_output": true }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "alpm", "versions": [ "0:1.0", "0:1.0" ] }, "expected_output": true }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "alpm", "versions": [ "1.5.0-1", "1.5.0-1" ] }, "expected_output": true }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "alpm", "versions": [ "0:1.0", "1.0" ] }, "expected_output": true }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "alpm", "versions": [ "1.5.b-1", "1.5.b" ] }, "expected_output": true }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "alpm", "versions": [ "1.5", "1.5-1" ] }, "expected_output": true }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "alpm", "versions": [ "1.5-1", "1.5" ] }, "expected_output": true }, { "description": "Comparison test for Arch Linux version.", "test_group": "base", "test_type": "equality", "input": { "input_scheme": "alpm", "versions": [ "1.1-1", "1.1" ] }, "expected_output": true } ] } URI-PackageURL-2.24/README.md0000644000175000017500000001163215135504042014301 0ustar peppepeppe[![Release](https://img.shields.io/github/release/giterlizzi/perl-URI-PackageURL.svg)](https://github.com/giterlizzi/perl-URI-PackageURL/releases) [![Actions Status](https://github.com/giterlizzi/perl-URI-PackageURL/workflows/linux/badge.svg)](https://github.com/giterlizzi/perl-URI-PackageURL/actions) [![License](https://img.shields.io/github/license/giterlizzi/perl-URI-PackageURL.svg)](https://github.com/giterlizzi/perl-URI-PackageURL) [![Starts](https://img.shields.io/github/stars/giterlizzi/perl-URI-PackageURL.svg)](https://github.com/giterlizzi/perl-URI-PackageURL) [![Forks](https://img.shields.io/github/forks/giterlizzi/perl-URI-PackageURL.svg)](https://github.com/giterlizzi/perl-URI-PackageURL) [![Issues](https://img.shields.io/github/issues/giterlizzi/perl-URI-PackageURL.svg)](https://github.com/giterlizzi/perl-URI-PackageURL/issues) [![Coverage Status](https://coveralls.io/repos/github/giterlizzi/perl-URI-PackageURL/badge.svg)](https://coveralls.io/github/giterlizzi/perl-URI-PackageURL) # URI::PackageURL - Perl extension for PURL (Package URL) and VERS (Version Range) ## Synopsis ```perl use URI::PackageURL; # OO-interface # Encode components in PURL string $purl = URI::PackageURL->new( type => 'cpan', namespace => 'GDT', name => 'URI-PackageURL', version => '2.24' ); say $purl; # pkg:cpan/GDT/URI-PackageURL@2.24 # Parse a PURL string $purl = URI::PackageURL->from_string('pkg:cpan/GDT/URI-PackageURL@2.24'); # use setter methods my $purl = URI::PackageURL->new(type => 'cpan', namespace => 'GDT', name => 'URI-PackageURL'); say $purl; # pkg:cpan/GDT/URI-PackageURL say $purl->version; # undef $purl->version('2.24'); say $purl; # pkg:cpan/GDT/URI-PackageURL@2.24 say $purl->version; # 2.24 # exported functions $purl = decode_purl('pkg:cpan/GDT/URI-PackageURL@2.24'); say $purl->type; # cpan $purl_string = encode_purl(type => cpan, namespace => 'GDT', name => 'URI-PackageURL', version => '2.24'); say $purl_string; # pkg:cpan/GDT/URI-PackageURL@2.24 # uses the legacy CPAN PURL type, to be used only for compatibility (will be removed in the future) $ENV{PURL_LEGACY_CPAN_TYPE} = 1; URI::PackageURL->new(type => 'cpan', name => 'URI::PackageURL'); # alias $purl = PURL->new( type => 'cpan', namespace => 'GDT', name => 'URI-PackageURL', version => '2.24' ); $purl = PURL->from_string('pkg:cpan/GDT/URI-PackageURL'); # clone $cloned = $purl->clone; $cloned->version('1.00'); say $cloned; # pkg:cpan/GDT/URI-PackageURL@1.00 say $purl; # pkg:cpan/GDT/URI-PackageURL@2.24 ``` ## purl-tool a CLI for URI::PackageURL module Inspect and export "purl" string in various formats (JSON, YAML, Data::Dumper, ENV): ```console $ purl-tool pkg:cpan/GDT/URI-PackageURL@2.24 --json | jq { "name": "URI-PackageURL", "namespace": "GDT", "qualifiers": {}, "subpath": null, "type": "cpan", "version": "2.24" } ``` Download package using "purl" string: ```console $ wget $(purl-tool pkg:cpan/GDT/URI-PackageURL@2.24 --download-url) ``` Use "purl" string in your shell-scripts: ```bash #!bash set -e PURL="pkg:cpan/GDT/URI-PackageURL@2.24" eval $(purl-tool "$PURL" --env) echo "Download $PURL_NAME $PURL_VERSION" wget $PURL_DOWNLOAD_URL echo "Build and install module $PURL_NAME $PURL_VERSION" tar xvf $PURL_NAME-$PURL_VERSION.tar.gz cd $PURL_NAME-$PURL_VERSION perl Makefile.PL make && make install ``` Create on-the-fly a "purl" string: ```console $ purl-tool --type cpan \ --namespace GDT \ --name URI-PackageURL \ --version 2.24 ``` Validate a PURL string: ```bash if $(purl-tool $PURL_STRING --validate -q); then echo "PURL string is valid" else echo "PURL string is not valid" fi ``` Display information about provided PURL type (allowed components, repository, examples, etc.): ```console $ purl-tool --info rpm ``` Display all known PURL types: ```console $ purl-tool --list ``` ## vers-tool a CLI for URI::VersionRange module Decode a "vers" string: ```console $ vers-tool "vers:cpan/1.00|>=2.00|<5.00" | jq ``` Check if a version is contained within a range: ```console $ vers-tool "vers:cpan/1.00|>=2.00|<5.00" --contains "2.20" ``` Humanize "vers": ```console $ vers-tool "vers:cpan/1.00|>=2.00|<5.00" --human-readable cpan - equal 1.00 - greater than or equal 2.00 - less than 5.00 ``` ## Install Using Makefile.PL: To install `URI::PackageURL` distribution, run the following commands. perl Makefile.PL make make test make install Using App::cpanminus: cpanm URI::PackageURL ## Documentation - `perldoc URI::PackageURL` - `perldoc URI::VersionRange` - https://metacpan.org/release/URI-PackageURL - Specification: https://github.com/package-url/purl-spec - TC54 - Software and system transparency: https://tc54.org - ECMA-427 - Package-URL (PURL) specification: https://ecma-international.org/publications-and-standards/standards/ecma-427 ## Copyright - Copyright 2022-2026 © Giuseppe Di Terlizzi URI-PackageURL-2.24/META.json0000644000175000017500000000300515135504367014450 0ustar peppepeppe{ "abstract" : "Perl extension for PURL (Package URL)", "author" : [ "Giuseppe Di Terlizzi " ], "dynamic_config" : 1, "generated_by" : "ExtUtils::MakeMaker version 7.76, CPAN::Meta::Converter version 2.150010", "license" : [ "artistic_2" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : 2 }, "name" : "URI-PackageURL", "no_index" : { "directory" : [ "t", "inc" ] }, "prereqs" : { "build" : { "requires" : { "ExtUtils::MakeMaker" : "0" } }, "configure" : { "requires" : { "ExtUtils::MakeMaker" : "0" } }, "runtime" : { "requires" : { "JSON::PP" : "0", "List::Util" : "0", "perl" : "5.010" } }, "test" : { "requires" : { "CPAN::DistnameInfo" : "0", "JSON::PP" : "0", "Test::More" : "0" } } }, "release_status" : "stable", "resources" : { "bugtracker" : { "web" : "https://github.com/giterlizzi/perl-URI-PackageURL/issues" }, "repository" : { "type" : "git", "url" : "git://github.com/giterlizzi/perl-URI-PackageURL", "web" : "https://github.com/giterlizzi/perl-URI-PackageURL" } }, "version" : "2.24", "x_purl" : "pkg:cpan/GDT/URI-PackageURL", "x_serialization_backend" : "JSON::PP version 4.16" } URI-PackageURL-2.24/Changes0000644000175000017500000001205515135504042014315 0ustar peppepeppeChange history for URI-PackageURL 2.24 2026-01-26 - Imported all PURL type definition files from https://package-url/purl-spec - Added "URI::PackageURL::Type" helper class for normalize components, validation and load the using PURL type definition schema file, generate repository or download URLs and more - Added "validate" param in "URI::PackageURL->new" - Added "--validate" option to "purl-tool(1)" for check if the provided PURL string is valid using the exit code ("0" - valid, "1" not valid) - Added "--info TYPE" option to "purl-tool(1)" for display information about provided PURL type (allowed components, repository, examples, etc.) - Improved man pages for "purl-tool(1)" and "vers-tool(1)" - Added PURL test cases from https://github.com/package-url/purl-spec (package-url/purl-spec#514) - Added VERS test cases from https://github.com/package-url/vers-spec (package-url/vers-spec#28) - Improved 'name' and 'namespace' parsing (package-url/purl-spec#582 - package-url/purl-spec#583) - FIX NPM PURL string parser - Writes some debug messages when checksums are not formatted correctly and if there are unknown qualifiers. - Added "URI::VersionRange->from_native" method - Added "PURL" and "VERS" package alias for "URI::PackageURL" and "URI::VersionRange" - Sync with PURL v1.0.0 spec - Sync with VERS main spec 2.23 2025-07-11 - Updated CPAN PURL type spec - Added PURL_LEGACY_CPAN_TYPE env - Added "to_hash" helper - Use "checksum" qualifier as singular (giterlizzi/perl-URI-PackageURL#15) - Added getter/setter methods for PURL components (giterlizzi/perl-URI-PackageURL#16) - Improved the support of "vers" qualifier (giterlizzi/perl-URI-PackageURL#17) - Improved encoding - Added support for "vers:none/*" and "vers:all/*" in "URI::VersionRange" - Improved version comparator class loader in "URI::VersionRange" - Updated tests - Synced "test-suite-data.json" from "package-url/purl-spec" 2.22 2024-12-16 - Improved parsing of non-canonical PURL (package-url/purl-spec#363) - Improved "URI::VersionRange->constraint_contains" - Updated "maven" repository URL - FIX typo in documentation - Synced "test-suite-data.json" from "package-url/purl-spec" 2.21 2024-07-24 - Use RFC 2119 terms for CPAN purl type specification (sjn) - Added "swid" purl type support - Moved normalization and validation check in "URI::PackageURL::Util" - Dropped support for "version_prefix" qualifier for "github", "gitlab" and "bitbucket" PURL types in "purl_to_urls" util (pombredanne via giterlizzi/perl-URI-PackageURL#14) 2.20 2024-05-13 - Added support for the official "cpan" PURL type specification (giterlizzi/perl-URI-PackageURL#8) - Added "Version Range" (vers) support (giterlizzi/perl-URI-PackageURL#12) - Added "URI::VersionRange::Version::cpan" version comparator for "cpan" scheme - Added "vers-tool(1)" - FIX Apply percent-encoding in "subpath" in "to_string" method 2.11 2024-04-19 - Improved the cpan PURL type to be compatible with the 'PURL-TYPES' specification (giterlizzi/perl-URI-PackageURL#8 - https://github.com/package-url/purl-spec/blob/master/PURL-TYPES.rst) - Added "luarocks" PURL type support - Improved test suite (giterlizzi/perl-URI-PackageURL#11) - Renamed CLI package in "URI::PackageURL::App" - Changed JSON module pre-requisite to "JSON::PP" to be compatible with CPAN Toolchain (giterlizzi/perl-URI-PackageURL#12) 2.04 2023-11-16 - Added "docker", "bitbuket", "golang" support to "URI::PackageURL::Util::purl_to_urls" - Added new options for create canonical purl string using "purl-tool(1)" (giterlizzi/perl-URI-PackageURL#9) - Added sample scripts - Removed empty "qualifier" keys in "URI::PackageURL->from_string" 2.03 2023-11-09 - Improved validation during encode and decode "purl" string - Fixed CPAN repository URL - FIX Qualifiers are case sensitive (giterlizzi/perl-URI-PackageURL#4) - FIX PURLs containing multiple namespaces segments parse incorrectly (giterlizzi/perl-URI-PackageURL#5) - FIX Incorrect parsing of PURLs that begin with "pkg:/" (giterlizzi/perl-URI-PackageURL#6) - Improved "t/99-official-purl-test-suite.t" test 2.02 2023-09-22 - Added core "JSON" module prerequisite in Makefile.PL (#4) 2.01 2023-09-17 - Added "repository_url" qualifier support for "cpan" PURL type 2.00 2023-06-13 - Added "purl-tool(1)" (giterlizzi/perl-URI-PackageURL#3) - Added "URI::PackageURL::Util::purl_to_urls" helper - Fixed name qualifier for "cpan" (giterlizzi/perl-URI-PackageURL#2) - Fixed some little issues 1.10 2022-08-01 - Fixed "namespace vs name" (RT#143917) - Fixed substitution warning when "version" component is not provided in URI::PackageURL->from_string 1.02 2022-07-31 - Fixed decode when "namespace" component is "undef" 1.01 2022-07-26 - Fixed documentation and test prerequisite (JSON::PP) 1.00 2022-07-25 - First release of URI::PackageURL URI-PackageURL-2.24/LICENSE0000644000175000017500000002141314267754747014055 0ustar peppepeppe The Artistic License 2.0 Copyright (c) 2000-2006, The Perl Foundation. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble This license establishes the terms under which a given free software Package may be copied, modified, distributed, and/or redistributed. The intent is that the Copyright Holder maintains some artistic control over the development of that Package while still keeping the Package available as open source and free software. You are always permitted to make arrangements wholly outside of this license directly with the Copyright Holder of a given Package. If the terms of this license do not permit the full use that you propose to make of the Package, you should contact the Copyright Holder and seek a different licensing arrangement. Definitions "Copyright Holder" means the individual(s) or organization(s) named in the copyright notice for the entire Package. "Contributor" means any party that has contributed code or other material to the Package, in accordance with the Copyright Holder's procedures. "You" and "your" means any person who would like to copy, distribute, or modify the Package. "Package" means the collection of files distributed by the Copyright Holder, and derivatives of that collection and/or of those files. A given Package may consist of either the Standard Version, or a Modified Version. "Distribute" means providing a copy of the Package or making it accessible to anyone else, or in the case of a company or organization, to others outside of your company or organization. "Distributor Fee" means any fee that you charge for Distributing this Package or providing support for this Package to another party. It does not mean licensing fees. "Standard Version" refers to the Package if it has not been modified, or has been modified only in ways explicitly requested by the Copyright Holder. "Modified Version" means the Package, if it has been changed, and such changes were not explicitly requested by the Copyright Holder. "Original License" means this Artistic License as Distributed with the Standard Version of the Package, in its current version or as it may be modified by The Perl Foundation in the future. "Source" form means the source code, documentation source, and configuration files for the Package. "Compiled" form means the compiled bytecode, object code, binary, or any other form resulting from mechanical transformation or translation of the Source form. Permission for Use and Modification Without Distribution (1) You are permitted to use the Standard Version and create and use Modified Versions for any purpose without restriction, provided that you do not Distribute the Modified Version. Permissions for Redistribution of the Standard Version (2) You may Distribute verbatim copies of the Source form of the Standard Version of this Package in any medium without restriction, either gratis or for a Distributor Fee, provided that you duplicate all of the original copyright notices and associated disclaimers. At your discretion, such verbatim copies may or may not include a Compiled form of the Package. (3) You may apply any bug fixes, portability changes, and other modifications made available from the Copyright Holder. The resulting Package will still be considered the Standard Version, and as such will be subject to the Original License. Distribution of Modified Versions of the Package as Source (4) You may Distribute your Modified Version as Source (either gratis or for a Distributor Fee, and with or without a Compiled form of the Modified Version) provided that you clearly document how it differs from the Standard Version, including, but not limited to, documenting any non-standard features, executables, or modules, and provided that you do at least ONE of the following: (a) make the Modified Version available to the Copyright Holder of the Standard Version, under the Original License, so that the Copyright Holder may include your modifications in the Standard Version. (b) ensure that installation of your Modified Version does not prevent the user installing or running the Standard Version. In addition, the Modified Version must bear a name that is different from the name of the Standard Version. (c) allow anyone who receives a copy of the Modified Version to make the Source form of the Modified Version available to others under (i) the Original License or (ii) a license that permits the licensee to freely copy, modify and redistribute the Modified Version using the same licensing terms that apply to the copy that the licensee received, and requires that the Source form of the Modified Version, and of any works derived from it, be made freely available in that license fees are prohibited but Distributor Fees are allowed. Distribution of Compiled Forms of the Standard Version or Modified Versions without the Source (5) You may Distribute Compiled forms of the Standard Version without the Source, provided that you include complete instructions on how to get the Source of the Standard Version. Such instructions must be valid at the time of your distribution. If these instructions, at any time while you are carrying out such distribution, become invalid, you must provide new instructions on demand or cease further distribution. If you provide valid instructions or cease distribution within thirty days after you become aware that the instructions are invalid, then you do not forfeit any of your rights under this license. (6) You may Distribute a Modified Version in Compiled form without the Source, provided that you comply with Section 4 with respect to the Source of the Modified Version. Aggregating or Linking the Package (7) You may aggregate the Package (either the Standard Version or Modified Version) with other packages and Distribute the resulting aggregation provided that you do not charge a licensing fee for the Package. Distributor Fees are permitted, and licensing fees for other components in the aggregation are permitted. The terms of this license apply to the use and Distribution of the Standard or Modified Versions as included in the aggregation. (8) You are permitted to link Modified and Standard Versions with other works, to embed the Package in a larger work of your own, or to build stand-alone binary or bytecode versions of applications that include the Package, and Distribute the result without restriction, provided the result does not expose a direct interface to the Package. Items That are Not Considered Part of a Modified Version (9) Works (including, but not limited to, modules and scripts) that merely extend or make use of the Package, do not, by themselves, cause the Package to be a Modified Version. In addition, such works are not considered parts of the Package itself, and are not subject to the terms of this license. General Provisions (10) Any use, modification, and distribution of the Standard or Modified Versions is governed by this Artistic License. By using, modifying or distributing the Package, you accept this license. Do not use, modify, or distribute the Package, if you do not accept this license. (11) If your Modified Version has been derived from a Modified Version made by someone other than you, you are nevertheless required to ensure that your Modified Version complies with the requirements of this license. (12) This license does not grant you the right to use any trademark, service mark, tradename, or logo of the Copyright Holder. (13) This license includes the non-exclusive, worldwide, free-of-charge patent license to make, have made, use, offer to sell, sell, import and otherwise transfer the Package with respect to any patent claims licensable by the Copyright Holder that are necessarily infringed by the Package. If you institute patent litigation (including a cross-claim or counterclaim) against any party alleging that the Package constitutes direct or contributory patent infringement, then this Artistic License to you shall terminate on the date that such litigation is filed. (14) Disclaimer of Warranty: THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. URI-PackageURL-2.24/sync-purl-spec.sh0000644000175000017500000000105115135504042016234 0ustar peppepeppe#!/bin/bash # sync-purl-spec - Sync the PURL specs # # (C) 2025, Giuseppe Di Terlizzi cd $(dirname $0) ; CWD=$(pwd) GIT_REF=heads/main GIT_REF=tags/v1.0.0 PURL_ARCHIVE_URL="https://github.com/package-url/purl-spec/archive/refs/$GIT_REF.zip" PURL_ARCHIVE_FILE=$(mktemp) rm -rf $CWD/lib/URI/PackageURL/types/* mkdir -p $CWD/lib/URI/PackageURL/types/ wget -O $PURL_ARCHIVE_FILE $PURL_ARCHIVE_URL unzip -j $PURL_ARCHIVE_FILE 'purl-spec-*/types/*-definition.json' -d $CWD/lib/URI/PackageURL/types rm $PURL_ARCHIVE_FILE URI-PackageURL-2.24/lib/0000755000175000017500000000000015135504367013577 5ustar peppepeppeURI-PackageURL-2.24/lib/URI/0000755000175000017500000000000015135504367014236 5ustar peppepeppeURI-PackageURL-2.24/lib/URI/VersionRange.pm0000644000175000017500000003537315135504042017177 0ustar peppepeppepackage URI::VersionRange; use feature ':5.10'; use strict; use utf8; use warnings; use Carp (); use List::Util qw(first); use Exporter qw(import); use URI::VersionRange::Constraint; use URI::VersionRange::Util qw(native_range_to_vers version_compare); use URI::VersionRange::Version; use constant DEBUG => $ENV{VERS_DEBUG}; use constant TRUE => !!1; use constant FALSE => !!0; use overload '""' => 'to_string', fallback => 1; BEGIN { *VERS:: = *URI::VersionRange:: } our $VERSION = '2.24'; our @EXPORT = qw(encode_vers decode_vers); my $VERS_REGEXP = qr{^vers:[a-z\\.\\-\\+][a-z0-9\\.\\-\\+]*/.+}; sub new { my ($class, %params) = @_; my $scheme = delete $params{scheme} or Carp::croak "Invalid Version Range: 'scheme' is required"; my $constraints = delete $params{constraints} or Carp::croak "Invalid Version Range: 'constraints' is required"; my @constraints = (); foreach my $constraint (@{$constraints}) { if (ref($constraint) ne 'URI::VersionRange::Constraint') { $constraint = URI::VersionRange::Constraint->from_string($constraint); } push @constraints, $constraint; } $scheme = lc $scheme; my $self = {scheme => $scheme, constraints => \@constraints, scheme_class => URI::VersionRange::Version->load($scheme)}; return bless $self, $class; } sub scheme { shift->{scheme} } sub constraints { shift->{constraints} } sub encode_vers { __PACKAGE__->new(@_)->to_string } sub decode_vers { __PACKAGE__->from_string(shift) } sub from_native { my ($class, %params) = @_; my $scheme = delete $params{scheme} or Carp::croak "Invalid Version Range: 'scheme' is required"; my $range = delete $params{range} or Carp::croak "Invalid Version Range: 'range' is required"; my $vers = native_range_to_vers(lc $scheme, $range); return $class->from_string($vers); } sub from_string { my ($class, $string) = @_; if ($string !~ /$VERS_REGEXP/) { Carp::croak 'Malformed Version Range string'; } if ($string =~ /^vers\:(none|all)\// && $string !~ /^vers\:(none|all)\/\*$/) { Carp::croak 'Malformed Version Range string'; } my %params = (); # - Remove all spaces and tabs. # - Start from left, and split once on colon ":". # - The left hand side is the URI-scheme that must be lowercase. # Tools must validate that the URI-scheme value is vers. # - The right hand side is the specifier. $string =~ s/(\s|\t)+//g; my @s1 = split(':', $string); # $params{uri_scheme} = lc $s1[0]; # - Split the specifier from left once on a slash "/". # - The left hand side is the that must be lowercase. Tools # should validate that the is a known scheme. # - The right hand side is a list of one or more constraints. Tools must validate # that this constraints string is not empty ignoring spaces. my @s2 = split('/', $s1[1]); $params{scheme} = lc $s2[0]; # - If the constraints string is equal to "", the ```` # is "". Parsing is done and no further processing is needed for this vers. # A tool should report an error if there are extra characters beyond "*". # - Strip leading and trailing pipes "|" from the constraints string. # - Split the constraints on pipe "|". The result is a list of . # Consecutive pipes must be treated as one and leading and trailing pipes ignored. $s2[1] =~ s/(^\|)|(\|$)//g; my @s3 = split(/\|/, $s2[1]); $params{constraints} = []; # - For each : # - Determine if the starts with one of the two comparators: # - If it starts with ">=", then the comparator is ">=". # - If it starts with "<=", then the comparator is "<=". # - If it starts with "!=", then the comparator is "!=". # - If it starts with "<", then the comparator is "<". # - If it starts with ">", then the comparator is ">". # - Remove the comparator from string start. The remaining string is the version. # - Otherwise the version is the full string (which implies an equality comparator of "=") # - Tools should validate and report an error if the version is empty. # - If the version contains a percent "%" character, apply URL quoting rules to unquote this string. # - Append the parsed (comparator, version) to the constraints list. foreach (@s3) { push @{$params{constraints}}, URI::VersionRange::Constraint->from_string($_); } if (DEBUG) { say STDERR "-- S1: @s1"; say STDERR "-- S2: @s2"; say STDERR "-- S3: @s3"; } return $class->new(%params); } sub to_string { my $self = shift; my @constraints = sort { version_compare($self->scheme, $a->version, $b->version) } @{$self->constraints}; return join '', 'vers:', $self->scheme, '/', join('|', @constraints); } sub constraint_contains { my ($self, $constraint, $version) = @_; return TRUE if $constraint->comparator eq '*'; my $version_class = $self->{scheme_class}; my $v1 = $version_class->new($version); my $v2 = $version_class->new($constraint->version); return ($v1 == $v2) if ($constraint->comparator eq '='); return ($v1 != $v2) if ($constraint->comparator eq '!='); return ($v1 <= $v2) if ($constraint->comparator eq '<='); return ($v1 >= $v2) if ($constraint->comparator eq '>='); return ($v1 < $v2) if ($constraint->comparator eq '<'); return ($v1 > $v2) if ($constraint->comparator eq '>'); return FALSE; } sub contains { my ($self, $version) = @_; my @first = (); my @second = (); my $version_class = $self->{scheme_class}; if (scalar @{$self->constraints} == 1) { return $self->constraint_contains($self->constraints->[0], $version); } foreach my $constraint (@{$self->constraints}) { # If the "tested version" is equal to the any of the constraint version # where the constraint comparator is for equality (any of "=", "<=", or ">=") # then the "tested version" is in the range. Check is finished. return TRUE if ((first { $constraint->comparator eq $_ } ('=', '<=', '>=')) && ($version_class->new($version) == $version_class->new($constraint->version))); # If the "tested version" is equal to the any of the constraint version # where the constraint comparator is "=!" then the "tested version" is NOT # in the range. Check is finished. return FALSE if ($constraint->comparator eq '!=' && ($version_class->new($version) == $version_class->new($constraint->version))); # Split the constraint list in two sub lists: # a first list where the comparator is "=" or "!=" # a second list where the comparator is neither "=" nor "!=" push @first, $constraint if ((first { $constraint->comparator eq $_ } ('=', '!='))); push @second, $constraint if (!(first { $constraint->comparator eq $_ } ('=', '!='))); } return FALSE unless @second; if (scalar @second == 1) { return $self->constraint_contains($second[0], $version); } # Iterate over the current and next contiguous constraints pairs (aka. pairwise) # in the second list. # For each current and next constraint: my $is_first_iteration = TRUE; my $current_constraint = undef; my $next_constraint = undef; foreach (_pairwise(@second)) { ($current_constraint, $next_constraint) = @{$_}; DEBUG and say STDERR sprintf '-- Current constraint --> %s', $current_constraint; DEBUG and say STDERR sprintf '-- Next constraint --> %s', $next_constraint; # If this is the first iteration and current comparator is "<" or <=" and # the "tested version" is less than the current version then the "tested # version" is IN the range. Check is finished. if ($is_first_iteration) { return TRUE if ((first { $current_constraint->comparator eq $_ } ('<=', '<')) && ($version_class->new($version) < $version_class->new($current_constraint->version))); $is_first_iteration = FALSE; } # If current comparator is ">" or >=" and next comparator is "<" or <=" # and the "tested version" is greater than the current version and the # "tested version" is less than the next version then the "tested version" # is IN the range. Check is finished. if ( (first { $current_constraint->comparator eq $_ } ('>', '>=')) && (first { $next_constraint->comparator eq $_ } ('<', '<=')) && ($version_class->new($version) > $version_class->new($current_constraint->version)) && ($version_class->new($version) < $version_class->new($next_constraint->version))) { return TRUE; } # If current comparator is "<" or <=" and next comparator is ">" or >=" # then these versions are out the range. Continue to the next iteration. elsif ((first { $current_constraint->comparator eq $_ } ('<', '<=')) && (first { $next_constraint->comparator } ('>', '>='))) { next; } } # If this is the last iteration and next comparator is ">" or >=" and the # "tested version" is greater than the next version then the "tested version" # is IN the range. Check is finished. return TRUE if ((first { $next_constraint->comparator eq $_ } ('>', '>=')) && ($version_class->new($version) > $version_class->new($next_constraint->version))); return FALSE; } sub to_hash { return {scheme => $_[0]->scheme, constraints => $_[0]->constraints}; } sub TO_JSON { shift->to_hash } sub _pairwise { my @out = (); for (my $i = 0; $i < scalar @_; $i++) { push @out, [$_[$i], $_[$i + 1]] if $_[$i + 1]; } return @out; } 1; __END__ =encoding utf-8 =head1 NAME URI::VersionRange - Perl extension for VERS (Version Range Specifier) =head1 SYNOPSIS use URI::VersionRange; # OO-interface $vers = URI::VersionRange->new( scheme => 'cpan', constraints => ['>2.00'] ); say $vers; # vers:cpan/>2.00 if ($vers->contains('2.10')) { say "The version is in range"; } # Parse "vers" string $vers = URI::VersionRange->from_string('vers:cpan/>2.00|<2.24'); # exported functions $vers = decode_vers('vers:cpan/>2.00|<2.24'); say $vers->scheme; # cpan $vers_string = encode_vers(scheme => cpan, constraints => ['>2.00']); say $vers_string; # vers:cpan/>2.00 # alias $vers = VERS->new( scheme => 'cpan', constraints => ['>2.00'] ); $vers = VERS->from_string('vers:cpan/>2.00|<2.24'); =head1 DESCRIPTION A version range specifier (VERS) is a URI string using the C URI-scheme with this syntax: vers:/||... C is the URI-scheme and is an acronym for "VErsion Range Specifier". The pipe "|" is used as a simple separator between C. Each C in this pipe-separated list contains a comparator and a version: This list of C are signposts in the version timeline of a package that specify version intervals. A C satisfies a version range specifier if it is contained within any of the intervals defined by these C. L L =head2 FUNCTIONAL INTERFACE They are exported by default: =head3 B $vers_string = encode_vers(%params); Converts the given C components to "vers" string. Croaks on error. This function call is functionally identical to: $vers_string = URI::VersionRange->new(%params)->to_string; =head3 B $vers = decode_vers($vers_string); Converts the given "vers" string to L object. Croaks on error. This function call is functionally identical to: $vers = URI::VersionRange->from_string($vers_string); =head2 OBJECT-ORIENTED INTERFACE =head3 B $vers = URI::VersionRange->new( scheme => STRING, constraints => ARRAY ) $vers = VERS->new( scheme => STRING, constraints => ARRAY ) Create new L instance using provided VERS components (scheme, constraints). =head3 B $vers->scheme By convention the versioning scheme should be the same as the L package C for a given package ecosystem. =head3 B $vers->constraints C is ARRAY of L object. =head3 B $vers->contains($version) Check if a version is contained within a range my $vers = URI::VersionRange::from_string('vers:cpan/>2.00|<2.24'); if ($vers->contains('2.10')) { say "The version is in range"; } See L. =head3 B $vers->constraint_contains Check if a version is contained within a specific constraint. See L. =head3 B $vers->to_hash Turn VERS components into a hash reference. =head3 B $vers->to_string Stringify VERS components. =head3 B $vers->TO_JSON Helper method for JSON modules (L, L, L, L, etc). use Mojo::JSON qw(encode_json); say encode_json($vers); # { # "constraints": [ # { # "comparator": ">", # "version": "2.00" # }, # { # "comparator": "<", # "version": "2.24" # } # ], # "scheme": "cpan" # } =head3 B $vers = URI::VersionRange->from_string($vers_string); $vers = VERS->from_string($vers_string); Converts the given "vers" string to VERS components and return L instance. Croaks on error. =head1 SUPPORT =head2 Bugs / Feature Requests Please report any bugs or feature requests through the issue tracker at L. You will be notified automatically of any progress on your issue. =head2 Source Code This is open source software. The code repository is available for public review and contribution under the terms of the license. L git clone https://github.com/giterlizzi/perl-URI-PackageURL.git =head1 AUTHOR =over =item * Giuseppe Di Terlizzi =back =head1 LICENSE AND COPYRIGHT This software is copyright (c) 2022-2026 by Giuseppe Di Terlizzi. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut URI-PackageURL-2.24/lib/URI/PackageURL.pm0000644000175000017500000004413515135504042016507 0ustar peppepeppepackage URI::PackageURL; use feature ':5.10'; use strict; use utf8; use warnings; use Carp (); use Exporter qw(import); use URI::PackageURL::Type; use URI::PackageURL::Util qw(purl_to_urls); BEGIN { *PURL:: = *URI::PackageURL:: } use constant DEBUG => $ENV{PURL_DEBUG}; use overload '""' => 'to_string', fallback => 1; our $VERSION = '2.24'; our @EXPORT = qw(encode_purl decode_purl); my $PURL_REGEXP = qr{^pkg:(([/]{1,})?)([A-Za-z][A-Za-z0-9\.\-]*)([/]{1,}).+}; sub new { my ($class, %params) = @_; my $type = delete $params{type} or Carp::croak "Invalid PURL: 'type' component is required"; my $namespace = delete $params{namespace}; my $name = delete $params{name} or Carp::croak "Invalid PURL: 'name' component is required"; my $version = delete $params{version}; my $qualifiers = delete $params{qualifiers} // {}; my $subpath = delete $params{subpath}; my $validate = delete $params{validate} // 1; my $purl_definition = URI::PackageURL::Type->new($type); my %components = $purl_definition->normalize( scheme => 'pkg', # The scheme is a constant with the value "pkg". type => $type, namespace => $namespace, name => $name, version => $version, qualifiers => $qualifiers, subpath => $subpath, ); $purl_definition->validate(%components) if $validate; my $self = {components => \%components, definition => $purl_definition}; return bless $self, $class; } sub definition { shift->{definition} } sub scheme {'pkg'} # The scheme is a constant with the value "pkg". sub type { shift->_component('type', @_) } sub namespace { shift->_component('namespace', @_) } sub name { shift->_component('name', @_) } sub version { shift->_component('version', @_) } sub qualifiers { shift->_component('qualifiers', @_) } sub subpath { shift->_component('subpath', @_) } sub encode_purl { __PACKAGE__->new(@_)->to_string } sub decode_purl { __PACKAGE__->from_string(shift) } sub clone { my $self = shift; bless {%$self}, ref $self; } sub to_urls { purl_to_urls(shift) } sub download_url { shift->to_urls->{download} } sub repository_url { shift->to_urls->{repository} } sub from_string { my ($class, $string) = @_; DEBUG and say STDERR "-- INPUT: $string"; DEBUG and say STDERR "-- REGEXP: $PURL_REGEXP"; # Strip slash / after scheme while ($string =~ m{^pkg:/}) { $string =~ s{^pkg:/}{pkg:}; } if ($string !~ /$PURL_REGEXP/) { Carp::croak 'Malformed PURL string'; } my %components = (); # Split the purl string once from right on '#' # The left side is the 'remainder' # Strip the right side from leading and trailing '/' # Split this on '/' # Discard any empty string segment from that split # Discard any '.' or '..' segment from that split # Percent-decode each segment # UTF-8-decode each segment if needed in your programming language # Join segments back with a '/' # This is the 'subpath' my @s1 = split(/#([^#]+)$/, $string); if ($s1[1]) { $s1[1] =~ s/(^\/|\/$)//; my @subpath = map { _url_decode($_) } grep { $_ ne '' && $_ ne '.' && $_ ne '..' } split /\//, $s1[1]; $components{subpath} = join '/', @subpath; } # Split the 'remainder' once from right on '?' # The left side is the 'remainder' # The right side is the 'qualifiers' string # Split the 'qualifiers' on '&'. Each part is a 'key=value' pair # For each pair, split the 'key=value' once from left on '=': # The 'key' is the lowercase left side # The 'value' is the percent-decoded right side # UTF-8-decode the value if needed in your programming language # Discard any key/value pairs where the value is empty # If the 'key' is 'checksum', split the 'value' on ',' to create a list of checksum # This list of key/value is the 'qualifiers' object my @s2 = split(/\?([^\?]+)$/, $s1[0]); if ($s2[1]) { my @qualifiers = split('&', $s2[1]); foreach my $qualifier (@qualifiers) { my ($key, $value) = ($qualifier =~ /^([^=]+)(?:=(.*))?$/); $value = _url_decode($value); if ($key eq 'checksums' || $key eq 'checksum') { Carp::carp "Detected 'checksums' qualifier. Use 'checksum' qualifier instead." if ($key eq 'checksums'); $value = [split(',', $value)]; } $components{qualifiers}->{lc $key} = $value; } } # Split the 'remainder' once from left on ':' # The left side lowercased is the 'scheme' # The right side is the 'remainder' my @s3 = split(':', $s2[0], 2); Carp::croak 'Invalid PURL: Missing "scheme"' unless $s3[0]; Carp::croak 'Invalid PURL' unless $s3[1]; $components{scheme} = lc $s3[0]; # Strip all leading '/' characters (e.g., '/', '//', '///' and so on) from the 'remainder' # Split this once from left on '/' # The left side lowercased is the 'type' # The right side is the 'remainder' while ($s3[1] =~ m|^//|) { $s3[1] =~ s|^//|/|; } $s3[1] =~ s|^/||; # Strip leading '/' character my @s4 = split('/', $s3[1], 2); $components{type} = lc $s4[0]; Carp::croak 'Invalid PURL: Invalid "type"' if $components{type} !~ /^[a-z][a-z0-9.-]+$/; Carp::croak 'Invalid PURL' unless $s4[1]; # Split the 'remainder' once from right on '@' # The left side is the 'remainder' # Percent-decode the right side. This is the 'version'. # UTF-8-decode the 'version' if needed in your programming language # This is the 'version' my @s5 = split(/@([^@]+)$/, $s4[1]); # NPM purl MAY have a namespace starting with "@" # so we need to handle this case separately if ($components{type} eq 'npm' and $s4[1] =~ /^@/ and $s4[1] !~ /@.*@/) { @s5 = ($s4[1]); } $components{version} = _url_decode($s5[1]) if ($s5[1]); # Strip all trailing '/' characters (e.g., '/', '//', '///' and so on) from the 'remainder' # The left side is the 'remainder' # Percent-decode the right side. This is the 'name' # UTF-8-decode this 'name' if needed in your programming language # Apply type-specific normalization to the 'name' if needed # This is the 'name' while ($s5[0] =~ m|//$|) { $s5[0] =~ s|//$|/|; } $s5[0] =~ s|/$||; # Strip trailing '/' character my @s6 = split('/', $s5[0], -1); $components{name} = _url_decode(pop @s6); Carp::croak 'Invalid PURL: Missing "name"' unless $components{name}; # Split the 'remainder' on '/' # Discard any empty segment from that split # Percent-decode each segment # UTF-8-decode the each segment if needed in your programming language # Apply type-specific normalization to each segment if needed # Join segments back with a '/' # This is the 'namespace' if (@s6) { $components{namespace} = join '/', map { _url_decode($_) } @s6; } if (DEBUG) { say STDERR "-- S1: @s1"; say STDERR "-- S2: @s2"; say STDERR "-- S3: @s3"; say STDERR "-- S4: @s4"; say STDERR "-- S5: @s5"; say STDERR "-- S6: @s6"; } return $class->new(%components); } sub to_string { my $self = shift; my @purl = ('pkg', ':', $self->type, '/'); # Namespace if ($self->namespace) { my @ns = map { _url_encode($_) } split(/\//, $self->namespace); push @purl, (join('/', @ns), '/'); } # Name push @purl, _encode($self->name); # Version push @purl, ('@', _encode($self->version)) if ($self->version); # Qualifiers if (my $qualifiers = $self->qualifiers) { # TODO: Legacy 'checksums' qualifier will be dropped in the future foreach (qw[checksum checksums]) { if (defined $qualifiers->{$_} && ref $qualifiers->{$_} eq 'ARRAY') { $qualifiers->{$_} = join ',', @{$qualifiers->{$_}}; } } # TODO: Use URI::VersionRange during qualifiers decode ? if (defined $qualifiers->{vers} && ref $qualifiers->{vers} eq 'URI::VersionRange') { $qualifiers->{vers} = $qualifiers->{vers}->to_string; say STDERR $qualifiers->{vers}; } my @qualifiers = map { sprintf('%s=%s', lc $_, _encode($qualifiers->{$_})) } grep { $qualifiers->{$_} } sort keys %{$qualifiers}; push @purl, ('?', join('&', @qualifiers)) if (@qualifiers); } # Subpath if ($self->subpath) { my $subpath = $self->subpath; $subpath =~ s{\.\./}{}; $subpath =~ s{\./}{}; my @subpath = map { _encode($_) } split '/', $subpath; push @purl, ('#', join('/', @subpath)); } return join '', @purl; } sub to_hash { my $self = shift; my %hash = map { $_ => $self->{components}->{$_} } qw[scheme type name version namespace qualifiers subpath]; return \%hash; } sub TO_JSON { shift->to_hash } sub _component { my ($self, $component, $value) = @_; if (@_ == 3) { $self->{components}->{$component} = $value; } return $self->{components}->{$component}; } sub _url_encode { my ($string, $pattern) = @_; # RFC-3986 $pattern //= '^A-Za-z0-9\-._~/' unless $pattern; $string =~ s/([$pattern])/sprintf '%%%02X', ord $1/ge; return $string; } sub _encode { my $string = shift; $string = _url_encode($string); $string =~ s{%3A}{:}g; $string =~ s{/}{%2F}g; return $string; } sub _url_decode { my $string = shift; return unless $string; $string =~ s/%([0-9a-fA-F]{2})/chr hex $1/ge; return $string; } 1; __END__ =encoding utf-8 =head1 NAME URI::PackageURL - Perl extension for PURL (Package URL) =head1 SYNOPSIS use URI::PackageURL; # OO-interface # Encode components in PURL string $purl = URI::PackageURL->new( type => 'cpan', namespace => 'GDT', name => 'URI-PackageURL', version => '2.24' ); say $purl; # pkg:cpan/GDT/URI-PackageURL@2.24 # Parse a PURL string $purl = URI::PackageURL->from_string('pkg:cpan/GDT/URI-PackageURL@2.24'); # use setter methods my $purl = URI::PackageURL->new(type => 'cpan', namespace => 'GDT', name => 'URI-PackageURL'); say $purl; # pkg:cpan/GDT/URI-PackageURL say $purl->version; # undef $purl->version('2.24'); say $purl; # pkg:cpan/GDT/URI-PackageURL@2.24 say $purl->version; # 2.24 # exported functions $purl = decode_purl('pkg:cpan/GDT/URI-PackageURL@2.24'); say $purl->type; # cpan $purl_string = encode_purl(type => cpan, namespace => 'GDT', name => 'URI-PackageURL', version => '2.24'); say $purl_string; # pkg:cpan/GDT/URI-PackageURL@2.24 # uses the legacy CPAN PURL type, to be used only for compatibility (will be removed in the future) $ENV{PURL_LEGACY_CPAN_TYPE} = 1; URI::PackageURL->new(type => 'cpan', name => 'URI::PackageURL'); # alias $purl = PURL->new( type => 'cpan', namespace => 'GDT', name => 'URI-PackageURL', version => '2.24' ); $purl = PURL->from_string('pkg:cpan/GDT/URI-PackageURL'); # clone $cloned = $purl->clone; $cloned->version('1.00'); say $cloned; # pkg:cpan/GDT/URI-PackageURL@1.00 say $purl; # pkg:cpan/GDT/URI-PackageURL@2.24 =head1 DESCRIPTION This module converts PURL components to PURL string and vice versa. A PURL (Package URL) is a URL string used to identify and locate a software package in a mostly universal and uniform way across programing languages, package managers, packaging conventions, tools, APIs and databases. L L L A purl is a URL composed of seven components: scheme:type/namespace/name@version?qualifiers#subpath Components are separated by a specific character for unambiguous parsing. The definition for each components is: =over 2 =item * "scheme": this is the URL scheme with the constant value of "pkg". One of the primary reason for this single scheme is to facilitate the future official registration of the "pkg" scheme for package URLs. Required. =item * "type": the package "type" or package "protocol" such as cpan, maven, npm, nuget, gem, pypi, etc. Required. =item * "namespace": some name prefix such as a Maven groupid, a Docker image owner, a GitHub user or organization. Optional and type-specific. =item * "name": the name of the package. Required. =item * "version": the version of the package. Optional. =item * "qualifiers": extra qualifying data for a package such as an OS, architecture, a distro, etc. Optional and type-specific. =item * "subpath": extra subpath within a package, relative to the package root. Optional. =back =head2 CPAN PURL TYPE C is an official PURL type (L) =over 2 =item * The default repository is C. =item * The C is the CPAN id of the author/publisher. It MUST be written uppercase and is required. =item * The C is the distribution name and is case sensitive. A distribution name MUST NOT contain the string C<::>. =item * The C is the distribution version. =item * Optional qualifiers may include: =over =item * C: CPAN/MetaCPAN/BackPAN/DarkPAN repository base URL (default is https://www.cpan.org) =item * C: URL of package or distribution =item * C: extra URL for a package version control system =item * C: file extension (default is tar.gz) =back =back =head3 Examples pkg:cpan/DROLSKY/DateTime@1.55 pkg:cpan/GDT/URI-PackageURL pkg:cpan/OALDERS/libwww-perl@6.76 =head3 Legacy CPAN PURL type Add C environment variable for use the legacy CPAN PURL type. B: This is only to be used for compatibility purposes (it will be removed in the future). =head2 FUNCTIONAL INTERFACE They are exported by default: =head3 B $purl_string = encode_purl(%purl_components) Converts the given PURL components to PURL string. Croaks on error. This function call is functionally identical to: $purl_string = URI::PackageURL->new(%purl_components)->to_string; =head3 B $purl_components = decode_purl($purl_string) Converts the given PURL string to PURL components. Croaks on error. This function call is functionally identical to: $purl = URI::PackageURL->from_string($purl_string); =head2 OBJECT-ORIENTED INTERFACE =head3 B $purl = URI::PackageURL->new(%components) $purl = PURL->new(%components) Create new L instance using provided PURL components (type, name, version, etc). Disable PURL-type validation: $purl = URI::PackageURL->new(validate => 0, ...); Allowed parameters: =over =item * C, Enable/Disable PURL-type validation (default: C<1>). =item * C, PURL "type" component. =item * C, PURL "namespace" component. =item * C, PURL "name" component. =item * C, PURL "version" component. =item * C, PURL "qualifiers" component (default: C<{}>). =item * C, PURL "subpath" component. =back =head3 B The scheme is a constant with the value "pkg". =head3 B The package "type" or package "protocol" such as cpan, maven, npm, nuget, gem, pypi, etc. =head3 B Some name prefix such as a Maven groupid, a Docker image owner, a GitHub user or organization. Optional and type-specific. =head3 B The "name" of the package. =head3 B The "version" of the package. =head3 B Extra qualifying data for a package such as an OS, architecture, a distro, etc. =head3 B Extra subpath within a package, relative to the package root. =head3 B Stringify Package URL components. =head3 B Return B and/or B URLs. =head3 B Return B URL. See C in L. =head3 B Return B URL. See C in L. =head3 B Turn PURL components into a hash reference. =head3 B Return L instance. =head3 B Clone PURL object. $cloned = $purl->clone; $cloned->version('1.00'); say $cloned; # pkg:cpan/GDT/URI-PackageURL@1.00 say $purl; # pkg:cpan/GDT/URI-PackageURL@2.24 =head3 B Helper method for JSON modules (L, L, L, L, L, etc). use Mojo::JSON qw(encode_json); say encode_json($purl); # { # "name" : "URI-PackageURL", # "namespace" : "GDT", # "qualifiers" : {}, # "scheme" : "pkg", # "subpath" : null, # "type" : "cpan", # "version" : "2.24" # } =head3 B $purl = URI::PackageURL->from_string($purl_string); $purl = PURL->from_string($purl_string); Converts the given PURL string to PURL components and return L instance. Croaks on error. =head1 SUPPORT =head2 Bugs / Feature Requests Please report any bugs or feature requests through the issue tracker at L. You will be notified automatically of any progress on your issue. =head2 Source Code This is open source software. The code repository is available for public review and contribution under the terms of the license. L git clone https://github.com/giterlizzi/perl-URI-PackageURL.git =head1 AUTHOR =over =item * Giuseppe Di Terlizzi =back =head1 LICENSE AND COPYRIGHT This software is copyright (c) 2022-2026 by Giuseppe Di Terlizzi. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut URI-PackageURL-2.24/lib/URI/VersionRange/0000755000175000017500000000000015135504367016640 5ustar peppepeppeURI-PackageURL-2.24/lib/URI/VersionRange/Version.pm0000644000175000017500000001221015135504042020605 0ustar peppepeppepackage URI::VersionRange::Version; use feature ':5.10'; use strict; use utf8; use warnings; use URI::VersionRange::Util qw(generic_version_compare); use overload ('cmp' => \&compare, '<=>' => \&compare, fallback => 1); use constant DEBUG => $ENV{VERS_DEBUG}; our $VERSION = '2.24'; sub load { my ($class, $scheme) = @_; $scheme = lc $scheme; my @CLASSES = ( join('::', 'URI::VersionRange::Scheme', lc($scheme)), # Scheme specific join('::', 'URI::VersionRange::Version', lc($scheme)), # Scheme specific (legacy naming convention) ); foreach my $version_class (@CLASSES) { if ($version_class->can('new') or eval "require $version_class; 1") { DEBUG and say STDERR "-- Loaded '$version_class' class"; return $version_class; } DEBUG and say STDERR "-- (E) Failed to load '$version_class' class: $@" if $@; } return $class; } sub new { my $class = shift; bless [@_], $class } sub scheme { return (split(/\:\:/, shift, 4))[3]; } sub compare { my ($left, $right) = @_; return generic_version_compare($left->[0], $right->[0]); } # CPAN package # hide from pause URI::VersionRange::Scheme::cpan { use parent 'URI::VersionRange::Version'; use version(); use overload ('cmp' => \&compare, '<=>' => \&compare, fallback => 1); sub compare { my ($left, $right) = @_; return (version->parse($left->[0]) <=> version->parse($right->[0])); } } # PyPi package # hide from pause URI::VersionRange::Scheme::pypi { use parent 'URI::VersionRange::Version'; use version(); use overload ('cmp' => \&compare, '<=>' => \&compare, fallback => 1); sub compare { my ($left, $right) = @_; return (version->parse($left->[0]) <=> version->parse($right->[0])); } } 1; __END__ =encoding utf-8 =head1 NAME URI::VersionRange::Version - Version scheme helper class =head1 SYNOPSIS package URI::VersionRange::Scheme::generic { use Version::libversion::XS qw(version_compare2); use parent 'URI::VersionRange::Version'; use overload ('cmp' => \&compare, '<=>' => \&compare, fallback => 1); sub compare { my ($left, $right) = @_; return version_compare2($left->[0], $right->[0]); } } my $vers = URI::VersionRange->from_string('vers:generic/>v1.00|!=v2.10|<=v3.00'); if ($vers->contains('v2.50')) { # do stuff } =head1 DESCRIPTION This is a base class for the version scheme helper. =head2 OBJECT-ORIENTED INTERFACE =head3 B $v = URI::VersionRange::Version->new( $value ) Create new B instance using provided version C. =head3 B $v->compare Compare the version =head3 B $v->from_native( $native_range ) Convert the native range of the scheme into a VERS string =head2 HOW TO CREATE A NEW SCHEME COMPARATOR CLASS =over 2 =item * Create a new package using the naming convention C<< URI::VersionRange::Scheme:: >> by extending L. =item * Implements the C subroutine with the algorithm required by the C. C<$left> and C<$right> arguments of C are C and have as their first element the value of the version to be compared. =item * L C<< '<=>' >> and C operators using C subroutine (MANDATORY) =item * Implement the C subroutine to convert the native range of the scheme into a VERS string =back This is an example that implements a comparator for the C scheme using L module: package URI::VersionRange::Scheme::generic { use Version::libversion::XS; use parent 'URI::VersionRange::Version'; use overload ('cmp' => \&compare, '<=>' => \&compare, fallback => 1); sub compare { my ($left, $right) = @_; return version_compare2($left->[0], $right->[0]); } } This is an another example for the C scheme using L module: package URI::VersionRange::Scheme::rpm { use RPM4; use parent 'URI::VersionRange::Version'; use overload ('cmp' => \&compare, '<=>' => \&compare, fallback => 1); sub compare { my ($left, $right) = @_; return rpmvercmp($left->[0], $right->[0]); } } =head1 SUPPORT =head2 Bugs / Feature Requests Please report any bugs or feature requests through the issue tracker at L. You will be notified automatically of any progress on your issue. =head2 Source Code This is open source software. The code repository is available for public review and contribution under the terms of the license. L git clone https://github.com/giterlizzi/perl-URI-PackageURL.git =head1 AUTHOR =over =item * Giuseppe Di Terlizzi =back =head1 LICENSE AND COPYRIGHT This software is copyright (c) 2022-2026 by Giuseppe Di Terlizzi. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut URI-PackageURL-2.24/lib/URI/VersionRange/Util.pm0000644000175000017500000003722615135504042020113 0ustar peppepeppepackage URI::VersionRange::Util; use feature ':5.10'; use strict; use utf8; use warnings; use Exporter qw(import); our $VERSION = '2.24'; our @EXPORT = qw( parse_semver normalize_semver is_semver native_range_to_vers version_compare semver_version_compare generic_version_compare ); # https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string my $SEMVER_REGEXP = qr{(?x) ^ (?P0|[1-9]\d*) \. (?P0|[1-9]\d*) \. (?P0|[1-9]\d*) (?:-(?P(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))? (?:\+(?P[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))? $ }; sub native_range_to_vers { my ($scheme, $range) = @_; my %TYPES = ( conan => \&_conan_native_range, gem => \&_gem_native_range, nginx => \&_nginx_native_range, npm => \&_semver_native_range, nuget => \&_nuget_native_range, raku => \&_raku_native_range, semver => \&_semver_native_range, ); if (defined $TYPES{$scheme}) { return sprintf 'vers:%s/%s', $scheme, $TYPES{$scheme}->($range); } my @parts = split /\,/, $range; map {s{\s+}{}g} @parts; return sprintf 'vers:%s/%s', $scheme, join '|', sort @parts; } sub _nginx_native_range { my $native = shift; $native =~ s/\s+//g; my @plus = (); my @others = (); my @p = split /,/, $native; foreach my $part (@p) { next unless length $part; # "1.0.0-1.0.1" if ($part =~ /^(.*?)-(.*)$/) { my $min = normalize_semver($1); my $max = normalize_semver($2); push @others, ">=$min|<=$max"; next; } # "1.0.1+" if ($part =~ /^\s*(.*?)\+\s*$/) { my $version = normalize_semver($1); push @plus, $version if defined $version; next; } if (my $v = normalize_semver($part)) { push @others, $v; next; } push @others, $part; } if (@plus) { my %seen = (); # Remove duplicates and sort @plus = sort { my $A = parse_semver($a); my $B = parse_semver($b); $A->{major} <=> $B->{major} || $A->{minor} <=> $B->{minor} || $A->{patch} <=> $B->{patch} } grep { !$seen{$_}++ } @plus; # One "+" if (@plus == 1) { my $semver = parse_semver($plus[0]); my $upper = join('.', $semver->{major}, $semver->{minor} + 1, 0); return join('|', (">=$plus[0]", "<$upper", @others)); } my @parts = (">=$plus[0]"); # Skip first plus for (my $i = 1; $i < @plus; $i++) { push @parts, "<$plus[$i]", ">=$plus[$i]"; } return join('|', @parts, @others); } return join('|', grep {$_} @others); } sub _nuget_native_range { my $native = shift; # https://learn.microsoft.com/en-us/nuget/concepts/package-versioning # Notation Applied rule Description # 1.0 x ≥ 1.0 Minimum version, inclusive # [1.0,) x ≥ 1.0 Minimum version, inclusive # (1.0,) x > 1.0 Minimum version, exclusive # [1.0] x == 1.0 Exact version match # (,1.0] x ≤ 1.0 Maximum version, inclusive # (,1.0) x < 1.0 Maximum version, exclusive # [1.0,2.0] 1.0 ≤ x ≤ 2.0 Exact range, inclusive # (1.0,2.0) 1.0 < x < 2.0 Exact range, exclusive # [1.0,2.0) 1.0 ≤ x < 2.0 Mixed inclusive minimum and exclusive maximum version # (1.0) invalid invalid my @parts = map { /^\((.*)\)$/ ? Carp::croak 'Invalid nuget version range' # (1.0) : /^\($/ ? '>0.0' # ( : /^\)$/ ? '' # ) : /^\[(.*)\]$/ ? $1 # [1.0] : /^\[(.*)/ ? ">=$1" # [1.0 : /(.*)\]$/ ? "<=$1" # 1.0] : /^\((.*)/ ? ">$1" # (1.0 : /(.*)\)$/ ? "<$1" # 1.0) : $_ # 1.0 } grep {$_} split /\,/, $native; return join('|', grep {$_} @parts); } sub _semver_native_range { my $native = shift; $native =~ s/^(.*)\s\-\s(.*)$/>= $1 <= $2/g; # TODO $native =~ s/(>\=|<\=|>|<)\s+/$1/g; my @p = grep {$_} split /(?:\s+|\|\|)/, $native; my @constraints = (); foreach my $part (@p) { $part =~ s{v(\d+)}{$1}; $part =~ s{^=}{}; $part =~ s/^\s+|\s+$//g; # Wildcards (1.x or 2.0.x) if (my @wildcards = _semver_wildcards('>=', $part)) { push @constraints, @wildcards; next; } # Tilde operator if ($part =~ /^(~)(.*)/) { push @constraints, _tilde_operator('semver', $2); next; } # Caret operator if ($part =~ /^(\^)(.*)/) { push @constraints, _caret_operator('semver', $2); next; } # Operators if ($part =~ /(>\=|<\=|>|<)(.*)/) { my ($operator, $version) = ($1, $2); # Wildcards (1.x or 2.0.x) if (my @wildcards = _semver_wildcards($operator, $version)) { push @constraints, @wildcards; next; } $version = normalize_semver($version); if ($version and is_semver($version)) { push @constraints, join('', $operator, $version); next; } } if ($part ne '*') { my $version = normalize_semver($part); if ($version and is_semver($version)) { push @constraints, normalize_semver($part); next; } } push @constraints, $part; } return join '|', @constraints; } sub _conan_native_range { my $native = shift; my @p = grep {$_} split /(?:\s+|\|\|)/, $native; my @parts = (); foreach my $part (@p) { $part =~ s{^=}{}g; $part =~ s{\-$}{}g; $part =~ s{\,}{}g; if ($part =~ /^(\*|\*\-)$/) { push @parts, '>=0.0.0'; next; } if ($part =~ /^(~)(.*)/) { push @parts, _tilde_operator('conan', $2); next; } if ($part =~ /^(\^)(.*)/) { push @parts, _caret_operator('conan', $2); next; } push @parts, $part; } return join '|', @parts; } sub _raku_native_range { my $native = shift; my @parts = map { /(.*)\+$/ ? ">=$1" # 1.0+ : /^(\d+)\.\*/ ? ">=$1" # 1.* : /^(\d+)\.(\d+)\.\*/ ? ">=$1.0" # 1.0.* : $_ # 1.0 } grep {$_} split /\,/, $native; return join('|', grep {$_} @parts); } sub _gem_native_range { # Convert GEM version spec to VERS range my $native = shift; # Specification From ... To (exclusive) # ">= 3.0" 3.0 ... ∞ # "~> 3.0" 3.0 ... 4.0 # "~> 3.0.0" 3.0.0 ... 3.1 # "~> 3.5" 3.5 ... 4.0 # "~> 3.5.0" 3.5.0 ... 3.6 # "~> 3" 3.0 ... 4.0 if ($native =~ /^(~>)(.*)/) { return _tilde_operator('gem', $2); } return $native; } sub _semver_wildcards { my ($operator, $term) = @_; $term =~ s/\s+//g; # >= major.x if ($operator eq '>=' && $term =~ /^(\d+)\.x(?:\.x)?$/) { my $major = $1; return (">=$major.0.0", '<' . ($major + 1) . ".0.0"); } # >= major.minor.x if ($operator eq '>=' && $term =~ /^(\d+)\.(\d+)\.x$/) { my ($major, $minor) = ($1, $2); return (">=$major.$minor.0", "<$major." . ($minor + 1) . ".0"); } return (); } sub _tilde_operator { my ($scheme, $version) = @_; $version =~ s/\s+//; my $semver = parse_semver($version); my $has_prerelease = defined($semver->{prerelease}) && ($semver->{prerelease} ne ''); my ($major, $minor, $patch) = @{$semver}{qw[major minor patch]}; if ($has_prerelease && defined $patch) { my $lower = join('.', $major, $minor, $patch); my $upper = join('.', $major, $minor, $patch + 1); return join '|', ">=$version", "<$lower", ">=$lower", "<$upper"; } my ($upper_major, $upper_minor, $upper_patch) = ($major, $minor, $patch); if ($patch > 0) { ($upper_minor, $upper_patch) = ($minor + 1, 0); } elsif ($minor > 0) { ($upper_minor, $upper_patch) = ($minor + 1, 0); } else { ($upper_major, $upper_minor, $upper_patch) = ($major + 1, 0, 0); } my @upper = ($upper_major, $upper_minor, $upper_patch); SWITCH: for ($scheme) { if (/gem/) { pop @upper; last SWITCH; } if (/conan/) { # strip trailing zeros pop @upper while @upper && $upper[-1] == 0; $upper[-1] .= '-'; last SWITCH; } } # >= min and < max version return join '|', ">=$version", sprintf('<%s', join('.', @upper)); } sub _caret_operator { my ($scheme, $version) = @_; $version =~ s/\s+//; my $semver = parse_semver($version); my ($major, $minor, $patch) = @{$semver}{qw[major minor patch]}; my ($upper_major, $upper_minor, $upper_patch) = ($major, $minor, $patch); if ($major > 0) { ($upper_major, $upper_minor, $upper_patch) = ($major + 1, 0, 0); } elsif ($minor > 0) { ($upper_minor, $upper_patch) = ($minor + 1, 0); } else { $upper_patch = $patch + 1; } my @upper = ($upper_major, $upper_minor, $upper_patch); SWITCH: for ($scheme) { if (/conan/) { # strip trailing zeros pop @upper while @upper && $upper[-1] == 0; $upper[-1] .= '-'; last SWITCH; } } # >= min and < max version return join '|', ">=$version", sprintf('<%s', join('.', @upper)); } sub is_semver { ($_[0] =~ /$SEMVER_REGEXP/) ? 1 : 0; } sub parse_semver { my $version = shift; # FIX semver (1 --> 1.0.0 or 1.0 -> 1.0.0) my @parts = split /\./, $version; $version = join '.', (@parts, 0, 0) if (@parts == 1); $version = join '.', (@parts, 0) if (@parts == 2); my %semver = (major => 0, minor => 0, patch => 0, prerelease => undef, buildmetadata => undef); if ($version =~ /$SEMVER_REGEXP/) { %semver = map { $_ => $+{$_} } qw[major minor patch prerelease buildmetadata]; } return wantarray ? %semver : \%semver; } sub normalize_semver { return unless $_[0]; return hash_to_semver(parse_semver($_[0])); } sub hash_to_semver { my %hash = (major => 0, minor => 0, patch => 0, prerelease => undef, buildmetadata => undef, @_); my $semver = join '.', $hash{major}, $hash{minor}, $hash{patch}; $semver .= '-' . $hash{prerelease} if $hash{prerelease}; $semver .= '+' . $hash{buildmetadata} if $hash{buildmetadata}; return $semver; } sub version_compare { my $scheme = shift; my %TYPES = (npm => \&semver_version_compare, semver => \&semver_version_compare); if (defined $TYPES{$scheme}) { return $TYPES{$scheme}->(@_); } return generic_version_compare(@_); } # Semver compare sub semver_version_compare { return 0 if $_[0] eq $_[1]; my $a = parse_semver($_[0]); my $b = parse_semver($_[1]); my $major_cmp = $a->{major} <=> $b->{major}; return $major_cmp if $major_cmp != 0; my $minor_cmp = $a->{minor} <=> $b->{minor}; return $minor_cmp if $minor_cmp != 0; my $patch_cmp = $a->{patch} <=> $b->{patch}; return $patch_cmp if $patch_cmp != 0; return -1 if defined $a->{prerelease} && !defined $b->{prerelease}; return 1 if !defined $a->{prerelease} && defined $b->{prerelease}; return 0 if !defined $a->{prerelease} && !defined $b->{prerelease}; if (defined $a->{prerelease} && defined $b->{prerelease}) { my @pre_a = split(/\./, $a->{prerelease}); my @pre_b = split(/\./, $b->{prerelease}); my $min = @pre_a < @pre_b ? scalar(@pre_a) : scalar(@pre_b); for my $i (0 .. $min - 1) { my $pre_cmp = _cmp_prerelease($pre_a[$i], $pre_b[$i]); return $pre_cmp if $pre_cmp != 0; } return @pre_a <=> @pre_b; } return 0; } sub _cmp_prerelease { my ($a, $b) = @_; if ($a =~ /^\d+$/ && $b =~ /^\d+$/) { return $a <=> $b; } if ($a =~ /^\d+$/ || $b =~ /^\d+$/) { return $a =~ /^\d+$/ ? -1 : 1; } return $a cmp $b; } # Optimized version of Sort::Version sub generic_version_compare { my ($a, $b) = @_; $a =~ s/^[vV]//; $b =~ s/^[vV]//; return 0 if $a eq $b; my @A = ($a =~ /([-.]|\d+|[^-.\d]+)/g); my @B = ($b =~ /([-.]|\d+|[^-.\d]+)/g); my ($A, $B); while (@A and @B) { $A = shift @A; $B = shift @B; return -1 if $A eq '-' && $B ne '-'; return 1 if $B eq '-' && $A ne '-'; return -1 if $A eq '.' && $B ne '.'; return 1 if $B eq '.' && $A ne '.'; next if $A eq '-' && $B eq '-'; next if $A eq '.' && $B eq '.'; if ($A =~ /^\d+$/ and $B =~ /^\d+$/) { my $num_cmp = ($A =~ /^0/ || $B =~ /^0/) ? ($A cmp $B) : ($A <=> $B); return $num_cmp if $num_cmp; } else { my $str_cmp = uc($A) cmp uc($B); return $str_cmp; } } return @A <=> @B; } 1; __END__ =encoding utf-8 =head1 NAME URI::VersionRange::Util - Utility for URI::VersionRange =head1 SYNOPSIS use URI::VersionRange::Util qw(native_range_to_vers); $vers = native_range_to_vers('npm', '~1.6.5 || >=1.7.2'); # vers:npm/>=1.6.5|<1.7.0|>=1.7.2' =head1 DESCRIPTION URL::VersionRange::Util is the utility package for URL::VersionRange. =over =item $string = native_range_to_vers($scheme, $native_range) Converts the specified native range string and returns the corresponding VERS string. $vers = native_range_to_vers('npm', '~1.6.5 || >=1.7.2'); # vers:npm/>=1.6.5|<1.7.0|>=1.7.2' Supported native range scheme: =over =item conan =item gem =item nginx =item npm =item nuget =item raku =item semver =back For other schemes, C will attempt to convert the native range string to a VERS string, but this may not work perfectly. =back =head2 Version compare utility =over =item $int = version_compare($scheme, $a, $b) =item $int = generic_version_compare($a, $b) =item $int = semver_version_compare($a, $b) =back =head2 Semver utility =over =item $string = hash_to_semver(%hash) =item $bool = is_semver($string) =item $string = normalize_semver($string) =item %hash = parse_semver($string) =back =head1 SUPPORT =head2 Bugs / Feature Requests Please report any bugs or feature requests through the issue tracker at L. You will be notified automatically of any progress on your issue. =head2 Source Code This is open source software. The code repository is available for public review and contribution under the terms of the license. L git clone https://github.com/giterlizzi/perl-URI-PackageURL.git =head1 AUTHOR =over =item * Giuseppe Di Terlizzi =back =head1 LICENSE AND COPYRIGHT This software is copyright (c) 2022-2026 by Giuseppe Di Terlizzi. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut URI-PackageURL-2.24/lib/URI/VersionRange/Constraint.pm0000644000175000017500000001267515135504042021323 0ustar peppepeppepackage URI::VersionRange::Constraint; use feature ':5.10'; use strict; use utf8; use warnings; use Carp (); use Exporter qw(import); use overload '""' => 'to_string', fallback => 1; use URI::VersionRange::Version; our $VERSION = '2.24'; our %COMPARATOR = ( '=' => 'equal', '<' => 'less than', '<=' => 'less than or equal', '>' => 'greater than', '>=' => 'greater than or equal', ); sub new { my ($class, %params) = @_; my $comparator = delete $params{comparator} // '='; my $version = delete $params{version}; my $self = {comparator => $comparator, version => $version}; return bless $self, $class; } sub version { shift->{version} } sub comparator { shift->{comparator} } sub from_string { my ($class, $string) = @_; Carp::croak 'Empty version' unless $string; # - For each : # - Determine if the starts with one of the two comparators: # - If it starts with ">=", then the comparator is ">=". # - If it starts with "<=", then the comparator is "<=". # - If it starts with "!=", then the comparator is "!=". # - If it starts with "<", then the comparator is "<". # - If it starts with ">", then the comparator is ">". # - Remove the comparator from string start. The remaining string is the version. # - Otherwise the version is the full string (which implies an equality comparator of "=") # - Tools should validate and report an error if the version is empty. # - If the version contains a percent "%" character, apply URL quoting rules to unquote this string. if ($string =~ /^(>=|<=|!=|<|>)(.*)/) { my ($comparator, $version) = ($1, $2); return $class->new(comparator => $comparator, version => $version); } return $class->new(comparator => '*') if ($string eq '*'); return $class->new(comparator => '=', version => $string); } sub to_string { my $self = shift; return '*' if $self->comparator eq '*'; return $self->version if $self->comparator eq '='; return join '', $self->comparator, $self->version; } sub to_human_string { sprintf '%s %s', $COMPARATOR{$_[0]->comparator}, $_[0]->version } sub TO_JSON { {version => $_[0]->version, comparator => $_[0]->comparator} } 1; __END__ =encoding utf-8 =head1 NAME URI::VersionRange::Constraint - Version Constraint for Version Range Specification =head1 SYNOPSIS use URI::VersionRange::Constraint; # OO-interface $constraint = URI::VersionRange::Constraint->new( comparator => '>', version => '2.00' ); say $constraint; # >2.00 # Parse "vers" string $constraint = URI::VersionRange::Constraint->from_string('>2.00'); =head1 DESCRIPTION A version range specifier (aka. "vers") is a URI string using the C URI-scheme with this syntax: vers:/||... C is the URI-scheme and is an acronym for "VErsion Range Specifier". The pipe "|" is used as a simple separator between C. Each C in this pipe-separated list contains a comparator and a version: This list of C are signposts in the version timeline of a package that specify version intervals. A C satisfies a version range specifier if it is contained within any of the intervals defined by these C. L =head2 OBJECT-ORIENTED INTERFACE =head3 B $constraint = URI::VersionRange::Constraint->new( comparator => STRING, version => STRING ) Create new B instance. =head3 B $constraint->comparator Return the comparator. =head3 B $constraint->version Return the version string. =head3 B $vers->to_string Stringify C components. =head3 B $vers->to_human_string Convert the constraint into human-readable format. $constraint = URI::VersionRange::Constraint->new( comparator => '>=', version => '2.10' ); say $constraint->to_human_string; # greater than or equal 2.10 =head3 B $vers->TO_JSON Helper method for JSON modules (L, L, L, L, etc). use Mojo::JSON qw(encode_json); say encode_json($constraint); # {"comparator":">","version":"2.00"} =head3 B $vers = URI::VersionRange::Constraint->from_string($vers_string); Converts the given "constraint" string to L object. Croaks on error. =head1 SUPPORT =head2 Bugs / Feature Requests Please report any bugs or feature requests through the issue tracker at L. You will be notified automatically of any progress on your issue. =head2 Source Code This is open source software. The code repository is available for public review and contribution under the terms of the license. L git clone https://github.com/giterlizzi/perl-URI-PackageURL.git =head1 AUTHOR =over =item * Giuseppe Di Terlizzi =back =head1 LICENSE AND COPYRIGHT This software is copyright (c) 2022-2026 by Giuseppe Di Terlizzi. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut URI-PackageURL-2.24/lib/URI/VersionRange/App.pm0000644000175000017500000000646215135504042017714 0ustar peppepeppepackage URI::VersionRange::App; use feature ':5.10'; use strict; use warnings; use utf8; use Getopt::Long qw(GetOptionsFromArray :config gnu_compat); use Pod::Usage qw(pod2usage); use Carp (); use JSON::PP (); use Data::Dumper (); use URI::VersionRange (); our $VERSION = '2.24'; sub cli_error { my ($error) = @_; $error =~ s/ at .* line \d+.*//; print STDERR "ERROR: $error\n"; } sub run { my ($class, @args) = @_; my %options = (format => 'json'); GetOptionsFromArray( \@args, \%options, qw( help man v contains=s null|0 format=s json human-readable|h ) ) or pod2usage(-verbose => 0); pod2usage(-exitstatus => 0, -verbose => 2) if defined $options{man}; pod2usage(-exitstatus => 0, -verbose => 0) if defined $options{help}; if (defined $options{v}) { (my $progname = $0) =~ s/.*\///; say <<"VERSION"; $progname version $URI::VersionRange::VERSION Copyright 2022-2026, Giuseppe Di Terlizzi This program is part of the "URI-PackageURL" distribution and is free software; you can redistribute it and/or modify it under the same terms as Perl itself. Complete documentation for $progname can be found using 'man $progname' or on the internet at . VERSION return 0; } my ($vers_string) = @args; pod2usage(-verbose => 1) if !$vers_string; $options{format} = 'json' if defined $options{json}; $options{format} = 'human-readable' if defined $options{'human-readable'}; my $vers = eval { URI::VersionRange->from_string($vers_string) }; if ($@) { cli_error($@); return 1; } if (defined $options{contains}) { my $vers_comparator_class = join '::', 'URI::VersionRange::Version', $vers->scheme; if (!$vers_comparator_class->can('new')) { say STDERR 'WARNING: Loaded the fallback scheme class comparator.'; say STDERR ' The comparison may not work correctly!'; } my $res = eval { $vers->contains($options{contains}) }; if ($@) { cli_error($@); return 1; } say STDERR $res ? 'true' : 'false'; return !$res; } if ($options{format} eq 'json') { print JSON::PP->new->canonical->pretty(1)->convert_blessed(1)->encode($vers); return 0; } if ($options{format} eq 'human-readable') { say $vers->scheme; say "- " . $_->to_human_string for (@{$vers->constraints}); return 0; } } 1; __END__ =encoding utf-8 =head1 NAME URI::VersionRange::App - URI::VersionRange (vers) Command Line Interface =head1 SYNOPSIS use URI::VersionRange::App qw(run); run(\@ARGV); =head1 DESCRIPTION URI::VersionRange::App "Command Line Interface" helper module for C. =over =item URI::VersionRange->run(@args) Execute the command =item cli_error($error) Clean error =back =head1 AUTHOR L =head1 COPYRIGHT AND LICENSE Copyright © 2022-2026 L You may use and distribute this module according to the same terms that Perl is distributed under. =cut URI-PackageURL-2.24/lib/URI/PackageURL/0000755000175000017500000000000015135504367016154 5ustar peppepeppeURI-PackageURL-2.24/lib/URI/PackageURL/types/0000755000175000017500000000000015135504367017320 5ustar peppepeppeURI-PackageURL-2.24/lib/URI/PackageURL/types/otp-definition.json0000644000175000017500000000657715135504042023150 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/otp-definition.json", "type": "otp", "type_name": "BEAM/OTP Application", "description": "BEAM/OTP applications written in Elixir, Erlang, Gleam and other BEAM languages", "note": "- If the component was fetched from a Hex repository, prefer a ``hex`` purl\n because Hex provides a global, collision-free namespace that uniquely ties\n the version to the published source.\n- There is no default package repository. When the application can be\n fetched from a known location, add a general qualifier such as\n `repository_url`, `download_url` or `vcs_url`.", "repository": { "use_repository": false }, "namespace_definition": { "requirement": "prohibited", "note": "The component is unused and MUST be empty" }, "name_definition": { "case_sensitive": false, "native_name": "name", "note": "The OTP application name from the `.app` file; it is case-insensitive and MUST be lower-cased.", "requirement": "required" }, "version_definition": { "native_name": "version", "note": "The OTP application version (the `vsn` attribute).", "requirement": "optional" }, "subpath_definition": { "case_sensitive": false, "native_name": "May be added to reference a specific file or directory inside the OTP application.", "requirement": "optional" }, "qualifiers_definition": [ { "key": "repository_url", "requirement": "optional", "native_name": "Repository URL", "description": "The canonical origin of the OTP application source. This qualifier is optional, but it should be included whenever the origin is known, and should point to a trusted source repository." }, { "key": "platform", "requirement": "optional", "native_name": "platform", "description": "The target operating system for native code (e.g. ``linux``, ``darwin``, ``freebsd``, ``sunos``, ``win32``; case-insensitive)." }, { "key": "arch", "requirement": "optional", "native_name": "arch", "description": "The arch is the qualifiers key for a package architecture." } ], "examples": [ "pkg:otp/erts@10.6.3?platform=linux&arch=amd64&repository_url=https:%2F%2Fgithub.com%2Ferlang%2Fotp&vcs_url=git%2Bhttps:%2F%2Fgithub.com%2Ferlang%2Fotp.git", "pkg:otp/stdlib@3.11.2?repository_url=https:%2F%2Fgithub.com%2Ferlang%2Fotp&vcs_url=git%2Bhttps:%2F%2Fgithub.com%2Ferlang%2Fotp.git", "pkg:otp/crypto@4.6.4?platform=darwin&arch=x86_64&repository_url=https:%2F%2Fgithub.com%2Ferlang%2Fotp&vcs_url=git%2Bhttps:%2F%2Fgithub.com%2Ferlang%2Fotp.git", "pkg:otp/elixir@1.10.0?repository_url=https:%2F%2Fgithub.com%2Felixir-lang%2Felixir&vcs_url=git%2Bhttps:%2F%2Fgithub.com%2Felixir-lang%2Felixir.git", "pkg:otp/eex@1.10.0?repository_url=https:%2F%2Fgithub.com%2Felixir-lang%2Felixir&vcs_url=git%2Bhttps:%2F%2Fgithub.com%2Felixir-lang%2Felixir.git", "pkg:otp/logger@1.10.0?repository_url=https:%2F%2Fgithub.com%2Felixir-lang%2Felixir&vcs_url=git%2Bhttps:%2F%2Fgithub.com%2Felixir-lang%2Felixir.git", "pkg:otp/rebar@3.13.0?repository_url=https:%2F%2Fgithub.com%2Ferlang%2Frebar3&vcs_url=git%2Bhttps:%2F%2Fgithub.com%2Ferlang%2Frebar3.git", "pkg:otp/hex@2.1.1?repository_url=https:%2F%2Fgithub.com%2Fhexpm%2Fhex&vcs_url=git%2Bhttps:%2F%2Fgithub.com%2Fhexpm%2Fhex.git" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/golang-definition.json0000644000175000017500000000305215135504042023576 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/golang-definition.json", "type": "golang", "type_name": "Go package", "description": "Go packages", "repository": { "use_repository": true, "note": "There is no default package repository, this is implied in the namespace using the go get command conventions. In practice the Go module proxy acts as a public default repository." }, "namespace_definition": { "requirement": "required", "case_sensitive": false, "note": "The namespace must be lowercased." }, "name_definition": { "requirement": "required", "case_sensitive": false, "note": "The name must be lowercased." }, "subpath_definition": { "requirement": "optional", "note": "The subpath is used to point to a subpath inside a package." }, "note": "The current definition predates Go modules and has several practical problems, and in particular it is impossible to determine what is a module and what is a package short of having full access to the source code or making an API call to the Go module proxy.", "version_definition": { "requirement": "optional", "note": "The version is often empty when a commit is not specified and should be the commit in most cases when available." }, "examples": [ "pkg:golang/github.com/gorilla/context@234fd47e07d1004f0aed9c", "pkg:golang/google.golang.org/genproto#googleapis/api/annotations", "pkg:golang/github.com/gorilla/context@234fd47e07d1004f0aed9c#api" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/alpm-definition.json0000644000175000017500000000351315135504042023262 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/alpm-definition.json", "type": "alpm", "type_name": "Arch Linux package", "description": "Arch Linux packages and other users of the libalpm/pacman package manager.", "repository": { "use_repository": true, "note": "There is no default package repository; this should be implied either from the distro qualifiers key or using a repository base url as repository_url qualifiers key." }, "namespace_definition": { "requirement": "required", "note": "The namespace is the vendor such as arch, arch32, archarm, manjaro or msys.", "case_sensitive": false, "native_name": "vendor", "normalization_rules": [ "It is not case sensitive and must be lowercased." ] }, "name_definition": { "requirement": "required", "note": "The name is the package name. It is not case sensitive and must be lowercased.", "case_sensitive": false, "native_name": "name" }, "version_definition": { "requirement": "optional", "native_name": "version", "note": "The version is the version of the package as specified in vercmp(8) at (https://man.archlinux.org/man/vercmp.8#DESCRIPTION as part of alpm.", "case_sensitive": true, "normalization_rules": [ "normalize version as specified in vercmp(8) at https://man.archlinux.org/man/vercmp.8#DESCRIPTION as part of alpm." ] }, "qualifiers_definition": [ { "key": "arch", "requirement": "optional", "native_name": "arch", "description": "The arch is the qualifiers key for a package architecture." } ], "examples": [ "pkg:alpm/arch/pacman@6.0.1-1?arch=x86_64", "pkg:alpm/arch/python-pip@21.0-1?arch=any", "pkg:alpm/arch/containers-common@1:0.47.4-4?arch=x86_64" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/huggingface-definition.json0000644000175000017500000000253115135504042024577 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/huggingfaces-definition.json", "type": "huggingface", "type_name": "HuggingFace models", "description": "Hugging Face ML models", "repository": { "use_repository": true, "note": "The default repository is https://huggingface.co." }, "namespace_definition": { "requirement": "required", "case_sensitive": true, "native_name": "model repository username or organization", "note": "The namespace is the model repository username or organization, if present. It is case sensitive." }, "name_definition": { "requirement": "required", "case_sensitive": true, "native_name": "model repository name", "note": "The name is the model repository name. It is case sensitive." }, "version_definition": { "requirement": "optional", "case_sensitive": false, "native_name": "model revision Git commit hash", "note": "The version is the model revision Git commit hash. It is case insensitive and must be lowercased in the package URL." }, "examples": [ "pkg:huggingface/distilbert-base-uncased@043235d6088ecd3dd5fb5ca3592b6913fd516027", "pkg:huggingface/microsoft/deberta-v3-base@559062ad13d311b87b2c455e67dcd5f1c8f65111?repository_url=https://hub-ci.huggingface.co" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/rpm-definition.json0000644000175000017500000000304215135504042023124 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/rpm-definition.json", "type": "rpm", "type_name": "RPM", "description": "RPM packages", "repository": { "use_repository": true, "note": "There is no default package repository, this should be implied either from the distro qualifiers key or using a repository base URL as repository_url qualifiers key." }, "namespace_definition": { "case_sensitive": false, "native_name": "vendor", "note": "The namespace is the vendor such as Fedora or OpenSUSE. It is not case sensitive and must be lowercased.", "requirement": "required" }, "name_definition": { "requirement": "required", "case_sensitive": true, "note": "The name is the RPM name and is case sensitive.", "native_name": "name" }, "version_definition": { "requirement": "optional", "note": "The version is the combined version and release of an RPM.", "native_name": "version-release" }, "qualifiers_definition": [ { "key": "epoch", "requirement": "optional", "description": "(optional for RPMs) is a qualifier as its not required for unique identification, but when the epoch exists we strongly encourage using it." }, { "key": "arch", "description": "the qualifiers key for a package architecture." } ], "examples": [ "pkg:rpm/fedora/curl@7.50.3-1.fc25?arch=i386&distro=fedora-25", "pkg:rpm/centerim@4.22.10-1.el6?arch=i686&epoch=1&distro=fedora-25" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/nuget-definition.json0000644000175000017500000000220015135504042023443 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/nuget-definition.json", "type": "nuget", "type_name": "NuGet", "description": "NuGet .NET packages", "repository": { "use_repository": true, "default_repository_url": "https://www.nuget.org" }, "namespace_definition": { "requirement": "prohibited", "note": "there is no namespace" }, "name_definition": { "requirement": "required", "native_name": "version", "case_sensitive": true, "note": "Technically the name is case-perserving, but case-insensitive, and NuGet packages archives are case-perserving, while some NuGet API calls demand to lowercase the package name." }, "version_definition": { "requirement": "optional", "native_name": "version", "note": "The NuGet version is semver-like but may contain more than three segments" }, "note": "There is no namespace per se even if the common convention is to use dot-separated package names where the first segment is namespace-like.", "examples": [ "pkg:nuget/EnterpriseLibrary.Common@6.0.1304" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/hex-definition.json0000644000175000017500000000213615135504042023115 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/hex-definition.json", "type": "hex", "type_name": "Hex", "description": "Hex packages", "repository": { "use_repository": true, "default_repository_url": "https://repo.hex.pm" }, "namespace_definition": { "requirement": "optional", "case_sensitive": false, "native_name": "organization for private packages", "note": "The namespace is optional; it may be used to specify the organization for private packages on hex.pm. It is not case sensitive and must be lowercased." }, "name_definition": { "requirement": "required", "case_sensitive": false, "native_name": "name", "note": "The name is not case sensitive and must be lowercased." }, "version_definition": { "requirement": "optional", "native_name": "version" }, "examples": [ "pkg:hex/jason@1.1.2", "pkg:hex/acme/foo@2.3.", "pkg:hex/phoenix_html@2.13.3#priv/static/phoenix_html.js", "pkg:hex/bar@1.2.3?repository_url=https://myrepo.example.com" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/hackage-definition.json0000644000175000017500000000170615135504042023716 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/hackage-definition.json", "type": "hackage", "type_name": "Haskell package", "description": "Haskell packages", "repository": { "use_repository": true, "default_repository_url": "https://hackage.haskell.org" }, "namespace_definition": { "requirement": "prohibited", "note": "there is no namespace" }, "name_definition": { "requirement": "required", "case_sensitive": true, "native_name": "name", "normalization_rules": [ "Apply kebab-case" ], "note": "The name is case sensitive and use kebab-case." }, "version_definition": { "requirement": "optional", "native_name": "version", "note": "The version is package version." }, "examples": [ "pkg:hackage/a50@0.5", "pkg:hackage/AC-HalfInteger@1.2.1", "pkg:hackage/3d-graphics-examples@0.0.0.2" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/julia-definition.json0000644000175000017500000000245715135504042023443 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/julia-definition.json", "type": "julia", "type_name": "Julia Package", "description": "Julia packages", "repository": { "use_repository": true, "default_repository_url": "https://github.com/JuliaRegistries/General" }, "namespace_definition": { "requirement": "prohibited", "note": "there is no namespace" }, "name_definition": { "requirement": "required", "native_name": "name", "case_sensitive": true, "note": "The name is the package name (without a `.jl` suffix). The name is case sensitive." }, "version_definition": { "native_name": "version", "note": "The version is the package version." }, "qualifiers_definition": [ { "key": "uuid", "native_name": "uuid", "requirement": "required", "description": "The Julia package UUID." } ], "examples": [ "pkg:julia/Dates@1.9.0?uuid=ade2ca70-3891-5945-98fb-dc099432e06a", "pkg:julia/Dates?uuid=ade2ca70-3891-5945-98fb-dc099432e06a", "pkg:julia/RegisterQD@0.3.1?uuid=ac24ea0c-1830-11e9-18d4-81f172323054", "pkg:julia/RegisterQD@0.3.1?uuid=ac24ea0c-1830-11e9-18d4-81f172323054&repository_url=https://github.com/HolyLab/HolyLabRegistry" ] }URI-PackageURL-2.24/lib/URI/PackageURL/types/apk-definition.json0000644000175000017500000000262615135504042023110 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/apk-definition.json", "type": "apk", "type_name": "APK-based packages", "description": "Alpine Linux APK-based packages", "repository": { "use_repository": true, "note": "There is no default package repository; this should be implied either from the distro qualifiers key or using a repository base url as repository_url qualifiers key." }, "namespace_definition": { "requirement": "required", "note": "The namespace is the vendor such as alpine or openwrt. It is not case sensitive and must be lowercased.", "native_name": "vendor", "case_sensitive": false }, "name_definition": { "requirement": "required", "note": "The name is the package name. It is not case sensitive and must be lowercased.", "native_name": "name", "case_sensitive": false }, "version_definition": { "requirement": "optional", "note": "The version is a package version as expected by apk.", "native_name": "version" }, "qualifiers_definition": [ { "key": "arch", "description": "The arch is the qualifiers key for a package architecture." } ], "examples": [ "pkg:apk/alpine/curl@7.83.0-r0?arch=x86", "pkg:apk/alpine/apk@2.12.9-r3?arch=x86" ], "note": "not to be confused with Android packages with a .apk extension." } URI-PackageURL-2.24/lib/URI/PackageURL/types/docker-definition.json0000644000175000017500000000165615135504042023606 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/docker-definition.json", "type": "docker", "type_name": "Docker image", "description": "for Docker images", "repository": { "use_repository": true, "default_repository_url": "https://hub.docker.com" }, "namespace_definition": { "note": "The namespace is the registry/user/organization if present.", "requirement": "optional" }, "name_definition": { "requirement": "required", "native_name": "name" }, "version_definition": { "requirement": "optional", "note": "The version should be the image id sha256 or a tag. Since tags can be moved, a sha256 image id is preferred." }, "examples": [ "pkg:docker/cassandra@latest", "pkg:docker/smartentry/debian@dc437cc87d10", "pkg:docker/customer/dockerimage@sha256%3A244fd47e07d10?repository_url=gcr.io" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/qpkg-definition.json0000644000175000017500000000163415135504042023275 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/qpkg-definition.json", "type": "qpkg", "type_name": "QNX package", "description": "QNX packages", "repository": { "use_repository": true, "note": "There is no default package repository, this should be implied either from the namespace or using a repository base URL as repository_url qualifiers key." }, "namespace_definition": { "case_sensitive": false, "native_name": "vendor", "note": "The namespace is the vendor of the package. It is not case sensitive and must be lowercased.", "requirement": "required" }, "name_definition": { "requirement": "required", "native_name": "name" }, "examples": [ "pkg:qpkg/blackberry/com.qnx.sdp@7.0.0.SGA201702151847", "pkg:qpkg/blackberry/com.qnx.qnx710.foo.bar.qux@0.0.4.01449T202205040833L" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/cocoapods-definition.json0000644000175000017500000000225715135504042024307 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/cocoapods-definition.json", "type": "cocoapods", "type_name": "CocoaPods", "description": "CocoaPods pods", "repository": { "use_repository": true, "default_repository_url": "https://cdn.cocoapods.org/" }, "namespace_definition": { "requirement": "prohibited", "note": "there is no namespace" }, "name_definition": { "requirement": "required", "case_sensitive": true, "native_name": "pod name", "note": "The name is the pod name and is case sensitive, cannot contain whitespace, a plus (+) character, or begin with a period (.)." }, "version_definition": { "requirement": "optional", "native_name": "package version", "note": "The version is the package version." }, "subpath_definition": { "requirement": "optional", "note": "The purl subpath is used to represent a pods subspec (if present)." }, "examples": [ "pkg:cocoapods/AFNetworking@4.0.1", "pkg:cocoapods/MapsIndoors@3.24.0", "pkg:cocoapods/ShareKit@2.0#Twitter", "pkg:cocoapods/GoogleUtilities@7.5.2#NSData+zlib" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/swift-definition.json0000644000175000017500000000165315135504042023470 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/swift-definition.json", "type": "swift", "type_name": "Swift packages", "description": "Swift packages", "repository": { "use_repository": true, "note": "There is no default package repository, this should be implied from namespace." }, "namespace_definition": { "requirement": "required", "note": "The namespace is source host and user/organization and is required.", "case_sensitive": true }, "name_definition": { "requirement": "required", "case_sensitive": true, "native_name": "repository name" }, "version_definition": { "requirement": "optional", "case_sensitive": true, "native_name": "package version" }, "examples": [ "pkg:swift/github.com/Alamofire/Alamofire@5.4.3", "pkg:swift/github.com/RxSwiftCommunity/RxFlow@2.12.4" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/bazel-definition.json0000644000175000017500000000410015135504042023417 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type.schema-1.0.json", "$id": "https://packageurl.org/types/bazel-definition.json", "type": "bazel", "type_name": "Bazel modules", "description": "Bazel modules as specified at https://bazel.build/external/module", "repository": { "use_repository": true, "default_repository_url": "https://bcr.bazel.build", "note": "The default repository is the Bazel Central Registry (BCR)" }, "namespace_definition": { "requirement": "prohibited", "note": "Bazel modules do not use namespaces" }, "name_definition": { "requirement": "required", "note": "The name as defined in the MODULE.bazel file" }, "version_definition": { "requirement": "required", "note": "The version as defined in the MODULE.bazel file. Uses a relaxed semantic versioning format described at https://bazel.build/external/module#version-format." }, "subpath_definition": { "requirement": "optional", "native_name": "label", "note": "The optional subpath MAY refer to a label of a particular package or target in the module (https://bazel.build/concepts/labels). The label MUST NOT include a repo name and the leading '//' MUST be omitted. When referring to targets, the label MUST include the name of the target, separated from the package by ':'. If there is no target name, subpath is assumed to refer to the whole package." }, "qualifiers_definition": [ { "key": "repository_url", "native_name": "registry", "requirement": "optional", "default_value": "https://bcr.bazel.build", "description": "The URL of the registry that hosts this Bazel module. If not specified, it defaults to the BCR URL." } ], "examples": [ "pkg:bazel/rules_java@7.8.0", "pkg:bazel/curl@8.8.0.bcr.1", "pkg:bazel/curl@8.8.0?repository_url=https://example.org/bazel-registry", "pkg:bazel/rules_java@8.5.0#java/runfiles", "pkg:bazel/rules_java@8.5.0#java/runfiles:runfiles", "pkg:bazel/rules_go@0.48.0#go" ], "reference_urls": [ "https://bazel.build/external/module" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/composer-definition.json0000644000175000017500000000175215135504042024163 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/composer-definition.json", "type": "composer", "type_name": "Composer", "description": "Composer PHP packages", "repository": { "use_repository": true, "default_repository_url": "https://packagist.org" }, "namespace_definition": { "requirement": "required", "case_sensitive": false, "native_name": "vendor", "note": "The namespace is the vendor. The namespace is not case sensitive and must be lowercased." }, "name_definition": { "requirement": "required", "case_sensitive": false, "native_name": "name", "note": "The name is not case sensitive and must be lowercased. Private, local packages may have no name. In this case you cannot create a purl for these." }, "version_definition": { "requirement": "optional", "native_name": "version" }, "examples": [ "pkg:composer/laravel/laravel@5.5.0" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/conan-definition.json0000644000175000017500000000530715135504042023432 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/conan-definition.json", "type": "conan", "type_name": "Conan C/C++ packages", "description": "Conan C/C++ packages. The purl is designed to closely resemble the Conan-native /@/ syntax for package references as specified in https://docs.conan.io/en/1.46/cheatsheet.html#package-terminology", "repository": { "use_repository": true, "default_repository_url": "https://center.conan.io" }, "namespace_definition": { "requirement": "optional", "native_name": "vendor", "note": "The vendor of the package." }, "name_definition": { "requirement": "required", "native_name": "package-name", "note": "The Conan ." }, "version_definition": { "requirement": "optional", "native_name": "package-version", "note": "The Conan ." }, "qualifiers_definition": [ { "key": "user", "native_name": "user", "requirement": "optional", "description": "The Conan . Only required if the Conan package was published with ." }, { "key": "channel", "native_name": "channel", "requirement": "optional", "description": "The Conan . Only required if the Conan package was published with Conan ." }, { "key": "rrev", "native_name": "recipe revision", "requirement": "optional", "description": "The Conan recipe revision (optional). If omitted, the purl refers to the latest recipe revision available for the given version." }, { "key": "prev", "native_name": "package revision", "requirement": "optional", "description": "The Conan package revision (optional). If omitted, the purl refers to the latest package revision available for the given version and recipe revision." } ], "note": "Additional qualifiers can be used to distinguish Conan packages with different settings or options, e.g. os=Linux, build_type=Debug or shared=True. If no additional qualifiers are used to distinguish Conan packages build with different settings or options, then the purl is ambiguous and it is up to the user to work out which package is being referred to (e.g. with context information).", "examples": [ "pkg:conan/openssl@3.0.3", "pkg:conan/openssl.org/openssl@3.0.3?user=bincrafters&channel=stable", "pkg:conan/openssl.org/openssl@3.0.3?arch=x86_64&build_type=Debug&compiler=Visual%20Studio&compiler.runtime=MDd&compiler.version=16&os=Windows&shared=True&rrev=93a82349c31917d2d674d22065c7a9ef9f380c8e&prev=b429db8a0e324114c25ec387bfd8281f330d7c5c" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/github-definition.json0000644000175000017500000000211515135504042023610 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/github-definition.json", "type": "github", "type_name": "GitHub", "description": "GitHub-based packages", "repository": { "use_repository": true, "default_repository_url": "https://github.com" }, "namespace_definition": { "requirement": "required", "case_sensitive": false, "native_name": "user or organization", "note": "The namespace is the user or organization. It is not case sensitive and must be lowercased." }, "name_definition": { "requirement": "required", "case_sensitive": false, "native_name": "repository name", "note": "The name is the repository name. It is not case sensitive and must be lowercased." }, "version_definition": { "requirement": "optional", "native_name": "commit or tag", "note": "The version is a commit or tag." }, "examples": [ "pkg:github/package-url/purl-spec@244fd47e07d1004", "pkg:github/package-url/purl-spec@244fd47e07d1004#everybody/loves/dogs" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/maven-definition.json0000644000175000017500000000440015135504042023433 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/maven-definition.json", "type": "maven", "type_name": "Maven", "description": "PURL type for Maven JARs and related artifacts.", "repository": { "use_repository": true, "default_repository_url": "https://repo.maven.apache.org/maven2/", "note": "The Maven Central repository is the public repository for Apache Maven packages. This repository is also mirrored at https://repo1.maven.org/maven2/. Use the standard repository_url qualifier to point to another repository" }, "namespace_definition": { "requirement": "required", "case_sensitive": true, "native_name": "groupId", "note": "The group id is the namespace." }, "name_definition": { "requirement": "required", "case_sensitive": true, "native_name": "artifactId", "note": "The artifact id is the name." }, "version_definition": { "requirement": "optional", "case_sensitive": true, "native_name": "version" }, "qualifiers_definition": [ { "key": "classifier", "requirement": "optional", "description": "The maven classifier as defined in the POM documentation.", "native_name": "classifier" }, { "key": "type", "requirement": "optional", "description": "The maven type as defined in the POM documentation. Note that Maven uses a concept / coordinate called packaging which does not map directly 1:1 to a file extension. In this use case, we need to construct a link to one of many possible artifacts. Maven itself uses type in a dependency declaration when needed to disambiguate between them.", "native_name": "type", "default_value": "jar" } ], "examples": [ "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1", "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?type=pom", "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?classifier=sources", "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?type=zip&classifier=dist", "pkg:maven/net.sf.jacob-projec/jacob@1.14.3?classifier=x86&type=dll", "pkg:maven/net.sf.jacob-projec/jacob@1.14.3?classifier=x64&type=dll", "pkg:maven/groovy/groovy@1.0?repository_url=https://maven.google.com" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/mlflow-definition.json0000644000175000017500000000426215135504042023633 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/mlflow-definition.json", "type": "mlflow", "type_name": "MLflow", "description": "MLflow ML models (Azure ML, Databricks, etc.)", "repository": { "use_repository": true, "note": "The repository is the MLflow tracking URI. There is no default. Some examples include Azure ML https://.api.azureml.ms/mlflow/v1.0/subscriptions//resourceGroups//providers/Microsoft.MachineLearningServices/workspaces/ and Azure Databricks https://adb-..azuredatabricks.net/api/2.0/mlflow and AWS Databricks https://dbc--.cloud.databricks.com/api/2.0/mlflow and GCP Databricks https://..gcp.databricks.com/api/2.0/mlflow" }, "namespace_definition": { "requirement": "prohibited", "note": "there is no namespace" }, "name_definition": { "requirement": "required", "note": "The name is the model name. Case sensitivity depends on the server implementation, such as for Azure ML, it is case sensitive and must be kept as-is in the package URL; and for Databricks, it is case insensitive and must be lowercased in the package URL." }, "version_definition": { "requirement": "optional", "native_name": "version", "note": "The version is the model version." }, "qualifiers_definition": [ { "key": "model_uuid", "native_name": "model_uuid", "description": "model_uuid as defined in the MLflow documentation." }, { "key": "run_id", "native_name": "run_id", "description": "run_id as defined in the MLflow documentation." } ], "examples": [ "pkg:mlflow/creditfraud@3?repository_url=https://westus2.api.azureml.ms/mlflow/v1.0/subscriptions/a50f2011-fab8-4164-af23-c62881ef8c95/resourceGroups/TestResourceGroup/providers/Microsoft.MachineLearningServices/workspaces/TestWorkspace", "pkg:mlflow/trafficsigns@10?model_uuid=36233173b22f4c89b451f1228d700d49&run_id=410a3121-2709-4f88-98dd-dba0ef056b0a&repository_url=https://adb-5245952564735461.0.azuredatabricks.net/api/2.0/mlflow" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/luarocks-definition.json0000644000175000017500000000346115135504042024156 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/luarocks-definition.json", "type": "luarocks", "type_name": "LuaRocks", "description": "Lua packages installed with LuaRocks", "repository": { "use_repository": true }, "namespace_definition": { "case_sensitive": false, "native_name": "user manifest", "note": "The user manifest under which the package is registered. If not given, the root manifest is assumed. It is case insensitive, but lowercase is encouraged since namespaces are normalized to ASCII lowercase.", "requirement": "optional" }, "name_definition": { "requirement": "required", "case_sensitive": false, "native_name": "name", "note": "The LuaRocks package name. It is case insensitive, but lowercase is encouraged since package names are normalized to ASCII lowercase." }, "version_definition": { "requirement": "optional", "case_sensitive": true, "native_name": "full package version, including module version and rockspec revision", "note": "The full LuaRocks package version, including module version and rockspec revision. It is case sensitive, and lowercase must be used to avoid compatibility issues with older LuaRocks versions. The full version number is required to uniquely identify a version." }, "qualifiers_definition": [ { "key": "repository_url", "description": "The LuaRocks rocks server to be used; useful in case a private server is used (optional). If omitted, https://luarocks.org as default server is assumed." } ], "examples": [ "pkg:luarocks/luasocket@3.1.0-1", "pkg:luarocks/hisham/luafilesystem@1.8.0-1", "pkg:luarocks/username/packagename@0.1.0-1?repository_url=https://example.com/private_rocks_server/" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/cpan-definition.json0000644000175000017500000000364415135504042023257 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/cpan-definition.json", "type": "cpan", "type_name": "CPAN", "description": "Perl package distributions published on CPAN", "repository": { "use_repository": true, "default_repository_url": "https://www.cpan.org/" }, "namespace_definition": { "requirement": "required", "native_name": "CPAN ID of the author/publisher", "note": "It MUST be written uppercase and is required" }, "name_definition": { "requirement": "required", "case_sensitive": true, "native_name": "distribution name", "note": "The name is the distribution name and is case sensitive. A distribution name MUST NOT contain the string '::'" }, "version_definition": { "note": "The version is the distribution version", "requirement": "optional", "native_name": "version" }, "qualifiers_definition": [ { "key": "repository_url", "requirement": "optional", "description": "CPAN/MetaCPAN/BackPAN/DarkPAN repository base URL" }, { "key": "download_url", "requirement": "optional", "description": "URL of package or distribution" }, { "key": "vcs_url", "requirement": "optional", "description": "extra URL for a package version control system" }, { "key": "ext", "requirement": "optional", "description": "file extension", "default_value": "tar.gz" } ], "note":"The previous CPAN PURL type specification allowed module names (e.g. URI::PackageURL) to be used as PURL 'name' while also omitting the PURL 'namespace'. The parser MUST emit an error when a module is specified as a PURL 'name' or detect '::' characters.", "examples": [ "pkg:cpan/GDT/URI-PackageURL", "pkg:cpan/OALDERS/libwww-perl@6.76", "pkg:cpan/DROLSKY/DateTime@1.55?repository_url=backpan.perl.org" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/deb-definition.json0000644000175000017500000000356315135504042023070 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/deb-definition.json", "type": "deb", "type_name": "Debian package", "description": "Debian packages, Debian derivatives, and Ubuntu packages", "repository": { "use_repository": true, "note": "There is no default package repository, this should be implied either from the distro qualifiers key or using a base url as a repository_url qualifiers key." }, "namespace_definition": { "native_name": "vendor", "case_sensitive": false, "note": "The namespace is the \"vendor\" name such as \"debian\" or \"ubuntu\". It is not case sensitive and must be lowercased.", "requirement": "required" }, "name_definition": { "requirement": "required", "native_name": "name", "case_sensitive": false, "note": "The name is not case sensitive and must be lowercased." }, "version_definition": { "requirement": "optional", "native_name": "version", "note": "The version is the version of the binary (or source) package." }, "qualifiers_definition": [ { "key": "arch", "description": "arch is the qualifiers key for a package architecture. The special value arch=source identifies a Debian source package that usually consists of a Debian Source control file (.dsc) and corresponding upstream and Debian sources. The dpkg-query command can print the name and version of the corresponding source package of a binary package, e.g. dpkg-query -f ${source:Package} ${source:Version} -W " } ], "examples": [ "pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie", "pkg:deb/debian/dpkg@1.19.0.4?arch=amd64&distro=stretch", "pkg:deb/ubuntu/dpkg@1.19.0.4?arch=amd64", "pkg:deb/debian/attr@1:2.4.47-2?arch=source", "pkg:deb/debian/attr@1:2.4.47-2%2Bb1?arch=amd64" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/conda-definition.json0000644000175000017500000000224615135504042023417 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/conda-definition.json", "type": "conda", "type_name": "Conda", "description": "conda is for Conda packages", "repository": { "use_repository": true, "default_repository_url": "https://repo.anaconda.com" }, "namespace_definition": { "note": "there is no namspace", "requirement": "prohibited" }, "name_definition": { "requirement": "required", "native_name": "name", "note": "The name is the package name." }, "version_definition": { "requirement": "optional", "native_name": "version", "note": "The version is the package version." }, "qualifiers_definition": [ { "key": "build", "description": "the build string." }, { "key": "channel", "description": "the package stored location." }, { "key": "subdir", "description": "the associated platform." }, { "key": "type", "description": "package type." } ], "examples": [ "pkg:conda/absl-py@0.4.1?build=py36h06a4308_0&channel=main&subdir=linux-64&type=tar.bz2" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/gem-definition.json0000644000175000017500000000201215135504042023072 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/gem-definition.json", "type": "gem", "type_name": "RubyGems", "description": "RubyGems", "repository": { "use_repository": true, "default_repository_url": "https://rubygems.org" }, "namespace_definition": { "requirement": "prohibited", "note": "There is no namespace" }, "name_definition": { "requirement": "required", "native_name": "name" }, "version_definition": { "requirement": "optional", "native_name": "version" }, "qualifiers_definition": [ { "key": "platform", "native_name": "platform", "requirement": "optional", "default_value": "ruby", "description": "qualifiers key is used to specify an alternative platform. such as java for JRuby. The implied default is ruby for Ruby MRI." } ], "examples": [ "pkg:gem/ruby-advisory-db-check@0.12.4", "pkg:gem/jruby-launcher@1.1.2?platform=java" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/swid-definition.json0000644000175000017500000000610215135504042023274 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/swid-definition.json", "type": "swid", "type_name": "Software Identification (SWID) Tag", "description": "PURL type for ISO-IEC 19770-2 Software Identification (SWID) tags.", "repository": { "use_repository": false, "note": "There is no default package repository." }, "namespace_definition": { "requirement": "optional", "case_sensitive": true, "native_name": "softwareCreator", "note": "The namespace is the optional name and regid of the entity with a role of softwareCreator. If specified, name is required and is the first segment in the namespace. If regid is known, it must be specified as the second segment in the namespace. A maximum of two segments are supported." }, "name_definition": { "requirement": "required", "case_sensitive": true, "native_name": "SoftwareIdentity/name", "note": "The name is the name as defined in the SWID SoftwareIdentity element." }, "version_definition": { "requirement": "optional", "case_sensitive": true, "native_name": "SoftwareIdentity/version", "note": "The version is the version as defined in the SWID SoftwareIdentity element." }, "qualifiers_definition": [ { "key": "tag_id", "requirement": "required", "description": "The qualifier tag_id must not be empty and corresponds to the tagId as defined in the SWID SoftwareIdentity element. Per the SWID specification, GUIDs are recommended. If a GUID is used, it must be lowercase. If a GUID is not used, the tag_id qualifier is case aware but not case sensitive." }, { "key": "tag_version", "requirement": "optional", "description": "The qualifier tag_version is an optional integer and corresponds to the tagVersion as defined in the SWID SoftwareIdentity element. If not specified, defaults to 0." }, { "key": "patch", "requirement": "optional", "description": "The qualifier patch is optional and corresponds to the patch as defined in the SWID SoftwareIdentity element. If not specified, defaults to false." }, { "key": "tag_creator_name", "requirement": "optional", "description": "The qualifier tag_creator_name is optional. If the tag creator is different from the software creator, the tag_creator_name qualifier should be specified." }, { "key": "tag_creator_regid", "requirement": "optional", "description": "The qualifier tag_creator_regid is optional. If the tag creator is different from the software creator, the tag_creator_regid qualifier should be specified." } ], "note": "Use of known qualifiers key/value pairs such as download_url can be used to specify where the package was retrieved from.", "examples": [ "pkg:swid/Acme/example.com/Enterprise+Server@1.0.0?tag_id=75b8c285-fa7b-485b-b199-4745e3004d0d", "pkg:swid/Fedora@29?tag_id=org.fedoraproject.Fedora-29", "pkg:swid/Adobe%2BSystems%2BIncorporated/Adobe%2BInDesign@CC?tag_id=CreativeCloud-CS6-Win-GM-MUL" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/pub-definition.json0000644000175000017500000000215615135504042023121 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/pub-definition.json", "type": "pub", "type_name": "Pub", "description": "Dart and Flutter pub packages", "repository": { "use_repository": true, "default_repository_url": "https://pub.dartlang.org" }, "namespace_definition": { "requirement": "prohibited", "note": "there is no namespace" }, "name_definition": { "requirement": "required", "native_name": "name", "case_sensitive": false, "permitted_characters": "^[a-z0-9_]", "normalization_rules": [ "Replace non-[a-z] letters, non-[0-9] digits with underscore _" ], "note": "Pub normalizes all package names to be lowercase and using underscores. The only allowed characters are [a-z0-9_]. More information on pub naming and versioning is available in the pubspec documentation https://dart.dev/tools/pub/pubspec" }, "version_definition": { "requirement": "optional", "native_name": "version" }, "examples": [ "pkg:pub/characters@1.2.0", "pkg:pub/flutter@0.0.0" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/bitnami-definition.json0000644000175000017500000000273615135504042023762 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/bitnami-definition.json", "type": "bitnami", "type_name": "Bitnami", "description": "Bitnami-based packages", "repository": { "use_repository": true, "default_repository_url": "https://downloads.bitnami.com/files/stacksmith" }, "namespace_definition": { "requirement": "prohibited", "note": "there is no namespace" }, "name_definition": { "requirement": "required", "note": "The name is the component name. It must be lowercased.", "case_sensitive": false, "native_name": "name" }, "version_definition": { "requirement": "optional", "native_name": "full package version, including version and revision", "note": "The version is the full Bitnami package version, including version and revision." }, "qualifiers_definition": [ { "key": "arch", "description": "The arch is the qualifiers key for a package architecture. Available values are amd64 (default) and arm64.", "default_value": "amd64" }, { "key": "distro", "description": "The distro is the qualifiers key for the distribution associated to the package." } ], "examples": [ "pkg:bitnami/wordpress?distro=debian-12", "pkg:bitnami/wordpress@6.2.0?distro=debian-12", "pkg:bitnami/wordpress@6.2.0?arch=arm64&distro=debian-12", "pkg:bitnami/wordpress@6.2.0?arch=arm64&distro=photon-4" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/oci-definition.json0000644000175000017500000000442615135504042023107 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/oci-definition.json", "type": "oci", "type_name": "OCI image", "description": "For artifacts stored in registries that conform to the OCI Distribution Specification https://github.com/opencontainers/distribution-spec including container images built by Docker and others", "repository": { "use_repository": true, "note": "There is no canonical package repository for OCI artifacts. Therefore oci purls must be registry agnostic by default. To specify the repository, provide a repository_url value." }, "namespace_definition": { "requirement": "prohibited", "note": "OCI purls do not contain a namespace, although, repository_url may contain a namespace as part of the physical location of the package." }, "name_definition": { "requirement": "required", "case_sensitive": false, "note": "The name is not case sensitive and must be lowercased. The name is the last fragment of the repository name. For example if the repository name is library/debian then the name is debian." }, "version_definition": { "requirement": "optional", "case_sensitive": false, "note": "The version is the sha256:hex_encoded_lowercase_digest of the artifact and is required to uniquely identify the artifact." }, "qualifiers_definition": [ { "key": "arch", "description": "key for a package architecture, when relevant." }, { "key": "repository_url", "description": "A repository URL where the artifact may be found, but not intended as the only location. This value is encouraged to identify a location the content may be fetched." }, { "key": "tag", "description": "artifact tag that may have been associated with the digest at the time." } ], "reference_urls": [ "https://github.com/opencontainers/distribution-spec" ], "examples": [ "pkg:oci/debian@sha256%3A244fd47e07d10?repository_url=docker.io/library/debian&arch=amd64&tag=latest", "pkg:oci/debian@sha256%3A244fd47e07d10?repository_url=ghcr.io/debian&tag=bullseye", "pkg:oci/static@sha256%3A244fd47e07d10?repository_url=gcr.io/distroless/static&tag=latest", "pkg:oci/hello-wasm@sha256:244fd47e07d10?tag=v1" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/npm-definition.json0000644000175000017500000000253615135504042023127 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/npm-definition.json", "type": "npm", "type_name": "Node NPM packages", "description": "PURL type for npm packages.", "repository": { "use_repository": true, "default_repository_url": "https://registry.npmjs.org/", "note": "The default repository is the npm Registry at https://registry.npmjs.org" }, "namespace_definition": { "requirement": "optional", "case_sensitive": false, "native_name": "scope", "note": "The namespace is used for the scope of a scoped NPM package. The npm scope @ sign prefix is always percent encoded, as it was in the early days of npm scope." }, "name_definition": { "requirement": "required", "case_sensitive": false, "native_name": "name", "note": "Per the package.json spec, new package 'must not have uppercase letters in the name', therefore the name must be lowercased. The npm name used to be case sensitive in the early days for some old packages." }, "version_definition": { "requirement": "optional", "case_sensitive": true, "native_name": "version" }, "examples": [ "pkg:npm/foobar@12.3.1", "pkg:npm/%40angular/animation@12.3.1", "pkg:npm/mypackage@12.4.5?vcs_url=git://host.com/path/to/repo.git%404345abcd34343" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/bitbucket-definition.json0000644000175000017500000000203415135504042024302 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/bitbucket-definition.json", "type": "bitbucket", "type_name": "Bitbucket", "description": "Bitbucket-based packages", "repository": { "use_repository": true, "default_repository_url": "https://bitbucket.org" }, "namespace_definition": { "requirement": "required", "note": "The namespace is the user or organization. It is not case sensitive and must be lowercased.", "native_name": "user or organization", "case_sensitive": false }, "name_definition": { "requirement": "required", "note": "The name is the repository name. It is not case sensitive and must be lowercased.", "native_name": "repository name", "case_sensitive": false }, "version_definition": { "requirement": "optional", "note": "The version is a commit or tag.", "native_name": "commit or tag" }, "examples": [ "pkg:bitbucket/birkenfeld/pygments-main@244fd47e07d1014f0aed9c" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/pypi-definition.json0000644000175000017500000000404715135504042023315 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/pypi-definition.json", "type": "pypi", "type_name": "PyPI", "description": "Python packages", "repository": { "use_repository": true, "default_repository_url": "https://pypi.org", "note": "Previously https://pypi.python.org" }, "namespace_definition": { "requirement": "prohibited", "note": "there is no namespace" }, "name_definition": { "requirement": "required", "native_name": "name", "case_sensitive": false, "normalization_rules": [ "Replace underscore _ with dash -", "Replace dot . with underscore _ when used in distribution (sdist, wheel) names" ], "note": "PyPI treats - and _ as the same character and is not case sensitive. Therefore a PyPI package name must be lowercased and underscore _ replaced with a dash -. Note that PyPI itself is preserving the case of package names. When used in distribution and wheel names, the dot . is replaced with an underscore _" }, "version_definition": { "requirement": "optional", "case_sensitive": false, "native_name": "version" }, "qualifiers_definition": [ { "key": "file_name", "requirement": "optional", "description": "The file_name qualifier selects a particular distribution file (case-sensitive). For naming convention, see the Python Packaging User Guide on source distributions https://packaging.python.org/en/latest/specifications/source-distribution-format/#source-distribution-file-name and on binary distributions https://packaging.python.org/en/latest/specifications/binary-distribution-format/#file-name-convention and the rules for platform compatibility tags https://packaging.python.org/en/latest/specifications/platform-compatibility-tags/" } ], "examples": [ "pkg:pypi/django@1.11.1", "pkg:pypi/django@1.11.1?file_name=Django-1.11.1.tar.gz", "pkg:pypi/django@1.11.1?file_name=Django-1.11.1-py2.py3-none-any.whl", "pkg:pypi/django-allauth@12.23" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/cargo-definition.json0000644000175000017500000000152715135504042023427 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/cargo-definition.json", "type": "cargo", "type_name": "Cargo", "description": "Cargo packages for Rust", "repository": { "use_repository": true, "default_repository_url": "https://crates.io/" }, "namespace_definition": { "requirement": "prohibited", "note": "there is no namespace" }, "name_definition": { "requirement": "required", "native_name": "name", "case_sensitive": true, "note": "The name is the repository name." }, "version_definition": { "requirement": "optional", "native_name": "version", "note": "The version is the package version." }, "examples": [ "pkg:cargo/rand@0.7.2", "pkg:cargo/clap@2.33.0", "pkg:cargo/structopt@0.3.11" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/cran-definition.json0000644000175000017500000000165115135504042023255 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/cran-definition.json", "type": "cran", "type_name": "CRAN", "description": "CRAN R packages", "repository": { "use_repository": true, "default_repository_url": "https://cran.r-project.org" }, "namespace_definition": { "requirement": "prohibited", "note": "there is no namespace" }, "name_definition": { "requirement": "required", "native_name": "name", "case_sensitive": true, "note": "The name is the package name and is case sensitive, but there cannot be two packages on CRAN with the same name ignoring case." }, "version_definition": { "requirement": "optional", "native_name": "version", "note": "The version is the package version." }, "examples": [ "pkg:cran/A3@1.0.0", "pkg:cran/rJava@1.0-4", "pkg:cran/caret@6.0-88" ] } URI-PackageURL-2.24/lib/URI/PackageURL/types/generic-definition.json0000644000175000017500000000335215135504042023746 0ustar peppepeppe{ "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json", "$id": "https://packageurl.org/types/generic-definition.json", "type": "generic", "type_name": "Generic Package", "description": "The generic type is for plain, generic packages that do not fit anywhere else such as for \"upstream-from-distro\" packages. In particular this is handy for a plain version control repository such as a bare git repo in combination with a vcs_url.", "repository": { "use_repository": false, "note": "There is no default repository." }, "namespace_definition": { "requirement": "optional", "note": "there is no generic namespace definition" }, "name_definition": { "requirement": "required", "note": "as for other type, the name component is mandatory. In the worst case it can be a file or directory name." }, "qualifiers_definition": [ { "key": "download_url", "description": "A download_url and checksum may be provided in qualifiers or as separate attributes outside of a purl for proper identification and location." }, { "key": "checksum", "description": "A checksum may be provided in qualifiers or as separate attributes outside of a purl for proper identification and location." } ], "note": "When possible another or a new purl type should be used instead of using the generic type and eventually contributed back to this specification. Example have been truncated for brevity", "examples": [ "pkg:generic/openssl@1.1.10g", "pkg:generic/openssl@1.1.10g?download_url=https://openssl.org/source/openssl-1.1.0g.tar.gz&checksum=sha256:de4d501267da", "pkg:generic/bitwarderl?vcs_url=git%2Bhttps://git.fsfe.org/dxtr/bitwarderl%40cc55108da32" ] } URI-PackageURL-2.24/lib/URI/PackageURL/Type.pm0000644000175000017500000003572715135504042017437 0ustar peppepeppepackage URI::PackageURL::Type; use feature ':5.10'; use strict; use utf8; use warnings; use Carp (); use File::Basename qw(dirname); use File::Spec; use JSON::PP qw(decode_json); use List::Util qw(first); use constant DEBUG => $ENV{PURL_DEBUG}; our $VERSION = '2.24'; my %ALGO_LENGTH = ('md5' => 32, 'sha1' => 40, 'sha256' => 64, 'sha384' => 96, 'sha512' => 128); my %CACHE = (); sub new { my ($class, $type) = @_; Carp::croak 'Missing PURL type' unless $type; $type = lc $type; my $self = {type => $type, definition => _load_definition($type) || {}}; return bless $self, $class; } sub definition_dir { File::Spec->catfile(dirname(__FILE__), 'types') } sub _file_content { my $path = shift; return unless -e $path; open my $fh, '<', $path or Carp::croak "Can't open file: $!"; my $content = do { local $/; <$fh> }; close $fh; return $content; } sub _load_definition { my $purl_type = shift; return $CACHE{$purl_type} if defined $CACHE{$purl_type}; my $content = _file_content(File::Spec->catfile(definition_dir, "$purl_type-definition.json")); return unless $content; DEBUG and say STDERR "-- Loaded '$purl_type' definition schema"; my $data = eval { decode_json($content) }; Carp::croak "Failed to decode '$purl_type' PURL type definition: $@" if $@; $CACHE{$purl_type} = $data; return $data; } sub definition { shift->{definition} } sub _property { my ($self, $property, $sub_property) = @_; return unless $self->definition; return $self->definition->{$property} unless defined $sub_property; return $self->definition->{$property}->{$sub_property}; } sub schema_id { shift->_property('$id') } sub type_name { shift->_property('type_name') } sub description { shift->_property('description') } sub default_repository_url { shift->_property('repository', 'default_repository_url') } sub examples { shift->_property('examples') || [] } sub repository { shift->_property('repository') } sub note { shift->_property('note') } sub reference_urls { shift->_property('reference_urls') } sub namespace_definition { shift->component_definition('namespace') } sub name_definition { shift->component_definition('name') } sub version_definition { shift->component_definition('version') } sub qualifiers_definition { shift->component_definition('qualifiers') || [] } sub subpath_definition { shift->component_definition('subpath') } sub component_have_definition { defined shift->component_definition(shift) } sub component_definition { shift->_property(shift . '_definition') } sub component_case_sensitive { shift->_property(shift . '_definition', 'case_sensitive') } sub component_is_case_sensitive { shift->component_case_sensitive(shift) == 1 } sub component_is_optional { shift->component_requirement(shift) eq 'optional' } sub component_is_prohibited { shift->component_requirement(shift) eq 'prohibited' } sub component_is_required { shift->component_requirement(shift) eq 'required' } sub component_native_name { shift->_property(shift . '_definition', 'native_name') } sub component_normalization_rules { shift->_property(shift . '_definition', 'normalization_rules') || [] } sub component_note { shift->_property(shift . '_definition', 'note') } sub component_permitted_characters { shift->_property(shift . '_definition', 'permitted_characters') } sub component_requirement { shift->_property(shift . '_definition', 'requirement') } sub normalize { my $self = shift; my %components = ( type => undef, namespace => undef, name => undef, version => undef, version => undef, qualifiers => {}, subpath => undef, @_ ); # Common normalizations $components{type} = lc $components{type}; if (grep { $_ eq $components{type} } qw(alpm apk bitbucket composer deb github gitlab hex npm oci pypi)) { $components{name} = lc $components{name}; } if (defined $components{namespace}) { if (grep { $_ eq $components{type} } qw(alpm apk bitbucket composer deb github gitlab golang hex rpm)) { $components{namespace} = lc $components{namespace}; } # The namespace is the CPAN id of the author/publisher. It MUST be written uppercase and is required. if ($components{type} eq 'cpan') { $components{namespace} = uc $components{namespace}; } } # Force checksum into ARRAY if (defined $components{qualifiers}->{checksum} and ref $components{qualifiers}->{checksum} ne 'ARRAY') { $components{qualifiers}->{checksum} = [$components{qualifiers}->{checksum}]; } # PURL type specific normalization TYPE: for ($components{type}) { if (/huggingface/) { # The version is the model revision Git commit hash. It is case insensitive and # must be lowercased in the package URL. $components{version} = lc $components{version}; last TYPE; } if (/mlflow/) { # The "name" case sensitivity depends on the server implementation: # - Azure ML: it is case sensitive and must be kept as-is in the package URL. # - Databricks: it is case insensitive and must be lowercased in the package URL. last TYPE unless $components{qualifiers}->{repository_url}; if ($components{qualifiers}->{repository_url} =~ /azuredatabricks/) { $components{name} = lc $components{name}; } last TYPE; } if (/pypi/) { # A PyPI package name must be lowercased and underscore "_" replaced with a dash "-". $components{name} =~ s/_/-/g; last TYPE; } if (/cpan/) { if (defined $components{qualifiers}->{author}) { # CPAN ID. It MUST be written uppercase. $components{qualifiers}->{author} = uc $components{qualifiers}->{author}; } last TYPE; } } return wantarray ? %components : \%components; } sub validate { my $self = shift; my %components = ( type => undef, namespace => undef, name => undef, version => undef, version => undef, qualifiers => {}, subpath => undef, @_ ); my $purl_type = $components{type}; # Check PURL components requirements Carp::croak "Invalid PURL: '$components{scheme}' is not a valid scheme" unless ($components{scheme} eq 'pkg'); foreach my $qualifier (keys %{$components{qualifiers}}) { Carp::croak "Invalid PURL: '$qualifier' is not a valid qualifier" if ($qualifier =~ /(\s|\%)/); } # Check checksum qualifier if (defined $components{qualifiers}->{checksum} and ref $components{qualifiers}->{checksum} eq 'ARRAY') { foreach (@{$components{qualifiers}->{checksum}}) { my ($algo, $checksum) = split ':', $_; if (defined $ALGO_LENGTH{$algo}) { if (length($checksum) != $ALGO_LENGTH{$algo}) { DEBUG and say STDERR "-- Malformed '$algo' checksum qualifier (invalid length)"; } if ($checksum !~ m/^[0-9a-f]+$/) { DEBUG and say STDERR "-- Malformed '$algo' checksum qualifier (invalid characters)"; } } # Fallback elsif ($checksum !~ /^[0-9a-f]{32,}$/) { DEBUG and say STDERR "-- Malformed '$algo' checksum qualifier (invalid characters or length)"; } } } # PURL type definition validation if (%{$self->definition}) { # Check components using PURL type definition for my $component (qw[namespace name version subpath]) { next unless $self->component_have_definition($component); my $requirement = $self->component_requirement($component); next unless $requirement; DEBUG and say STDERR "-- Validation - $component is $requirement"; if (defined $components{$component} && $self->component_is_prohibited($component)) { Carp::croak sprintf("Invalid PURL: '%s' is prohibited for '%s' PURL type", $component, $purl_type); } if (!defined $components{$component} && $self->component_is_required($component)) { Carp::croak sprintf("Invalid PURL: '%s' is required for '%s' PURL type", $component, $purl_type); } } # Default known qualifiers # TODO: "checksums" legacy qualifier my @known_qualifiers = (qw[ vers repository_url download_url vcs_url file_name checksum checksums ]); foreach my $rule (@{$self->qualifiers_definition}) { my $key = $rule->{key}; push @known_qualifiers, $key; my $requirement = $rule->{requirement}; next unless $requirement; DEBUG and say STDERR "-- Validation - '$key' qualifier is $requirement"; if (defined $components{qualifiers}->{$key} and $requirement eq 'prohibited') { Carp::croak sprintf("Invalid PURL: '%s' qualifier is prohibited for '%s' PURL type", $key, $purl_type); } if (not defined $components{qualifiers}->{$key} and $requirement eq 'required') { Carp::croak sprintf("Invalid PURL: '%s' qualifier is required for '%s' PURL type", $key, $purl_type); } } # Check unknown qualifiers foreach my $key (keys %{$components{qualifiers}}) { DEBUG and say STDERR "-- '$key' is known qualifier for '$purl_type' PURL type" unless (first { $key eq $_ } @known_qualifiers); } } # PURL type specific validation TYPE: for ($purl_type) { if (/conan/) { if (!$components{namespace} && defined $components{qualifiers}->{channel}) { Carp::croak "Invalid PURL: Conan 'channel' qualifier without 'namespace'"; } last TYPE; } if (/cpan/) { # Use legacy CPAN PURL type SPEC if ($ENV{PURL_LEGACY_CPAN_TYPE}) { if ((defined $components{namespace} && defined $components{name}) && $components{namespace} =~ /\:/) { Carp::croak "Invalid PURL: CPAN 'namespace' component must have the distribution author"; } if ((defined $components{namespace} && defined $components{name}) && $components{name} =~ /\:/) { Carp::croak "Invalid PURL: CPAN 'name' component must have the distribution name"; } if (!defined $components{namespace} && $components{name} =~ /\-/) { Carp::croak "Invalid PURL: CPAN 'name' component must have the module name"; } last TYPE; } if ($components{name} =~ /\:/) { Carp::croak "Invalid PURL: The CPAN 'name' component must have the distribution name"; } last TYPE; } if (/cran/) { Carp::croak "Invalid PURL: Cran 'version' is required" unless defined $components{version}; last TYPE; } if (/swift/) { # TODO remove after spec FIX Carp::croak "Invalid PURL: Swift 'version' is required" unless defined $components{version}; if (defined $components{namespace}) { my ($source, $user_org) = split '/', $components{namespace}; Carp::croak "Invalid PURL: Swift user/organization is required in 'namespace'" unless $user_org; } last TYPE; } } return 1; } 1; __END__ =head1 NAME URI::PackageURL::Type - PURL type definition class for URI::PackageURL =head1 SYNOPSIS use URI::PackageURL::Type; # Load 'cpan' PURL type definition $type = URI::PackageURL::Type->new('cpan'); say $type->definition->{description}; =head1 DESCRIPTION L is the PURL type definition helper for URL::PackageURL. =over =item $purl_type = URI::PackageURL::Type->new($purl_type) Create new B instance and load PURL type definition for normalization and validation. $type = URI::PackageURL::Type->new('cpan'); =item $purl_type->normalize(%components) Perform PURL components normalization: %components = $purl_type->normalize( type => 'CPAN', namespace => 'gdt', name => 'URI-PackageURL' ); say Dumper(\%components); # { # type => 'cpan', # namespace => 'GDT', # name => 'URI-PackageURL' # } =item $purl_type->validate(%components) Perform PURL components validation: $purl_type->validate( type => 'CPAN', name => 'URI-PackageURL' ); =back =head2 Definition =over =item $purl_type->schema_id =item $purl_type->type_name =item $purl_type->description =item $purl_type->default_repository_url =item $purl_type->examples =item $purl_type->repository =item $purl_type->note =item $purl_type->reference_urls =back =head3 Component definition =over =item $purl_type->namespace_definition =item $purl_type->name_definition =item $purl_type->version_definition =item $purl_type->qualifiers_definition =item $purl_type->subpath_definition =back =head3 Helpers =over =item $purl_type->component_have_definition($component) =item $purl_type->component_definition($component) =item $purl_type->component_case_sensitive($component) =item $purl_type->component_is_case_sensitive($component) =item $purl_type->component_is_optional($component) =item $purl_type->component_is_prohibited($component) =item $purl_type->component_is_required($component) =item $purl_type->component_native_name($component) =item $purl_type->component_normalization_rules($component) =item $purl_type->component_note($component) =item $purl_type->component_permitted_characters($component) =item $purl_type->component_requirement($component) =back =head1 SUPPORT =head2 Bugs / Feature Requests Please report any bugs or feature requests through the issue tracker at L. You will be notified automatically of any progress on your issue. =head2 Source Code This is open source software. The code repository is available for public review and contribution under the terms of the license. L git clone https://github.com/giterlizzi/perl-URI-PackageURL.git =head1 AUTHOR =over =item * Giuseppe Di Terlizzi =back =head1 LICENSE AND COPYRIGHT This software is copyright (c) 2022-2026 by Giuseppe Di Terlizzi. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut URI-PackageURL-2.24/lib/URI/PackageURL/Util.pm0000644000175000017500000003234715135504042017426 0ustar peppepeppepackage URI::PackageURL::Util; use feature ':5.10'; use strict; use utf8; use warnings; use File::Spec; use File::Basename qw(dirname basename); use Exporter qw(import); our $VERSION = '2.24'; our @EXPORT = qw(purl_to_urls purl_types); sub purl_types { my @list = (); my $spec_dir = File::Spec->catfile(dirname(__FILE__), 'types'); opendir(my $dh, $spec_dir) or Carp::croak "Can't open spec dir: $!"; while (my $file = readdir $dh) { next unless -f File::Spec->catfile($spec_dir, $file); $file =~ s/\-definition\.json//; push @list, $file; } closedir $dh; @list = sort @list; return wantarray ? @list : \@list; } sub purl_to_urls { my $purl = shift; if (ref $purl ne 'URI::PackageURL') { require URI::PackageURL; $purl = URI::PackageURL->from_string($purl); } my %TYPES = ( bitbucket => \&_to_bitbucket_urls, cargo => \&_to_cargo_urls, composer => \&_to_composer_urls, cpan => \&_to_cpan_urls, docker => \&_to_docker_urls, gem => \&_to_gem_urls, github => \&_to_github_urls, gitlab => \&_to_gitlab_urls, golang => \&_to_golang_urls, luarocks => \&_to_luarocks_urls, maven => \&_to_maven_urls, npm => \&_to_npm_urls, nuget => \&_to_nuget_urls, pypi => \&_to_pypi_urls, ); my $urls = {}; if (defined $TYPES{$purl->type}) { $urls = $TYPES{$purl->type}->($purl); } if (my $download_url = $purl->qualifiers->{download_url}) { $urls->{download} = $download_url; } return $urls; } sub _to_bitbucket_urls { my $purl = shift; my $name = $purl->name; my $namespace = $purl->namespace; my $version = $purl->version; my $qualifiers = $purl->qualifiers; my $file_ext = $qualifiers->{ext} || 'tar.gz'; my $urls = {}; if ($name && $namespace) { $urls->{repository} = "https://bitbucket.org/$namespace/$name"; } if ($version) { $urls->{download} = "https://bitbucket.org/$namespace/$name/get/$version.$file_ext"; } return $urls; } sub _to_cargo_urls { my $purl = shift; my $name = $purl->name; my $version = $purl->version; if ($name && $version) { return { repository => "https://crates.io/crates/$name/$version", download => "https://crates.io/api/v1/crates/$name/$version/download" }; } return {repository => "https://crates.io/crates/$name"}; } sub _to_composer_urls { my $purl = shift; my $name = $purl->name; my $namespace = $purl->namespace; return unless ($name && $namespace); return {repository => "https://packagist.org/packages/$namespace/$name"}; } sub _to_cpan_urls { my ($purl, $purl_type) = @_; my $name = $purl->name; my $version = $purl->version; my $qualifiers = $purl->qualifiers; my $author = $purl->namespace // $qualifiers->{author}; my $file_ext = $qualifiers->{ext} || 'tar.gz'; my $repository_url = $qualifiers->{repository_url} || $purl->definition->default_repository_url; my $distpath = $qualifiers->{distpath}; my $distdir = $qualifiers->{distdir}; $repository_url =~ s{/$}{}; if ($repository_url !~ /^(http|https|file|ftp):\/\//) { $repository_url = 'https://' . $repository_url; } my $urls = {repository => "https://metacpan.org/dist/$name"}; if ($name && $version && $author) { $urls->{repository} = "https://metacpan.org/release/$author/$name-$version"; my $author_a = substr($author, 0, 1); my $author_au = substr($author, 0, 2); my $download_base_url = "$repository_url/authors/id"; if (!$distpath && !$distdir) { $urls->{download} = "$download_base_url/$author_a/$author_au/$author/$name-$version.$file_ext"; } if ($distpath && !$distdir) { $distpath =~ s{^/}{}; $distpath =~ s{^CPAN/}{}; $distpath =~ s{^id/}{}; $distpath =~ s{^authors/id/}{}; if ($distpath !~ /^([A-Z]{1})\/([A-Z]{2})/) { my @parts = split '/', $distpath; my $author_a = substr($parts[0], 0, 1); my $author_au = substr($parts[0], 0, 2); $distpath = join '/', $author_a, $author_au, $distpath; } $urls->{download} = "$download_base_url/$distpath"; } if ($distdir && !$distpath) { $urls->{download} = "$download_base_url/$author_a/$author_au/$author/$distdir/$name-$version.$file_ext"; } } return $urls; } sub _to_docker_urls { my $purl = shift; my $name = $purl->name; my $namespace = $purl->namespace; my $version = $purl->version; my $qualifiers = $purl->qualifiers; my $repository_url = $qualifiers->{repository_url} || 'https://hub.docker.com'; if ($repository_url !~ /^(http|https):\/\//) { $repository_url = 'https://' . $repository_url; } my $urls = {}; if ($repository_url !~ /hub.docker.com/) { return $urls; } if (!$namespace) { $urls->{repository} = "$repository_url/_/$name"; } if ($name && $namespace) { $urls->{repository} = "$repository_url/r/$namespace/$name"; } return $urls; } sub _to_gem_urls { my $purl = shift; my $name = $purl->name; my $version = $purl->version; if ($name && $version) { return { repository => "https://rubygems.org/gems/$name/versions/$version", download => "https://rubygems.org/downloads/$name-$version.gem" }; } return {repository => "https://rubygems.org/gems/$name"}; } sub _to_github_urls { my $purl = shift; my $name = $purl->name; my $namespace = $purl->namespace; my $version = $purl->version; my $qualifiers = $purl->qualifiers; my $file_ext = $qualifiers->{ext} || 'tar.gz'; my $urls = {}; if ($name && $namespace) { $urls->{repository} = "https://github.com/$namespace/$name"; } if ($version) { my $is_sha1 = ($version =~ /^[a-fA-F0-9]{40}$/); if ($is_sha1) { $urls->{download} = "https://github.com/$namespace/$name/archive/$version.$file_ext"; } else { $urls->{download} = "https://github.com/$namespace/$name/archive/refs/tags/$version.$file_ext"; } } return $urls; } sub _to_gitlab_urls { my $purl = shift; my $name = $purl->name; my $namespace = $purl->namespace; my $version = $purl->version; my $qualifiers = $purl->qualifiers; my $file_ext = $qualifiers->{ext} || 'tar.gz'; my $urls = {}; if ($name && $namespace) { $urls->{repository} = "https://gitlab.com/$namespace/$name"; } if ($version) { $urls->{download} = "https://gitlab.com/$namespace/$name/-/archive/$version/$name-$version.$file_ext"; } return $urls; } sub _to_golang_urls { my $purl = shift; my $name = $purl->name; my $namespace = $purl->namespace; my $version = $purl->version; my $urls = {}; if ($name && $namespace) { $urls->{repository} = "https://pkg.go.dev/$namespace/$name"; } # TODO ??? # if ($name && $namespace && $version) { # $urls->{repository} = "https://pkg.go.dev/$namespace/$name\@v$version"; # } return $urls; } sub _to_luarocks_urls { my $purl = shift; my $name = $purl->name; my $namespace = $purl->namespace; my $version = $purl->version; my $qualifiers = $purl->qualifiers; my $repository_url = $qualifiers->{repository_url} || 'https://luarocks.org'; if ($repository_url !~ /^(http|https):\/\//) { $repository_url = 'https://' . $repository_url; } my $urls = {}; if (!$namespace) { $urls->{repository} = "$repository_url/modules/$name"; } if ($name && $namespace) { $urls->{repository} = "$repository_url/modules/$namespace/$name"; } return $urls; } sub _to_maven_urls { my $purl = shift; my $namespace = $purl->namespace; my $name = $purl->name; my $version = $purl->version; my $qualifiers = $purl->qualifiers; my $extension = $qualifiers->{extension} // 'jar'; my $repository_url = $qualifiers->{repository_url} // 'https://repo.maven.apache.org/maven2'; if ($repository_url !~ /^(http|https):\/\//) { $repository_url = 'https://' . $repository_url; } if ($namespace && $name && $version) { (my $ns_url = $namespace) =~ s/\./\//g; return { repository => "https://mvnrepository.com/artifact/$namespace/$name/$version", download => "$repository_url/$ns_url/$name/$version/$name-$version.$extension" }; } if ($namespace && $name) { return {repository => "https://mvnrepository.com/artifact/$namespace/$name"}; } } sub _to_npm_urls { my $purl = shift; my $namespace = $purl->namespace; my $name = $purl->name; my $version = $purl->version; if ($namespace && $name && $version) { return { repository => "https://www.npmjs.com/package/$namespace/$name/v/$version", download => "https://registry.npmjs.org/$namespace/$name/-/$name-$version.tgz" }; } if ($name && $version) { return { repository => "https://www.npmjs.com/package/$name/v/$version", download => "https://registry.npmjs.org/$name/-/$name-$version.tgz" }; } if ($namespace && $name) { return {repository => "https://www.npmjs.com/package/$namespace/$name"}; } return {repository => "https://www.npmjs.com/package/$name"}; } sub _to_nuget_urls { my $purl = shift; my $name = $purl->name; my $version = $purl->version; if ($name && $version) { return { repository => "https://www.nuget.org/packages/$name/$version", download => "https://www.nuget.org/api/v2/package/$name/$version" }; } return {repository => "https://www.nuget.org/packages/$name"}; } sub _to_pypi_urls { my $purl = shift; my $name = $purl->name; my $version = $purl->version; if ($name && $version) { return {repository => "https://pypi.org/project/$name/$version"}; } return {repository => "https://pypi.org/project/$name"}; } 1; __END__ =head1 NAME URI::PackageURL::Util - Utility for URI::PackageURL =head1 SYNOPSIS use URI::PackageURL::Util qw(purl_to_urls); $urls = purl_to_urls('pkg:cpan/GDT/URI-PackageURL@2.24'); $filename = basename($urls->{download}); $ua->mirror($urls->{download}, "/tmp/$filename"); =head1 DESCRIPTION URL::PackageURL::Util is the utility package for URL::PackageURL. =over =item $urls = purl_to_urls($purl_string | URI::PackageURL) Converts the given Package URL string or L instance and return the hash with C and/or C URL. B: This utility support few PURL types (C, C, C, C, C, C, C, C, C, C, C, C, C). +-----------+------------+--------------+ | Type | Repository | Download (*) | +-----------+------------+--------------| | bitbucket | YES | YES | | cargo | YES | YES | | composer | YES | NO | | cpan | YES | YES | | docker | YES | NO | | gem | YES | YES | | generic | NO | YES (**) | | github | YES | YES | | gitlab | YES | YES | | luarocks | YES | NO | | maven | YES | YES | | npm | YES | YES | | nuget | YES | YES | | pypi | YES | NO | |-----------|------------|--------------+ (*) Only with B component (**) Only if B qualifier is provided $urls = purl_to_urls('pkg:cpan/GDT/URI-PackageURL@2.24'); print Dumper($urls); # $VAR1 = { # 'repository' => 'https://metacpan.org/release/GDT/URI-PackageURL-2.24', # 'download' => 'http://www.cpan.org/authors/id/G/GD/GDT/URI-PackageURL-2.24.tar.gz' # }; =back =head1 SUPPORT =head2 Bugs / Feature Requests Please report any bugs or feature requests through the issue tracker at L. You will be notified automatically of any progress on your issue. =head2 Source Code This is open source software. The code repository is available for public review and contribution under the terms of the license. L git clone https://github.com/giterlizzi/perl-URI-PackageURL.git =head1 AUTHOR =over =item * Giuseppe Di Terlizzi =back =head1 LICENSE AND COPYRIGHT This software is copyright (c) 2022-2026 by Giuseppe Di Terlizzi. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut URI-PackageURL-2.24/lib/URI/PackageURL/App.pm0000644000175000017500000003156515135504042017232 0ustar peppepeppepackage URI::PackageURL::App; use feature ':5.10'; use strict; use warnings; use utf8; use Carp (); use Data::Dumper (); use Getopt::Long qw(GetOptionsFromArray :config gnu_compat); use JSON::PP (); use Pod::Text (); use Pod::Usage qw(pod2usage); use URI::PackageURL (); use URI::PackageURL::Type (); use URI::PackageURL::Util qw(purl_types); our $VERSION = '2.24'; sub cli_error { my ($error) = @_; $error =~ s/ at .* line \d+.*//; say STDERR "ERROR: $error"; } sub print_stdout { say STDOUT $_[0] if $_[1]; } sub print_stderr { say STDERR $_[0] if $_[1]; } sub run { my ($class, @args) = @_; my %options = (format => 'json'); GetOptionsFromArray( \@args, \%options, qw( help|h man v download-url repository-url validate quiet|q info=s list type=s namespace=s name=s version=s qualifiers|qualifier=s% subpath=s null|0 format=s json yaml dumper env ) ) or pod2usage(-verbose => 0); pod2usage(-exitstatus => 0, -verbose => 2) if defined $options{man}; pod2usage(-exitstatus => 0, -verbose => 0) if defined $options{help}; if (defined $options{v}) { (my $progname = $0) =~ s/.*\///; say <<"VERSION"; $progname version $URI::PackageURL::VERSION Copyright 2022-2026, Giuseppe Di Terlizzi This program is part of the "URI-PackageURL" distribution and is free software; you can redistribute it and/or modify it under the same terms as Perl itself. Complete documentation for $progname can be found using 'man $progname' or on the internet at . VERSION return 0; } if (defined $options{info}) { return definition_help(lc $options{info}); } if (defined $options{list}) { return purl_list(); } if (defined $options{type}) { my $purl = eval { URI::PackageURL->new( type => $options{type}, namespace => $options{namespace}, name => $options{name}, version => $options{version}, qualifiers => $options{qualifiers}, subpath => $options{subpath}, ); }; if ($@) { cli_error($@); return 1; } print "$purl" . (defined $options{null} ? "\0" : "\n"); return 0; } my ($purl_string) = @args; pod2usage(-verbose => 1) if !$purl_string; $options{format} = 'json' if defined $options{json}; $options{format} = 'yaml' if defined $options{yaml}; $options{format} = 'dumper' if defined $options{dumper}; $options{format} = 'env' if defined $options{env}; my $purl = eval { URI::PackageURL->from_string($purl_string) }; if ($options{validate}) { unless ($options{quiet}) { say STDERR $purl ? 'true' : 'false'; } return $purl ? 0 : 1; } if ($@) { cli_error($@); return 1; } my $purl_urls = $purl->to_urls; if ($options{'download-url'}) { return 2 unless defined $purl_urls->{download}; print $purl_urls->{download} . (defined $options{null} ? "\0" : "\n"); return 0; } if ($options{'repository-url'}) { return 2 unless defined $purl_urls->{repository}; print $purl_urls->{repository} . ($options{null} ? "\0" : "\n"); return 0; } if ($options{format} eq 'json') { print JSON::PP->new->canonical->pretty(1)->convert_blessed(1)->encode($purl); return 0; } if ($options{format} eq 'dumper') { print Data::Dumper->new([$purl->to_hash])->Indent(1)->Sortkeys(1)->Terse(1)->Useqq(1)->Dump; return 0; } if ($options{format} eq 'yaml') { if (eval { require YAML::XS }) { print YAML::XS::Dump($purl->to_hash); return 0; } if (eval { require YAML }) { print YAML::Dump($purl->to_hash); return 0; } cli_error 'YAML or YAML::XS module are missing'; return 255; } if ($options{format} eq 'env') { my %PURL_ENVS = ( PURL => $purl->to_string, PURL_TYPE => $purl->type, PURL_NAMESPACE => $purl->namespace, PURL_NAME => $purl->name, PURL_VERSION => $purl->version, PURL_SUBPATH => $purl->subpath, PURL_QUALIFIERS => (join ' ', sort keys %{$purl->qualifiers}), ); # Preserve order my @PURL_ENVS = qw(PURL PURL_TYPE PURL_NAMESPACE PURL_NAME PURL_VERSION PURL_SUBPATH PURL_QUALIFIERS); my $qualifiers = $purl->qualifiers; foreach my $qualifier (sort keys %{$qualifiers}) { my $key = "PURL_QUALIFIER_$qualifier"; push @PURL_ENVS, $key; $PURL_ENVS{$key} = $qualifiers->{$qualifier}; } if ($purl_urls) { if (defined $purl_urls->{download}) { push @PURL_ENVS, 'PURL_DOWNLOAD_URL'; $PURL_ENVS{PURL_DOWNLOAD_URL} = $purl_urls->{download}; } if (defined $purl_urls->{repository}) { push @PURL_ENVS, 'PURL_REPOSITORY_URL'; $PURL_ENVS{PURL_REPOSITORY_URL} = $purl_urls->{repository}; } } foreach my $key (@PURL_ENVS) { print sprintf qq{%s="%s"\n}, $key, $PURL_ENVS{$key} || q{}; } return 0; } } sub _md_to_pod { my $text = shift; $text =~ s/(``([^``]*)``)/C<$2>/gm; $text =~ s/(`([^`]*)`)/C<$2>/gm; return $text; } sub purl_list { my @types = purl_types(); my $pattern = "%15s | %10s | %10s | %10s | %10s | %s"; say sprintf $pattern, 'TYPE', 'NAMESPACE', 'NAME', 'VERSION', 'SUBPATH', 'QUALIFIERS'; say sprintf "%s-|-%s-|-%s-|-%s-|-%s-|-%s", '-' x 15, '-' x 10, '-' x 10, '-' x 10, '-' x 10, '-' x 10; for my $type (@types) { my $definition = URI::PackageURL::Type->new($type); my $namespace = '-'; my $name = '-'; my $version = '-'; my $subpath = '-'; my $qualifiers = '-'; if ($definition->component_have_definition('namespace')) { $namespace = $definition->component_requirement('namespace') // '-'; } if ($definition->component_have_definition('name')) { $name = $definition->component_requirement('name') // '-'; } if ($definition->component_have_definition('version')) { $version = $definition->component_requirement('version') // '-'; } if ($definition->component_have_definition('subpath')) { $subpath = $definition->component_requirement('subpath') // '-'; } if (@{$definition->qualifiers_definition}) { $qualifiers = join ", ", map { $_->{key} } @{$definition->qualifiers_definition}; } say sprintf $pattern, $type, $namespace, $name, $version, $subpath, $qualifiers; } return 0; } sub definition_help { my $type = shift; my $definition = URI::PackageURL::Type->new($type); unless (%{$definition->definition}) { say "No known PURL type definition for '$type'"; exit 1; } my $type_name = $definition->type_name; my $description = $definition->description; my $reference_urls = $definition->reference_urls; my $examples = $definition->examples; my $note = $definition->note; my $repository = $definition->repository; my $schema_id = $definition->schema_id; my $qualifiers_definition = $definition->qualifiers_definition; my $have_ns = ($definition->component_is_required('namespace') || $definition->component_is_optional('namespace')); my $purl_syntax = "pkg:$type"; $purl_syntax .= '/EnamespaceE' if $have_ns; $purl_syntax .= '/EnameE@EversionE?EqualifiersE#EsubpathE'; my $man = <<"MAN"; =head1 NAME $type - $type_name =head1 DESCRIPTION $description =head1 SYNTAX The structure of a PURL for this package type is: C<$purl_syntax> MAN foreach my $component (qw[namespace name version subpath]) { next unless $definition->component_have_definition($component); my $requirement = $definition->component_requirement($component); my $permitted_characters = $definition->component_permitted_characters($component); my $normalization_rules = $definition->component_normalization_rules($component); my $case_sensitive = $definition->component_case_sensitive($component); my $native_name = $definition->component_native_name($component); my $note = $definition->component_note($component); $man .= sprintf "=head2 %s\n\n", ucfirst $component; $man .= "=over 2\n\n"; if ($requirement) { $man .= sprintf "=item B: %s\n\n", ucfirst($requirement); } if ($permitted_characters) { $man .= sprintf "=item B: %s\n\n", ucfirst($permitted_characters); } if ($case_sensitive) { $man .= sprintf "=item B: %s\n\n", ($case_sensitive ? 'Yes' : 'No'); } if (@{$normalization_rules}) { $man .= "=item B:\n\n"; $man .= "=over 2\n\n"; foreach (@{$normalization_rules}) { $man .= sprintf "=item * %s\n\n", $_; } $man .= "=back\n\n"; } if ($native_name) { $man .= "=item B: $native_name\n\n"; } $man .= "=back\n\n"; if ($note) { $man .= sprintf "%s\n\n", _md_to_pod($note); } } if (@{$qualifiers_definition}) { $man .= "=head2 Qualifiers\n\n"; $man .= "=over 2\n\n"; foreach my $qualifier (@{$qualifiers_definition}) { $man .= sprintf "=item C<%s>\n\n", $qualifier->{key}; if (my $requirement = $qualifier->{requirement}) { $man .= sprintf "Requirement: %s\n\n", ucfirst($requirement); } if (my $native_name = $qualifier->{native_name}) { $man .= sprintf "Native name: %s\n\n", $native_name; } if (my $default_value = $qualifier->{default_value}) { $man .= sprintf "Default value: %s\n\n", $default_value; } $man .= sprintf "%s\n\n", _md_to_pod($qualifier->{description}); } $man .= "=back\n\n"; } if ($repository) { my $use_repository = $repository->{use_repository} ? 'Yes' : 'No'; my $default_repository_url = $repository->{default_repository_url}; $man .= "=head1 REPOSITORY\n\n"; $man .= "=over\n\n"; $man .= sprintf "=item B: %s\n\n", $repository->{use_repository} ? 'Yes' : 'No'; $man .= sprintf "=item B: %s\n\n", $repository->{default_repository_url} || '(none)'; $man .= "=back\n\n"; if (my $note = $repository->{note}) { $man .= sprintf "%s\n\n", _md_to_pod($note); } } if (@{$examples}) { $man .= "=head1 EXAMPLES\n\n"; $man .= "=over 2\n\n"; foreach (@{$examples}) { $man .= sprintf "=item * %s\n\n", $_; } $man .= "=back\n\n"; } if ($note) { $man .= "=head1 NOTES\n\n"; $man .= sprintf "$note\n\n"; } $man .= "=head1 REFERENCES\n\n"; $man .= "=over 2\n\n"; $man .= sprintf "=item * %s schema ID, L<%s>\n\n", $type_name, $schema_id; foreach (@{$reference_urls}) { $man .= sprintf "=item * %s reference, L<%s>\n\n", $type_name, $_; } $man .= "=item * PURL specification, L\n\n"; $man .= "=item * VERS specification, L\n\n"; $man .= "=back\n\n"; Pod::Text->new->parse_string_document($man, \my $output); exit; } 1; __END__ =encoding utf-8 =head1 NAME URI::PackageURL::App - URI::PackageURL (PURL) Command Line Interface =head1 SYNOPSIS use URI::PackageURL::App qw(run); run(\@ARGV); =head1 DESCRIPTION URI::PackageURL::App "Command Line Interface" helper module for C. =over =item URI::PackageURL->run(@args) Execute the command =item cli_error($error) Clean error =back =head1 AUTHOR L =head1 COPYRIGHT AND LICENSE Copyright © 2022-2026 L You may use and distribute this module according to the same terms that Perl is distributed under. =cut URI-PackageURL-2.24/bin/0000755000175000017500000000000015135504367013601 5ustar peppepeppeURI-PackageURL-2.24/bin/vers-tool0000644000175000017500000000517115135504042015450 0ustar peppepeppe#!/usr/bin/perl use strict; use warnings; use utf8; use URI::VersionRange::App; exit URI::VersionRange::App->run(@ARGV) unless caller(); 1; __END__ =encoding utf-8 =head1 NAME vers-tool - Version Range tool =head1 SYNOPSIS vers-tool [OPTIONS]...STRING vers-tool STRING --contains STRING vers-tool [--help|--man|-v] Options: --help Brief help message --man Full documentation -v Print version --contains=VERSION Check if a version is contained within a range --format=FORMAT Output format --json JSON output format (--format=json) -h, --human-readable Human-readable format (--format=human-readable) Examples: Decode a "vers" string: vers-tool "vers:cpan/1.00|>=2.00|<5.00" | jq Check if a version is contained within a range: vers-tool "vers:cpan/1.00|>=2.00|<5.00" --contains "2.20" Humanize "vers": vers-tool "vers:cpan/1.00|>=2.00|<5.00" --human-readable cpan - equal 1.00 - greater than or equal 2.00 - less than 5.00 =head1 DESCRIPTION C Version Range tool A version range specifier (aka. "vers") is a URI string using the C URI-scheme with this syntax: vers:/||... C is the URI-scheme and is an acronym for "VErsion Range Specifier". The pipe "|" is used as a simple separator between C. Each C in this pipe-separated list contains a comparator and a version: This list of C are signposts in the version timeline of a package that specify version intervals. A C satisfies a version range specifier if it is contained within any of the intervals defined by these C. L =head1 EXAMPLES Decode a "vers" string: vers-tool "vers:cpan/1.00|>=2.00|<5.00" | jq Check if a version is contained within a range: vers-tool "vers:cpan/1.00|>=2.00|<5.00" --contains "2.20" Humanize "vers": vers-tool "vers:cpan/1.00|>=2.00|<5.00" --human-readable cpan - equal 1.00 - greater than or equal 2.00 - less than 5.00 =head1 AUTHOR L =head1 COPYRIGHT AND LICENSE Copyright © 2022-2025 L You may use and distribute this module according to the same terms that Perl is distributed under. URI-PackageURL-2.24/bin/purl-tool0000644000175000017500000001137615135504042015457 0ustar peppepeppe#!/usr/bin/perl use strict; use warnings; use utf8; use URI::PackageURL::App; exit URI::PackageURL::App->run(@ARGV) unless caller(); 1; __END__ =encoding utf-8 =head1 NAME purl-tool - Package URL tool =head1 SYNOPSIS purl-tool [OPTIONS]...STRING purl-tool --type STRING [--namespace STRING] --name STRING [--version STRING] [--subpath STRING] [--qualifier KEY=VALUE [...]] purl-tool [--help|--man|-v] Options: --info TYPE Display information about provided PURL type --list Display known PURL type --help Brief help message --man Full documentation -v Print version -q, --quiet Suppress output "purl" string encode options: --type=STRING Type --namespace=STRING Namespace (optional) --name=STRING Name --version=STRING Version (optional) --qualifier KEY=VALUE Qualifier key-value (optional) "purl" string decode options: --download-url Download URL --repository-url Repository URL -0, --null Return NULL char instead of new line --format=FORMAT Output format --dumper Data::Dumper format (--format=dumper) --json JSON output format (--format=json) --yaml YAML output format (--format=yaml) --env ENV output format (--format=env) "purl" validation options: --validate Validate a PURL string and return the exit code Examples: Parse the given Package URL string and return JSON and send the STDOUT to jq: purl-tool pkg:cpan/GDT/URI-PackageURL@2.24 --json | jq Download the package from the repository using PURL string: wget $(purl-tool pkg:cpan/GDT/URI-PackageURL@2.24 --download-url) Create a canonical PURL string purl-tool --type cpan \ --namespace GDT \ --name URI-PackageURL \ --version 2.24 Validate a PURL string: if $(purl-tool $PURL_STRING --validate -q); then echo "PURL string is valid" else echo "PURL string is not valid" fi Display information about provided PURL type (allowed components, repository, examples, etc.): purl-tool --info rpm Display all known PURL types: purl-tool --list =head1 DESCRIPTION C Package URL tool A Package URL (aka "purl") is a URL string used to identify and locate a software package in a mostly universal and uniform way across programing languages, package managers, packaging conventions, tools, APIs and databases. L A purl is a URL composed of seven components: scheme:type/namespace/name@version?qualifiers#subpath Components are separated by a specific character for unambiguous parsing. The definition for each components is: =over =item * "scheme": this is the URL scheme with the constant value of "pkg". One of the primary reason for this single scheme is to facilitate the future official registration of the "pkg" scheme for package URLs. Required. =item * "type": the package "type" or package "protocol" such as cpan, maven, npm, nuget, gem, pypi, etc. Required. =item * "namespace": some name prefix such as a Maven groupid, a Docker image owner, a GitHub user or organization. Optional and type-specific. =item * "name": the name of the package. Required. =item * "version": the version of the package. Optional. =item * "qualifiers": extra qualifying data for a package such as an OS, architecture, a distro, etc. Optional and type-specific. =item * "subpath": extra subpath within a package, relative to the package root. Optional. =back =head1 EXAMPLES Parse the given PURL string and return JSON and send the STDOUT to L: purl-tool pkg:cpan/GDT/URI-PackageURL@2.24 --json | jq Download the package from the repository using Package URL string: wget $(purl-tool pkg:cpan/GDT/URI-PackageURL@2.24 --download-url) Create a canonical Package URL string: purl-tool --type cpan \ --namespace GDT \ --name URI-PackageURL \ --version 2.24 Display information about provided PURL type (allowed components, repository, examples, etc.): purl-tool --info rpm =head1 AUTHOR L =head1 COPYRIGHT AND LICENSE Copyright © 2022-2025 L You may use and distribute this module according to the same terms that Perl is distributed under. URI-PackageURL-2.24/INSTALL.md0000644000175000017500000000540014442172755014462 0ustar peppepeppe# URI::PackageURL - Perl extension for Package URL (aka "purl") The INSTALL is used to introduce the module and provide instructions on how to install the module, any machine dependencies it may have (for example C compilers and installed libraries) and any other information that should be provided before the module is installed. ## INSTALLATION Using Makefile.PL: To install this module, run the following commands. perl Makefile.PL make make test make install Using App::cpanminus: cpanm URI::PackageURL ## SUPPORT AND DOCUMENTATION After installing, you can find documentation for this module with the perldoc command. perldoc URI::PackageURL You can also look for information at: * GitHub issues (report bugs here) https://github.com/giterlizzi/perl-URI-PackageURL/issues ## LICENSE AND COPYRIGHT Copyright (C) 2022-2023 Giuseppe Di Terlizzi This program is free software; you can redistribute it and/or modify it under the terms of the the Artistic License (2.0). You may obtain a copy of the full license at: http://www.perlfoundation.org/artistic_license_2_0 Any use, modification, and distribution of the Standard or Modified Versions is governed by this Artistic License. By using, modifying or distributing the Package, you accept this license. Do not use, modify, or distribute the Package, if you do not accept this license. If your Modified Version has been derived from a Modified Version made by someone other than you, you are nevertheless required to ensure that your Modified Version complies with the requirements of this license. This license does not grant you the right to use any trademark, service mark, tradename, or logo of the Copyright Holder. This license includes the non-exclusive, worldwide, free-of-charge patent license to make, have made, use, offer to sell, sell, import and otherwise transfer the Package with respect to any patent claims licensable by the Copyright Holder that are necessarily infringed by the Package. If you institute patent litigation (including a cross-claim or counterclaim) against any party alleging that the Package constitutes direct or contributory patent infringement, then this Artistic License to you shall terminate on the date that such litigation is filed. Disclaimer of Warranty: THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. URI-PackageURL-2.24/Makefile.PL0000644000175000017500000000235515034227372015004 0ustar peppepeppe#!perl use strict; use warnings; use ExtUtils::MakeMaker; WriteMakefile( NAME => 'URI::PackageURL', AUTHOR => q{Giuseppe Di Terlizzi }, VERSION_FROM => 'lib/URI/PackageURL.pm', ABSTRACT_FROM => 'lib/URI/PackageURL.pm', LICENSE => 'artistic_2', EXE_FILES => ['bin/purl-tool', 'bin/vers-tool'], MIN_PERL_VERSION => 5.010, PL_FILES => {}, CONFIGURE_REQUIRES => {'ExtUtils::MakeMaker' => '0'}, TEST_REQUIRES => {'Test::More' => '0', 'JSON::PP' => '0', 'CPAN::DistnameInfo' => 0}, PREREQ_PM => {'JSON::PP' => '0', 'List::Util' => '0'}, META_MERGE => { 'meta-spec' => {version => 2}, 'resources' => { bugtracker => {web => 'https://github.com/giterlizzi/perl-URI-PackageURL/issues'}, repository => { type => 'git', url => 'git://github.com/giterlizzi/perl-URI-PackageURL', web => 'https://github.com/giterlizzi/perl-URI-PackageURL' }, }, x_purl => 'pkg:cpan/GDT/URI-PackageURL' }, dist => {COMPRESS => 'gzip -9f', SUFFIX => 'gz'}, clean => {FILES => 'URI-PackageURL-*'}, ); URI-PackageURL-2.24/MANIFEST0000644000175000017500000001054415135504370014160 0ustar peppepeppebin/purl-tool bin/vers-tool Changes examples/cpan-dist-download-and-test.sh examples/rpm-to-purl.sh examples/version-comparators.pl INSTALL.md lib/URI/PackageURL.pm lib/URI/PackageURL/App.pm lib/URI/PackageURL/Type.pm lib/URI/PackageURL/types/alpm-definition.json lib/URI/PackageURL/types/apk-definition.json lib/URI/PackageURL/types/bazel-definition.json lib/URI/PackageURL/types/bitbucket-definition.json lib/URI/PackageURL/types/bitnami-definition.json lib/URI/PackageURL/types/cargo-definition.json lib/URI/PackageURL/types/cocoapods-definition.json lib/URI/PackageURL/types/composer-definition.json lib/URI/PackageURL/types/conan-definition.json lib/URI/PackageURL/types/conda-definition.json lib/URI/PackageURL/types/cpan-definition.json lib/URI/PackageURL/types/cran-definition.json lib/URI/PackageURL/types/deb-definition.json lib/URI/PackageURL/types/docker-definition.json lib/URI/PackageURL/types/gem-definition.json lib/URI/PackageURL/types/generic-definition.json lib/URI/PackageURL/types/github-definition.json lib/URI/PackageURL/types/golang-definition.json lib/URI/PackageURL/types/hackage-definition.json lib/URI/PackageURL/types/hex-definition.json lib/URI/PackageURL/types/huggingface-definition.json lib/URI/PackageURL/types/julia-definition.json lib/URI/PackageURL/types/luarocks-definition.json lib/URI/PackageURL/types/maven-definition.json lib/URI/PackageURL/types/mlflow-definition.json lib/URI/PackageURL/types/npm-definition.json lib/URI/PackageURL/types/nuget-definition.json lib/URI/PackageURL/types/oci-definition.json lib/URI/PackageURL/types/otp-definition.json lib/URI/PackageURL/types/pub-definition.json lib/URI/PackageURL/types/pypi-definition.json lib/URI/PackageURL/types/qpkg-definition.json lib/URI/PackageURL/types/rpm-definition.json lib/URI/PackageURL/types/swid-definition.json lib/URI/PackageURL/types/swift-definition.json lib/URI/PackageURL/Util.pm lib/URI/VersionRange.pm lib/URI/VersionRange/App.pm lib/URI/VersionRange/Constraint.pm lib/URI/VersionRange/Util.pm lib/URI/VersionRange/Version.pm LICENSE Makefile.PL MANIFEST README.md sync-purl-spec.sh t/00-load.t t/10-encode.t t/20-decode.t t/30-util.t t/40-cli.t t/50-version-range.t t/60-semver-compare.t t/70-vers-from-native.t t/90-cpan-distname-info.t t/91-cpan-distpath-quailfier.t t/99-purl-legacy-test-suite.t t/99-purl-tests.t t/99-vers-tests.t t/manifest.t t/pod-coverage.t t/pod.t t/purl/spec/specification-test.json t/purl/types/alpm-test.json t/purl/types/apk-test.json t/purl/types/bazel-test.json t/purl/types/bintray-test.json t/purl/types/bitbucket-test.json t/purl/types/bitnami-test.json t/purl/types/cargo-test.json t/purl/types/cocoapods-test.json t/purl/types/composer-test.json t/purl/types/conan-test.json t/purl/types/conda-test.json t/purl/types/cpan-test.json t/purl/types/cran-test.json t/purl/types/deb-test.json t/purl/types/docker-test.json t/purl/types/gem-test.json t/purl/types/generic-test.json t/purl/types/github-test.json t/purl/types/golang-test.json t/purl/types/hackage-test.json t/purl/types/hex-test.json t/purl/types/huggingface-test.json t/purl/types/julia-test.json t/purl/types/luarocks-test.json t/purl/types/maven-test.json t/purl/types/mlflow-test.json t/purl/types/npm-test.json t/purl/types/nuget-test.json t/purl/types/oci-test.json t/purl/types/otp-test.json t/purl/types/pub-test.json t/purl/types/pypi-test.json t/purl/types/qpkg-test.json t/purl/types/rpm-test.json t/purl/types/swid-test.json t/purl/types/swift-test.json t/sync-purl-legacy-test-suite-data.sh t/sync-tests.sh t/test-suite-data.json t/vers/alpine_version_cmp_test.json t/vers/alpm_version_cmp_test.json t/vers/conan_range_from_native_basic_test.json t/vers/conan_range_from_native_test.json t/vers/conan_version_cmp_test.json t/vers/gem_range_from_native_test.json t/vers/gentoo_version_cmp_test.json t/vers/lexicographic-test.json t/vers/maven_version_cmp_test.json t/vers/nginx_range_from_native_test.json t/vers/npm_range_containment_test.json t/vers/npm_range_from_native_test.json t/vers/nuget_range_from_native_test.json t/vers/nuget_version_cmp_test.json t/vers/openssl_range_from_native_test.json t/vers/openssl_version_cmp_test.json t/vers/pypi_range_containment_test.json t/vers/pypi_range_from_native_test.json t/vers/pypi_range_roundtrip_test.json META.yml Module YAML meta-data (added by MakeMaker) META.json Module JSON meta-data (added by MakeMaker) URI-PackageURL-2.24/examples/0000755000175000017500000000000015135504367014647 5ustar peppepeppeURI-PackageURL-2.24/examples/rpm-to-purl.sh0000644000175000017500000000117114610552121017365 0ustar peppepeppe#!/bin/bash # rpm-to-purl - Convert all installed RPM packages in purl string # (C) 2023, Giuseppe Di Terlizzi # License MIT . /etc/os-release PACKAGES=$(rpm -qa --qf '%{NAME}\t%{VERSION}-%{RELEASE}\t%{ARCH}\n') while IFS= read -r LINE; do PKG_NAME=$(echo $LINE | cut -d ' ' -f1) PKG_VER=$(echo $LINE | cut -d ' ' -f2) PKG_ARCH=$(echo $LINE | cut -d ' ' -f3) purl-tool --type rpm \ --namespace $ID \ --name $PKG_NAME \ --version $PKG_VER \ --qualifier distro=$ID-$VERSION_ID \ --qualifier arch=$PKG_ARCH done <<< "$PACKAGES" URI-PackageURL-2.24/examples/version-comparators.pl0000644000175000017500000000114514617672755021235 0ustar peppepeppepackage URI::VersionRange::Version::generic { use Version::libversion::XS; use parent 'URI::VersionRange::Version'; use overload ('cmp' => \&compare, '<=>' => \&compare, fallback => 1); sub compare { my ($left, $right) = @_; return version_compare2($left->[0], $right->[0]); } } package URI::VersionRange::Version::rpm { use RPM4; use parent 'URI::VersionRange::Version'; use overload ('cmp' => \&compare, '<=>' => \&compare, fallback => 1); sub compare { my ($left, $right) = @_; return rpmvercmp($left->[0], $right->[0]); } } 1; URI-PackageURL-2.24/examples/cpan-dist-download-and-test.sh0000644000175000017500000000144114610552121022373 0ustar peppepeppe#!/bin/bash # cpan-dist-download-and-test - Download and test the provided cpan distribution using "purl" string # (C) 2023, Giuseppe Di Terlizzi # License MIT set -e PURL=$1 if [[ -z "$PURL" ]]; then echo "Usage: $0 PURL" echo "" echo " Example:" echo " $0 pkg:cpan/GDT/URI-PackageURL@2.04" echo "" exit 1 fi eval $(purl-tool "$PURL" --env) if [[ "$PURL_TYPE" != "cpan" ]]; then echo "[ERROR] Not 'cpan' type component" exit 1 fi if [[ -z "$PURL_DOWNLOAD_URL" ]]; then echo "[ERROR] Missing PURL_DOWNLOAD_URL" exit 1 fi echo "Download $PURL_NAME $PURL_VERSION" wget $PURL_DOWNLOAD_URL echo "Build and test module $PURL_NAME $PURL_VERSION" tar xvf $PURL_NAME-$PURL_VERSION.tar.gz cd $PURL_NAME-$PURL_VERSION perl Makefile.PL make && make test URI-PackageURL-2.24/META.yml0000644000175000017500000000152015135504367014300 0ustar peppepeppe--- abstract: 'Perl extension for PURL (Package URL)' author: - 'Giuseppe Di Terlizzi ' build_requires: CPAN::DistnameInfo: '0' ExtUtils::MakeMaker: '0' JSON::PP: '0' Test::More: '0' configure_requires: ExtUtils::MakeMaker: '0' dynamic_config: 1 generated_by: 'ExtUtils::MakeMaker version 7.76, CPAN::Meta::Converter version 2.150010' license: artistic_2 meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: '1.4' name: URI-PackageURL no_index: directory: - t - inc requires: JSON::PP: '0' List::Util: '0' perl: '5.010' resources: bugtracker: https://github.com/giterlizzi/perl-URI-PackageURL/issues repository: git://github.com/giterlizzi/perl-URI-PackageURL version: '2.24' x_purl: pkg:cpan/GDT/URI-PackageURL x_serialization_backend: 'CPAN::Meta::YAML version 0.020'