123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- 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()###
|