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

Side by Side Diff: tools/testing/dart/test_suite.dart

Issue 2801143003: Remove the "pkgbuild" step on the bots. (Closed)
Patch Set: Rebase. Created 3 years, 8 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 | « tools/testing/dart/test_runner.dart ('k') | 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 /** 5 /**
6 * Classes and methods for enumerating and preparing tests. 6 * Classes and methods for enumerating and preparing tests.
7 * 7 *
8 * This library includes: 8 * This library includes:
9 * 9 *
10 * - Creating tests by listing all the Dart files in certain directories, 10 * - Creating tests by listing all the Dart files in certain directories,
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after
431 var packageName = new Path(fullPath).filename; 431 var packageName = new Path(fullPath).filename;
432 if (isValid(packageName)) { 432 if (isValid(packageName)) {
433 return [packageName, path.append(packageName).toNativePath()]; 433 return [packageName, path.append(packageName).toNativePath()];
434 } 434 }
435 return null; 435 return null;
436 }) 436 })
437 .where((name) => name != null) 437 .where((name) => name != null)
438 .toList(); 438 .toList();
439 }); 439 });
440 } 440 }
441
442 Future<Map> discoverPackagesInRepository() {
443 /*
444 * Layout of packages inside the dart repository:
445 * dart/
446 * pkg/PACKAGE_NAME
447 * third_party/pkg/PACKAGE_NAME
448 * third_party/pkg_tested/PACKAGE_NAME
449 * runtime/observatory/PACKAGE_NAME
450 * sdk/lib/_internal/PACKAGE_NAME
451 */
452
453 // Directories containing "-" are not valid pub packages and we therefore
454 // do not include them in the list of packages.
455 isValid(packageName) =>
456 packageName != 'third_party' && !packageName.contains('-');
457
458 var dartDir = TestUtils.dartDir;
459 var futures = [
460 listDir(dartDir.append('pkg'), isValid),
461 listDir(dartDir.append('third_party').append('pkg'), isValid),
462 listDir(dartDir.append('third_party').append('pkg_tested'), isValid),
463 listDir(dartDir.append('runtime').append('observatory'), isValid),
464 listDir(dartDir.append('sdk').append('lib').append('_internal'), isValid),
465 ];
466 return Future.wait(futures).then((results) {
467 var packageDirectories = {};
468 for (var result in results) {
469 for (var packageTuple in result) {
470 String packageName = packageTuple[0];
471 String fullPath = packageTuple[1];
472 String yamlFile =
473 new Path(fullPath).append('pubspec.yaml').toNativePath();
474 if (new File(yamlFile).existsSync()) {
475 packageDirectories[packageName] = fullPath;
476 }
477 }
478 }
479 return packageDirectories;
480 });
481 }
482
483 Future<Map> discoverSamplesInRepository() {
484 /*
485 * Layout of samples inside the dart repository:
486 * dart/
487 * samples/SAMPLE_NAME
488 * samples/third_party/SAMPLE_NAME
489 */
490
491 isValid(packageName) => packageName != 'third_party';
492
493 var dartDir = TestUtils.dartDir;
494 var futures = [
495 listDir(dartDir.append('samples'), isValid),
496 listDir(dartDir.append('samples').append('third_party'), isValid),
497 ];
498 return Future.wait(futures).then((results) {
499 var packageDirectories = {};
500 for (var result in results) {
501 for (var packageTuple in result) {
502 String packageName = packageTuple[0];
503 String fullPath = packageTuple[1];
504 packageDirectories[packageName] = fullPath;
505 }
506 }
507 return packageDirectories;
508 });
509 }
510 } 441 }
511 442
512 Future<Iterable<String>> ccTestLister(String runnerPath) { 443 Future<Iterable<String>> ccTestLister(String runnerPath) {
513 return Process.run(runnerPath, ["--list"]).then((ProcessResult result) { 444 return Process.run(runnerPath, ["--list"]).then((ProcessResult result) {
514 if (result.exitCode != 0) { 445 if (result.exitCode != 0) {
515 throw "Failed to list tests: '$runnerPath --list'. " 446 throw "Failed to list tests: '$runnerPath --list'. "
516 "Process exited with ${result.exitCode}"; 447 "Process exited with ${result.exitCode}";
517 } 448 }
518 return result.stdout 449 return result.stdout
519 .split('\n') 450 .split('\n')
(...skipping 1351 matching lines...) Expand 10 before | Expand all | Expand 10 after
1871 bool isTestFile(String filename) { 1802 bool isTestFile(String filename) {
1872 // NOTE: We exclude tests and patch files for now. 1803 // NOTE: We exclude tests and patch files for now.
1873 return filename.endsWith(".dart") && 1804 return filename.endsWith(".dart") &&
1874 !filename.endsWith("_test.dart") && 1805 !filename.endsWith("_test.dart") &&
1875 !filename.contains("_internal/js_runtime/lib"); 1806 !filename.contains("_internal/js_runtime/lib");
1876 } 1807 }
1877 1808
1878 bool get listRecursively => true; 1809 bool get listRecursively => true;
1879 } 1810 }
1880 1811
1881 class PkgBuildTestSuite extends TestSuite {
1882 final String statusFilePath;
1883
1884 PkgBuildTestSuite(Map configuration, String suiteName, this.statusFilePath)
1885 : super(configuration, suiteName) {
1886 assert(configuration['use_sdk']);
1887 ;
1888 }
1889
1890 void forEachTest(void onTest(TestCase testCase), _, [void onDone()]) {
1891 bool fileExists(Path path) => new File(path.toNativePath()).existsSync();
1892
1893 bool dirExists(Path path) =>
1894 new Directory(path.toNativePath()).existsSync();
1895
1896 enqueueTestCases(
1897 Map<String, String> localPackageDirectories,
1898 Map<String, String> localSampleDirectories,
1899 TestExpectations testExpectations) {
1900 enqueueTestCase(String packageName, String directory) {
1901 var absoluteDirectoryPath = new Path(directory);
1902
1903 // Early return if this package is not using pub.
1904 if (!fileExists(absoluteDirectoryPath.append('pubspec.yaml'))) {
1905 return;
1906 }
1907
1908 var directoryPath = absoluteDirectoryPath.relativeTo(TestUtils.dartDir);
1909 var testName = "$directoryPath";
1910 var displayName = '$suiteName/$testName';
1911
1912 var checkoutDir =
1913 createPubPackageBuildsDirectory(absoluteDirectoryPath);
1914 var cacheDir = new Path(checkoutDir).append("pub-cache").toNativePath();
1915
1916 // Build all commands
1917 // In order to debug timeouts on the buildbots, We run `pub get` with
1918 // "--verbose". See https://github.com/dart-lang/sdk/issues/28734.
1919 var commands = [
1920 CommandBuilder.instance.getCopyCommand(directory, checkoutDir),
1921 CommandBuilder.instance.getPubCommand(
1922 "get", pubPath, checkoutDir, cacheDir,
1923 arguments: ['--verbose'])
1924 ];
1925
1926 bool containsWebDirectory = dirExists(directoryPath.append('web'));
1927 bool containsBuildDartFile =
1928 fileExists(directoryPath.append('build.dart'));
1929 if (containsBuildDartFile) {
1930 var dartBinary = new File(dartVmBinaryFileName).absolute.path;
1931
1932 commands.add(CommandBuilder.instance.getProcessCommand(
1933 "custom_build",
1934 dartBinary,
1935 ['build.dart'],
1936 {'PUB_CACHE': cacheDir},
1937 checkoutDir));
1938
1939 // We only try to deploy the application if it's a webapp.
1940 if (containsWebDirectory) {
1941 commands.add(CommandBuilder.instance.getProcessCommand(
1942 "custom_deploy",
1943 dartBinary,
1944 ['build.dart', '--deploy'],
1945 {'PUB_CACHE': cacheDir},
1946 checkoutDir));
1947 }
1948 } else if (containsWebDirectory) {
1949 commands.add(CommandBuilder.instance
1950 .getPubCommand("build", pubPath, checkoutDir, cacheDir));
1951 }
1952
1953 // Enqueue TestCase
1954 var testCase = new TestCase(displayName, commands, configuration,
1955 testExpectations.expectations(testName));
1956 enqueueNewTestCase(testCase);
1957 }
1958
1959 localPackageDirectories.forEach(enqueueTestCase);
1960 localSampleDirectories.forEach(enqueueTestCase);
1961
1962 doTest = null;
1963 // Notify we're done
1964 if (onDone != null) onDone();
1965 }
1966
1967 doTest = onTest;
1968 List<String> statusFiles = [
1969 TestUtils.dartDir.join(new Path(statusFilePath)).toNativePath()
1970 ];
1971 ReadTestExpectations(statusFiles, configuration).then((expectations) {
1972 Future.wait([
1973 discoverPackagesInRepository(),
1974 discoverSamplesInRepository()
1975 ]).then((List results) {
1976 Map packageDirectories = results[0];
1977 Map sampleDirectories = results[1];
1978 enqueueTestCases(packageDirectories, sampleDirectories, expectations);
1979 });
1980 });
1981 }
1982 }
1983
1984 class LastModifiedCache { 1812 class LastModifiedCache {
1985 Map<String, DateTime> _cache = <String, DateTime>{}; 1813 Map<String, DateTime> _cache = <String, DateTime>{};
1986 1814
1987 /** 1815 /**
1988 * Returns the last modified date of the given [uri]. 1816 * Returns the last modified date of the given [uri].
1989 * 1817 *
1990 * The return value will be cached for future queries. If [uri] is a local 1818 * The return value will be cached for future queries. If [uri] is a local
1991 * file, it's last modified [Date] will be returned. If the file does not 1819 * file, it's last modified [Date] will be returned. If the file does not
1992 * exist, null will be returned instead. 1820 * exist, null will be returned instead.
1993 * In case [uri] is not a local file, this method will always return 1821 * In case [uri] is not a local file, this method will always return
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after
2407 } 2235 }
2408 if (path.length > WINDOWS_SHORTEN_PATH_LIMIT) { 2236 if (path.length > WINDOWS_SHORTEN_PATH_LIMIT) {
2409 ++shortNameCounter; 2237 ++shortNameCounter;
2410 var pathEnd = path.substring(path.length - WINDOWS_PATH_END_LENGTH); 2238 var pathEnd = path.substring(path.length - WINDOWS_PATH_END_LENGTH);
2411 path = "short${shortNameCounter}_$pathEnd"; 2239 path = "short${shortNameCounter}_$pathEnd";
2412 } 2240 }
2413 } 2241 }
2414 return path; 2242 return path;
2415 } 2243 }
2416 } 2244 }
OLDNEW
« no previous file with comments | « tools/testing/dart/test_runner.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698