blob: 8e186d976672e65e1da4cb38f499eaf2f078e232 [file] [log] [blame] [edit]
// Copyright (c) 2025, 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:json_schema/json_schema.dart';
import 'helpers.dart';
void main() {
final schemasUri = packageUri.resolve('doc/schema/');
final hookSchemasUri = packageUri.resolve('../hooks/doc/schema/');
final allSchemas = loadSchemas([schemasUri, hookSchemasUri]);
final testDataUri = packageUri.resolve('test/data/');
final allTestData = loadTestsData(testDataUri);
testAllTestData(allSchemas, allTestData);
testFieldsHook(
allSchemas: allSchemas,
allTestData: allTestData,
packageUri: packageUri,
);
testFields(
allSchemas: allSchemas,
allTestData: allTestData,
packageUri: packageUri,
fields: _dataFields,
);
}
Uri packageUri = findPackageRoot('data_assets');
const _dataAssetFields = ['package', 'name', 'file'];
List<(List<Object>, void Function(ValidationResults result))> _dataFields({
required InputOrOutput inputOrOutput,
required Hook hook,
required Party party,
}) => <(List<Object>, void Function(ValidationResults result))>[
if (inputOrOutput == InputOrOutput.input) ...[
if (hook == Hook.link) ...[
for (final field in _dataAssetFields) ...[
(['assets', 0, 'encoding', field], expectRequiredFieldMissing),
(['assets', 1, 'encoding', field], expectRequiredFieldMissing),
],
],
],
if (inputOrOutput == InputOrOutput.output) ...[
for (final field in _dataAssetFields)
(['assets', 0, 'encoding', field], expectRequiredFieldMissing),
if (hook == Hook.build) ...[
for (final field in _dataAssetFields)
for (final path in [
['assets_for_build'],
['assets_for_linking', 'package_with_linker'],
])
([...path, 0, 'encoding', field], expectRequiredFieldMissing),
],
],
];