Edit

kc3-lang/automake/maintainer/rename-tests

Branch :

  • Show log

    Commit

  • Author : Paul Eggert
    Date : 2025-01-01 14:31:02
    Hash : 61075eab
    Message : maint: make update-copyright

  • maintainer/rename-tests
  • #!/usr/bin/env bash
    # Convenience script to rename test cases in Automake.
    
    # Copyright (C) 2013-2025 Free Software Foundation, Inc.
    
    # This program is free software; you can redistribute it and/or modify
    # it under the terms of the GNU General Public License as published by
    # the Free Software Foundation; either version 2, or (at your option)
    # any later version.
    
    # This program is distributed in the hope that it will be useful,
    # but WITHOUT ANY WARRANTY; without even the implied warranty of
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    # GNU General Public License for more details.
    
    # You should have received a copy of the GNU General Public License
    # along with this program.  If not, see <https://www.gnu.org/licenses/>.
    
    set -e -u
    
    me=${0##*/}
    msg_file=$me.git-msg
    
    fatal () { echo "$me: $*" >&2; exit 1; }
    
    case $# in
      0) input=$(cat);;
      1) input=$(cat -- "$1");;
      *) fatal "too many arguments";;
    esac
    
    AWK=${AWK-awk}
    SED=${SED-sed}
    
    [[ -f bin/automake.in && -d lib/Automake ]] \
      || fatal "can only be run from the top-level of the Automake source tree"
    
    $SED --version 2>&1 | grep GNU >/dev/null 2>&1 \
      || fatal "GNU sed is required by this script"
    
    # Input validation and cleanup.
    input=$(
      $AWK -v me="$me" '
        /^#/ { next; }
        (NF == 0) { next; }
        (NF != 2) { print me ": wrong number of fields at line " NR;
                    exit(1); }
        { printf ("t/%s t/%s\n", $1, $2); }
      ' <<<"$input"
    ) || exit $?
    
    # Prepare git commit message.
    exec 5>"$msg_file"
    echo "tests: more significant names for some tests" >&5
    echo >&5
    $AWK >&5 <<<"$input" \
      '{ printf ("* %s: Rename...\n* %s: ... like this.\n", $1, $2) }'
    exec 5>&-
    
    # Rename tests.
    eval "$($AWK '{ printf ("git mv %s %s\n", $1, $2) }' <<<"$input")"
    
    # Adjust the list of tests (do this conditionally, since such a
    # list is not required nor used in Automake-NG).
    if test -f t/list-of-tests.mk; then
      $SED -e "$($AWK '{ printf ("s|^%s |%s |\n", $1, $2) }' <<<"$input")" \
           -i t/list-of-tests.mk
      git add t/list-of-tests.mk
    fi
    
    git status
    echo
    echo "NOTICE: pre-filled commit message is in file '$msg_file'"
    
    exit 0