#!/usr/bin/perl -w use strict; require File::Temp; use File::Temp (); die "update_plist_test <test file> <plist file>\n" if ($#ARGV < 1); my $testFile = shift @ARGV; die "error: cannot read file $testFile\n" if (! -r $testFile); my $plistFile = shift @ARGV; die "error: cannot read file $plistFile\n" if (! -r $plistFile); # Create a temp file for the new test. my $fh = File::Temp->new(); my $filename = $fh->filename; $fh->unlink_on_destroy(1); # Copy the existing temp file, skipping the FileCheck comments. open (IN, $testFile) or die "cannot open $testFile\n"; while (<IN>) { next if (/^\/\/ CHECK/); print $fh $_; } close(IN); # Copy the plist data, and specially format it. open (IN, $plistFile) or die "cannot open $plistFile\n"; my $firstArray = 1; my $first = 1; while (<IN>) { # Skip everything not indented. next if (/^[^\s]/); # Skip the first array entry, which is for files. if ($firstArray) { if (/<\/array>/) { $firstArray = 0; } next; } # Format the CHECK lines. if ($first) { print $fh "// CHECK: "; $first = 0; } else { print $fh "// CHECK-NEXT: "; } print $fh $_; } close (IN); close ($fh); `cp $filename $testFile`; print "updated $testFile\n";