Skip to content

Commit

Permalink
feat: isTerminalEditor
Browse files Browse the repository at this point in the history
  • Loading branch information
ilteoood committed Feb 8, 2025
1 parent fc4341c commit f7ad5c6
Show file tree
Hide file tree
Showing 2 changed files with 94 additions and 102 deletions.
194 changes: 93 additions & 101 deletions test/args.test.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
'use strict'

const t = require('tap')
const { test } = t
const { test } = require('node:test')

const parseArgs = require('../lib/args')
const proxyquire = require('proxyquire')

test('parse all args', t => {
t.plan(1)
t.plan(24)

const argv = [
'--arg', 'arg',
Expand Down Expand Up @@ -36,64 +36,60 @@ test('parse all args', t => {
]
const parsedArgs = parseArgs(argv)

t.strictSame(parsedArgs, {
_: [],
help: true,
arg: 'arg',
path: 'a/path',
tag: 'vPattern',
verbose: 'info',
semver: 'major',
major: true,
dryRun: true,
remote: 'upstream',
branch: 'v1',
fromCommit: 'commitFrom',
toCommit: 'commitTo',
noVerify: true,
npmOtp: '123123',
silent: true,
npmAccess: 'public',
npmDistTag: 'next',
ghToken: 'MY_KEY',
ghReleaseEdit: true,
ghReleaseDraft: true,
ghReleasePrerelease: true,
ghReleaseBody: true,
ghGroupByLabel: ['bugfix', 'docs']
})
t.assert.deepStrictEqual(parsedArgs._, [])
t.assert.deepStrictEqual(parsedArgs.help, true)
t.assert.deepStrictEqual(parsedArgs.arg, 'arg')
t.assert.deepStrictEqual(parsedArgs.path, 'a/path')
t.assert.deepStrictEqual(parsedArgs.tag, 'vPattern')
t.assert.deepStrictEqual(parsedArgs.verbose, 'info')
t.assert.deepStrictEqual(parsedArgs.semver, 'major')
t.assert.deepStrictEqual(parsedArgs.major, true)
t.assert.deepStrictEqual(parsedArgs.dryRun, true)
t.assert.deepStrictEqual(parsedArgs.remote, 'upstream')
t.assert.deepStrictEqual(parsedArgs.branch, 'v1')
t.assert.deepStrictEqual(parsedArgs.fromCommit, 'commitFrom')
t.assert.deepStrictEqual(parsedArgs.toCommit, 'commitTo')
t.assert.deepStrictEqual(parsedArgs.noVerify, true)
t.assert.deepStrictEqual(parsedArgs.npmOtp, '123123')
t.assert.deepStrictEqual(parsedArgs.silent, true)
t.assert.deepStrictEqual(parsedArgs.npmAccess, 'public')
t.assert.deepStrictEqual(parsedArgs.npmDistTag, 'next')
t.assert.deepStrictEqual(parsedArgs.ghToken, 'MY_KEY')
t.assert.deepStrictEqual(parsedArgs.ghReleaseEdit, true)
t.assert.deepStrictEqual(parsedArgs.ghReleaseDraft, true)
t.assert.deepStrictEqual(parsedArgs.ghReleasePrerelease, true)
t.assert.deepStrictEqual(parsedArgs.ghReleaseBody, true)
t.assert.deepStrictEqual(parsedArgs.ghGroupByLabel, ['bugfix', 'docs'])
})

test('check default values', t => {
t.plan(1)
t.plan(24)
const parsedArgs = parseArgs([])

t.strictSame(parsedArgs, {
_: [],
help: false,
arg: undefined,
path: process.cwd(),
tag: undefined,
verbose: 'warn',
semver: undefined,
major: false,
dryRun: false,
remote: 'origin',
branch: 'main',
fromCommit: 'HEAD',
toCommit: undefined,
noVerify: undefined,
npmOtp: undefined,
silent: false,
npmAccess: undefined,
npmDistTag: undefined,
ghToken: 'GITHUB_OAUTH_TOKEN',
ghReleaseEdit: false,
ghReleaseDraft: false,
ghReleasePrerelease: false,
ghReleaseBody: false,
ghGroupByLabel: []
})
t.assert.deepStrictEqual(parsedArgs._, [])
t.assert.deepStrictEqual(parsedArgs.help, false)
t.assert.deepStrictEqual(parsedArgs.arg, undefined)
t.assert.deepStrictEqual(parsedArgs.path, process.cwd())
t.assert.deepStrictEqual(parsedArgs.tag, undefined)
t.assert.deepStrictEqual(parsedArgs.verbose, 'warn')
t.assert.deepStrictEqual(parsedArgs.semver, undefined)
t.assert.deepStrictEqual(parsedArgs.major, false)
t.assert.deepStrictEqual(parsedArgs.dryRun, false)
t.assert.deepStrictEqual(parsedArgs.remote, 'origin')
t.assert.deepStrictEqual(parsedArgs.branch, 'main')
t.assert.deepStrictEqual(parsedArgs.fromCommit, 'HEAD')
t.assert.deepStrictEqual(parsedArgs.toCommit, undefined)
t.assert.deepStrictEqual(parsedArgs.noVerify, undefined)
t.assert.deepStrictEqual(parsedArgs.npmOtp, undefined)
t.assert.deepStrictEqual(parsedArgs.silent, false)
t.assert.deepStrictEqual(parsedArgs.npmAccess, undefined)
t.assert.deepStrictEqual(parsedArgs.npmDistTag, undefined)
t.assert.deepStrictEqual(parsedArgs.ghToken, 'GITHUB_OAUTH_TOKEN')
t.assert.deepStrictEqual(parsedArgs.ghReleaseEdit, false)
t.assert.deepStrictEqual(parsedArgs.ghReleaseDraft, false)
t.assert.deepStrictEqual(parsedArgs.ghReleasePrerelease, false)
t.assert.deepStrictEqual(parsedArgs.ghReleaseBody, false)
t.assert.deepStrictEqual(parsedArgs.ghGroupByLabel, [])
})

test('parse args with = assignment', t => {
Expand Down Expand Up @@ -127,7 +123,7 @@ test('parse args with = assignment', t => {
]
const parsedArgs = parseArgs(argv)

t.strictSame(parsedArgs, {
t.assert.deepStrictEqual(parsedArgs, {
_: [],
help: false,
arg: 'arg',
Expand Down Expand Up @@ -156,7 +152,7 @@ test('parse args with = assignment', t => {
})

test('parse boolean args', t => {
t.plan(1)
t.plan(8)

const argv = [
'--help',
Expand All @@ -170,20 +166,18 @@ test('parse boolean args', t => {
]
const parsedArgs = parseArgs(argv)

t.match(parsedArgs, {
help: true,
major: true,
dryRun: true,
noVerify: true,
ghReleaseEdit: true,
ghReleaseDraft: true,
ghReleasePrerelease: true,
ghReleaseBody: true
})
t.assert.deepStrictEqual(parsedArgs.help, true)
t.assert.deepStrictEqual(parsedArgs.major, true)
t.assert.deepStrictEqual(parsedArgs.dryRun, true)
t.assert.deepStrictEqual(parsedArgs.noVerify, true)
t.assert.deepStrictEqual(parsedArgs.ghReleaseEdit, true)
t.assert.deepStrictEqual(parsedArgs.ghReleaseDraft, true)
t.assert.deepStrictEqual(parsedArgs.ghReleasePrerelease, true)
t.assert.deepStrictEqual(parsedArgs.ghReleaseBody, true)
})

test('parse args aliases', t => {
t.plan(1)
t.plan(24)

const argv = [
'-h',
Expand All @@ -204,32 +198,30 @@ test('parse args aliases', t => {
]
const parsedArgs = parseArgs(argv)

t.strictSame(parsedArgs, {
_: [],
help: true,
arg: undefined,
path: 'a/path',
tag: 'vPattern',
verbose: 'info',
semver: 'major',
major: true,
dryRun: false,
remote: 'upstream',
branch: 'v1.x',
fromCommit: 'HEAD',
toCommit: undefined,
noVerify: true,
npmOtp: undefined,
silent: false,
npmAccess: 'public',
npmDistTag: undefined,
ghToken: 'MY_KEY',
ghReleaseEdit: true,
ghReleaseDraft: false,
ghReleasePrerelease: false,
ghReleaseBody: true,
ghGroupByLabel: ['bugfix', 'docs']
})
t.assert.deepStrictEqual(parsedArgs._, [])
t.assert.deepStrictEqual(parsedArgs.help, true)
t.assert.deepStrictEqual(parsedArgs.arg, undefined)
t.assert.deepStrictEqual(parsedArgs.path, 'a/path')
t.assert.deepStrictEqual(parsedArgs.tag, 'vPattern')
t.assert.deepStrictEqual(parsedArgs.verbose, 'info')
t.assert.deepStrictEqual(parsedArgs.semver, 'major')
t.assert.deepStrictEqual(parsedArgs.major, true)
t.assert.deepStrictEqual(parsedArgs.dryRun, false)
t.assert.deepStrictEqual(parsedArgs.remote, 'upstream')
t.assert.deepStrictEqual(parsedArgs.branch, 'v1.x')
t.assert.deepStrictEqual(parsedArgs.fromCommit, 'HEAD')
t.assert.deepStrictEqual(parsedArgs.toCommit, undefined)
t.assert.deepStrictEqual(parsedArgs.noVerify, true)
t.assert.deepStrictEqual(parsedArgs.npmOtp, undefined)
t.assert.deepStrictEqual(parsedArgs.silent, false)
t.assert.deepStrictEqual(parsedArgs.npmAccess, 'public')
t.assert.deepStrictEqual(parsedArgs.npmDistTag, undefined)
t.assert.deepStrictEqual(parsedArgs.ghToken, 'MY_KEY')
t.assert.deepStrictEqual(parsedArgs.ghReleaseEdit, true)
t.assert.deepStrictEqual(parsedArgs.ghReleaseDraft, false)
t.assert.deepStrictEqual(parsedArgs.ghReleasePrerelease, false)
t.assert.deepStrictEqual(parsedArgs.ghReleaseBody, true)
t.assert.deepStrictEqual(parsedArgs.ghGroupByLabel, ['bugfix', 'docs'])
})

test('get GitHub Token from env', t => {
Expand All @@ -239,7 +231,7 @@ test('get GitHub Token from env', t => {
const argv = ['-k', 'MY_ENV_KEY']
const parsedArgs = parseArgs(argv)

t.equal(parsedArgs.ghToken, process.env.MY_ENV_KEY)
t.assert.deepStrictEqual(parsedArgs.ghToken, process.env.MY_ENV_KEY)
})

test('autoload config parameters', t => {
Expand All @@ -262,9 +254,9 @@ test('autoload config parameters', t => {
const argv = ['--remote', 'arg-remote']
const parsedArgs = parseArgs(argv)

t.equal(parsedArgs.ghToken, store['gh-token'])
t.equal(parsedArgs.ghReleaseEdit, true)
t.equal(parsedArgs.noVerify, true)
t.equal(parsedArgs.verbose, 'debug')
t.equal(parsedArgs.remote, 'arg-remote')
t.assert.deepStrictEqual(parsedArgs.ghToken, store['gh-token'])
t.assert.deepStrictEqual(parsedArgs.ghReleaseEdit, true)
t.assert.deepStrictEqual(parsedArgs.noVerify, true)
t.assert.deepStrictEqual(parsedArgs.verbose, 'debug')
t.assert.deepStrictEqual(parsedArgs.remote, 'arg-remote')
})
2 changes: 1 addition & 1 deletion test/command-publish.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -468,7 +468,7 @@ test('publish a module minor editing the release message', async t => {
'open-editor': {
make: (tmpFile) => {
t.assert.deepStrictEqual(tmpFile.pop(), fakeFile)
return { arguments: [] }
return { arguments: [], isTerminalEditor: true }
}
},
'node:child_process': {
Expand Down

0 comments on commit f7ad5c6

Please sign in to comment.