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

Unified Diff: mojo/dart/mojom/test/generate_test.dart

Issue 1210253006: Dart: Allows the mojom package's generate script to download .mojoms. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: mojo/dart/mojom/test/generate_test.dart
diff --git a/mojo/dart/mojom/test/generate_test.dart b/mojo/dart/mojom/test/generate_test.dart
index 356f3947430c772c9f2fd5f6c3be3186bfe4db70..4760b450075d7ab5e77a23ee199f0ba4a5be9327 100644
--- a/mojo/dart/mojom/test/generate_test.dart
+++ b/mojo/dart/mojom/test/generate_test.dart
@@ -17,7 +17,34 @@ struct Transform {
};
''';
-void main() {
+final dldMojomContents1 = '''
+module downloaded;
+
+struct Downloaded1 {
+ int32 status;
+};
+''';
+
+final dldMojomContents2 = '''
+module downloaded;
+
+struct Downloaded2 {
+ int32 status;
+};
+''';
+
+main() async {
+ String mojoSdk;
+ if (Platform.environment['MOJO_SDK'] != null) {
+ mojoSdk = Platform.environment['MOJO_SDK'];
+ } else {
+ mojoSdk = path.normalize(path.join(
+ path.dirname(Platform.script.path), '..', '..', '..', 'public'));
+ }
+ if (!await new Directory(mojoSdk).exists()) {
+ fail("Could not find the Mojo SDK");
+ }
+
final scriptPath = path.dirname(Platform.script.path);
final testPackagePath = path.join(scriptPath, 'test_packages');
final testMojomPath = path.join(testPackagePath, 'mojom');
@@ -30,6 +57,12 @@ void main() {
final additionalPath = path.join(
additionalRootPath, 'additional', 'additional.mojom.dart');
+ final downloadedPackagePath = path.join(testPackagePath, 'downloaded');
+ final dotMojomsPath = path.join(downloadedPackagePath, '.mojoms');
+
+ final pkcert = Platform.script.resolve('pkcert').toFilePath();
+ SecureSocket.initialize(database: pkcert, password: 'dartdart');
+
setUp(() async {
await new Directory(testMojomPath).create(recursive: true);
await new File(pregenFilePath).create(recursive: true);
@@ -39,6 +72,8 @@ void main() {
'mojom', 'generated', 'public', 'interfaces', 'generated.mojom'));
await generatedMojomFile.create(recursive: true);
await generatedMojomFile.writeAsString(mojomContents);
+
+ await new Directory(downloadedPackagePath).create(recursive: true);
});
tearDown(() async {
@@ -46,47 +81,151 @@ void main() {
await new Directory(testPackagePath).delete(recursive: true);
});
- group('end-to-end', () {
+ group('No Download', () {
test('Copy', () async {
- await generate.main(['-p', testPackagePath]);
+ await generate.main(['-p', testPackagePath, '-m', mojoSdk]);
final pregenFile = new File(
path.join(testMojomPath, 'pregen', 'pregen.mojom.dart'));
expect(await pregenFile.exists(), isTrue);
});
test('Copy and Additional', () async {
- await generate.main(['-p', testPackagePath, '-a', additionalRootPath]);
+ await generate.main(['-p', testPackagePath, '-m', mojoSdk,
+ '-a', additionalRootPath]);
final additionalFile = new File(
path.join(testMojomPath, 'additional', 'additional.mojom.dart'));
expect(await additionalFile.exists(), isTrue);
});
test('Copy and Generate', () async {
- if (Platform.environment['MOJO_SDK'] != null) {
- await generate.main(['-g', '-p', testPackagePath]);
- final generatedFile = new File(
- path.join(testMojomPath, 'generated', 'generated.mojom.dart'));
- expect(await generatedFile.exists(), isTrue);
- }
+ await generate.main(['-g', '-p', testPackagePath, '-m', mojoSdk]);
+ final generatedFile = new File(
+ path.join(testMojomPath, 'generated', 'generated.mojom.dart'));
+ expect(await generatedFile.exists(), isTrue);
});
test('All', () async {
- if (Platform.environment['MOJO_SDK'] != null) {
- await generate.main([
- '-g', '-p', testPackagePath, '-a', additionalRootPath]);
+ await generate.main([
+ '-g', '-p', testPackagePath, '-m', mojoSdk,
+ '-a', additionalRootPath]);
+
+ final pregenFile = new File(
+ path.join(testMojomPath, 'pregen', 'pregen.mojom.dart'));
+ expect(await pregenFile.exists(), isTrue);
+
+ final additionalFile = new File(
+ path.join(testMojomPath, 'additional', 'additional.mojom.dart'));
+ expect(await additionalFile.exists(), isTrue);
+
+ final generatedFile = new File(
+ path.join(testMojomPath, 'generated', 'generated.mojom.dart'));
+ expect(await generatedFile.exists(), isTrue);
+ });
+ });
+
+ group('Download', () {
+ var httpServer;
+ setUp(() async {
+ httpServer = await HttpServer.bindSecure(
+ "localhost",
+ 0,
+ certificateName: 'localhost_cert',
+ requestClientCertificate: true);
+ httpServer.listen((HttpRequest request) {
+ String path = request.uri.path;
+ if (path.endsWith('path/to/mojom/download_one.mojom')) {
+ request.response.write(dldMojomContents1);
+ } else if (path.endsWith('path/to/mojom/download_two.mojom')) {
+ request.response.write(dldMojomContents2);
+ } else {
+ request.response.statusCode = HttpStatus.NOT_FOUND;
+ }
+ request.response.close();
+ });
+ });
+
+ tearDown(() {
+ httpServer.close();
+ });
+
+ test('simple', () async {
+ final mojomsFile = new File(dotMojomsPath);
+ await mojomsFile.create(recursive: true);
+ await mojomsFile.writeAsString(
+ "root: https://localhost:${httpServer.port}\n"
+ "path/to/mojom/download_one.mojom\n");
+ await generate.main(['-p', testPackagePath, '-m', mojoSdk, '-d', '-g']);
+ final downloadedFile = new File(
+ path.join(testMojomPath, 'downloaded', 'download_one.mojom.dart'));
+ expect(await downloadedFile.exists(), isTrue);
+ await mojomsFile.delete();
+ });
- final pregenFile = new File(
- path.join(testMojomPath, 'pregen', 'pregen.mojom.dart'));
- expect(await pregenFile.exists(), isTrue);
+ test('two files', () async {
+ final mojomsFile = new File(dotMojomsPath);
+ await mojomsFile.create(recursive: true);
+ await mojomsFile.writeAsString(
+ "root: https://localhost:${httpServer.port}\n"
+ "path/to/mojom/download_one.mojom\n"
+ "path/to/mojom/download_two.mojom\n");
+ await generate.main(['-p', testPackagePath, '-m', mojoSdk, '-d', '-g']);
+ final downloaded1File = new File(
+ path.join(testMojomPath, 'downloaded', 'download_one.mojom.dart'));
+ expect(await downloaded1File.exists(), isTrue);
+ final downloaded2File = new File(
+ path.join(testMojomPath, 'downloaded', 'download_two.mojom.dart'));
+ expect(await downloaded2File.exists(), isTrue);
+ await mojomsFile.delete();
+ });
- final additionalFile = new File(
- path.join(testMojomPath, 'additional', 'additional.mojom.dart'));
- expect(await additionalFile.exists(), isTrue);
+ test('two roots', () async {
+ final mojomsFile = new File(dotMojomsPath);
+ await mojomsFile.create(recursive: true);
+ await mojomsFile.writeAsString(
+ "root: https://localhost:${httpServer.port}\n"
+ "path/to/mojom/download_one.mojom\n"
+ "root: https://localhost:${httpServer.port}\n"
+ "path/to/mojom/download_two.mojom\n");
+ await generate.main(['-p', testPackagePath, '-m', mojoSdk, '-d', '-g']);
+ final downloaded1File = new File(
+ path.join(testMojomPath, 'downloaded', 'download_one.mojom.dart'));
+ expect(await downloaded1File.exists(), isTrue);
+ final downloaded2File = new File(
+ path.join(testMojomPath, 'downloaded', 'download_two.mojom.dart'));
+ expect(await downloaded2File.exists(), isTrue);
+ await mojomsFile.delete();
+ });
- final generatedFile = new File(
- path.join(testMojomPath, 'generated', 'generated.mojom.dart'));
- expect(await generatedFile.exists(), isTrue);
+ test('simple-comment', () async {
+ final mojomsFile = new File(dotMojomsPath);
+ await mojomsFile.create(recursive: true);
+ await mojomsFile.writeAsString(
+ "# Comments are allowed\n"
+ "root: https://localhost:${httpServer.port}\n\n\n\n"
+ "# Here too\n"
+ "path/to/mojom/download_one.mojom\n"
+ "# And here\n");
+ await generate.main(['-p', testPackagePath, '-m', mojoSdk, '-d', '-g']);
+ final downloadedFile = new File(
+ path.join(testMojomPath, 'downloaded', 'download_one.mojom.dart'));
+ expect(await downloadedFile.exists(), isTrue);
+ await mojomsFile.delete();
+ });
+
+ test('404', () async {
+ final mojomsFile = new File(dotMojomsPath);
+ await mojomsFile.create(recursive: true);
+ await mojomsFile.writeAsString(
+ "root: https://localhost:${httpServer.port}\n"
+ "blah\n");
+ var fail = false;
+ try {
+ await generate.main(['-p', testPackagePath, '-m', mojoSdk, '-d', '-g']);
+ } on generate.DownloadError {
+ fail = true;
}
+ expect(fail, isTrue);
+ await mojomsFile.delete();
});
});
@@ -95,7 +234,7 @@ void main() {
final dummyPackageRoot = path.join(scriptPath, 'dummyPackageRoot');
var fail = false;
try {
- await generate.main(['-p', dummyPackageRoot]);
+ await generate.main(['-p', dummyPackageRoot, '-m', mojoSdk]);
} on generate.CommandLineError {
fail = true;
}
@@ -106,7 +245,7 @@ void main() {
final dummyPackageRoot = 'dummyPackageRoot';
var fail = false;
try {
- await generate.main(['-p', dummyPackageRoot]);
+ await generate.main(['-p', dummyPackageRoot, '-m', mojoSdk]);
} on generate.CommandLineError {
fail = true;
}
@@ -117,7 +256,8 @@ void main() {
final dummyAdditional = path.join(scriptPath, 'dummyAdditional');
var fail = false;
try {
- await generate.main(['-a', dummyAdditional, '-p', testPackagePath]);
+ await generate.main(['-a', dummyAdditional, '-p', testPackagePath,
+ '-m', mojoSdk]);
} on generate.CommandLineError {
fail = true;
}
@@ -128,7 +268,8 @@ void main() {
final dummyAdditional = 'dummyAdditional';
var fail = false;
try {
- await generate.main(['-a', dummyAdditional, '-p', testPackagePath]);
+ await generate.main(['-a', dummyAdditional, '-p', testPackagePath,
+ '-m', mojoSdk]);
} on generate.CommandLineError {
fail = true;
}
@@ -142,7 +283,7 @@ void main() {
var fail = false;
try {
- await generate.main(['-p', dummyPackageRoot]);
+ await generate.main(['-p', dummyPackageRoot, '-m', mojoSdk]);
} on generate.CommandLineError {
fail = true;
}
@@ -160,5 +301,101 @@ void main() {
}
expect(fail, isTrue);
});
+
+ test('Download No Server', () async {
+ final mojomsFile = new File(dotMojomsPath);
+ await mojomsFile.create(recursive: true);
+ await mojomsFile.writeAsString(
+ "root: https://localhost\n"
+ "path/to/mojom/download_one.mojom\n");
+ var fail = false;
+ try {
+ await generate.main(['-p', testPackagePath, '-m', mojoSdk, '-d', '-g']);
+ } on generate.DownloadError {
+ fail = true;
+ }
+ expect(fail, isTrue);
+ await mojomsFile.delete();
+ });
+
+ test('.mojoms no root', () async {
+ final mojomsFile = new File(dotMojomsPath);
+ await mojomsFile.create(recursive: true);
+ await mojomsFile.writeAsString(
+ "path/to/mojom/download_one.mojom\n");
+ var fail = false;
+ try {
+ await generate.main(['-p', testPackagePath, '-m', mojoSdk, '-d', '-g']);
+ } on generate.DownloadError {
+ fail = true;
+ }
+ expect(fail, isTrue);
+ await mojomsFile.delete();
+ });
+
+ test('.mojoms blank root', () async {
+ final mojomsFile = new File(dotMojomsPath);
+ await mojomsFile.create(recursive: true);
+ await mojomsFile.writeAsString(
+ "root:\n"
+ "path/to/mojom/download_one.mojom\n");
+ var fail = false;
+ try {
+ await generate.main(['-p', testPackagePath, '-m', mojoSdk, '-d', '-g']);
+ } on generate.DownloadError {
+ fail = true;
+ }
+ expect(fail, isTrue);
+ await mojomsFile.delete();
+ });
+
+ test('.mojoms root not https', () async {
+ final mojomsFile = new File(dotMojomsPath);
+ await mojomsFile.create(recursive: true);
+ await mojomsFile.writeAsString(
+ "root: http://localhost\n"
+ "path/to/mojom/download_one.mojom\n");
+ var fail = false;
+ try {
+ await generate.main(['-p', testPackagePath, '-m', mojoSdk, '-d', '-g']);
+ } on generate.DownloadError {
+ fail = true;
+ }
+ expect(fail, isTrue);
+ await mojomsFile.delete();
+ });
+
+ test('.mojoms root malformed', () async {
+ final mojomsFile = new File(dotMojomsPath);
+ await mojomsFile.create(recursive: true);
+ await mojomsFile.writeAsString(
+ "root: gobledygook\n"
+ "path/to/mojom/download_one.mojom\n");
+ var fail = false;
+ try {
+ await generate.main(['-p', testPackagePath, '-m', mojoSdk, '-d', '-g']);
+ } on generate.DownloadError {
+ fail = true;
+ }
+ expect(fail, isTrue);
+ await mojomsFile.delete();
+ });
+
+ test('.mojoms root without mojom', () async {
+ final mojomsFile = new File(dotMojomsPath);
+ await mojomsFile.create(recursive: true);
+ await mojomsFile.writeAsString(
+ "root: http://localhost\n"
+ "root: http://localhost\n"
+ "path/to/mojom/download_one.mojom\n");
+ var fail = false;
+ try {
+ await generate.main(['-p', testPackagePath, '-m', mojoSdk, '-d', '-g']);
+ } on generate.DownloadError {
+ fail = true;
+ }
+ expect(fail, isTrue);
+ await mojomsFile.delete();
+ });
});
}

Powered by Google App Engine
This is Rietveld 408576698