User: sits    
  Date: 08/08/29 04:48:30

  Modified:    lib/Codestriker/FileParser PerforceDescribe.pm
                        UnidiffUtils.pm
               .        CHANGELOG
  Added:       t/FileParser perforce.t
               test/testtopictexts perforce-diff14.txt
  Log:
  * Fixed an issue where some Perforce describe diffs were not being
    parsed correctly as reported by [EMAIL PROTECTED]  This has
    now been fixed.
  
  
  
  Index: perforce.t
  ===================================================================
  RCS file: perforce.t
  diff -N perforce.t
  --- /dev/null 1 Jan 1970 00:00:00 -0000
  +++ perforce.t        29 Aug 2008 11:48:26 -0000      1.1
  @@ -0,0 +1,139 @@
  +# Tests to ensure that perforce patches are handled correctly.
  +
  +use strict;
  +use Fatal qw / open close /;
  +use Test::More tests => 6;
  +use Test::Differences;
  +
  +use lib '../../lib';
  +use Codestriker;
  +use Codestriker::FileParser::PerforceDescribe;
  +
  +# Parse the test perforce describe file.
  +my $fh;
  +open( $fh, '<', '../../test/testtopictexts/perforce-diff14.txt' );
  +my @deltas = Codestriker::FileParser::PerforceDescribe->parse($fh);
  +close($fh);
  +
  +# Set what the expected output should be.
  +my @expected;
  +push @expected, make_delta(
  +     filename       => '//depot/autobuild/Build.pm',
  +     revision       => '12',
  +     old_linenumber => '499',
  +     new_linenumber => '499',
  +     text => <<'END_DELTA',
  +   
  +     if ($state eq "start") {
  +       print SENDMAIL "\t\tBuild started for release $rel. Build log could 
be found at:\n";
  +-      print SENDMAIL "http://172.20.1.120/build_log/$bldlog\n";;
  ++      print SENDMAIL "http://172.20.1.251/build_log/$bldlog\n";;
  +       print SENDMAIL "\n You would be notified once build is done.\n";
  +       print SENDMAIL "\n\n\nHappy Building... :)";
  +     }
  +END_DELTA
  +);
  +
  +push @expected, make_delta(
  +     filename       => '//depot/autobuild/Build.pm',
  +     revision       => '12',
  +     old_linenumber => '507',
  +     new_linenumber => '507',
  +     text => <<'END_DELTA',
  + 
  +       print SENDMAIL "\t\tBuild for release $rel finished successfully. 
Here is details:\n";
  +       print SENDMAIL "\nImage location: $stage_rel_link\n";
  +-      print SENDMAIL "Alternate location: 
http://172.20.1.120/images/$stage_rel_dir\n";;
  +-      print SENDMAIL "Build Log: http://172.20.1.120/build_log/$bldlog\n";;
  +-      print SENDMAIL "Sync Log: http://172.20.1.120/synclog/$synclog\n";;
  ++      print SENDMAIL "Alternate location: 
http://172.20.1.251/images/$stage_rel_dir\n";;
  ++      print SENDMAIL "Build Log: http://172.20.1.251/build_log/$bldlog\n";;
  ++      print SENDMAIL "Sync Log: http://172.20.1.251/synclog/$synclog\n";;
  +     }
  +     elsif ($state eq "failed") {
  +
  +END_DELTA
  +);
  +
  +push @expected, make_delta(
  +     filename       => '//depot/autobuild/Build.pm',
  +     revision       => '12',
  +     old_linenumber => '519',
  +     new_linenumber => '519',
  +     text => <<'END_DELTA',
  +       push (@error_msgs, @error_msg);
  +       print SENDMAIL "\n @error_msgs\n";
  +       print SENDMAIL "\n\nSee build log for full details: ";
  +-      print SENDMAIL "Build Log: http://172.20.1.120/build_log/$bldlog\n";;
  +-      print SENDMAIL "Sync Log: http://172.20.1.120/synclog/$synclog\n";;
  ++      print SENDMAIL "Build Log: http://172.20.1.251/build_log/$bldlog\n";;
  ++      print SENDMAIL "Sync Log: http://172.20.1.251/synclog/$synclog\n";;
  +       print SENDMAIL "\nPlease fix the issue and resubmit the build 
request.";
  +     }
  +     close (SENDMAIL);
  +END_DELTA
  +);
  +
  +push @expected, make_delta(
  +     filename       => '//depot/autobuild/buildserver.pl',
  +     revision       => '3',
  +     old_linenumber => '10',
  +     new_linenumber => '10',
  +     text => <<'END_DELTA',
  + my $syncdir = "/opt/LOG/synclog";
  + my $stage_dir = "/mars/UPLOAD/BUILD/AUTO_BUILD/";
  + my $stage_linkdir = '\\\\mars\\Remote\\UPLOAD\\BUILD\\AUTO_BUILD\\';
  ++my $db_stage_linkdir = 
'\\\\\\\\mars\\\\Remote\\\\UPLOAD\\\\BUILD\\\\AUTO_BUILD\\\\';
  + my $image_dir = "/opt/Build/IMAGES/";
  + my $script_dir = "/var/www/cgi-bin/build/BUILD_SCRIPTS/";
  + my $buildlog_dir = "/opt/LOG/BUILD_LOG/";
  +END_DELTA
  +);
  +
  +push @expected, make_delta(
  +     filename       => '//depot/autobuild/buildserver.pl',
  +     revision       => '3',
  +     old_linenumber => '282',
  +     new_linenumber => '283',
  +     text => <<'END_DELTA',
  +     my $alt_stage_dir = $prod_rel[0] . "/" . $rel;
  +     my $stage_rel_link = $stage_linkdir . "$prod_rel[0]" . "\\" . 
"$prod_rel[1]" . "\\" . "$rel";   
  +     Build->build_status_mail($bld_usr,$rel,$log_name,"pass", 
$stage_rel_link, $alt_stage_dir);
  ++
  ++    my $db_stage_rel_link = $db_stage_linkdir . "$prod_rel[0]" . "\\\\" . 
"$prod_rel[1]" . "\\\\" . "$rel";
  ++    my $stage_int_sql = "UPDATE releases SET 
internal_stage=\'$db_stage_rel_link\'
  ++                            where releases.release=\'$rel\'";
  ++    Build->run_sql_query($stage_int_sql, ";");
  ++
  +       }
  +     }
  +     else {
  +END_DELTA
  +);
  +
  +# Check that the extracted deltas match what is expected.
  +is( @deltas, @expected, "Number of deltas in perforce patch 1" );
  +for ( my $index = 0; $index < @deltas; $index++ ) {
  +     eq_or_diff( $deltas[$index], $expected[$index],
  +                     "Delta $index in perforce patch 1" );
  +}
  +
  +# Convenience function for creating a delta object.
  +sub make_delta {
  +
  +     # Set constant properties for all git deltas.
  +     my $delta = {};
  +     $delta->{binary}   = 0;
  +     $delta->{repmatch} = 1;
  +     $delta->{description} = '';
  +
  +     # Apply the passed in arguments.
  +     my %arg = @_;
  +     $delta->{filename}       = $arg{filename};
  +     $delta->{old_linenumber} = $arg{old_linenumber};
  +     $delta->{new_linenumber} = $arg{new_linenumber};
  +     $delta->{text}           = $arg{text};
  +     $delta->{revision}       = $arg{revision};
  +
  +     return $delta;
  +}
  
  
  
  
  
  Index: PerforceDescribe.pm
  ===================================================================
  RCS file: 
/cvsroot/codestriker/codestriker/lib/Codestriker/FileParser/PerforceDescribe.pm,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- PerforceDescribe.pm       25 Aug 2007 09:11:07 -0000      1.6
  +++ PerforceDescribe.pm       29 Aug 2008 11:48:26 -0000      1.7
  @@ -148,6 +148,9 @@
   
        # Skip the next blank line before the next chunk.
        $line = <$fh>;
  +     while (defined $line && $line =~ /^\s*$/) {
  +             $line = <$fh>;
  +     }
       }
   
       # Finally, add any remaining TOC netries that are unaccounted for.
  
  
  
  
  
  Index: UnidiffUtils.pm
  ===================================================================
  RCS file: 
/cvsroot/codestriker/codestriker/lib/Codestriker/FileParser/UnidiffUtils.pm,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- UnidiffUtils.pm   2 Aug 2008 04:47:40 -0000       1.7
  +++ UnidiffUtils.pm   29 Aug 2008 11:48:27 -0000      1.8
  @@ -48,14 +48,10 @@
            if ($line !~ /^[\\]/o) {
   
                # Check if the diff block with the trailing context has been
  -             # read. Note Perforce diffs can contain empty lines.
  +             # read.
                if ($num_matched_old_lines >= $number_old_lines &&
                    $num_matched_new_lines >= $number_new_lines) {
  -                 last unless $line =~ /^\s*$/o;
  -                 
  -                 # Consume excessive blank lines.
  -             $line = <$fh>;
  -                 next;
  +                 last;
                }
                else {
                    if ($line =~ /^\-/o) {
  
  
  
  
  
  Index: CHANGELOG
  ===================================================================
  RCS file: /cvsroot/codestriker/codestriker/CHANGELOG,v
  retrieving revision 1.262
  retrieving revision 1.263
  diff -u -r1.262 -r1.263
  --- CHANGELOG 27 Aug 2008 09:51:45 -0000      1.262
  +++ CHANGELOG 29 Aug 2008 11:48:29 -0000      1.263
  @@ -15,6 +15,10 @@
     depot did not work if the depot was on a different machine to the
     web-server.  This has now been fixed.
     
  +* Fixed an issue where some Perforce describe diffs were not being
  +  parsed correctly as reported by [EMAIL PROTECTED]  This has
  +  now been fixed.  
  +  
   * Added a drop-down on the topic create page where the initial topic
     state can be set.  By default, this is set to "Open", however in
     situations where a review has already been performed but needs to
  
  
  
  
  
  Index: perforce-diff14.txt
  ===================================================================
  RCS file: perforce-diff14.txt
  diff -N perforce-diff14.txt
  --- /dev/null 1 Jan 1970 00:00:00 -0000
  +++ perforce-diff14.txt       29 Aug 2008 11:48:29 -0000      1.1
  @@ -0,0 +1,75 @@
  +                                                                     
  +                                                                     
  +                                                                     
  +                                             
  +Change 156 by [EMAIL PROTECTED] on 2008/08/12 20:55:51
  +
  +     Minor build related fixes, updated IP address, internal_stage location 
in table "releases" after build done and posted. Update "end" column in 
releases once a release is released.
  +
  +Affected files ...
  +
  +... //depot/autobuild/Build.pm#12 edit
  +... //depot/autobuild/buildserver.pl#3 edit
  +
  +Differences ...
  +
  +==== //depot/autobuild/Build.pm#12 (text) ====
  +
  +@@ -499,7 +499,7 @@
  +   
  +     if ($state eq "start") {
  +       print SENDMAIL "\t\tBuild started for release $rel. Build log could 
be found at:\n";
  +-      print SENDMAIL "http://172.20.1.120/build_log/$bldlog\n";;
  ++      print SENDMAIL "http://172.20.1.251/build_log/$bldlog\n";;
  +       print SENDMAIL "\n You would be notified once build is done.\n";
  +       print SENDMAIL "\n\n\nHappy Building... :)";
  +     }
  +@@ -507,9 +507,9 @@
  + 
  +       print SENDMAIL "\t\tBuild for release $rel finished successfully. 
Here is details:\n";
  +       print SENDMAIL "\nImage location: $stage_rel_link\n";
  +-      print SENDMAIL "Alternate location: 
http://172.20.1.120/images/$stage_rel_dir\n";;
  +-      print SENDMAIL "Build Log: http://172.20.1.120/build_log/$bldlog\n";;
  +-      print SENDMAIL "Sync Log: http://172.20.1.120/synclog/$synclog\n";;
  ++      print SENDMAIL "Alternate location: 
http://172.20.1.251/images/$stage_rel_dir\n";;
  ++      print SENDMAIL "Build Log: http://172.20.1.251/build_log/$bldlog\n";;
  ++      print SENDMAIL "Sync Log: http://172.20.1.251/synclog/$synclog\n";;
  +     }
  +     elsif ($state eq "failed") {
  +
  +@@ -519,8 +519,8 @@
  +       push (@error_msgs, @error_msg);
  +       print SENDMAIL "\n @error_msgs\n";
  +       print SENDMAIL "\n\nSee build log for full details: ";
  +-      print SENDMAIL "Build Log: http://172.20.1.120/build_log/$bldlog\n";;
  +-      print SENDMAIL "Sync Log: http://172.20.1.120/synclog/$synclog\n";;
  ++      print SENDMAIL "Build Log: http://172.20.1.251/build_log/$bldlog\n";;
  ++      print SENDMAIL "Sync Log: http://172.20.1.251/synclog/$synclog\n";;
  +       print SENDMAIL "\nPlease fix the issue and resubmit the build 
request.";
  +     }
  +     close (SENDMAIL);
  +
  +==== //depot/autobuild/buildserver.pl#3 (xtext) ====
  +
  +@@ -10,6 +10,7 @@
  + my $syncdir = "/opt/LOG/synclog";
  + my $stage_dir = "/mars/UPLOAD/BUILD/AUTO_BUILD/";
  + my $stage_linkdir = '\\\\mars\\Remote\\UPLOAD\\BUILD\\AUTO_BUILD\\';
  ++my $db_stage_linkdir = 
'\\\\\\\\mars\\\\Remote\\\\UPLOAD\\\\BUILD\\\\AUTO_BUILD\\\\';
  + my $image_dir = "/opt/Build/IMAGES/";
  + my $script_dir = "/var/www/cgi-bin/build/BUILD_SCRIPTS/";
  + my $buildlog_dir = "/opt/LOG/BUILD_LOG/";
  +@@ -282,6 +283,12 @@
  +     my $alt_stage_dir = $prod_rel[0] . "/" . $rel;
  +     my $stage_rel_link = $stage_linkdir . "$prod_rel[0]" . "\\" . 
"$prod_rel[1]" . "\\" . "$rel";   
  +     Build->build_status_mail($bld_usr,$rel,$log_name,"pass", 
$stage_rel_link, $alt_stage_dir);
  ++
  ++    my $db_stage_rel_link = $db_stage_linkdir . "$prod_rel[0]" . "\\\\" . 
"$prod_rel[1]" . "\\\\" . "$rel";
  ++    my $stage_int_sql = "UPDATE releases SET 
internal_stage=\'$db_stage_rel_link\'
  ++                            where releases.release=\'$rel\'";
  ++    Build->run_sql_query($stage_int_sql, ";");
  ++
  +       }
  +     }
  +     else {
  +
  
  
  

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Codestriker-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/codestriker-commits

Reply via email to