Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(50)

Side by Side Diff: tests/standalone/io/process_start_exception_test.dart

Issue 2639043003: Gardening: Fix standalone/io/process_start_exception_test.dart. (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 // 4 //
5 // Process test program to errors during startup of the process. 5 // Process test program to errors during startup of the process.
6 6
7 import "package:expect/expect.dart"; 7 import "package:expect/expect.dart";
8 import 'dart:async'; 8 import 'dart:async';
9 import 'dart:io'; 9 import 'dart:io';
10 10
11 // Constants from errno.h 11 // ENOENT and ERROR_FILE_NOT_FOUND on Windows both have the same value.
12 // Note: we are setting PATH to an empty string in tests below because on
13 // POSIX systems if target binary name does not contain `/` then it is
14 // searched through PATH and if it is not found anywhere in the PATH
15 // but some folder in PATH is inaccessible then underlying execvp(...)
16 // call will return EACCES (13) instead of ENOENT.
17 // For example on some Android devices PATH would include /sbin with is
18 // inaccessible - so this test will fail.
12 const ENOENT = 2; 19 const ENOENT = 2;
13 const EACCES = 13;
14
15 // TODO(http://dartbug.com/28299) This code is added in attempt to collect more
16 // information about the flakyness this test experiences on Android bots:
17 // sometimes the test fails because we get EACCES instead of ENOENT error
18 // from the OS.
19 checkForAccessError(error) {
20 if (error.errorCode == EACCES) {
21 report(obj) {
22 final stat = obj.statSync();
23 print("${obj} | ${stat.type} | ${stat.modeString()}");
24 }
25
26 report(Directory.current);
27 report(new File("__path_to_something_that_should_not_exist__"));
28 }
29 }
30 20
31 testStartError() { 21 testStartError() {
32 Future<Process> processFuture = 22 Future<Process> processFuture =
33 Process.start("__path_to_something_that_should_not_exist__", 23 Process.start("__path_to_something_that_should_not_exist__",
34 const []); 24 const [],
25 environment: {"PATH": ""});
35 processFuture.then((p) => Expect.fail('got process despite start error')) 26 processFuture.then((p) => Expect.fail('got process despite start error'))
36 .catchError((error) { 27 .catchError((error) {
37 Expect.isTrue(error is ProcessException); 28 Expect.isTrue(error is ProcessException);
38 checkForAccessError(error);
39 Expect.equals(ENOENT, error.errorCode, error.toString()); 29 Expect.equals(ENOENT, error.errorCode, error.toString());
40 }); 30 });
41 } 31 }
42 32
43 testRunError() { 33 testRunError() {
44 Future<ProcessResult> processFuture = 34 Future<ProcessResult> processFuture =
45 Process.run("__path_to_something_that_should_not_exist__", 35 Process.run("__path_to_something_that_should_not_exist__",
46 const []); 36 const [],
37 environment: {"PATH": ""});
47 38
48 processFuture.then((result) => Expect.fail("exit handler called")) 39 processFuture.then((result) => Expect.fail("exit handler called"))
49 .catchError((error) { 40 .catchError((error) {
50 Expect.isTrue(error is ProcessException); 41 Expect.isTrue(error is ProcessException);
51 checkForAccessError(error);
52 Expect.equals(ENOENT, error.errorCode, error.toString()); 42 Expect.equals(ENOENT, error.errorCode, error.toString());
53 }); 43 });
54 } 44 }
55 45
56 main() { 46 main() {
57 testStartError(); 47 testStartError();
58 testRunError(); 48 testRunError();
59 } 49 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698