Similar to `gpg-key`, `label`, `ssh-key`, this coarse grained testscript should be named after the commandset given it isn't a collection of targeted scenarios.
62 lines
1.7 KiB
Text
62 lines
1.7 KiB
Text
# Setup environment variables used for testscript
|
|
env REPO=${SCRIPT_NAME}-${RANDOM_STRING}
|
|
|
|
# Use gh as a credential helper
|
|
exec gh auth setup-git
|
|
|
|
# Create a repository with a file so it has a default branch
|
|
exec gh repo create $ORG/$REPO --add-readme --private
|
|
|
|
# Defer repo cleanup
|
|
defer gh repo delete --yes $ORG/$REPO
|
|
|
|
# Clone the repo
|
|
exec gh repo clone $ORG/$REPO
|
|
cd $REPO
|
|
|
|
# Verify repository ruleset does not exist
|
|
env LIST_MATCH=testscript\s+$ORG/$REPO (repo)
|
|
exec gh ruleset list
|
|
! stdout $LIST_MATCH
|
|
|
|
# Verify no repository ruleset applies to default branch
|
|
exec gh ruleset check
|
|
stdout '0 rules apply'
|
|
|
|
# Create a repository ruleset
|
|
exec gh api /repos/{owner}/{repo}/rulesets -X POST --input ../create-repo-ruleset.json
|
|
|
|
# Verify repository ruleset does exist
|
|
exec gh ruleset list
|
|
stdout $LIST_MATCH
|
|
|
|
# Verify repository ruleset associated with branch
|
|
exec gh ruleset check
|
|
stdout '- pull_request:.+dismiss_stale_reviews_on_push: false.+require_code_owner_review: true.+require_last_push_approval: false.+required_approving_review_count: 1.+required_review_thread_resolution: false'
|
|
|
|
-- create-repo-ruleset.json --
|
|
{
|
|
"name": "testscript",
|
|
"target": "branch",
|
|
"enforcement": "active",
|
|
"conditions": {
|
|
"ref_name": {
|
|
"include": [
|
|
"~DEFAULT_BRANCH"
|
|
],
|
|
"exclude": []
|
|
}
|
|
},
|
|
"rules": [
|
|
{
|
|
"type": "pull_request",
|
|
"parameters": {
|
|
"dismiss_stale_reviews_on_push": false,
|
|
"require_code_owner_review": true,
|
|
"require_last_push_approval": false,
|
|
"required_approving_review_count": 1,
|
|
"required_review_thread_resolution": false
|
|
}
|
|
}
|
|
]
|
|
}
|