#!/usr/bin/perl -w
#
# Copyright (C) 2016 Apple Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
use strict;
use warnings;
use Test::More;
use FindBin;
use lib File::Spec->catdir($FindBin::Bin, "..");
use LoadAsModule qw(PrepareChangeLog prepare-ChangeLog);
# NOTE: A Bugzilla Comment XML looks like:
#
#
# 1153467
# webkit-bug-importer
# 2016-01-07 11:06:14 -0800
# <rdar://problem/24093563>
#
#
# But for these tests we simplify the XML to just the blocks.
my @testCaseHashRefs = (
###
# Comments where a Radar URL will be detected.
##
{
testName => "Radar URL comment",
inputText => "<rdar://problem/24093563>",
expected => ""
},
{
testName => "Radar URL comment with leading whitespace",
inputText => " <rdar://problem/24093563>",
expected => ""
},
{
testName => "Radar URL comment with trailing title",
inputText => "<rdar://problem/24093563> Radar Title Here",
expected => ""
},
{
testName => "Multiple comments, detect first Radar URL comment",
inputText => "Comment 1\n<rdar://problem/24093563>\n<rdar://problem/99999999>",
expected => ""
},
###
# Comments where a Radar URL will not be detected.
##
{
testName => "Empty comment",
inputText => "",
expected => ""
},
{
testName => "Comment without radar URL link",
inputText => "Comment text",
expected => ""
},
{
testName => "Radar URL comment with leading text",
inputText => "Check out: <rdar://problem/24093563>",
expected => ""
},
);
# Ignore STDERR output from fetchRadarURLFromBugXMLData for the test cases.
close STDERR;
my $testCasesCount = @testCaseHashRefs;
plan(tests => $testCasesCount);
foreach my $testCase (@testCaseHashRefs) {
my $expected = $testCase->{expected};
my $got = PrepareChangeLog::fetchRadarURLFromBugXMLData(152839, $testCase->{inputText});
is($got, $expected, $testCase->{testName});
}