546ddc645e
Change-Id: Iaa29e2df68875fbb363ab2ac5cd59cc99e65532b Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/422102 Auto-Submit: Daco Harkes <dacoharkes@google.com> Commit-Queue: Bob Nystrom <rnystrom@google.com> Reviewed-by: Bob Nystrom <rnystrom@google.com> Commit-Queue: Daco Harkes <dacoharkes@google.com>
106 lines
3.2 KiB
Dart
106 lines
3.2 KiB
Dart
// Copyright (c) 2020, 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.
|
|
|
|
import 'dart:io';
|
|
|
|
extension TestGeneratorStringExtension on String {
|
|
String upperCaseFirst() => "${this[0].toUpperCase()}${this.substring(1)}";
|
|
|
|
String lowerCaseFirst() => "${this[0].toLowerCase()}${this.substring(1)}";
|
|
|
|
String makeCComment() => "// " + split("\n").join("\n// ");
|
|
|
|
String makeDartDocComment() => "/// " + split("\n").join("\n/// ");
|
|
|
|
String limitTo(int length) {
|
|
if (this.length > length) {
|
|
return substring(0, length);
|
|
}
|
|
return this;
|
|
}
|
|
|
|
String trimCouts() => replaceAll('" << "', '').replaceAll('"<< "', '');
|
|
}
|
|
|
|
Future<void> runProcess(String executable, List<String> arguments) async {
|
|
final commandString = [executable, ...arguments].join(' ');
|
|
stdout.writeln('Running `$commandString`.');
|
|
final process =
|
|
await Process.start(
|
|
executable,
|
|
arguments,
|
|
runInShell: true,
|
|
includeParentEnvironment: true,
|
|
).then((process) {
|
|
process.stdout.forEach(stdout.add);
|
|
process.stderr.forEach(stderr.add);
|
|
return process;
|
|
});
|
|
final exitCode = await process.exitCode;
|
|
if (exitCode != 0) {
|
|
final message = 'Command `$commandString` failed with exit code $exitCode.';
|
|
stderr.writeln(message);
|
|
throw Exception(message);
|
|
}
|
|
stdout.writeln('Command `$commandString` done.');
|
|
}
|
|
|
|
String headerCommon({
|
|
required int copyrightYear,
|
|
required String generatorPath,
|
|
}) {
|
|
final year = copyrightYear;
|
|
return """
|
|
// Copyright (c) $year, 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.
|
|
//
|
|
// This file has been automatically generated. Please do not edit it manually.
|
|
// Generated by $generatorPath.""";
|
|
}
|
|
|
|
String headerC({required int copyrightYear, required String generatorPath}) {
|
|
return """
|
|
${headerCommon(copyrightYear: copyrightYear, generatorPath: generatorPath)}
|
|
|
|
#include <stdarg.h>
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
#include <stdlib.h>
|
|
#include <sys/types.h>
|
|
|
|
#include <cmath>
|
|
#include <iostream>
|
|
#include <limits>
|
|
|
|
#if defined(_WIN32)
|
|
#define DART_EXPORT extern "C" __declspec(dllexport)
|
|
#else
|
|
#define DART_EXPORT \\
|
|
extern "C" __attribute__((visibility("default"))) __attribute((used))
|
|
#endif
|
|
|
|
namespace dart {
|
|
|
|
#define CHECK(X) \\
|
|
if (!(X)) { \\
|
|
fprintf(stderr, "%s\\n", "Check failed: " #X); \\
|
|
return 1; \\
|
|
}
|
|
|
|
#define CHECK_EQ(X, Y) CHECK((X) == (Y))
|
|
|
|
// Works for positive, negative and zero.
|
|
#define CHECK_APPROX(EXPECTED, ACTUAL) \\
|
|
CHECK(((EXPECTED * 0.99) <= (ACTUAL) && (EXPECTED * 1.01) >= (ACTUAL)) || \\
|
|
((EXPECTED * 0.99) >= (ACTUAL) && (EXPECTED * 1.01) <= (ACTUAL)))
|
|
|
|
""";
|
|
}
|
|
|
|
const footerC = """
|
|
|
|
} // namespace dart
|
|
""";
|