Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions acceptance/acceptance_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,15 @@ func TestGPGKeys(t *testing.T) {
testscript.Run(t, testScriptParamsFor(tsEnv, "gpg-key"))
}

func TestExtensions(t *testing.T) {
var tsEnv testScriptEnv
if err := tsEnv.fromEnv(); err != nil {
t.Fatal(err)
}

testscript.Run(t, testScriptParamsFor(tsEnv, "extension"))
}

func TestIssues(t *testing.T) {
var tsEnv testScriptEnv
if err := tsEnv.fromEnv(); err != nil {
Expand Down
69 changes: 69 additions & 0 deletions acceptance/testdata/extension/extension.txtar
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# Skip if Bash is not available given script extension
[!exec:bash] skip

# Setup environment variables used for testscript
env EXT_NAME=${SCRIPT_NAME}-${RANDOM_STRING}
env EXT_SCRIPT=gh-${EXT_NAME}
env REPO=gh-${EXT_NAME}

# Use gh as a credential helper
exec gh auth setup-git

# Create local repository for extension
exec gh extension create $EXT_NAME
cd $REPO

# Setup v1 executable baseline for extension
mv ../v1.sh $EXT_SCRIPT
chmod 777 $EXT_SCRIPT
exec git add $EXT_SCRIPT
exec git commit -m 'Setup extension as v1'

# Upload local extension repository
exec gh repo create $ORG/$REPO --private --source . --push

# Defer repo cleanup
defer gh repo delete --yes $ORG/$REPO

# Verify extension shows up in search, sleep for indexing
exec gh repo edit --add-topic gh-extension
sleep 10
exec gh extension search --owner $ORG $EXT_NAME
stdout ${ORG}/${REPO}

# Verify repository can be installed as extension
exec gh extension install $ORG/$REPO
exec gh extension list
stdout ${ORG}/${REPO}

# Verify v1 extension behavior before upgrade
exec gh extension exec $EXT_NAME
stdout 'gh ext create v1'

# Setup v2 executable upgrade for extension
mv ../v2.sh $EXT_SCRIPT
chmod 777 $EXT_SCRIPT
exec git add $EXT_SCRIPT
exec git commit -m 'Upgrade extension to v2'
exec git push -u origin

# Verify v2 extension upgrade
exec gh extension upgrade $EXT_NAME
exec gh extension exec $EXT_NAME
stdout 'gh ext upgrade v2'

# Verify extension can be removed
exec gh extension remove $EXT_NAME
! stdout ${ORG}/${REPO}

-- v1.sh --
#!/usr/bin/env bash
set -e

echo "gh ext create v1"

-- v2.sh --
#!/usr/bin/env bash
set -e

echo "gh ext upgrade v2"