%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
'use strict'; const common = require('../common'); // Test creating a symbolic link pointing to a directory. // Ref: https://github.com/nodejs/node/pull/23724 // Ref: https://github.com/nodejs/node/issues/23596 if (!common.canCreateSymLink()) common.skip('insufficient privileges'); const assert = require('assert'); const path = require('path'); const fs = require('fs'); const tmpdir = require('../common/tmpdir'); tmpdir.refresh(); const linkTargets = [ 'relative-target', path.join(tmpdir.path, 'absolute-target'), ]; const linkPaths = [ path.relative(process.cwd(), path.join(tmpdir.path, 'relative-path')), path.join(tmpdir.path, 'absolute-path'), ]; function testSync(target, path) { fs.symlinkSync(target, path); fs.readdirSync(path); } function testAsync(target, path) { fs.symlink(target, path, common.mustSucceed(() => { fs.readdirSync(path); })); } for (const linkTarget of linkTargets) { fs.mkdirSync(path.resolve(tmpdir.path, linkTarget)); for (const linkPath of linkPaths) { testSync(linkTarget, `${linkPath}-${path.basename(linkTarget)}-sync`); testAsync(linkTarget, `${linkPath}-${path.basename(linkTarget)}-async`); } } // Test invalid symlink { function testSync(target, path) { fs.symlinkSync(target, path); assert(!fs.existsSync(path)); } function testAsync(target, path) { fs.symlink(target, path, common.mustSucceed(() => { assert(!fs.existsSync(path)); })); } for (const linkTarget of linkTargets.map((p) => p + '-broken')) { for (const linkPath of linkPaths) { testSync(linkTarget, `${linkPath}-${path.basename(linkTarget)}-sync`); testAsync(linkTarget, `${linkPath}-${path.basename(linkTarget)}-async`); } } }