Skip to content
Open
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
41 changes: 29 additions & 12 deletions tests/commands/issue/validate.test.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
import issues from '../../__data__/input/issues'
import { pathToFileURL } from 'node:url'
import { execSync } from 'child_process'
import { execFileSync } from 'child_process'
import * as fs from 'fs-extra'

const ENV_VAR =
'cross-env DATA_DIR=tests/__data__/input/data STREAMS_DIR=tests/__data__/output/streams LOGS_DIR=tests/__data__/output/logs'
const ENV = {
...process.env,
DATA_DIR: 'tests/__data__/input/data',
STREAMS_DIR: 'tests/__data__/output/streams',
LOGS_DIR: 'tests/__data__/output/logs'
}

beforeEach(() => {
fs.emptyDirSync('tests/__data__/output')
Expand All @@ -14,11 +18,10 @@ beforeEach(() => {
describe('issue:validate', () => {
it('can handle streams:add request', () => {
const body = issues.find(issue => issue.number === 14179)?.body
const cmd = `${ENV_VAR} npm run issue:validate --- --body="${body}" --labels="approved,streams:add"`

try {
const stdout = execSync(cmd, { encoding: 'utf8' })
if (process.env.DEBUG === 'true') console.log(cmd, stdout)
const stdout = runIssueValidate(body, 'approved,streams:add')
if (process.env.DEBUG === 'true') console.log(stdout)
throw new Error('Failed')
} catch {
expect(content('tests/__data__/output/logs/errors.txt')).toBe(
Expand All @@ -29,11 +32,10 @@ describe('issue:validate', () => {

it('can handle streams:remove request', () => {
const body = issues.find(issue => issue.number === 14150)?.body
const cmd = `${ENV_VAR} npm run issue:validate --- --body="${body}" --labels="approved,streams:remove"`

try {
const stdout = execSync(cmd, { encoding: 'utf8' })
if (process.env.DEBUG === 'true') console.log(cmd, stdout)
const stdout = runIssueValidate(body, 'approved,streams:remove')
if (process.env.DEBUG === 'true') console.log(stdout)
throw new Error('Failed')
} catch {
expect(content('tests/__data__/output/logs/errors.txt')).toBe(
Expand All @@ -44,11 +46,10 @@ describe('issue:validate', () => {

it('can handle streams:edit request', () => {
const body = issues.find(issue => issue.number === 39097)?.body
const cmd = `${ENV_VAR} npm run issue:validate --- --body="${body}" --labels="approved,streams:edit"`

try {
const stdout = execSync(cmd, { encoding: 'utf8' })
if (process.env.DEBUG === 'true') console.log(cmd, stdout)
const stdout = runIssueValidate(body, 'approved,streams:edit')
if (process.env.DEBUG === 'true') console.log(stdout)
throw new Error('Failed')
} catch {
expect(content('tests/__data__/output/logs/errors.txt')).toBe(
Expand All @@ -58,6 +59,22 @@ describe('issue:validate', () => {
})
})

function runIssueValidate(body: string | undefined, labels: string) {
return execFileSync(
process.execPath,
[
'--import',
'tsx',
'scripts/commands/issue/validate.ts',
'--body',
`${body}`,
'--labels',
labels
],
{ encoding: 'utf8', env: ENV }
)
}

function content(filepath: string) {
return fs.readFileSync(pathToFileURL(filepath), { encoding: 'utf8' })
}