23cde7f4b8
TEST=reformatting only Change-Id: I310e2568661e919a2c8354e01e19d18f7109f54c Cq-Include-Trybots: luci.dart.try:pkg-linux-debug-try,pkg-linux-release-try,pkg-mac-release-arm64-try,pkg-mac-release-try,pkg-win-release-try Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/399261 Reviewed-by: Alexander Markov <alexmarkov@google.com> Commit-Queue: Alexander Markov <alexmarkov@google.com>
211 lines
6.3 KiB
Dart
211 lines
6.3 KiB
Dart
// 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 'package:front_end/src/api_unstable/vm.dart';
|
|
import 'package:test/test.dart';
|
|
import 'package:vm/kernel_front_end.dart';
|
|
import 'package:vm/native_assets/diagnostic_message.dart';
|
|
import 'package:vm/native_assets/validator.dart';
|
|
|
|
main() {
|
|
test('valid', () {
|
|
final errorDetector = ErrorDetector();
|
|
final yamlString = '''
|
|
format-version: [1,0,0]
|
|
native-assets:
|
|
linux_x64:
|
|
'package:foo/foo.dart': ['absolute', '/path/to/libfoo.so']
|
|
''';
|
|
final result = NativeAssetsValidator(
|
|
errorDetector,
|
|
).parseAndValidate(yamlString);
|
|
expect(result, {
|
|
'format-version': [1, 0, 0],
|
|
'native-assets': {
|
|
'linux_x64': {
|
|
'package:foo/foo.dart': ['absolute', '/path/to/libfoo.so'],
|
|
},
|
|
},
|
|
});
|
|
expect(errorDetector.hasCompilationErrors, false);
|
|
});
|
|
|
|
test('not yaml', () {
|
|
final errors = <NativeAssetsDiagnosticMessage>[];
|
|
final errorDetector = ErrorDetector(
|
|
previousErrorHandler:
|
|
(message) => errors.add(message as NativeAssetsDiagnosticMessage),
|
|
);
|
|
final yamlString = '&&&';
|
|
final result = NativeAssetsValidator(
|
|
errorDetector,
|
|
).parseAndValidate(yamlString);
|
|
expect(errorDetector.hasCompilationErrors, true);
|
|
expect(result, null);
|
|
expect(errors.single.message, equals('File not formatted as yaml: &&&.'));
|
|
});
|
|
|
|
test('no format-version', () {
|
|
final errors = <NativeAssetsDiagnosticMessage>[];
|
|
final errorDetector = ErrorDetector(
|
|
previousErrorHandler:
|
|
(message) => errors.add(message as NativeAssetsDiagnosticMessage),
|
|
);
|
|
|
|
final yamlString = '''
|
|
native-assets:
|
|
linux_x64:
|
|
'package:foo/foo.dart': ['absolute', '/path/to/libfoo.so']
|
|
''';
|
|
final result = NativeAssetsValidator(
|
|
errorDetector,
|
|
).parseAndValidate(yamlString);
|
|
expect(errorDetector.hasCompilationErrors, true);
|
|
expect(result, null);
|
|
expect(errors.single.message, startsWith('Expected format-version in'));
|
|
});
|
|
|
|
test('wrong format-version', () {
|
|
final errors = <NativeAssetsDiagnosticMessage>[];
|
|
final errorDetector = ErrorDetector(
|
|
previousErrorHandler:
|
|
(message) => errors.add(message as NativeAssetsDiagnosticMessage),
|
|
);
|
|
final yamlString = '''
|
|
format-version: [9000, 0, 1]
|
|
native-assets:
|
|
linux_x64:
|
|
'package:foo/foo.dart': ['absolute', '/path/to/libfoo.so']
|
|
''';
|
|
final result = NativeAssetsValidator(
|
|
errorDetector,
|
|
).parseAndValidate(yamlString);
|
|
expect(errorDetector.hasCompilationErrors, true);
|
|
expect(result, null);
|
|
expect(
|
|
errors.single.message,
|
|
startsWith('Unexpected format version: [9000, 0, 1].'),
|
|
);
|
|
});
|
|
|
|
test('no native-assets', () {
|
|
final errors = <NativeAssetsDiagnosticMessage>[];
|
|
final errorDetector = ErrorDetector(
|
|
previousErrorHandler:
|
|
(message) => errors.add(message as NativeAssetsDiagnosticMessage),
|
|
);
|
|
final yamlString = '''
|
|
format-version: [1, 0, 0]
|
|
''';
|
|
final result = NativeAssetsValidator(
|
|
errorDetector,
|
|
).parseAndValidate(yamlString);
|
|
expect(errorDetector.hasCompilationErrors, true);
|
|
expect(result, null);
|
|
expect(errors.single.message, startsWith('Expected native-assets in'));
|
|
});
|
|
|
|
test('invalid target warning', () {
|
|
final errors = <NativeAssetsDiagnosticMessage>[];
|
|
final errorDetector = ErrorDetector(
|
|
previousErrorHandler:
|
|
(message) => errors.add(message as NativeAssetsDiagnosticMessage),
|
|
);
|
|
final yamlString = '''
|
|
format-version: [1,0,0]
|
|
native-assets:
|
|
target_does_not_exist:
|
|
'package:foo/foo.dart': ['absolute', '/path/to/libfoo.so']
|
|
''';
|
|
final result = NativeAssetsValidator(
|
|
errorDetector,
|
|
).parseAndValidate(yamlString);
|
|
expect(errorDetector.hasCompilationErrors, false);
|
|
// Invalid targets only issue warnings.
|
|
expect(errors.single.severity, Severity.warning);
|
|
expect(
|
|
errors.single.message,
|
|
startsWith('Unexpected target: target_does_not_exist.'),
|
|
);
|
|
// Filters out unsupported targets.
|
|
expect(result, {
|
|
'format-version': [1, 0, 0],
|
|
'native-assets': {},
|
|
});
|
|
});
|
|
|
|
test('invalid path', () {
|
|
final errors = <NativeAssetsDiagnosticMessage>[];
|
|
final errorDetector = ErrorDetector(
|
|
previousErrorHandler:
|
|
(message) => errors.add(message as NativeAssetsDiagnosticMessage),
|
|
);
|
|
final yamlString = '''
|
|
format-version: [1,0,0]
|
|
native-assets:
|
|
linux_x64:
|
|
'package:foo/foo.dart': ['path_type_does_not_exist']
|
|
''';
|
|
final result = NativeAssetsValidator(
|
|
errorDetector,
|
|
).parseAndValidate(yamlString);
|
|
expect(errorDetector.hasCompilationErrors, true);
|
|
expect(result, null);
|
|
expect(
|
|
errors.single.message,
|
|
startsWith('Unexpected path type: path_type_does_not_exist.'),
|
|
);
|
|
});
|
|
|
|
test('invalid absolute path', () {
|
|
final errors = <NativeAssetsDiagnosticMessage>[];
|
|
final errorDetector = ErrorDetector(
|
|
previousErrorHandler:
|
|
(message) => errors.add(message as NativeAssetsDiagnosticMessage),
|
|
);
|
|
final yamlString = '''
|
|
format-version: [1,0,0]
|
|
native-assets:
|
|
linux_x64:
|
|
'package:foo/foo.dart': ['absolute']
|
|
''';
|
|
final result = NativeAssetsValidator(
|
|
errorDetector,
|
|
).parseAndValidate(yamlString);
|
|
expect(errorDetector.hasCompilationErrors, true);
|
|
expect(result, null);
|
|
expect(
|
|
errors.single.message,
|
|
equals(
|
|
'Unexpected asset path: [absolute]. Expected list with 2 elements.',
|
|
),
|
|
);
|
|
});
|
|
|
|
test('invalid process path', () {
|
|
final errors = <NativeAssetsDiagnosticMessage>[];
|
|
final errorDetector = ErrorDetector(
|
|
previousErrorHandler:
|
|
(message) => errors.add(message as NativeAssetsDiagnosticMessage),
|
|
);
|
|
final yamlString = '''
|
|
format-version: [1,0,0]
|
|
native-assets:
|
|
linux_x64:
|
|
'package:foo/foo.dart': ['process' , '/path/to/libfoo.so']
|
|
''';
|
|
final result = NativeAssetsValidator(
|
|
errorDetector,
|
|
).parseAndValidate(yamlString);
|
|
expect(errorDetector.hasCompilationErrors, true);
|
|
expect(result, null);
|
|
expect(
|
|
errors.single.message,
|
|
equals(
|
|
'Unexpected asset path: [process, /path/to/libfoo.so]. Expected list with 1 elements.',
|
|
),
|
|
);
|
|
});
|
|
}
|