blob: 35ab2e05bb5cb3abbb6908bbbe8359a99873684a [file] [log] [blame]
// Copyright (c) 2022, 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';
import 'package:test/test.dart';
import 'package:path/path.dart' hide equals;
import 'package:jnigen/jnigen.dart';
import 'package:jnigen/tools.dart';
import 'test_util/test_util.dart';
final inAppJava = join('example', 'in_app_java');
final inAppJavaYaml = join(inAppJava, 'jnigen.yaml');
final notificationPlugin = join('example', 'notification_plugin');
final notificationPluginYaml = join(notificationPlugin, 'jnigen.yaml');
final kotlinPlugin = join('example', 'kotlin_plugin');
final kotlinPluginYaml = join(kotlinPlugin, 'jnigen.yaml');
/// Generates bindings using jnigen config in [exampleName] and compares
/// them to provided reference outputs.
///
/// [dartOutput] and [cOutput] are relative paths from example project dir.
///
/// Pass [isLargeTest] as true if the test will take considerable time.
void testExample(String exampleName, String dartOutput, String? cOutput,
{bool isLargeTest = false}) {
test(
'Generate and compare bindings for $exampleName',
timeout: const Timeout.factor(3),
() async {
final examplePath = join('example', exampleName);
final configPath = join(examplePath, 'jnigen.yaml');
final config = Config.parseArgs(['--config', configPath]);
try {
await generateAndCompareBindings(config);
} on GradleException catch (_) {
stderr.writeln('Skip: $exampleName');
}
},
tags: isLargeTest ? largeTestTag : null,
);
}
void main() async {
await checkLocallyBuiltDependencies();
testExample(
'in_app_java',
join('lib', 'android_utils.dart'),
join('src', 'android_utils'),
isLargeTest: true,
);
testExample(
'pdfbox_plugin',
join('lib', 'src', 'third_party'),
'src',
isLargeTest: false,
);
testExample(
'notification_plugin',
join('lib', 'notifications.dart'),
'src',
isLargeTest: true,
);
testExample(
'kotlin_plugin',
join('lib', 'kotlin_bindings.dart'),
'src',
isLargeTest: true,
);
}