import fs from 'fs'
import path from 'path'

import rimraf from 'rimraf'

let id = 0

export default function (callback) {
  return new Promise((resolve) => {
    const workerId = `${process.env.JEST_WORKER_ID}-${id++}`
    const tmpPath = path.resolve(__dirname, `../__tmp_${workerId}`)
    const currentPath = process.cwd()

    rimraf.sync(tmpPath)
    fs.mkdirSync(tmpPath)
    process.chdir(tmpPath)

    callback().then(() => {
      process.chdir(currentPath)
      rimraf(tmpPath, resolve)
    })
  })
}