#!/usr/bin/perl -T # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # # This Source Code Form is "Incompatible With Secondary Licenses", as # defined by the Mozilla Public License, v. 2.0. use strict; use warnings; use lib qw( . lib ); use Test::More; use Bugzilla; use Bugzilla::Extension; my $class = Bugzilla::Extension->load('extensions/BMO/Extension.pm', 'extensions/BMO/Config.pm'); ok( $class->can('bug_format_comment'), 'the function exists'); my $bmo = $class->new; ok($bmo, "got a new bmo extension"); my $text = <<'END_OF_LINKS'; # crash stats, a fake one bp-deadbeef-deaf-beef-beed-cafefeed1337 # CVE/CAN security things CVE-2014-0160 CVE-2014-0001 CVE-2014-13579 CVE-2014-999999999 # svn r2424 # bzr commit Committing to: bzr+ssh://dlawrence%40mozilla.com@bzr.mozilla.org/bmo/4.2 modified extensions/Review/Extension.pm Committed revision 9257. # git with scp-style address To gitolite3@git.mozilla.org:bugzilla/bugzilla.git 36f56bd..eab44b1 nouri -> nouri # git with uri (with login) To ssh://gitolite3@git.mozilla.org/bugzilla/bugzilla.git 36f56bd..eab44b1 withuri -> withuri # git with uri (without login) To ssh://git.mozilla.org/bugzilla/bugzilla.git 36f56bd..eab44b1 nologin -> nologin END_OF_LINKS my @regexes; $bmo->bug_format_comment({ regexes => \@regexes }); ok(@regexes > 0, "got some regexes to play with"); foreach my $re (@regexes) { my ($match, $replace) = @$re{qw(match replace)}; if (ref($replace) eq 'CODE') { $text =~ s/$match/$replace->({matches => [ $1, $2, $3, $4, $5, $6, $7, $8, $9, $10]})/egx; } else { $text =~ s/$match/$replace/egx; } } my @links = ( 'bp-deadbeef-deaf-beef-beed-cafefeed1337', 'CVE-2014-0160', 'CVE-2014-0001', 'CVE-2014-13579', 'CVE-2014-999999999', 'r2424', '36f56bd..eab44b1 withuri -> withuri', '36f56bd..eab44b1 nouri -> nouri', '36f56bd..eab44b1 nologin -> nologin', 'https://bzr.mozilla.org/bmo/4.2/revision/9257', ); foreach my $link (@links) { ok(index($text, $link) > -1, "check for $link"); } done_testing;