blob: 983938f0c9f832816feafca7dad03412a5d1370b [file] [log] [blame]
// 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();
}