blob: ad71660c21ab217cd6a9857ed21b9efc59400c61 [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.
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();
}