Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+29 −6
Original line number Diff line number Diff line
@@ -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";
    }

    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 (!$cherry) {
	if ($list[$#list] !~ /^$start/) {
	    fail "SHA1 $start not found";
	}

	# 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;
+10 −0
Original line number Diff line number Diff line
@@ -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.
#