82
82
" IGNORE_UNUSED" => 0,
83
83
);
84
84
85
+ my $test_log_start = 0;
86
+
85
87
my $ktest_config = " ktest.conf" ;
86
88
my $version ;
87
89
my $have_version = 0;
@@ -1492,8 +1494,21 @@ sub dodie {
1492
1494
1493
1495
if ($email_on_error ) {
1494
1496
my $name = get_test_name;
1497
+ my $log_file ;
1498
+
1499
+ if (defined ($opt {" LOG_FILE" })) {
1500
+ $log_file = " $tmpdir /log" ;
1501
+ open (L, " $opt {LOG_FILE}" ) or die " Can't open $opt {LOG_FILE} to read)" ;
1502
+ open (O, " > $tmpdir /log" ) or die " Can't open $tmpdir /log\n " ;
1503
+ seek (L, $test_log_start , 0);
1504
+ while (<L>) {
1505
+ print O;
1506
+ }
1507
+ close O;
1508
+ close L;
1509
+ }
1495
1510
send_email(" KTEST: critical failure for test $i [$name ]" ,
1496
- " Your test started at $script_start_time has failed with:\n @_ \n " );
1511
+ " Your test started at $script_start_time has failed with:\n @_ \n " , $log_file );
1497
1512
}
1498
1513
1499
1514
if ($monitor_cnt ) {
@@ -4185,7 +4200,7 @@ sub find_mailer {
4185
4200
}
4186
4201
4187
4202
sub do_send_mail {
4188
- my ($subject , $message ) = @_ ;
4203
+ my ($subject , $message , $file ) = @_ ;
4189
4204
4190
4205
if (!defined ($mail_path )) {
4191
4206
# find the mailer
@@ -4195,16 +4210,30 @@ sub do_send_mail {
4195
4210
}
4196
4211
}
4197
4212
4213
+ my $header_file = " $tmpdir /header" ;
4214
+ open (HEAD, " >$header_file " ) or die " Can not create $header_file \n " ;
4215
+ print HEAD " To: $mailto \n " ;
4216
+ print HEAD " Subject: $subject \n\n " ;
4217
+ print HEAD " $message \n " ;
4218
+ close HEAD;
4219
+
4198
4220
if (!defined ($mail_command )) {
4199
4221
if ($mailer eq " mail" || $mailer eq " mailx" ) {
4200
- $mail_command = " \$ MAIL_PATH/\$ MAILER -s \'\$ SUBJECT\' \$ MAILTO <<< \'\$ MESSAGE \' " ;
4222
+ $mail_command = " cat \$ HEADER_FILE \$ BODY_FILE | \$ MAIL_PATH/\$ MAILER -s \'\$ SUBJECT\' \$ MAILTO" ;
4201
4223
} elsif ($mailer eq " sendmail" ) {
4202
- $mail_command = " echo \' Subject: \$ SUBJECT \n\n\$ MESSAGE \' | \$ MAIL_PATH/\$ MAILER -t \$ MAILTO" ;
4224
+ $mail_command = " cat \$ HEADER_FILE \$ BODY_FILE | \$ MAIL_PATH/\$ MAILER -t \$ MAILTO" ;
4203
4225
} else {
4204
4226
die " \n Your mailer: $mailer is not supported.\n " ;
4205
4227
}
4206
4228
}
4207
4229
4230
+ if (defined ($file )) {
4231
+ $mail_command =~ s /\$ BODY_FILE/ $file / g ;
4232
+ } else {
4233
+ $mail_command =~ s /\$ BODY_FILE// g ;
4234
+ }
4235
+
4236
+ $mail_command =~ s /\$ HEADER_FILE/ $header_file / g ;
4208
4237
$mail_command =~ s /\$ MAILER/ $mailer / g ;
4209
4238
$mail_command =~ s /\$ MAIL_PATH/ $mail_path / g ;
4210
4239
$mail_command =~ s /\$ MAILTO/ $mailto / g ;
@@ -4352,6 +4381,11 @@ sub cancel_test {
4352
4381
}
4353
4382
4354
4383
doprint " \n\n " ;
4384
+
4385
+ if (defined ($opt {" LOG_FILE" })) {
4386
+ $test_log_start = tell (LOG);
4387
+ }
4388
+
4355
4389
doprint " RUNNING TEST $i of $opt {NUM_TESTS}$name with option $test_type $run_type$installme \n\n " ;
4356
4390
4357
4391
if (defined ($pre_test )) {
0 commit comments