| |
@@ -1,139 +0,0 @@
|
| |
- #! /bin/bash
|
| |
-
|
| |
- set +x
|
| |
- set -e
|
| |
-
|
| |
- # only PRs now
|
| |
- case $REPO in
|
| |
- *forks*) ;;
|
| |
- *) exit 0 ;;
|
| |
- esac
|
| |
-
|
| |
- cleanup_actions=()
|
| |
- cleanup()
|
| |
- {
|
| |
- for action in "${cleanup_actions[@]}"; do
|
| |
- $action
|
| |
- done
|
| |
- }
|
| |
- trap cleanup EXIT
|
| |
-
|
| |
- filter="
|
| |
- import sys, json
|
| |
- d = json.loads(sys.stdin.read())
|
| |
- for member in d['members']:
|
| |
- sys.stdout.write(' ' + member + ' ')
|
| |
- print()
|
| |
- "
|
| |
-
|
| |
- visible_info()
|
| |
- {
|
| |
- echo
|
| |
- echo
|
| |
- echo "===> $*"
|
| |
- echo
|
| |
- echo
|
| |
- }
|
| |
-
|
| |
- visible_info "Checking whether we want to run against $REPO/$BRANCH"
|
| |
-
|
| |
- # only copr-team for now
|
| |
- members=$(curl https://pagure.io/api/0/group/copr \
|
| |
- | python3 -c "$filter")
|
| |
-
|
| |
- # https://pagure.io/pagure/issue/4807
|
| |
- copr_sig_member=false
|
| |
- for member in $members; do
|
| |
- case $REPO in
|
| |
- *forks/$member/*)
|
| |
- copr_sig_member=true
|
| |
- break
|
| |
- ;;
|
| |
- esac
|
| |
- done
|
| |
-
|
| |
- if ! $copr_sig_member; then
|
| |
- visible_info "$REPO doesn't belong to anyone from Copr Team members"
|
| |
- exit 0
|
| |
- fi
|
| |
-
|
| |
- git remote rm proposed || true
|
| |
- git remote add proposed "$REPO"
|
| |
- git fetch proposed
|
| |
- git checkout "proposed/$BRANCH"
|
| |
-
|
| |
- : "${DIFF_AGAINST=origin/master}"
|
| |
-
|
| |
- subdirs=(
|
| |
- -e ^ansible$
|
| |
- -e ^backend$
|
| |
- -e ^behave$
|
| |
- -e ^frontend$
|
| |
- -e ^distgit$
|
| |
- -e ^cli$
|
| |
- -e ^common$
|
| |
- -e ^messaging$
|
| |
- -e ^rpmbuild$
|
| |
- -e ^keygen$
|
| |
- -e ^python$
|
| |
- )
|
| |
-
|
| |
- changed_packages=$(
|
| |
- git diff --name-only "$DIFF_AGAINST" \
|
| |
- | cut -d'/' -f1 | sort | uniq \
|
| |
- | grep "${subdirs[@]}"
|
| |
- ) || :
|
| |
-
|
| |
- test -n "$changed_packages" || exit 0
|
| |
-
|
| |
-
|
| |
- run_linter()
|
| |
- {
|
| |
- test -f build_aux/linter || return 0
|
| |
- mkdir -p image
|
| |
- image=copr-lint-container:latest
|
| |
- cat > image/Dockerfile <<EOF
|
| |
- From fedora:32
|
| |
- RUN dnf install -y csdiff git pylint
|
| |
- EOF
|
| |
- ( cd image
|
| |
- docker build -t "$image" .
|
| |
- )
|
| |
- container=$(docker run --rm -v "$PWD":/workdir:Z -d "$image" sleep 1800)
|
| |
- cleanup_actions+=( "docker kill $container" )
|
| |
- failed_packages=()
|
| |
- success=true
|
| |
- for package; do
|
| |
- echo "==== Testing package $package modified by this PR ===="
|
| |
- if ! docker exec "$container" bash -c "cd /workdir/$package && ../build_aux/linter --print-fixed-errors --compare-against $DIFF_AGAINST"; then
|
| |
- failed_packages+=( "$package" )
|
| |
- success=false
|
| |
- fi
|
| |
- done
|
| |
-
|
| |
- echo "=================="
|
| |
- echo "=================="
|
| |
- echo "=================="
|
| |
- echo
|
| |
-
|
| |
- if test "${#failed_packages}" -ne 0; then
|
| |
- echo "Those packages failed the PyLint diff testing:"
|
| |
- echo
|
| |
- for package in "${failed_packages[@]}"; do
|
| |
- echo " ==> $package"
|
| |
- done
|
| |
- echo
|
| |
- echo "See the logs above."
|
| |
- else
|
| |
- echo "All these modified packages succeeded the PyLint tests: $*"
|
| |
- fi
|
| |
-
|
| |
- echo
|
| |
- echo "=================="
|
| |
- echo "=================="
|
| |
- echo "=================="
|
| |
-
|
| |
- $success
|
| |
- }
|
| |
-
|
| |
- run_linter $changed_packages
|
| |