|
|
|
import fs from 'fs/promises'
|
|
|
|
import { join, resolve } from 'path'
|
|
|
|
import { tmpdir } from 'os'
|
|
|
|
const readFile = fs.readFile
|
|
|
|
const mkdir = fs.mkdir
|
|
|
|
import { promisify } from 'util'
|
|
|
|
import * as cp from 'child_process'
|
|
|
|
|
|
|
|
const exec = promisify(cp.exec)
|
|
|
|
|
|
|
|
export const tests = []
|
|
|
|
const randomLetters = (number) =>
|
|
|
|
Math.random()
|
|
|
|
.toString(36)
|
|
|
|
.substring(0, number)
|
|
|
|
|
|
|
|
export const setup = async ({ path }) => {
|
|
|
|
const run = async (word) => {
|
|
|
|
await exec(`node ${path} ${word}`)
|
|
|
|
const fileContent = await readFile('verydisco-forever.txt', 'utf8').catch((err) =>
|
|
|
|
err.code === 'ENOENT' ? 'output file not found' : err,
|
|
|
|
)
|
|
|
|
|
|
|
|
return { data: fileContent }
|
|
|
|
}
|
|
|
|
|
|
|
|
return { run }
|
|
|
|
}
|
|
|
|
|
|
|
|
tests.push(async ({ ctx, eq }) => {
|
|
|
|
const { data } = await ctx.run(`discovery`)
|
|
|
|
return eq(data, 'verydisco')
|
|
|
|
})
|
|
|
|
|
|
|
|
tests.push(async ({ ctx, eq }) => {
|
|
|
|
const { data } = await ctx.run(`"kiss cool"`)
|
|
|
|
return eq(data, "sski olco")
|
|
|
|
})
|
|
|
|
|
|
|
|
tests.push(async ({ ctx, eq }) => {
|
|
|
|
const { data } = await ctx.run(`kiss cool`)
|
|
|
|
return eq(data, "sski")
|
|
|
|
})
|
|
|
|
|
|
|
|
tests.push(async ({ ctx, eq }) => {
|
|
|
|
const { data } = await ctx.run(`"Node is awesome"`)
|
|
|
|
return eq(data, "deNo si omeawes")
|
|
|
|
})
|
|
|
|
|
|
|
|
tests.push(async ({ ctx, eq }) => {
|
|
|
|
const tic = randomLetters(7)
|
|
|
|
const tac = randomLetters(7)
|
|
|
|
const { data } = await ctx.run(`"${tic}${tac}"`)
|
|
|
|
return eq(data, `${tac}${tic}`)
|
|
|
|
})
|
|
|
|
|
|
|
|
tests.push(async ({ ctx, eq }) => {
|
|
|
|
const ying = randomLetters(8)
|
|
|
|
const yang = randomLetters(7)
|
|
|
|
const { data } = await ctx.run(`"${ying}${yang}"`)
|
|
|
|
return eq(data, `${yang}${ying}`)
|
|
|
|
})
|
|
|
|
|
|
|
|
tests.push(async ({ ctx, eq }) => {
|
|
|
|
const tic = randomLetters(5)
|
|
|
|
const tac = randomLetters(5)
|
|
|
|
const ying = randomLetters(3)
|
|
|
|
const yang = randomLetters(2)
|
|
|
|
const { data } = await ctx.run(`"${tic}${tac} ${ying}${yang}"`)
|
|
|
|
return eq(data, `${tac}${tic} ${yang}${ying}`)
|
|
|
|
})
|
|
|
|
|
|
|
|
Object.freeze(tests)
|