@ -19,50 +19,48 @@
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
// USE OR OTHER DEALINGS IN THE SOFTWARE.
// Test creating and resolving relative junction or symbolic link
var common = require ( '../common' ) ;
var common = require ( '../common' ) ;
var assert = require ( 'assert' ) ;
var assert = require ( 'assert' ) ;
var path = require ( 'path' ) ;
var path = require ( 'path' ) ;
var fs = require ( 'fs' ) ;
var fs = require ( 'fs' ) ;
var completed = 0 ;
var completed = 0 ;
var expected_tests = 4 ;
var expected_tests = 2 ;
// test creating and reading symbolic link
var linkData = path . join ( common . fixturesDir , 'cycles' ) ;
var linkPath = path . join ( common . tmpDir , 'cycles_link' ) ;
var relative = '../fixtures/cycles' ;
// Delete previously created link
var linkPath1 = path . join ( common . tmpDir , 'junction1' ) ;
try {
var linkPath2 = path . join ( common . tmpDir , 'junction2' ) ;
fs . unlinkSync ( linkPath ) ;
var linkTarget = path . join ( common . fixturesDir ) ;
} catch ( e ) { }
var linkData = '../fixtures' ;
console . log ( 'linkData: ' + linkData ) ;
// Prepare.
console . log ( 'linkPath: ' + linkPath ) ;
try { fs . mkdirSync ( common . tmpDir ) ; } catch ( e ) { }
console . log ( 'relative target: ' + relative )
try { fs . unlinkSync ( linkPath1 ) ; } catch ( e ) { }
try { fs . unlinkSync ( linkPath2 ) ; } catch ( e ) { }
fs . symlink ( relative , linkPath , 'junction' , function ( err ) {
// Test fs.symlink()
fs . symlink ( linkData , linkPath1 , 'junction' , function ( err ) {
if ( err ) throw err ;
if ( err ) throw err ;
completed ++ ;
verifyLink ( linkPath1 ) ;
} ) ;
fs . lstat ( linkPath , function ( err , stats ) {
// Test fs.symlinkSync()
if ( err ) throw err ;
fs . symlinkSync ( linkData , linkPath2 , 'junction' ) ;
assert . ok ( stats . isSymbolicLink ( ) ) ;
verifyLink ( linkPath2 ) ;
completed ++ ;
fs . readlink ( linkPath , function ( err , destination ) {
function verifyLink ( linkPath ) {
if ( err ) throw err ;
var stats = fs . lstatSync ( linkPath ) ;
assert . equal ( path . resolve ( destination ) , linkData ) ;
assert . ok ( stats . isSymbolicLink ( ) ) ;
completed ++ ;
fs . unlink ( linkPath , function ( err ) {
var data1 = fs . readFileSync ( linkPath + '/x.txt' , 'ascii' ) ;
if ( err ) throw err ;
var data2 = fs . readFileSync ( linkTarget + '/x.txt' , 'ascii' ) ;
assert ( ! fs . existsSync ( linkPath ) ) ;
assert . strictEqual ( data1 , data2 ) ;
assert ( fs . existsSync ( linkData ) ) ;
completed ++ ;
// Clean up.
} ) ;
fs . unlinkSync ( linkPath ) ;
} ) ;
} ) ;
completed ++ ;
} ) ;
}
process . on ( 'exit' , function ( ) {
process . on ( 'exit' , function ( ) {
assert . equal ( completed , expected_tests ) ;
assert . equal ( completed , expected_tests ) ;