84 lines
2.1 KiB
CoffeeScript
84 lines
2.1 KiB
CoffeeScript
fs = require 'fs'
|
|
path = require 'path'
|
|
gulp = require 'gulp'
|
|
tap = require '../'
|
|
tapTest = require 'tap'
|
|
|
|
deleteDirectory = (p) ->
|
|
if fs.existsSync p
|
|
fs.readdirSync(p).forEach (file) ->
|
|
curP = (p + '/' + file)
|
|
if fs.lstatSync(curP).isDirectory()
|
|
deleteDirectory curP
|
|
else
|
|
fs.unlinkSync curP
|
|
fs.rmdirSync p
|
|
|
|
clean = ->
|
|
deleteDirectory 'assets'
|
|
deleteDirectory 'scripts'
|
|
deleteDirectory 'sass'
|
|
|
|
# helper function to get a path relative to the root
|
|
getPath = (rel) -> path.resolve __dirname, '..', rel
|
|
|
|
|
|
tapTest.test "gulp-tap can change dest in the middle of stream", (test) ->
|
|
|
|
test.tearDown(clean)
|
|
|
|
test.plan 3
|
|
|
|
destinations =
|
|
'scss': 'sass'
|
|
'js': 'scripts'
|
|
'img': 'assets/images'
|
|
|
|
fixturePath = getPath 'tests/fixtures/'
|
|
|
|
where = (file, t) ->
|
|
match = (p) ->
|
|
ext = (path.extname p)
|
|
.substr 1 # remove leading '.'
|
|
if( ext in ['jpg', 'png', 'svg', 'gif'] )
|
|
ext = 'img'
|
|
destinations[ext] or false
|
|
|
|
# for debugging
|
|
# console.log 'destPath', destPath, file.path
|
|
destPath = match file.path
|
|
|
|
if destPath
|
|
t.through gulp.dest, [destPath]
|
|
|
|
|
|
fs.readdir fixturePath, (err, files) ->
|
|
if err
|
|
console.trace('Can not read fixtures from ' + fixturePath)
|
|
test.end()
|
|
|
|
gulp.src files.map (p) -> (fixturePath + '/' + p)
|
|
.pipe tap where
|
|
.on 'end', ->
|
|
setTimeout (->
|
|
test.ok fs.existsSync getPath 'assets/images/img.png'
|
|
test.ok fs.existsSync getPath 'scripts/js.js'
|
|
test.ok fs.existsSync getPath 'sass/s.scss'
|
|
test.end()
|
|
), 500 # give gulp.dest a (500ms) chance to write the files
|
|
.on 'error', (err) ->
|
|
console.trace(err)
|
|
test.end()
|
|
.pipe tap(->) # We must provide a pipe to make stream end
|
|
|
|
|
|
### stub for https://github.com/geejs/gulp-tap/issues/3
|
|
exports.sameIOFileName =
|
|
|
|
'test for infinite loop, issue #3': (test) ->
|
|
test.plan 1
|
|
|
|
fixturePath = getPath 'tests/fixtures/'
|
|
gulp.src fixturePath + '/*'
|
|
test.ok true
|
|
test.end()###
|