import { exec } from 'node:child_process'

describe('integration test', function () {
  test.concurrent.each(['ts-node', 'ts-node-dev'])(
    'integration with %s',
    async function (instance) {
      await new Promise(function (resolve) {
        const child = exec(`${instance} "${process.cwd()}/test/typescript-jest/integration/instance.ts"`)
        let stderr = ''
        child.stderr?.on('data', function (b) {
          stderr = stderr + b.toString()
        })
        let stdout = ''
        child.stdout?.on('data', function (b) {
          stdout = stdout + b.toString()
        })
        child.once('close', function () {
          expect(stderr.includes('failed')).toStrictEqual(false)
          expect(stdout.includes('success')).toStrictEqual(true)
          resolve('')
        })
      })
    },
    30000
  )
})
