// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. library which.test.is_executable; import 'dart:io'; import 'package:mockito/mockito.dart'; import 'package:unittest/unittest.dart'; import 'package:which/src/is_executable.dart'; import 'util.dart'; main() { group('isExecutableStat', () { test('false if not a file', () { var stat = new MockFileStat(); // A directory. when(stat.type).thenReturn(FileSystemEntityType.DIRECTORY); var result = isExecutableStat(stat, false); expect(result, isFalse); verifyNever(stat.mode); }); test('true for all files on windows', () { var stat = new MockFileStat(); // A file. when(stat.type).thenReturn(FileSystemEntityType.FILE); var result = isExecutableStat(stat, true); expect(result, isTrue); verifyNever(stat.mode); }); test('true if has world execute permission', () { var result = isExecutableStat(_getMockFileStat('000000000001'), false); expect(result, isTrue); }); test('true if has group execute permission', () { var result = isExecutableStat(_getMockFileStat('000000001000'), false); expect(result, isTrue); }); test('true if has owner execute permission', () { var result = isExecutableStat(_getMockFileStat('000001000000'), false); expect(result, isTrue); }); test('false if has no execute permissions', () { var result = isExecutableStat(_getMockFileStat('111110110110'), false); expect(result, isFalse); }); }); } MockFileStat _getMockFileStat(String mode) { var stat = new MockFileStat(); // A file. when(stat.type).thenReturn(FileSystemEntityType.FILE); // Last bit is world execute. when(stat.mode).thenReturn(int.parse(mode, radix: 2)); return stat; }