rsnext/test/unit/recursive-copy.test.js
Luc 3b5f18495b Replace recursive-copy with own implementation (#7263)
* replace recursive-copy with own implementation

* update yarn.lock

* do not filter out not directories

* do not fail if folder already exists

* replace `\` by `/` when sending pathes to filter

* use fs-extra only in tests

* investigate and test recursive-copy npm module

* improve test by creating fixtures programmatically

* remove recursive-copy npm module test

* add recursive-copy to bench

* add bench:recursive-copy script

* fix Sema import in recursive-copy.ts

* small improvements
2019-06-06 12:33:11 +02:00

51 lines
1.8 KiB
JavaScript

/* eslint-env jest */
import { recursiveCopy } from 'next/dist/lib/recursive-copy'
import { join } from 'path'
import fs from 'fs-extra'
import { readFileSync } from 'fs'
const testDir = join(__dirname, 'recursive-folder-test')
const srcDir = join(testDir, 'src')
const destDir = join(testDir, 'dest')
beforeEach(async () => {
await fs.ensureDir(testDir)
// create src directory structure
await fs.ensureDir(srcDir)
await fs.outputFile(join(srcDir, '.hidden'), 'hidden')
await fs.outputFile(join(srcDir, 'file'), 'file')
await fs.outputFile(join(srcDir, 'folder1', 'file1'), 'file1')
await fs.outputFile(join(srcDir, 'folder1', 'file2'), 'file2')
await fs.ensureSymlink(join(srcDir, 'file'), join(srcDir, 'link'))
await fs.ensureSymlink(join(srcDir, 'folder1'), join(srcDir, 'linkfolder'))
})
afterEach(async () => {
await fs.remove(testDir)
})
describe('recursiveCopy', () => {
it('should work', async () => {
await recursiveCopy(srcDir, destDir, {
filter (path) {
return path !== '/folder1/file1'
}
})
expect(await fs.pathExists(join(destDir, '.hidden'))).toBe(true)
expect(await fs.pathExists(join(destDir, 'file'))).toBe(true)
expect(await fs.pathExists(join(destDir, 'link'))).toBe(true)
expect(await fs.pathExists(join(destDir, 'folder1', 'file1'))).toBe(false)
expect(await fs.pathExists(join(destDir, 'folder1', 'file2'))).toBe(true)
expect(await fs.pathExists(join(destDir, 'linkfolder', 'file1'))).toBe(true)
expect(await fs.pathExists(join(destDir, 'linkfolder', 'file2'))).toBe(true)
expect(readFileSync(join(destDir, 'file'), 'utf8')).toBe('file')
expect(readFileSync(join(destDir, 'link'), 'utf8')).toBe('file')
expect(readFileSync(join(destDir, 'linkfolder', 'file1'), 'utf8')).toBe(
'file1'
)
})
})