mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
71 lines
3.5 KiB
Dart
71 lines
3.5 KiB
Dart
// Copyright 2017 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:path/path.dart' as path;
|
|
|
|
import '../analyze.dart';
|
|
import 'common.dart';
|
|
|
|
typedef AsyncVoidCallback = Future<void> Function();
|
|
|
|
Future<String> capture(AsyncVoidCallback callback, { int exitCode = 0 }) async {
|
|
final StringBuffer buffer = StringBuffer();
|
|
final PrintCallback oldPrint = print;
|
|
try {
|
|
print = (Object line) {
|
|
buffer.writeln(line);
|
|
};
|
|
try {
|
|
await callback();
|
|
expect(exitCode, 0);
|
|
} on ExitException catch (error) {
|
|
expect(error.exitCode, exitCode);
|
|
}
|
|
} finally {
|
|
print = oldPrint;
|
|
}
|
|
return buffer.toString();
|
|
}
|
|
|
|
void main() {
|
|
test('analyze.dart - verifyDeprecations', () async {
|
|
final String result = await capture(() => verifyDeprecations(path.join('test', 'analyze-test-input', 'root')), exitCode: 1);
|
|
expect(result,
|
|
'━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n'
|
|
+
|
|
(
|
|
'test/analyze-test-input/root/packages/foo/deprecation.dart:12: Deprecation notice does not match required pattern.\n'
|
|
'test/analyze-test-input/root/packages/foo/deprecation.dart:18: Deprecation notice should be a grammatically correct sentence and start with a capital letter; see style guide.\n'
|
|
'test/analyze-test-input/root/packages/foo/deprecation.dart:25: Deprecation notice should be a grammatically correct sentence and end with a period.\n'
|
|
'test/analyze-test-input/root/packages/foo/deprecation.dart:29: Deprecation notice does not match required pattern.\n'
|
|
'test/analyze-test-input/root/packages/foo/deprecation.dart:32: Deprecation notice does not match required pattern.\n'
|
|
'test/analyze-test-input/root/packages/foo/deprecation.dart:37: Deprecation notice does not match required pattern.\n'
|
|
'test/analyze-test-input/root/packages/foo/deprecation.dart:41: Deprecation notice does not match required pattern.\n'
|
|
'test/analyze-test-input/root/packages/foo/deprecation.dart:48: End of deprecation notice does not match required pattern.\n'
|
|
'test/analyze-test-input/root/packages/foo/deprecation.dart:51: Unexpected deprecation notice indent.\n'
|
|
.replaceAll('/', Platform.isWindows ? '\\' : '/')
|
|
)
|
|
+
|
|
'See: https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes\n'
|
|
'\n'
|
|
'━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n'
|
|
'\n'
|
|
);
|
|
});
|
|
|
|
test('analyze.dart - verifyNoMissingLicense', () async {
|
|
final String result = await capture(() => verifyNoMissingLicense(path.join('test', 'analyze-test-input', 'root')), exitCode: 1);
|
|
expect(result, '''
|
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
License headers cannot be found at the beginning of the following file.
|
|
|
|
test/analyze-test-input/root/packages/foo/foo.dart
|
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
|
|
'''.replaceAll('/', Platform.isWindows ? '\\' : '/'));
|
|
});
|
|
}
|