15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#!/usr/bin/perl -w 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# Copyright (C) 2010 Chris Jerdonek (chris.jerdonek@gmail.com) 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# Copyright (C) 2012 Daniel Bates (dbates@intudata.com) 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# Redistribution and use in source and binary forms, with or without 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# modification, are permitted provided that the following conditions are 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# met: 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# * Redistributions of source code must retain the above copyright 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# notice, this list of conditions and the following disclaimer. 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# * Redistributions in binary form must reproduce the above 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# copyright notice, this list of conditions and the following disclaimer 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# in the documentation and/or other materials provided with the 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# distribution. 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# * Neither the name of Apple Computer, Inc. ("Apple") nor the names of 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# its contributors may be used to endorse or promote products derived 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# from this software without specific prior written permission. 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# Unit tests of parseSvnDiffHeader(). 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)use strict; 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)use warnings; 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)use Test::More; 385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)use VCSUtils; 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# The array of test cases. 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)my @testCaseHashRefs = ( 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "simple diff", 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Index: WebKitTools/Scripts/VCSUtils.pm 475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)=================================================================== 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)--- WebKitTools/Scripts/VCSUtils.pm (revision 53004) 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)+++ WebKitTools/Scripts/VCSUtils.pm (working copy) 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)@@ -32,6 +32,7 @@ use strict; 515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) use warnings; 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) svnConvertedText => <<'END', 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Index: WebKitTools/Scripts/VCSUtils.pm 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)=================================================================== 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)--- WebKitTools/Scripts/VCSUtils.pm (revision 53004) 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)+++ WebKitTools/Scripts/VCSUtils.pm (working copy) 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) indexPath => "WebKitTools/Scripts/VCSUtils.pm", 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) sourceRevision => "53004", 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"@@ -32,6 +32,7 @@ use strict;\n"], 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => " use warnings;\n", 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "new file", 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Index: WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)=================================================================== 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)--- WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl (revision 0) 745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)+++ WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl (revision 0) 755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)@@ -0,0 +1,262 @@ 765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)+#!/usr/bin/perl -w 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) svnConvertedText => <<'END', 815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Index: WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl 825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)=================================================================== 835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)--- WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl (revision 0) 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)+++ WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl (revision 0) 855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) indexPath => "WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl", 875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isNew => 1, 885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"@@ -0,0 +1,262 @@\n"], 905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => "+#!/usr/bin/perl -w\n", 915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "new file with spaces in its name", 955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Index: WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme 975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)=================================================================== 985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)--- WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme (revision 0) 995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)+++ WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme (revision 0) 1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)@@ -0,0 +1,8 @@ 1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)+<?xml version="1.0" encoding="UTF-8"?> 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) svnConvertedText => <<'END', 1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Index: WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme 1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)=================================================================== 1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)--- WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme (revision 0) 1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)+++ WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme (revision 0) 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) indexPath => "WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme", 1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isNew => 1, 1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"@@ -0,0 +1,8 @@\n"], 1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => "+<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n", 1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "copied file", 1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Index: index_path.py 1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)=================================================================== 1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)--- index_path.py (revision 53048) (from copied_from_path.py:53048) 1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)+++ index_path.py (working copy) 1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)@@ -0,0 +1,7 @@ 1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)+# Python file... 1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) svnConvertedText => <<'END', 1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Index: index_path.py 1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)=================================================================== 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)--- index_path.py (revision 53048) (from copied_from_path.py:53048) 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)+++ index_path.py (working copy) 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) copiedFromPath => "copied_from_path.py", 1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) indexPath => "index_path.py", 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) sourceRevision => 53048, 1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"@@ -0,0 +1,7 @@\n"], 1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => "+# Python file...\n", 1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "contains \\r\\n lines", 1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<END, # No single quotes to allow interpolation of "\r" 1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Index: index_path.py\r 1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)===================================================================\r 1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)--- index_path.py (revision 53048)\r 1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)+++ index_path.py (working copy)\r 1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)@@ -0,0 +1,7 @@\r 1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)+# Python file...\r 1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 1555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) svnConvertedText => <<END, # No single quotes to allow interpolation of "\r" 1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Index: index_path.py\r 1585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)===================================================================\r 1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)--- index_path.py (revision 53048)\r 1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)+++ index_path.py (working copy)\r 1615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) indexPath => "index_path.py", 1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) sourceRevision => 53048, 1645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"@@ -0,0 +1,7 @@\r\n"], 1665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => "+# Python file...\r\n", 1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 1685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "contains path corrections", 1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Index: index_path.py 1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)=================================================================== 1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)--- bad_path (revision 53048) (from copied_from_path.py:53048) 1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)+++ bad_path (working copy) 1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)@@ -0,0 +1,7 @@ 1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)+# Python file... 1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) svnConvertedText => <<'END', 1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Index: index_path.py 1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)=================================================================== 1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)--- index_path.py (revision 53048) (from copied_from_path.py:53048) 1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)+++ index_path.py (working copy) 1865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) copiedFromPath => "copied_from_path.py", 1885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) indexPath => "index_path.py", 1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) sourceRevision => 53048, 1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"@@ -0,0 +1,7 @@\n"], 1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => "+# Python file...\n", 1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#### 1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# Binary test cases 1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)## 1975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 1995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "binary file", 2005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 2015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Index: test_file.swf 2025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)=================================================================== 2035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Cannot display: file marked as a binary type. 2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)svn:mime-type = application/octet-stream 2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Property changes on: test_file.swf 2075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)___________________________________________________________________ 2085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Name: svn:mime-type 2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) + application/octet-stream 2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA== 2135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 2145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 2155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 2165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) svnConvertedText => <<'END', 2175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Index: test_file.swf 2185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)=================================================================== 2195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Cannot display: file marked as a binary type. 2205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)svn:mime-type = application/octet-stream 2215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 2235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) indexPath => "test_file.swf", 2245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isBinary => 1, 2255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 2265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"Property changes on: test_file.swf\n"], 2275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => "___________________________________________________________________\n", 2285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 2295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 2305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # New test 2315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) diffName => "binary file using SVN 1.7 syntax", 2325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inputText => <<'END', 2335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Index: test_file.swf 2345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)=================================================================== 2355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Cannot display: file marked as a binary type. 2365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)svn:mime-type = application/octet-stream 2375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Index: test_file.swf 2385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)=================================================================== 2395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)--- test_file.swf 2405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)+++ test_file.swf 2415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Property changes on: test_file.swf 2435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)___________________________________________________________________ 2445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Added: svn:mime-type 2455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)## -0,0 +1 ## 2465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)+application/octet-stream 2475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)\ No newline at end of property 2485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA== 2505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 2515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedReturn => [ 2525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 2535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) svnConvertedText => <<'END', 2545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Index: test_file.swf 2555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)=================================================================== 2565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Cannot display: file marked as a binary type. 2575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)svn:mime-type = application/octet-stream 2585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Index: test_file.swf 2595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)=================================================================== 2605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)--- test_file.swf 2615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)+++ test_file.swf 2625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)END 2635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) indexPath => "test_file.swf", 2645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isBinary => 1, 2655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 2665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"\n"], 2675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expectedNextLine => "Property changes on: test_file.swf\n", 2685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 2695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)); 2705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)my $testCasesCount = @testCaseHashRefs; 2725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)plan(tests => 2 * $testCasesCount); # Total number of assertions. 2735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)foreach my $testCase (@testCaseHashRefs) { 2755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) my $testNameStart = "parseSvnDiffHeader(): $testCase->{diffName}: comparing"; 2765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) my $fileHandle; 2785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) open($fileHandle, "<", \$testCase->{inputText}); 2795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) my $line = <$fileHandle>; 2805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) my @got = VCSUtils::parseSvnDiffHeader($fileHandle, $line); 2825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) my $expectedReturn = $testCase->{expectedReturn}; 2835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) is_deeply(\@got, $expectedReturn, "$testNameStart return value."); 2855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) my $gotNextLine = <$fileHandle>; 2875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) is($gotNextLine, $testCase->{expectedNextLine}, "$testNameStart next read line."); 2885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 289