forked from Minki/linux
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: Steven Rostedt <rostedt@goodmis.org>
This commit is contained in:
parent
9e82bf0141
commit
23a0e1611b
@ -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.
|
||||
#
|
||||
|
Loading…
Reference in New Issue
Block a user