blob: 356f3947430c772c9f2fd5f6c3be3186bfe4db70 [file] [log] [blame]
// Copyright 2015 The Chromium Authors. 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';
import 'package:mojom/generate.dart' as generate;
import 'package:path/path.dart' as path;
import 'package:unittest/unittest.dart';
final mojomContents = '''
module generated;
struct Transform {
// Row major order.
array<float, 16> matrix;
};
''';
void main() {
final scriptPath = path.dirname(Platform.script.path);
final testPackagePath = path.join(scriptPath, 'test_packages');
final testMojomPath = path.join(testPackagePath, 'mojom');
final pregenPath = path.join(testPackagePath, 'pregen');
final pregenFilePath =
path.join(pregenPath, 'mojom', 'pregen', 'pregen.mojom.dart');
final additionalRootPath = path.join(scriptPath, 'additional_dir');
final additionalPath = path.join(
additionalRootPath, 'additional', 'additional.mojom.dart');
setUp(() async {
await new Directory(testMojomPath).create(recursive: true);
await new File(pregenFilePath).create(recursive: true);
await new File(additionalPath).create(recursive: true);
final generatedMojomFile = new File(path.join(testPackagePath, 'generated',
'mojom', 'generated', 'public', 'interfaces', 'generated.mojom'));
await generatedMojomFile.create(recursive: true);
await generatedMojomFile.writeAsString(mojomContents);
});
tearDown(() async {
await new Directory(additionalRootPath).delete(recursive: true);
await new Directory(testPackagePath).delete(recursive: true);
});
group('end-to-end', () {
test('Copy', () async {
await generate.main(['-p', testPackagePath]);
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]);
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);
}
});
test('All', () async {
if (Platform.environment['MOJO_SDK'] != null) {
await generate.main([
'-g', '-p', testPackagePath, '-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('Failures', () {
test('Bad Package Root',() async {
final dummyPackageRoot = path.join(scriptPath, 'dummyPackageRoot');
var fail = false;
try {
await generate.main(['-p', dummyPackageRoot]);
} on generate.CommandLineError {
fail = true;
}
expect(fail, isTrue);
});
test('Non-absolute PackageRoot', () async {
final dummyPackageRoot = 'dummyPackageRoot';
var fail = false;
try {
await generate.main(['-p', dummyPackageRoot]);
} on generate.CommandLineError {
fail = true;
}
expect(fail, isTrue);
});
test('Bad Additional Dir', () async {
final dummyAdditional = path.join(scriptPath, 'dummyAdditional');
var fail = false;
try {
await generate.main(['-a', dummyAdditional, '-p', testPackagePath]);
} on generate.CommandLineError {
fail = true;
}
expect(fail, isTrue);
});
test('Non-absolute Additional Dir', () async {
final dummyAdditional = 'dummyAdditional';
var fail = false;
try {
await generate.main(['-a', dummyAdditional, '-p', testPackagePath]);
} on generate.CommandLineError {
fail = true;
}
expect(fail, isTrue);
});
test('No Mojo Package', () async {
final dummyPackageRoot = path.join(scriptPath, 'dummyPackageRoot');
final dummyPackageDir = new Directory(dummyPackageRoot);
await dummyPackageDir.create(recursive: true);
var fail = false;
try {
await generate.main(['-p', dummyPackageRoot]);
} on generate.CommandLineError {
fail = true;
}
await dummyPackageDir.delete(recursive: true);
expect(fail, isTrue);
});
test('Bad Mojo SDK', () async {
final dummySdk = path.join(scriptPath, 'dummySdk');
var fail = false;
try {
await generate.main(['-g', '-m', dummySdk, '-p', testPackagePath]);
} on generate.CommandLineError {
fail = true;
}
expect(fail, isTrue);
});
});
}