1dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#!/usr/bin/perl
2dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#
3dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# Copyright (C) 2010 Apple Inc. All rights reserved.
4dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#
5dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# Redistribution and use in source and binary forms, with or without
6dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# modification, are permitted provided that the following conditions
7dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# are met:
8dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# 1.  Redistributions of source code must retain the above copyright
9dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#     notice, this list of conditions and the following disclaimer.
10dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# 2.  Redistributions in binary form must reproduce the above copyright
11dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#     notice, this list of conditions and the following disclaimer in the
12dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#     documentation and/or other materials provided with the distribution.
13dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#
14dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
15dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
18dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
21dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
23dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
25dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# Unit tests of VCSUtils::mergeChangeLogs().
26dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
27dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockuse strict;
28dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
29dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockuse Test::Simple tests => 16;
30dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockuse File::Temp qw(tempfile);
31dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockuse VCSUtils;
32dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
33dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# Read contents of a file and return it.
34dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blocksub readFile($)
35dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{
36dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my ($fileName) = @_;
37dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
38dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    local $/;
39dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    open(FH, "<", $fileName);
40dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $content = <FH>;
41dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    close(FH);
42dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
43dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    return $content;
44dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block}
45dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
46dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# Write a temporary file and return the filename.
47dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blocksub writeTempFile($$$)
48dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{
49dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my ($name, $extension, $content) = @_;
50dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
51dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my ($FH, $fileName) = tempfile(
52dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        $name . "-XXXXXXXX",
53dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        DIR => ($ENV{'TMPDIR'} || "/tmp"),
54dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        UNLINK => 0,
55dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    );
56dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    print $FH $content;
57dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    close $FH;
58dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
59dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    if ($extension) {
60dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        my $newFileName = $fileName . $extension;
61dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        rename($fileName, $newFileName);
62dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        $fileName = $newFileName;
63dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    }
64dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
65dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    return $fileName;
66dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block}
67dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
68dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# --------------------------------------------------------------------------------
69dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
70dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{
71dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    # New test
72dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $title = "mergeChangeLogs: traditional rejected patch success";
73dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
74dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $fileNewerContent = <<'EOF';
75dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block2010-01-29  Mark Rowe  <mrowe@apple.com>
76dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
77dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Fix the Mac build.
78dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
79dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Disable ENABLE_INDEXED_DATABASE since it is "completely non-functional".
80dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
81dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block2010-01-29  Simon Hausmann  <simon.hausmann@nokia.com>
82dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
83dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Rubber-stamped by Maciej Stachowiak.
84dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
85dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Fix the ARM build.
86dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockEOF
87dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $fileNewer = writeTempFile("file", "", $fileNewerContent);
88dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
89dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $fileMineContent = <<'EOF';
90dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block***************
91dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block*** 1,3 ****
92dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block  2010-01-29  Simon Hausmann  <simon.hausmann@nokia.com>
93dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
94dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block          Rubber-stamped by Maciej Stachowiak.
95dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block--- 1,9 ----
96dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block+ 2010-01-29  Oliver Hunt  <oliver@apple.com>
97dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block+
98dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block+         Reviewed by Darin Adler.
99dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block+
100dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block+         JSC is failing to propagate anonymous slot count on some transitions
101dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block+
102dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block  2010-01-29  Simon Hausmann  <simon.hausmann@nokia.com>
103dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
104dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block          Rubber-stamped by Maciej Stachowiak.
105dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockEOF
106dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $fileMine = writeTempFile("file", ".rej", $fileMineContent);
107dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    rename($fileMine, $fileNewer . ".rej");
108dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    $fileMine = $fileNewer . ".rej";
109dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
110dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $fileOlderContent = $fileNewerContent;
111dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $fileOlder = writeTempFile("file", ".orig", $fileOlderContent);
112dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    rename($fileOlder, $fileNewer . ".orig");
113dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    $fileOlder = $fileNewer . ".orig";
114dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
115dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $exitStatus = mergeChangeLogs($fileMine, $fileOlder, $fileNewer);
116dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
117dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    # mergeChangeLogs() should return 1 since the patch succeeded.
118dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    ok($exitStatus == 1, "$title: should return 1 for success");
119dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
120dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    ok(readFile($fileMine) eq $fileMineContent, "$title: \$fileMine should be unchanged");
121dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    ok(readFile($fileOlder) eq $fileOlderContent, "$title: \$fileOlder should be unchanged");
122dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
123dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $expectedContent = <<'EOF';
124dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block2010-01-29  Oliver Hunt  <oliver@apple.com>
125dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
126dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Reviewed by Darin Adler.
127dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
128dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        JSC is failing to propagate anonymous slot count on some transitions
129dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
130dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockEOF
131dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    $expectedContent .= $fileNewerContent;
132dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    ok(readFile($fileNewer) eq $expectedContent, "$title: \$fileNewer should be updated to include patch");
133dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
134dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    unlink($fileMine, $fileOlder, $fileNewer);
135dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block}
136dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
137dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# --------------------------------------------------------------------------------
138dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
139dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{
140dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    # New test
141dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $title = "mergeChangeLogs: traditional rejected patch failure";
142dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
143dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $fileNewerContent = <<'EOF';
144dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block2010-01-29  Mark Rowe  <mrowe@apple.com>
145dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
146dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Fix the Mac build.
147dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
148dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Disable ENABLE_INDEXED_DATABASE since it is "completely non-functional".
149dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
150dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block2010-01-29  Simon Hausmann  <simon.hausmann@nokia.com>
151dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
152dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Rubber-stamped by Maciej Stachowiak.
153dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
154dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Fix the ARM build.
155dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockEOF
156dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $fileNewer = writeTempFile("file", "", $fileNewerContent);
157dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
158dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $fileMineContent = <<'EOF';
159dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block***************
160dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block*** 1,9 ****
161dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block- 2010-01-29  Oliver Hunt  <oliver@apple.com>
162dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block-
163dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block-         Reviewed by Darin Adler.
164dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block-
165dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block-         JSC is failing to propagate anonymous slot count on some transitions
166dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block-
167dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block  2010-01-29  Simon Hausmann  <simon.hausmann@nokia.com>
168dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
169dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block          Rubber-stamped by Maciej Stachowiak.
170dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block--- 1,3 ----
171dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block  2010-01-29  Simon Hausmann  <simon.hausmann@nokia.com>
172dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
173dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block          Rubber-stamped by Maciej Stachowiak.
174dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockEOF
175dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $fileMine = writeTempFile("file", ".rej", $fileMineContent);
176dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    rename($fileMine, $fileNewer . ".rej");
177dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    $fileMine = $fileNewer . ".rej";
178dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
179dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $fileOlderContent = $fileNewerContent;
180dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $fileOlder = writeTempFile("file", ".orig", $fileOlderContent);
181dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    rename($fileOlder, $fileNewer . ".orig");
182dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    $fileOlder = $fileNewer . ".orig";
183dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
184dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $exitStatus = mergeChangeLogs($fileMine, $fileOlder, $fileNewer);
185dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
186dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    # mergeChangeLogs() should return 0 since the patch failed.
187dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    ok($exitStatus == 0, "$title: should return 0 for failure");
188dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
189dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    ok(readFile($fileMine) eq $fileMineContent, "$title: \$fileMine should be unchanged");
190dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    ok(readFile($fileOlder) eq $fileOlderContent, "$title: \$fileOlder should be unchanged");
191dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    ok(readFile($fileNewer) eq $fileNewerContent, "$title: \$fileNewer should be unchanged");
192dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
193dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    unlink($fileMine, $fileOlder, $fileNewer);
194dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block}
195dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
196dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# --------------------------------------------------------------------------------
197dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
198dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{
199dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    # New test
200dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $title = "mergeChangeLogs: patch succeeds";
201dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
202dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $fileMineContent = <<'EOF';
203dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block2010-01-29  Oliver Hunt  <oliver@apple.com>
204dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
205dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Reviewed by Darin Adler.
206dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
207dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        JSC is failing to propagate anonymous slot count on some transitions
208dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
209dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block2010-01-29  Simon Hausmann  <simon.hausmann@nokia.com>
210dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
211dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Rubber-stamped by Maciej Stachowiak.
212dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
213dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Fix the ARM build.
214dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockEOF
215dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $fileMine = writeTempFile("fileMine", "", $fileMineContent);
216dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
217dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $fileOlderContent = <<'EOF';
218dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block2010-01-29  Simon Hausmann  <simon.hausmann@nokia.com>
219dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
220dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Rubber-stamped by Maciej Stachowiak.
221dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
222dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Fix the ARM build.
223dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockEOF
224dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $fileOlder = writeTempFile("fileOlder", "", $fileOlderContent);
225dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
226dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $fileNewerContent = <<'EOF';
227dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block2010-01-29  Mark Rowe  <mrowe@apple.com>
228dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
229dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Fix the Mac build.
230dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
231dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Disable ENABLE_INDEXED_DATABASE since it is "completely non-functional".
232dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
233dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block2010-01-29  Simon Hausmann  <simon.hausmann@nokia.com>
234dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
235dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Rubber-stamped by Maciej Stachowiak.
236dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
237dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Fix the ARM build.
238dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockEOF
239dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $fileNewer = writeTempFile("fileNewer", "", $fileNewerContent);
240dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
241dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $exitStatus = mergeChangeLogs($fileMine, $fileOlder, $fileNewer);
242dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
243dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    # mergeChangeLogs() should return 1 since the patch succeeded.
244dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    ok($exitStatus == 1, "$title: should return 1 for success");
245dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
246dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    ok(readFile($fileMine) eq $fileMineContent, "$title: \$fileMine should be unchanged");
247dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    ok(readFile($fileOlder) eq $fileOlderContent, "$title: \$fileOlder should be unchanged");
248dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
249dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $expectedContent = <<'EOF';
250dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block2010-01-29  Oliver Hunt  <oliver@apple.com>
251dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
252dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Reviewed by Darin Adler.
253dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
254dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        JSC is failing to propagate anonymous slot count on some transitions
255dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
256dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockEOF
257dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    $expectedContent .= $fileNewerContent;
258dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
259dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    ok(readFile($fileNewer) eq $expectedContent, "$title: \$fileNewer should be patched");
260dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
261dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    unlink($fileMine, $fileOlder, $fileNewer);
262dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block}
263dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
264dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# --------------------------------------------------------------------------------
265dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
266dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{
267dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    # New test
268dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $title = "mergeChangeLogs: patch fails";
269dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
270dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $fileMineContent = <<'EOF';
271dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block2010-01-29  Mark Rowe  <mrowe@apple.com>
272dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
273dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Fix the Mac build.
274dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
275dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Disable ENABLE_INDEXED_DATABASE since it is "completely non-functional".
276dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
277dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block2010-01-29  Simon Hausmann  <simon.hausmann@nokia.com>
278dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
279dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Rubber-stamped by Maciej Stachowiak.
280dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
281dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Fix the ARM build.
282dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockEOF
283dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $fileMine = writeTempFile("fileMine", "", $fileMineContent);
284dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
285dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $fileOlderContent = <<'EOF';
286dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block2010-01-29  Mark Rowe  <mrowe@apple.com>
287dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
288dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Fix the Mac build.
289dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
290dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Disable ENABLE_INDEXED_DATABASE since it is "completely non-functional".
291dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
292dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block2010-01-29  Oliver Hunt  <oliver@apple.com>
293dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
294dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Reviewed by Darin Adler.
295dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
296dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        JSC is failing to propagate anonymous slot count on some transitions
297dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
298dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block2010-01-29  Simon Hausmann  <simon.hausmann@nokia.com>
299dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
300dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Rubber-stamped by Maciej Stachowiak.
301dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
302dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Fix the ARM build.
303dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockEOF
304dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $fileOlder = writeTempFile("fileOlder", "", $fileOlderContent);
305dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
306dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $fileNewerContent = <<'EOF';
307dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block2010-01-29  Oliver Hunt  <oliver@apple.com>
308dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
309dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Reviewed by Darin Adler.
310dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
311dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        JSC is failing to propagate anonymous slot count on some transitions
312dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
313dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block2010-01-29  Simon Hausmann  <simon.hausmann@nokia.com>
314dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
315dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Rubber-stamped by Maciej Stachowiak.
316dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
317dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        Fix the ARM build.
318dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockEOF
319dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $fileNewer = writeTempFile("fileNewer", "", $fileNewerContent);
320dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
321dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    my $exitStatus = mergeChangeLogs($fileMine, $fileOlder, $fileNewer);
322dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
323dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    # mergeChangeLogs() should return a non-zero exit status since the patch failed.
324dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    ok($exitStatus == 0, "$title: return non-zero exit status for failure");
325dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
326dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    ok(readFile($fileMine) eq $fileMineContent, "$title: \$fileMine should be unchanged");
327dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    ok(readFile($fileOlder) eq $fileOlderContent, "$title: \$fileOlder should be unchanged");
328dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
329dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    # $fileNewer should still exist unchanged because the patch failed
330dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    ok(readFile($fileNewer) eq $fileNewerContent, "$title: \$fileNewer should be unchanged");
331dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
332dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    unlink($fileMine, $fileOlder, $fileNewer);
333dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block}
334dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
335dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# --------------------------------------------------------------------------------
336dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
337