Last active
May 31, 2022 01:39
-
-
Save draeder/41d03377d8b9eb857234a7277091aa2f to your computer and use it in GitHub Desktop.
Gun Heroku one-click deploy testing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* NOTE: Does not work with npm installed heroku-cli | |
* Uninstall with: npm uninstall heroku -g | |
* Install Heroku with: curl https://cli-assets.heroku.com/install.sh | sh | |
*/ | |
const { exec } = require('node:child_process') | |
const expect = require('../expect') | |
describe('Heroku deploy', function(){ | |
it('Returns an error if heroku CREATE fails', async function(){ | |
this.timeout(15 * 1000) | |
let result = new Promise((resolve, reject) => { | |
exec('git init') | |
exec('heroku create test-gun-deploy', (error, stdout, stderr) => { | |
console.log(error || stdout || stderr) | |
if(error || stderr) { | |
//reject(error || stderr) | |
} | |
console.log(stdout) | |
if(stdout == 'https://test-gun-deploy.herokuapp.com/ | https://git.heroku.com/test-gun-deploy.git') | |
resolve(stdout) | |
}) | |
}) | |
expect(await result == 'https://test-gun-deploy.herokuapp.com/ | https://git.heroku.com/test-gun-deploy.git').to.be(true) | |
}) | |
it('Returns an error if Heroku git remote is not set', async function(){ | |
this.timeout(15 * 1000) | |
let result = new Promise((resolve, reject) => { | |
exec('heroku git:remote -a test-gun-deploy', (error, stdout, stderr) => { | |
//if(error || stderr) console.log(error || stderr) | |
console.log(stdout) | |
if(stdout === 'set git remote heroku to https://git.heroku.com/test-gun-deploy.git'){ | |
resolve(stdout) | |
} | |
}) | |
}) | |
expect(await result === 'set git remote heroku to https://git.heroku.com/test-gun-deploy.git') | |
}) | |
it('Returns an error if Heroku DEPLOY fails', async function(){ | |
this.timeout(2 * 60 * 1000) | |
let result = new Promise((resolve, reject) => { | |
exec('git push heroku master', (error, stdout, stderr) => { | |
//if(error || stderr) reject(error || stderr) | |
console.log(stdout) | |
if(stdout === 'remote: Verifying deploy... done.'){ | |
resolve(stdout) | |
} | |
}) | |
}) | |
expect(await result === 'remote: Verifying deploy... done.').to.be(true) | |
}) | |
it('Returns an error if Heroku DELETE fails', async function(){ | |
this.timeout(15 * 1000) | |
let result = new Promise((resolve, reject)=>{ | |
exec('heroku apps:destroy test-gun-deploy --confirm=test-gun-deploy', (error, stdout, stderr) => { | |
//if(error || stderr) reject(error || stderr) | |
console.log(stdout) | |
if(stdout === 'Destroying ⬢ test-gun-deploy (including all add-ons)... done'){ | |
resolve(stdout) | |
} | |
}) | |
}) | |
expect(await result === 'Destroying ⬢ test-gun-deploy (including all add-ons)... done').to.be(true) | |
}) | |
}) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment