Skip to content

Commit

Permalink
copy file
Browse files Browse the repository at this point in the history
  • Loading branch information
nfrancois committed Mar 31, 2015
1 parent db1288b commit b01d1be
Show file tree
Hide file tree
Showing 3 changed files with 103 additions and 0 deletions.
3 changes: 3 additions & 0 deletions bin/jsio.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ try {
case "rename":
jsiojs.renameFile(params[0], params[1])
break
case "copy":
jsiojs.copyFile(params[0], params[1])
break
default:
console.error("Invalid command")
break
Expand Down
9 changes: 9 additions & 0 deletions lib/jsiojs_core.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,15 @@ exports.renameFile = function(oldName, newName){
fs.renameSync(oldName, newName)
console.info('File '+oldName+' moved to '+newName+' with success !')
}

exports.copyFile = function(source, destination){
checkJsFile(source)
checkJsFile(destination)
checkFileExist(source)
checkFileNotExist(destination)
fs.createReadStream(source).pipe(fs.createWriteStream(destination));
console.info('File '+source+' copied to '+destination+' with success !')
}

function checkJsFile(fileName){
if(fileName === undefined)
Expand Down
91 changes: 91 additions & 0 deletions test/jsiojs_core_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,97 @@ describe('jsiojs', function() {

})

describe('jsiojs', function() {
describe('#copyFile', function() {
it('Should copy a javascript file', function() {
// Given
var src = generateFileName()
fs.writeFileSync(src,"")
fs.existsSync(src).should.be.true
var dest = generateFileName()
fs.existsSync(dest).should.be.false
// When
jsiojs.copyFile(src, dest)
// Then
fs.existsSync(src).should.be.true
fs.existsSync(dest).should.be.true
})
})

describe('#copyFile', function() {
it('Should fail when no fileName', function() {
// When
var fn = function(){ jsiojs.copyFile() }
// Then
expect(fn).to.throw("file name is missing")
})
})

describe('#copyFile', function() {
it('Should fail when only one fileName', function() {
// Given
var src = generateFileName()
// When
var fn = function(){ jsiojs.copyFile(src) }
// Then
expect(fn).to.throw("file name is missing")
})
})

describe('#copyFile', function() {
it('Should fail when source not a javascript file', function() {
// Given
var src = generateFileName()+".txt"
var dest = generateFileName()
// When
var fn = function(){ jsiojs.copyFile(src, dest) }
// Then
expect(fn).to.throw(src+" is not a valid javascript file name")
})
})

describe('#copyFile', function() {
it('Should fail when destination not a javascript file', function() {
// Given
var src = generateFileName()
var dest = generateFileName()+".txt"
// When
var fn = function(){ jsiojs.copyFile(src, dest) }
// Then
expect(fn).to.throw(dest+" is not a valid javascript file name")
})
})

describe('#copyFile', function() {
it('Should fail when source does not exist', function() {
// Given
var src = generateFileName()
var dest = generateFileName()
fs.existsSync(src).should.be.false
// When
var fn = function(){ jsiojs.copyFile(src, dest) }
// Then
expect(fn).to.throw(src+" does not exist")
})
})

describe('#copyFile', function() {
it('Should fail when destination already exists', function() {
// Given
var src = generateFileName()
var dest = generateFileName()
fs.writeFileSync(src,"")
fs.writeFileSync(dest,"")
fs.existsSync(dest).should.be.true
// When
var fn = function(){ jsiojs.renameFile(src, dest) }
// Then
expect(fn).to.throw(dest+" already exists")
})
})

})


function generateFileName(){
return tmpDir+Math.random()+".js"
Expand Down

0 comments on commit b01d1be

Please sign in to comment.