mirror of
https://github.com/flutter/packages.git
synced 2025-06-29 22:33:11 +08:00
[ci] version_check_command now checks markdown of first CHANGELOG line. (#7266)
This PR: * Modifies the `version_check_command` test so it checks the leading markdown of the first line of a CHANGELOG file, to ensure it's `'##'`. * Fixes the CHANGELOG in two packages that were allowed by the tool before this fix: * google_maps_flutter_web * interactive_media_ads ## Issues Fixes https://github.com/flutter/flutter/issues/152638
This commit is contained in:
@ -1,4 +1,8 @@
|
|||||||
# 0.5.9
|
## 0.5.9+1
|
||||||
|
|
||||||
|
* Fixes a typo in the formatting of the CHANGELOG.
|
||||||
|
|
||||||
|
## 0.5.9
|
||||||
|
|
||||||
* Updates `package:google_maps` dependency to latest (`^8.0.0`).
|
* Updates `package:google_maps` dependency to latest (`^8.0.0`).
|
||||||
* Supports `web: ">=0.5.1 <2.0.0"`.
|
* Supports `web: ">=0.5.1 <2.0.0"`.
|
||||||
|
@ -2,7 +2,7 @@ name: google_maps_flutter_web
|
|||||||
description: Web platform implementation of google_maps_flutter
|
description: Web platform implementation of google_maps_flutter
|
||||||
repository: https://github.com/flutter/packages/tree/main/packages/google_maps_flutter/google_maps_flutter_web
|
repository: https://github.com/flutter/packages/tree/main/packages/google_maps_flutter/google_maps_flutter_web
|
||||||
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+maps%22
|
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+maps%22
|
||||||
version: 0.5.9
|
version: 0.5.9+1
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ^3.4.0
|
sdk: ^3.4.0
|
||||||
|
@ -1,4 +1,8 @@
|
|||||||
# 0.1.1
|
## 0.1.1+1
|
||||||
|
|
||||||
|
* Fixes a typo in the formatting of the CHANGELOG.
|
||||||
|
|
||||||
|
## 0.1.1
|
||||||
|
|
||||||
* Adds iOS implementation.
|
* Adds iOS implementation.
|
||||||
* Adds support for setting the layout direction of the `AdDisplayContainer`.
|
* Adds support for setting the layout direction of the `AdDisplayContainer`.
|
||||||
|
@ -21,7 +21,7 @@ class AdsRequestProxyApi(override val pigeonRegistrar: ProxyApiRegistrar) :
|
|||||||
*
|
*
|
||||||
* This must match the version in pubspec.yaml.
|
* This must match the version in pubspec.yaml.
|
||||||
*/
|
*/
|
||||||
const val pluginVersion = "0.1.1"
|
const val pluginVersion = "0.1.1+1"
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun setAdTagUrl(pigeon_instance: AdsRequest, adTagUrl: String) {
|
override fun setAdTagUrl(pigeon_instance: AdsRequest, adTagUrl: String) {
|
||||||
|
@ -13,7 +13,7 @@ class AdsRequestProxyAPIDelegate: PigeonApiDelegateIMAAdsRequest {
|
|||||||
/// The current version of the `interactive_media_ads` plugin.
|
/// The current version of the `interactive_media_ads` plugin.
|
||||||
///
|
///
|
||||||
/// This must match the version in pubspec.yaml.
|
/// This must match the version in pubspec.yaml.
|
||||||
static let pluginVersion = "0.1.1"
|
static let pluginVersion = "0.1.1+1"
|
||||||
|
|
||||||
func pigeonDefaultConstructor(
|
func pigeonDefaultConstructor(
|
||||||
pigeonApi: PigeonApiIMAAdsRequest, adTagUrl: String, adDisplayContainer: IMAAdDisplayContainer,
|
pigeonApi: PigeonApiIMAAdsRequest, adTagUrl: String, adDisplayContainer: IMAAdDisplayContainer,
|
||||||
|
@ -2,7 +2,7 @@ name: interactive_media_ads
|
|||||||
description: A Flutter plugin for using the Interactive Media Ads SDKs on Android and iOS.
|
description: A Flutter plugin for using the Interactive Media Ads SDKs on Android and iOS.
|
||||||
repository: https://github.com/flutter/packages/tree/main/packages/interactive_media_ads
|
repository: https://github.com/flutter/packages/tree/main/packages/interactive_media_ads
|
||||||
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+interactive_media_ads%22
|
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+interactive_media_ads%22
|
||||||
version: 0.1.1 # This must match the version in
|
version: 0.1.1+1 # This must match the version in
|
||||||
# `android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/AdsRequestProxyApi.kt` and
|
# `android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/AdsRequestProxyApi.kt` and
|
||||||
# `ios/interactive_media_ads/Sources/interactive_media_ads/AdsRequestProxyAPIDelegate.swift`
|
# `ios/interactive_media_ads/Sources/interactive_media_ads/AdsRequestProxyAPIDelegate.swift`
|
||||||
|
|
||||||
|
@ -392,6 +392,7 @@ ${indentation}HTTP response: ${pubVersionFinderResponse.httpResponse.body}
|
|||||||
}
|
}
|
||||||
// Remove all leading mark down syntax from the version line.
|
// Remove all leading mark down syntax from the version line.
|
||||||
String? versionString = firstLineWithText?.split(' ').last;
|
String? versionString = firstLineWithText?.split(' ').last;
|
||||||
|
String? leadingMarkdown = firstLineWithText?.split(' ').first;
|
||||||
|
|
||||||
final String badNextErrorMessage = '${indentation}When bumping the version '
|
final String badNextErrorMessage = '${indentation}When bumping the version '
|
||||||
'for release, the NEXT section should be incorporated into the new '
|
'for release, the NEXT section should be incorporated into the new '
|
||||||
@ -413,15 +414,18 @@ ${indentation}HTTP response: ${pubVersionFinderResponse.httpResponse.body}
|
|||||||
// CHANGELOG. That means the next version entry in the CHANGELOG should
|
// CHANGELOG. That means the next version entry in the CHANGELOG should
|
||||||
// pass the normal validation.
|
// pass the normal validation.
|
||||||
versionString = null;
|
versionString = null;
|
||||||
|
leadingMarkdown = null;
|
||||||
while (iterator.moveNext()) {
|
while (iterator.moveNext()) {
|
||||||
if (iterator.current.trim().startsWith('## ')) {
|
if (iterator.current.trim().startsWith('## ')) {
|
||||||
versionString = iterator.current.trim().split(' ').last;
|
versionString = iterator.current.trim().split(' ').last;
|
||||||
|
leadingMarkdown = iterator.current.trim().split(' ').first;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (versionString == null) {
|
final bool validLeadingMarkdown = leadingMarkdown == '##';
|
||||||
|
if (versionString == null || !validLeadingMarkdown) {
|
||||||
printError('${indentation}Unable to find a version in CHANGELOG.md');
|
printError('${indentation}Unable to find a version in CHANGELOG.md');
|
||||||
print('${indentation}The current version should be on a line starting '
|
print('${indentation}The current version should be on a line starting '
|
||||||
'with "## ", either on the first non-empty line or after a "## NEXT" '
|
'with "## ", either on the first non-empty line or after a "## NEXT" '
|
||||||
|
@ -641,6 +641,41 @@ void main() {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('fails gracefully if the first entry uses the wrong style', () async {
|
||||||
|
final RepositoryPackage plugin =
|
||||||
|
createFakePlugin('plugin', packagesDir, version: '1.0.0');
|
||||||
|
|
||||||
|
const String changelog = '''
|
||||||
|
# 1.0.0
|
||||||
|
* Some changes for a later release.
|
||||||
|
## 0.9.0
|
||||||
|
* Some earlier changes.
|
||||||
|
''';
|
||||||
|
plugin.changelogFile.writeAsStringSync(changelog);
|
||||||
|
processRunner.mockProcessesForExecutable['git-show'] = <FakeProcessInfo>[
|
||||||
|
FakeProcessInfo(MockProcess(stdout: 'version: 1.0.0')),
|
||||||
|
];
|
||||||
|
|
||||||
|
Error? commandError;
|
||||||
|
final List<String> output = await runCapturingPrint(runner, <String>[
|
||||||
|
'version-check',
|
||||||
|
'--base-sha=main',
|
||||||
|
], errorHandler: (Error e) {
|
||||||
|
commandError = e;
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(commandError, isA<ToolExit>());
|
||||||
|
expect(
|
||||||
|
output,
|
||||||
|
containsAllInOrder(<Matcher>[
|
||||||
|
contains('Unable to find a version in CHANGELOG.md'),
|
||||||
|
contains('The current version should be on a line starting with '
|
||||||
|
'"## ", either on the first non-empty line or after a "## NEXT" '
|
||||||
|
'section.'),
|
||||||
|
]),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
test(
|
test(
|
||||||
'fails gracefully if the version headers are not found due to using the wrong style',
|
'fails gracefully if the version headers are not found due to using the wrong style',
|
||||||
() async {
|
() async {
|
||||||
|
Reference in New Issue
Block a user