OLD | NEW |
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 // Dart test program for testing native extensions. | 5 // Dart test program for testing native extensions. |
6 | 6 |
7 import "package:expect/expect.dart"; | 7 import "package:expect/expect.dart"; |
8 import "package:path/path.dart"; | 8 import "package:path/path.dart"; |
9 import 'dart:async'; | 9 import 'dart:async'; |
10 import 'dart:io'; | 10 import 'dart:io'; |
(...skipping 15 matching lines...) Expand all Loading... |
26 // Returns a list containing the source file name in the first element and the | 26 // Returns a list containing the source file name in the first element and the |
27 // target file name in the second element. | 27 // target file name in the second element. |
28 List<String> getExtensionNames(String arch) { | 28 List<String> getExtensionNames(String arch) { |
29 switch (Platform.operatingSystem) { | 29 switch (Platform.operatingSystem) { |
30 case 'android': | 30 case 'android': |
31 case 'linux': | 31 case 'linux': |
32 return ['libtest_extension.so', 'libtest_extension$arch.so']; | 32 return ['libtest_extension.so', 'libtest_extension$arch.so']; |
33 case 'macos': | 33 case 'macos': |
34 return ['libtest_extension.dylib', 'libtest_extension$arch.dylib']; | 34 return ['libtest_extension.dylib', 'libtest_extension$arch.dylib']; |
35 case 'windows': | 35 case 'windows': |
36 return ['test_extension.dll','test_extension$arch.dll']; | 36 return ['test_extension.dll', 'test_extension$arch.dll']; |
37 default: | 37 default: |
38 Expect.fail('Unknown operating system ${Platform.operatingSystem}'); | 38 Expect.fail('Unknown operating system ${Platform.operatingSystem}'); |
39 } | 39 } |
40 } | 40 } |
41 | 41 |
42 String getExtensionPath(String buildDirectory, String filename) { | 42 String getExtensionPath(String buildDirectory, String filename) { |
43 switch (Platform.operatingSystem) { | 43 switch (Platform.operatingSystem) { |
44 case 'android': | 44 case 'android': |
45 case 'linux': | 45 case 'linux': |
46 return join(buildDirectory, 'lib.target', filename); | 46 return join(buildDirectory, 'lib.target', filename); |
(...skipping 30 matching lines...) Expand all Loading... |
77 if (withArchSuffix) { | 77 if (withArchSuffix) { |
78 String arch = getArchFromBuildDir(buildDirectory); | 78 String arch = getArchFromBuildDir(buildDirectory); |
79 fileNames = getExtensionNames(arch); | 79 fileNames = getExtensionNames(arch); |
80 } else { | 80 } else { |
81 fileNames = getExtensionNames(''); | 81 fileNames = getExtensionNames(''); |
82 } | 82 } |
83 | 83 |
84 // Copy test_extension shared library, test_extension.dart and | 84 // Copy test_extension shared library, test_extension.dart and |
85 // test_extension_tester.dart to the temporary test directory. | 85 // test_extension_tester.dart to the temporary test directory. |
86 return copyFileToDirectory(getExtensionPath(buildDirectory, fileNames[0]), | 86 return copyFileToDirectory(getExtensionPath(buildDirectory, fileNames[0]), |
87 join(testDirectory, fileNames[1])).then((_) { | 87 join(testDirectory, fileNames[1])).then((_) { |
88 var extensionDartFile = join(scriptDirectory, 'test_extension.dart'); | 88 var extensionDartFile = join(scriptDirectory, 'test_extension.dart'); |
89 return copyFileToDirectory(extensionDartFile, testDirectory); | 89 return copyFileToDirectory(extensionDartFile, testDirectory); |
90 }).then((_) { | 90 }).then((_) { |
91 var testExtensionTesterFile = | 91 var testExtensionTesterFile = |
92 join(scriptDirectory, 'test_extension_tester.dart'); | 92 join(scriptDirectory, 'test_extension_tester.dart'); |
93 return copyFileToDirectory(testExtensionTesterFile, testDirectory); | 93 return copyFileToDirectory(testExtensionTesterFile, testDirectory); |
94 }).then((_) { | 94 }).then((_) { |
95 var script = join(testDirectory, 'test_extension_tester.dart'); | 95 var script = join(testDirectory, 'test_extension_tester.dart'); |
96 return Process.run(Platform.executable, [script]); | 96 return Process.run(Platform.executable, [script]); |
97 })..then((ProcessResult result) { | 97 }) |
98 if (result.exitCode != 0) { | 98 ..then((ProcessResult result) { |
99 print('Subprocess failed with exit code ${result.exitCode}'); | 99 if (result.exitCode != 0) { |
100 print('stdout:'); | 100 print('Subprocess failed with exit code ${result.exitCode}'); |
101 print('${result.stdout}'); | 101 print('stdout:'); |
102 print('stderr:'); | 102 print('${result.stdout}'); |
103 print('${result.stderr}'); | 103 print('stderr:'); |
104 } | 104 print('${result.stderr}'); |
105 Expect.equals(0, result.exitCode); | 105 } |
106 tempDirectory.deleteSync(recursive: true); | 106 Expect.equals(0, result.exitCode); |
107 })..catchError((_) { | 107 tempDirectory.deleteSync(recursive: true); |
108 tempDirectory.deleteSync(recursive: true); | 108 }) |
109 }); | 109 ..catchError((_) { |
| 110 tempDirectory.deleteSync(recursive: true); |
| 111 }); |
110 } | 112 } |
111 | 113 |
112 Future testWithArchSuffix() { | 114 Future testWithArchSuffix() { |
113 return testExtension(true); | 115 return testExtension(true); |
114 } | 116 } |
115 | 117 |
116 Future testWithoutArchSuffix() { | 118 Future testWithoutArchSuffix() { |
117 return testExtension(false); | 119 return testExtension(false); |
118 } | 120 } |
119 | 121 |
120 main() async { | 122 main() async { |
121 await testWithArchSuffix(); | 123 await testWithArchSuffix(); |
122 await testWithoutArchSuffix(); | 124 await testWithoutArchSuffix(); |
123 } | 125 } |
OLD | NEW |