close-merge input

Fixes: https://code.forgejo.org/actions/cascading-pr/issues/7
This commit is contained in:
Earl Warren 2023-10-24 22:51:30 +02:00
parent f8a65b3d9f
commit 5caaedbc52
No known key found for this signature in database
GPG key ID: 0579CB2928A78A00
7 changed files with 80 additions and 9 deletions

View file

@ -0,0 +1,26 @@
# SPDX-License-Identifier: MIT
name: test
on:
pull_request_target:
types:
- opened
- synchronize
- closed
jobs:
test:
runs-on: docker
steps:
- uses: actions/checkout@v4
- uses: SELF@vTest
with:
origin-url: ${{ env.GITHUB_SERVER_URL }}
origin-repo: user1/originrepo-close-merge
origin-token: ${{ secrets.ORIGIN_TOKEN }}
origin-pr: ${{ github.event.pull_request.number }}
destination-url: ${{ env.GITHUB_SERVER_URL }}
destination-repo: user2/destinationrepo
destination-branch: main
destination-token: ${{ secrets.DESTINATION_TOKEN }}
update: ./upgraded
close-merge: true
debug: true

View file

@ -0,0 +1 @@
originrepo

View file

@ -0,0 +1,12 @@
#!/bin/bash
set -ex
destination_checkout="$1"
destination_pr_json="$2"
origin_pr_json="$3"
test -d $destination_checkout
test -f $origin_pr_json
date +%s > $destination_checkout/last

View file

@ -64,13 +64,15 @@ function close_pull_request() {
}
function merge_pull_request() {
forgejo-curl.sh api_json ${options[url]}/api/v1/repos/user1/originrepo/pulls | jq --raw-output '.[] | .number' | while read pr ; do
forgejo-curl.sh api_json --data '{"Do":"merge"}' ${options[url]}/api/v1/repos/user1/originrepo/pulls/$pr/merge
local repo=$1
forgejo-curl.sh api_json ${options[url]}/api/v1/repos/user1/${repo}/pulls | jq --raw-output '.[] | .number' | while read pr ; do
forgejo-curl.sh api_json --data '{"Do":"merge"}' ${options[url]}/api/v1/repos/user1/${repo}/pulls/$pr/merge
done
}
function has_cascade_pull_request() {
pr_count=$(forgejo-curl.sh api_json ${options[url]}/api/v1/repos/user2/destinationrepo/pulls | jq '. | length')
pr_count=$(forgejo-curl.sh api_json ${options[url]}/api/v1/repos/user2/destinationrepo/pulls | jq '[ .[] | select(.state == "open") ] | length')
test $pr_count -gt 0
}
@ -227,8 +229,20 @@ function create_and_merge() {
create_pull_request user1 user1 originrepo
wait_success ${options[url]}/api/v1/repos/user1/originrepo $(cat $TMPDIR/user1-originrepo.sha)
has_cascade_pull_request
merge_pull_request
merge_pull_request originrepo
wait_success ${options[url]}/api/v1/repos/user1/originrepo $(cat $TMPDIR/user1-originrepo.sha)
has_cascade_pull_request
}
function create_and_merge_close() {
fixture originrepo-close-merge destinationrepo
create_pull_request user1 user1 originrepo-close-merge
wait_success ${options[url]}/api/v1/repos/user1/originrepo-close-merge $(cat $TMPDIR/user1-originrepo-close-merge.sha)
has_cascade_pull_request
merge_pull_request originrepo-close-merge
wait_success ${options[url]}/api/v1/repos/user1/originrepo-close-merge $(cat $TMPDIR/user1-originrepo-close-merge.sha)
! has_cascade_pull_request
}
function integration() {
@ -236,6 +250,7 @@ function integration() {
create_from_fork_and_close
create_and_close
create_and_merge
create_and_merge_close
}
function unit() {