15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#!/usr/bin/perl -w 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# Copyright (C) Research in Motion Limited 2010. All Rights Reserved. 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# Copyright (C) 2010 Chris Jerdonek (chris.jerdonek@gmail.com) 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# Copyright (C) 2012 Daniel Bates (dbates@intudata.com) 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# Redistribution and use in source and binary forms, with or without 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# modification, are permitted provided that the following conditions are 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# met: 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# * Redistributions of source code must retain the above copyright 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# notice, this list of conditions and the following disclaimer. 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# * Redistributions in binary form must reproduce the above 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# copyright notice, this list of conditions and the following disclaimer 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# in the documentation and/or other materials provided with the 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# distribution. 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# * Neither the name of Apple Computer, Inc. ("Apple") nor the names of 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# its contributors may be used to endorse or promote products derived 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# from this software without specific prior written permission. 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# Unit tests of parseSvnProperty(). 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)use strict; 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)use warnings; 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)use Test::More; 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)use VCSUtils; 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)my @testCaseHashRefs = ( 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#### 435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# Simple test cases 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)## 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "simple: add svn:executable", 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Added: svn:executable 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + * 515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "svn:executable", 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "*", 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)undef], 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => undef, 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "simple: delete svn:executable", 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Deleted: svn:executable 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) - * 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "svn:executable", 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => -1, 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "*", 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)undef], 755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => undef, 765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "simple: add svn:mergeinfo", 805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Added: svn:mergeinfo 825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Merged /trunk/Makefile:r33020 835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "svn:mergeinfo", 875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "/trunk/Makefile:r33020", 895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)undef], 915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => undef, 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "simple: delete svn:mergeinfo", 965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Deleted: svn:mergeinfo 985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Reverse-merged /trunk/Makefile:r33020 995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "svn:mergeinfo", 1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => -1, 1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "/trunk/Makefile:r33020", 1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)undef], 1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => undef, 1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "simple: modified svn:mergeinfo", 1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Modified: svn:mergeinfo 1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Reverse-merged /trunk/Makefile:r33020 1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Merged /trunk/Makefile:r41697 1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "svn:mergeinfo", 1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "/trunk/Makefile:r41697", 1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)undef], 1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => undef, 1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#### 1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# Using SVN 1.4 syntax 1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)## 1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "simple: modified svn:mergeinfo using SVN 1.4 syntax", 1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Name: svn:mergeinfo 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Reverse-merged /trunk/Makefile:r33020 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Merged /trunk/Makefile:r41697 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "svn:mergeinfo", 1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "/trunk/Makefile:r41697", 1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)undef], 1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => undef, 1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "simple: delete svn:executable using SVN 1.4 syntax", 1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Name: svn:executable 1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) - * 1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "svn:executable", 1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => -1, 1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "*", 1585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)undef], 1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => undef, 1615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 1645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "simple: add svn:executable using SVN 1.4 syntax", 1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 1665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Name: svn:executable 1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + * 1685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "svn:executable", 1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "*", 1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)undef], 1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => undef, 1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#### 1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# Using SVN 1.7 syntax 1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)## 1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "simple: add svn:executable using SVN 1.7 syntax", 1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Added: svn:executable 1865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)## -0,0 +1 ## 1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)+* 1885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)\ No newline at end of property 1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "svn:executable", 1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "*", 1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)undef], 1975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => undef, 1985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 1995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 2005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 2015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "simple: delete svn:executable using SVN 1.7 syntax", 2025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 2035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Deleted: svn:executable 2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)## -1 +0,0 ## 2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)-* 2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)\ No newline at end of property 2075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 2085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "svn:executable", 2115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => -1, 2125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "*", 2135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 2145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)undef], 2155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => undef, 2165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 2175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 2185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 2195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "add svn:mime-type and add svn:executable using SVN 1.7 syntax", 2205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 2215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Added: svn:mime-type 2225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)## -0,0 +1 ## 2235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)+image/png 2245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)\ No newline at end of property 2255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Added: svn:executable 2265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)## -0,0 +1 ## 2275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)+* 2285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)\ No newline at end of property 2295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 2305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 2315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 2325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "svn:mime-type", 2335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 2345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "image/png", 2355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 2365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"Added: svn:executable\n"], 2375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => "## -0,0 +1 ##\n", 2385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 2395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#### 2405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# Property value followed by empty line and start of next diff 2415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)## 2425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 2435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 2445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "add svn:executable, followed by empty line and start of next diff", 2455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 2465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Added: svn:executable 2475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + * 2485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Index: Makefile.shared 2505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 2515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 2525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 2535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "svn:executable", 2545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 2555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "*", 2565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 2575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"\n"], 2585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => "Index: Makefile.shared\n", 2595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 2605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 2615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 2625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "add svn:executable, followed by empty line and start of next diff using Windows line endings", 2635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => toWindowsLineEndings(<<'END', 2645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Added: svn:executable 2655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + * 2665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Index: Makefile.shared 2685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 2695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)), 2705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 2715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 2725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "svn:executable", 2735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 2745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "*", 2755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 2765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"\r\n"], 2775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => "Index: Makefile.shared\r\n", 2785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 2795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 2805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 2815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "add svn:executable, followed by empty line and start of next property diff", 2825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 2835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Added: svn:executable 2845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + * 2855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Property changes on: Makefile.shared 2875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 2885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 2895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 2905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "svn:executable", 2915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 2925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "*", 2935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 2945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"\n"], 2955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => "Property changes on: Makefile.shared\n", 2965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 2975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 2985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 2995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "add svn:executable, followed by empty line and start of next property diff using Windows line endings", 3005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => toWindowsLineEndings(<<'END', 3015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Added: svn:executable 3025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + * 3035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Property changes on: Makefile.shared 3055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 3065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)), 3075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 3085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "svn:executable", 3105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 3115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "*", 3125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 3135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"\r\n"], 3145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => "Property changes on: Makefile.shared\r\n", 3155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 3165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 3185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "multi-line '+' change, followed by empty line and start of next diff", 3195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 3205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Name: documentation 3215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + A 3225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)long sentence that spans 3235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)multiple lines. 3245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Index: Makefile.shared 3265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 3275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 3285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "documentation", 3305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 3315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "A\nlong sentence that spans\nmultiple lines.", 3325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 3335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"\n"], 3345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => "Index: Makefile.shared\n", 3355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 3365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 3385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "multi-line '+' change, followed by empty line and start of next diff using Windows line endings", 3395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => toWindowsLineEndings(<<'END', 3405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Name: documentation 3415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + A 3425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)long sentence that spans 3435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)multiple lines. 3445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Index: Makefile.shared 3465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 3475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)), 3485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 3495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "documentation", 3515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 3525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "A\r\nlong sentence that spans\r\nmultiple lines.", 3535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 3545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"\r\n"], 3555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => "Index: Makefile.shared\r\n", 3565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 3575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 3595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "multi-line '+' change, followed by empty line and start of next property diff", 3605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 3615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Name: documentation 3625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + A 3635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)long sentence that spans 3645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)multiple lines. 3655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Property changes on: Makefile.shared 3675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 3685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 3695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "documentation", 3715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 3725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "A\nlong sentence that spans\nmultiple lines.", 3735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 3745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"\n"], 3755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => "Property changes on: Makefile.shared\n", 3765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 3775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 3795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "multi-line '+' change, followed by empty line and start of next property diff using Windows line endings", 3805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => toWindowsLineEndings(<<'END', 3815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Name: documentation 3825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + A 3835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)long sentence that spans 3845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)multiple lines. 3855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Property changes on: Makefile.shared 3875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 3885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)), 3895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 3905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "documentation", 3925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 3935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "A\r\nlong sentence that spans\r\nmultiple lines.", 3945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 3955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"\r\n"], 3965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => "Property changes on: Makefile.shared\r\n", 3975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 3985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#### 3995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# Property value followed by empty line and start of binary patch 4005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)## 4015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 4025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 4035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "add svn:executable, followed by empty line and start of binary patch", 4045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 4055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Added: svn:executable 4065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + * 4075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA== 4095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 4105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 4115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 4125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "svn:executable", 4135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 4145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "*", 4155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 4165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"\n"], 4175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => "Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==\n", 4185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 4195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 4205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 4215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "add svn:executable, followed by empty line and start of binary patch using Windows line endings", 4225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => toWindowsLineEndings(<<'END', 4235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Added: svn:executable 4245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + * 4255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA== 4275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 4285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)), 4295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 4305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 4315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "svn:executable", 4325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 4335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "*", 4345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 4355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"\r\n"], 4365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => "Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==\r\n", 4375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 4385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 4395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 4405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "multi-line '+' change, followed by empty line and start of binary patch", 4415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 4425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Name: documentation 4435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + A 4445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)long sentence that spans 4455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)multiple lines. 4465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA== 4485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 4495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 4505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 4515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "documentation", 4525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 4535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "A\nlong sentence that spans\nmultiple lines.", 4545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 4555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"\n"], 4565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => "Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==\n", 4575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 4585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 4595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 4605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "multi-line '+' change, followed by empty line and start of binary patch using Windows line endings", 4615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => toWindowsLineEndings(<<'END', 4625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Name: documentation 4635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + A 4645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)long sentence that spans 4655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)multiple lines. 4665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA== 4685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 4695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)), 4705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 4715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 4725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "documentation", 4735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 4745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "A\r\nlong sentence that spans\r\nmultiple lines.", 4755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 4765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"\r\n"], 4775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => "Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==\r\n", 4785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 4795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 4805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 4815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "multi-line '-' change, followed by multi-line '+' change, empty line, and start of binary patch", 4825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 4835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Modified: documentation 4845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) - A 4855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)long sentence that spans 4865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)multiple lines. 4875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + Another 4885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)long sentence that spans 4895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)multiple lines. 4905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA== 4925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 4935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 4945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 4955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "documentation", 4965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 4975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "Another\nlong sentence that spans\nmultiple lines.", 4985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 4995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"\n"], 5005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => "Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==\n", 5015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 5025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 5045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "multi-line '-' change, followed by multi-line '+' change, empty line, and start of binary patch using Windows line endings", 5055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => toWindowsLineEndings(<<'END', 5065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Modified: documentation 5075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) - A 5085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)long sentence that spans 5095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)multiple lines. 5105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + Another 5115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)long sentence that spans 5125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)multiple lines. 5135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA== 5155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 5165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)), 5175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 5185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "documentation", 5205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 5215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "Another\r\nlong sentence that spans\r\nmultiple lines.", 5225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 5235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"\r\n"], 5245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => "Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==\r\n", 5255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 5265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#### 5275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# Successive properties 5285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)## 5295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 5315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "single-line '+' change followed by custom property with single-line '+' change", 5325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 5335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Added: svn:executable 5345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + * 5355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Added: documentation 5365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + A sentence. 5375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 5385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 5395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "svn:executable", 5415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 5425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "*", 5435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 5445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"Added: documentation\n"], 5455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => " + A sentence.\n", 5465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 5475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 5495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "multi-line '+' change, followed by svn:executable", 5505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 5515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Name: documentation 5525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + A 5535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)long sentence that spans 5545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)multiple lines. 5555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Name: svn:executable 5565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + * 5575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 5585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 5595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "documentation", 5615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 5625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "A\nlong sentence that spans\nmultiple lines.", 5635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 5645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"Name: svn:executable\n"], 5655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => " + *\n", 5665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 5675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 5695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "multi-line '-' change, followed by multi-line '+' change and add svn:executable", 5705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 5715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Modified: documentation 5725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) - A 5735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)long sentence that spans 5745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)multiple lines. 5755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + Another 5765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)long sentence that spans 5775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)multiple lines. 5785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Added: svn:executable 5795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + * 5805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 5815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 5825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "documentation", 5845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 5855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "Another\nlong sentence that spans\nmultiple lines.", 5865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 5875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"Added: svn:executable\n"], 5885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => " + *\n", 5895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 5905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 5925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "'Merged' change followed by 'Merged' change", 5935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 5945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Added: svn:mergeinfo 5955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Merged /trunk/Makefile:r33020 5965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Merged /trunk/Makefile.shared:r58350 5975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 5985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 5995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "svn:mergeinfo", 6015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 6025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "/trunk/Makefile.shared:r58350", 6035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 6045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)undef], 6055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => undef, 6065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 6075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 6095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "'Reverse-merged' change followed by 'Reverse-merged' change", 6105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 6115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Deleted: svn:mergeinfo 6125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Reverse-merged /trunk/Makefile:r33020 6135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Reverse-merged /trunk/Makefile.shared:r58350 6145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 6155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 6165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "svn:mergeinfo", 6185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => -1, 6195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "/trunk/Makefile.shared:r58350", 6205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 6215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)undef], 6225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => undef, 6235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 6245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#### 6255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# Property values with trailing new lines. 6265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)## 6275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# FIXME: We do not support property values with trailing new lines, since it is difficult to 6285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# disambiguate them from the empty line that preceeds the contents of a binary patch as 6295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# in the test case (above): "multi-line '+' change, followed by empty line and start of binary patch". 6305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 6325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "single-line '+' with trailing new line", 6335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 6345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Added: documentation 6355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + A sentence. 6365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 6385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 6395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "documentation", 6415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 6425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "A sentence.", 6435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 6445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"\n"], 6455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => undef, 6465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 6475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 6495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "single-line '+' with trailing new line using Windows line endings", 6505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => toWindowsLineEndings(<<'END', 6515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Added: documentation 6525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + A sentence. 6535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 6555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)), 6565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 6575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "documentation", 6595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 6605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "A sentence.", 6615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 6625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"\r\n"], 6635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => undef, 6645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 6655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 6675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "single-line '+' with trailing new line, followed by empty line and start of binary patch", 6685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 6695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Added: documentation 6705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + A sentence. 6715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA== 6745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 6755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 6765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "documentation", 6785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 6795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "A sentence.", 6805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 6815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"\n"], 6825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => "\n", 6835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 6845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 6865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "single-line '+' with trailing new line, followed by empty line and start of binary patch using Windows line endings", 6875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => toWindowsLineEndings(<<'END', 6885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Added: documentation 6895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + A sentence. 6905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA== 6935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 6945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)), 6955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 6965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "documentation", 6985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => 1, 6995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "A sentence.", 7005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 7015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"\r\n"], 7025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => "\r\n", 7035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 7045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 7065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "single-line '-' change with trailing new line, and single-line '+' change", 7075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 7085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Modified: documentation 7095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) - A long sentence. 7105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + A sentence. 7125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 7135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 7145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "documentation", 7165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => -1, # Since we only interpret the '-' property. 7175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "A long sentence.", 7185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 7195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"\n"], 7205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => " + A sentence.\n", 7215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 7225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 7245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "single-line '-' change with trailing new line, and single-line '+' change using Windows line endings", 7255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => toWindowsLineEndings(<<'END', 7265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Modified: documentation 7275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) - A long sentence. 7285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + A sentence. 7305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 7315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)), 7325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 7335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "documentation", 7355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => -1, # Since we only interpret the '-' property. 7365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "A long sentence.", 7375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 7385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"\r\n"], 7395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => " + A sentence.\r\n", 7405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 7415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 7435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "multi-line '-' change with trailing new line, and multi-line '+' change", 7445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 7455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Modified: documentation 7465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) - A 7475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)long sentence that spans 7485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)multiple lines. 7495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + Another 7515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)long sentence that spans 7525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)multiple lines. 7535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 7545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 7555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "documentation", 7575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => -1, # Since we only interpret the '-' property. 7585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "A\nlong sentence that spans\nmultiple lines.", 7595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 7605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"\n"], 7615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => " + Another\n", 7625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 7635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 7655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "multi-line '-' change with trailing new line, and multi-line '+' change using Windows line endings", 7665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => toWindowsLineEndings(<<'END', 7675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Modified: documentation 7685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) - A 7695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)long sentence that spans 7705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)multiple lines. 7715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + Another 7735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)long sentence that spans 7745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)multiple lines. 7755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 7765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)), 7775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 7785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name => "documentation", 7805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyChangeDelta => -1, # Since we only interpret the '-' property. 7815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value => "A\r\nlong sentence that spans\r\nmultiple lines.", 7825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 7835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"\r\n"], 7845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => " + Another\r\n", 7855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 7865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)); 7875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)my $testCasesCount = @testCaseHashRefs; 7895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)plan(tests => 2 * $testCasesCount); # Total number of assertions. 7905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)foreach my $testCase (@testCaseHashRefs) { 7925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) my $testNameStart = "parseSvnProperty(): $testCase->{diffName}: comparing"; 7935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) my $fileHandle; 7955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) open($fileHandle, "<", \$testCase->{inputText}); 7965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) my $line = <$fileHandle>; 7975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) my @got = VCSUtils::parseSvnProperty($fileHandle, $line); 7995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) my $expectedReturn = $testCase->{expectedReturn}; 8005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) is_deeply(\@got, $expectedReturn, "$testNameStart return value."); 8025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) my $gotNextLine = <$fileHandle>; 8045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) is($gotNextLine, $testCase->{expectedNextLine}, "$testNameStart next read line."); 8055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 806