+bin/cherry* for Jenkins.
authorJan Kratochvil <jan@jankratochvil.net>
Mon, 18 Jul 2022 15:05:04 +0000 (17:05 +0200)
committerJan Kratochvil <jan@jankratochvil.net>
Mon, 18 Jul 2022 15:05:04 +0000 (17:05 +0200)
bin/cherrycompare [new file with mode: 0755]
bin/cherrydownload [new file with mode: 0755]
bin/cherryfilter [new file with mode: 0755]

diff --git a/bin/cherrycompare b/bin/cherrycompare
new file mode 100755 (executable)
index 0000000..55a92cd
--- /dev/null
@@ -0,0 +1,34 @@
+#! /bin/bash
+n=false
+if [ $1 = -n ];then
+  n=true
+  shift
+fi
+diff_u="diff $(if $n;then echo -U999999999;else echo -u;fi)"
+if [ $# != 2 ];then
+  echo >&2 "$0: <dir1> <dir2>"
+fi
+for dir in "$@";do
+  if [ ! -e $dir ];then
+    echo >&2 "!-e: $dir"
+    exit 1
+  fi
+  sed -i -e 's#\(failed for \)[0-9]*\(: Operation not permitted\)#\1\2#' $(find $dir -name summary.txt)
+done
+dir1=$(realpath $1)
+dir2=$(realpath $2)
+cd $1
+(
+  for i in $(find -name summary.txt);do
+    echo "$dir1/$i -> $dir2/$i"
+    $diff_u $i $dir2/$i
+  done
+  function prep8
+  {
+    sed <$1 -n 's/^\(Passed\|FAILED\): \(.*\)$/\2: \1/p'|sort
+  }
+  for i in $(find -name "*-test.release.log");do
+    echo "$dir1/$i -> $dir2/$i"
+    $diff_u <(prep8 $i) <(prep8 $dir2/$i)
+  done
+)|if $n;then cat;else grep -v '^+++ '|grep -v '^--- '|grep -v '^[ @]';fi
diff --git a/bin/cherrydownload b/bin/cherrydownload
new file mode 100755 (executable)
index 0000000..90c52e6
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/bash
+for arg in $@;do
+  # http://cherry.azulsystems.com:8080/job/zulu17-silver-build/377/
+  arg="$(echo $arg|sed 's#[a-z]\+/\?$##')"
+  build="$(echo $arg|sed -n 's#^.*/\([0-9]\+\)/$#\1#p')"
+  if [ -z "$build" ];then
+    echo >&2 "parse error: $arg"
+    exit 1
+  fi
+  build="build$build"
+  if [ -e "$build" ];then
+    echo >&2 "exists: $build"
+    exit 1
+  fi
+  mkdir $build
+  outcome="$(wget -O - "${arg}artifact/outcome/")"
+  if [ -z "$outcome" ];then
+    echo >&2 "no outcome: $arg"
+    exit 1
+  fi
+  for release in $(echo "$outcome"|perl -ne 'while (m{<a href="([^"]*)/release">}g) { print "$1\n"; }');do
+    # java17, java8
+    ok=false
+    for file in test-results.tar.gz test.release.log;do
+      url="${arg}artifact/outcome/$release/release/$file"
+      if wget --read-timeout=5 -O "$build/$release-$file" "$url";then
+       ok=true
+       break
+      fi
+      rm -f "$build/$release-$file"
+    done
+    if ! $ok;then
+      echo >&2 "wget error"
+      exit 1
+    fi
+  done
+  (cd $build;if compgen -G "*test-results.tar.gz";then exx *test-results.tar.gz;fi)
+done
diff --git a/bin/cherryfilter b/bin/cherryfilter
new file mode 100755 (executable)
index 0000000..681a0e1
--- /dev/null
@@ -0,0 +1,20 @@
+#! /usr/bin/perl
+use strict;
+use warnings;
+my $file;
+while (<STDIN>) {
+  if (/^[^+-]/) {
+    $file=$_;
+    next;
+  }
+  my $match;
+  for my $arg (@ARGV) {
+    $match=1 if /\Q$arg\E/;
+  }
+  next if !$match;
+  if (defined $file) {
+    print $file;
+    $file=undef;
+  }
+  print;
+}