| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #!/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";
|