Commit 23a0e161 authored by Steven Rostedt (Red Hat)'s avatar Steven Rostedt (Red Hat) Committed by Steven Rostedt

ktest: Add PATCHCHECK_CHERRY

Add a way to run a patchcheck test on the commits that are in one branch
but not in another. This uses git cherry to find a list of commits to
test each one with.
Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
parent 9e82bf01
......@@ -194,6 +194,7 @@ my $config_bisect_check;
my $patchcheck_type;
my $patchcheck_start;
my $patchcheck_cherry;
my $patchcheck_end;
# set when a test is something other that just building or install
......@@ -320,6 +321,7 @@ my %option_map = (
"PATCHCHECK_TYPE" => \$patchcheck_type,
"PATCHCHECK_START" => \$patchcheck_start,
"PATCHCHECK_CHERRY" => \$patchcheck_cherry,
"PATCHCHECK_END" => \$patchcheck_end,
);
......@@ -3181,9 +3183,16 @@ sub patchcheck {
my $start = $patchcheck_start;
my $cherry = $patchcheck_cherry;
if (!defined($cherry)) {
$cherry = 0;
}
my $end = "HEAD";
if (defined($patchcheck_end)) {
$end = $patchcheck_end;
} elsif ($cherry) {
die "PATCHCHECK_END must be defined with PATCHCHECK_CHERRY\n";
}
# Get the true sha1's since we can use things like HEAD~3
......@@ -3197,24 +3206,38 @@ sub patchcheck {
$type = "boot";
}
open (IN, "git log --pretty=oneline $end|") or
dodie "could not get git list";
if ($cherry) {
open (IN, "git cherry -v $start $end|") or
dodie "could not get git list";
} else {
open (IN, "git log --pretty=oneline $end|") or
dodie "could not get git list";
}
my @list;
while (<IN>) {
chomp;
# git cherry adds a '+' we want to remove
s/^\+ //;
$list[$#list+1] = $_;
last if (/^$start/);
}
close(IN);
if ($list[$#list] !~ /^$start/) {
fail "SHA1 $start not found";
if (!$cherry) {
if ($list[$#list] !~ /^$start/) {
fail "SHA1 $start not found";
}
# go backwards in the list
@list = reverse @list;
}
# go backwards in the list
@list = reverse @list;
doprint("Going to test the following commits:\n");
foreach my $l (@list) {
doprint "$l\n";
}
my $save_clean = $noclean;
my %ignored_warnings;
......
......@@ -906,6 +906,16 @@
#
# PATCHCHECK_END is the last patch to check (default HEAD)
#
# PATCHCHECK_CHERRY if set to non zero, then git cherry will be
# performed against PATCHCHECK_START and PATCHCHECK_END. That is
#
# git cherry ${PATCHCHECK_START} ${PATCHCHECK_END}
#
# Then the changes found will be tested.
#
# Note, PATCHCHECK_CHERRY requires PATCHCHECK_END to be defined.
# (default 0)
#
# PATCHCHECK_TYPE is required and is the type of test to run:
# build, boot, test.
#
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment