blob: f5266658958528d1c24570914a8b98fee1ccf781 [file]
// 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.
import 'dart:convert';
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(99, exitCode);
directory.deleteSync();
});
process.stdout.transform(utf8.decoder).listen(stdout.write);
process.stderr.transform(utf8.decoder).listen(stderr.write);
})
.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();
}