Skip to content

Commit a42bd5a

Browse files
test: normalize JSON comparison in generate_command_test
1 parent b28e539 commit a42bd5a

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

test/commands/generate_command_test.dart

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,15 @@ void main() {
4444
final generatedContent = await File(generatedFilePath).readAsString();
4545

4646
// decode the json to avoid formatting issues
47-
final expectedJson = jsonDecode(expectedGeneratedContent);
48-
final generatedJson = jsonDecode(generatedContent);
49-
expect(generatedJson, expectedJson);
47+
final expectedJson = jsonDecode(expectedGeneratedContent) as Map<String, dynamic>;
48+
final generatedJson = jsonDecode(generatedContent) as Map<String, dynamic>;
49+
50+
// Remove sdkVersion from both JSON objects to ignore SDK version differences
51+
// Different Flutter versions generate different SDK constraints
52+
final normalizedExpectedJson = removeSdkVersionFromJson(expectedJson);
53+
final normalizedGeneratedJson = removeSdkVersionFromJson(generatedJson);
54+
55+
expect(normalizedGeneratedJson, normalizedExpectedJson);
5056
});
5157
}, timeout: const Timeout(Duration(minutes: 5)));
5258
}

test/helpers/test_helpers.dart

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,19 @@ String stripChangelog(String changelog) {
5353
.replaceAll(releasedOnLineRegexp, '');
5454
}
5555

56+
/// Remove sdkVersion from JSON metadata to ignore SDK version differences in tests.
57+
/// Different Flutter versions generate different SDK constraints, so we ignore this field
58+
/// when comparing generated API documentation JSON.
59+
Map<String, dynamic> removeSdkVersionFromJson(Map<String, dynamic> json) {
60+
final result = Map<String, dynamic>.from(json);
61+
if (result.containsKey('metadata') && result['metadata'] is Map) {
62+
final metadata = Map<String, dynamic>.from(result['metadata'] as Map);
63+
metadata.remove('sdkVersion');
64+
result['metadata'] = metadata;
65+
}
66+
return result;
67+
}
68+
5669
/// Test constants for better maintainability.
5770
class TestConstants {
5871
static const String initialVersion = '0.0.1';

0 commit comments

Comments
 (0)