You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							84 lines
						
					
					
						
							2.5 KiB
						
					
					
				
			
		
		
	
	
							84 lines
						
					
					
						
							2.5 KiB
						
					
					
				'use strict' | 
						|
 | 
						|
const test = require('tap').test | 
						|
const path = require('path') | 
						|
const requireInject = require('require-inject') | 
						|
const configure = requireInject('../lib/configure', { | 
						|
  'graceful-fs': { | 
						|
    closeSync: function () { return undefined }, | 
						|
    openSync: function (path) { | 
						|
      if (readableFiles.some(function (f) { return f === path })) { | 
						|
        return 0 | 
						|
      } else { | 
						|
        var error = new Error('ENOENT - not found') | 
						|
        throw error | 
						|
      } | 
						|
    } | 
						|
  } | 
						|
}) | 
						|
 | 
						|
const dir = path.sep + 'testdir' | 
						|
const readableFile = 'readable_file' | 
						|
const anotherReadableFile = 'another_readable_file' | 
						|
const readableFileInDir = 'somedir' + path.sep + readableFile | 
						|
const readableFiles = [ | 
						|
  path.resolve(dir, readableFile), | 
						|
  path.resolve(dir, anotherReadableFile), | 
						|
  path.resolve(dir, readableFileInDir) | 
						|
] | 
						|
 | 
						|
test('find accessible - empty array', function (t) { | 
						|
  t.plan(1) | 
						|
 | 
						|
  var candidates = [] | 
						|
  var found = configure.test.findAccessibleSync('test', dir, candidates) | 
						|
  t.strictEqual(found, undefined) | 
						|
}) | 
						|
 | 
						|
test('find accessible - single item array, readable', function (t) { | 
						|
  t.plan(1) | 
						|
 | 
						|
  var candidates = [readableFile] | 
						|
  var found = configure.test.findAccessibleSync('test', dir, candidates) | 
						|
  t.strictEqual(found, path.resolve(dir, readableFile)) | 
						|
}) | 
						|
 | 
						|
test('find accessible - single item array, readable in subdir', function (t) { | 
						|
  t.plan(1) | 
						|
 | 
						|
  var candidates = [readableFileInDir] | 
						|
  var found = configure.test.findAccessibleSync('test', dir, candidates) | 
						|
  t.strictEqual(found, path.resolve(dir, readableFileInDir)) | 
						|
}) | 
						|
 | 
						|
test('find accessible - single item array, unreadable', function (t) { | 
						|
  t.plan(1) | 
						|
 | 
						|
  var candidates = ['unreadable_file'] | 
						|
  var found = configure.test.findAccessibleSync('test', dir, candidates) | 
						|
  t.strictEqual(found, undefined) | 
						|
}) | 
						|
 | 
						|
test('find accessible - multi item array, no matches', function (t) { | 
						|
  t.plan(1) | 
						|
 | 
						|
  var candidates = ['non_existent_file', 'unreadable_file'] | 
						|
  var found = configure.test.findAccessibleSync('test', dir, candidates) | 
						|
  t.strictEqual(found, undefined) | 
						|
}) | 
						|
 | 
						|
test('find accessible - multi item array, single match', function (t) { | 
						|
  t.plan(1) | 
						|
 | 
						|
  var candidates = ['non_existent_file', readableFile] | 
						|
  var found = configure.test.findAccessibleSync('test', dir, candidates) | 
						|
  t.strictEqual(found, path.resolve(dir, readableFile)) | 
						|
}) | 
						|
 | 
						|
test('find accessible - multi item array, return first match', function (t) { | 
						|
  t.plan(1) | 
						|
 | 
						|
  var candidates = ['non_existent_file', anotherReadableFile, readableFile] | 
						|
  var found = configure.test.findAccessibleSync('test', dir, candidates) | 
						|
  t.strictEqual(found, path.resolve(dir, anotherReadableFile)) | 
						|
})
 | 
						|
 |