| // Copyright (c) 2012, 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. |
| // |
| // Process working directory test. |
| |
| // @dart = 2.9 |
| |
| library ProcessWorkingDirectoryTest; |
| |
| import "dart:io"; |
| import "package:expect/expect.dart"; |
| import "process_test_util.dart"; |
| |
| class ProcessWorkingDirectoryTest { |
| static String get fullTestFilePath { |
| // Extract full path, since we run processes from another directory. |
| File path = new File(getProcessTestFileName()); |
| Expect.isTrue(path.existsSync()); |
| return path.resolveSymbolicLinksSync(); |
| } |
| |
| static void testValidDirectory() { |
| Directory directory = |
| Directory.systemTemp.createTempSync('dart_process_working_directory'); |
| Expect.isTrue(directory.existsSync()); |
| |
| Process |
| .start(fullTestFilePath, const ["0", "0", "99", "0"], |
| workingDirectory: directory.path) |
| .then((process) { |
| process.exitCode.then((int exitCode) { |
| Expect.equals(exitCode, 99); |
| directory.deleteSync(); |
| }); |
| process.stdout.listen((_) {}); |
| process.stderr.listen((_) {}); |
| }).catchError((error) { |
| directory.deleteSync(); |
| Expect.fail("Couldn't start process"); |
| }); |
| } |
| |
| static void testInvalidDirectory() { |
| Directory directory = |
| Directory.systemTemp.createTempSync('dart_process_working_directory'); |
| Expect.isTrue(directory.existsSync()); |
| |
| Process |
| .start(fullTestFilePath, const ["0", "0", "99", "0"], |
| workingDirectory: directory.path + "/subPath") |
| .then((process) { |
| Expect.fail("bad process completed"); |
| directory.deleteSync(); |
| }).catchError((e) { |
| Expect.isNotNull(e); |
| directory.deleteSync(); |
| }); |
| } |
| } |
| |
| main() { |
| ProcessWorkingDirectoryTest.testValidDirectory(); |
| ProcessWorkingDirectoryTest.testInvalidDirectory(); |
| } |