chore(shorebird_code_push_protocol): Add metadata messages (#1823)
This commit is contained in:
@@ -253,6 +253,8 @@ class CodePushClient {
|
||||
wasForced: false,
|
||||
hasAssetChanges: hasAssetChanges,
|
||||
hasNativeChanges: hasNativeChanges,
|
||||
// TODO(bryanoltman): add metadata
|
||||
metadata: null,
|
||||
);
|
||||
final response = await _httpClient.post(
|
||||
Uri.parse('$_v1/apps/$appId/patches'),
|
||||
@@ -304,6 +306,8 @@ class CodePushClient {
|
||||
UpdateReleaseRequest(
|
||||
status: status,
|
||||
platform: platform,
|
||||
// TODO(bryanoltman): add metadata
|
||||
metadata: null,
|
||||
).toJson(),
|
||||
),
|
||||
);
|
||||
|
||||
+7
@@ -1,4 +1,5 @@
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
import 'package:shorebird_code_push_protocol/src/models/create_patch_metadata.dart';
|
||||
|
||||
part 'create_patch_request.g.dart';
|
||||
|
||||
@@ -13,6 +14,7 @@ class CreatePatchRequest {
|
||||
required this.wasForced,
|
||||
required this.hasAssetChanges,
|
||||
required this.hasNativeChanges,
|
||||
required this.metadata,
|
||||
});
|
||||
|
||||
/// Converts a Map<String, dynamic> to a [CreatePatchRequest]
|
||||
@@ -29,8 +31,13 @@ class CreatePatchRequest {
|
||||
final bool? wasForced;
|
||||
|
||||
/// Whether the patch's assets were not the same as those of the release
|
||||
// TODO(bryanoltman): remove this after metadata change is fully rolled out.
|
||||
final bool? hasAssetChanges;
|
||||
|
||||
/// Whether the patch's native code is different than that of the release.
|
||||
// TODO(bryanoltman): remove this after metadata change is fully rolled out.
|
||||
final bool? hasNativeChanges;
|
||||
|
||||
/// Additional information about the creation of the patch.
|
||||
final CreatePatchMetadata? metadata;
|
||||
}
|
||||
|
||||
+6
@@ -20,6 +20,11 @@ CreatePatchRequest _$CreatePatchRequestFromJson(Map<String, dynamic> json) =>
|
||||
$checkedConvert('has_asset_changes', (v) => v as bool?),
|
||||
hasNativeChanges:
|
||||
$checkedConvert('has_native_changes', (v) => v as bool?),
|
||||
metadata: $checkedConvert(
|
||||
'metadata',
|
||||
(v) => v == null
|
||||
? null
|
||||
: CreatePatchMetadata.fromJson(v as Map<String, dynamic>)),
|
||||
);
|
||||
return val;
|
||||
},
|
||||
@@ -37,4 +42,5 @@ Map<String, dynamic> _$CreatePatchRequestToJson(CreatePatchRequest instance) =>
|
||||
'was_forced': instance.wasForced,
|
||||
'has_asset_changes': instance.hasAssetChanges,
|
||||
'has_native_changes': instance.hasNativeChanges,
|
||||
'metadata': instance.metadata?.toJson(),
|
||||
};
|
||||
|
||||
+4
@@ -12,6 +12,7 @@ class UpdateReleaseRequest {
|
||||
const UpdateReleaseRequest({
|
||||
required this.status,
|
||||
required this.platform,
|
||||
required this.metadata,
|
||||
});
|
||||
|
||||
/// Converts a Map<String, dynamic> to a [UpdateReleaseRequest].
|
||||
@@ -26,4 +27,7 @@ class UpdateReleaseRequest {
|
||||
|
||||
/// The platform of the release.
|
||||
final ReleasePlatform platform;
|
||||
|
||||
/// Additional information about the release.
|
||||
final UpdateReleaseMetadata? metadata;
|
||||
}
|
||||
|
||||
+6
@@ -19,6 +19,11 @@ UpdateReleaseRequest _$UpdateReleaseRequestFromJson(
|
||||
'status', (v) => $enumDecode(_$ReleaseStatusEnumMap, v)),
|
||||
platform: $checkedConvert(
|
||||
'platform', (v) => $enumDecode(_$ReleasePlatformEnumMap, v)),
|
||||
metadata: $checkedConvert(
|
||||
'metadata',
|
||||
(v) => v == null
|
||||
? null
|
||||
: UpdateReleaseMetadata.fromJson(v as Map<String, dynamic>)),
|
||||
);
|
||||
return val;
|
||||
},
|
||||
@@ -29,6 +34,7 @@ Map<String, dynamic> _$UpdateReleaseRequestToJson(
|
||||
<String, dynamic>{
|
||||
'status': _$ReleaseStatusEnumMap[instance.status]!,
|
||||
'platform': _$ReleasePlatformEnumMap[instance.platform]!,
|
||||
'metadata': instance.metadata?.toJson(),
|
||||
};
|
||||
|
||||
const _$ReleaseStatusEnumMap = {
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
part 'build_environment_metadata.g.dart';
|
||||
|
||||
/// {@template build_environment_metadata}
|
||||
/// Information about the environment used to build a release or patch.
|
||||
///
|
||||
/// Collection of this information is done to help Shorebird users debug any
|
||||
/// later failures in their builds.
|
||||
///
|
||||
/// We do not collect Personally Identifying Information (e.g. no paths,
|
||||
/// argument lists, etc.) in accordance with our privacy policy:
|
||||
/// https://shorebird.dev/privacy/
|
||||
/// {@endtemplate}
|
||||
@JsonSerializable()
|
||||
class BuildEnvironmentMetadata extends Equatable {
|
||||
/// {@macro build_environment_metadata}
|
||||
const BuildEnvironmentMetadata({
|
||||
required this.shorebirdVersion,
|
||||
required this.operatingSystem,
|
||||
required this.operatingSystemVersion,
|
||||
required this.xcodeVersion,
|
||||
});
|
||||
|
||||
/// coverage:ignore-start
|
||||
/// Creates a [BuildEnvironmentMetadata] with overridable default values for
|
||||
/// testing purposes.
|
||||
factory BuildEnvironmentMetadata.forTest({
|
||||
String shorebirdVersion = '4.5.6',
|
||||
String operatingSystem = 'macos',
|
||||
String operatingSystemVersion = '1.2.3',
|
||||
String? xcodeVersion = '15.0',
|
||||
}) =>
|
||||
BuildEnvironmentMetadata(
|
||||
shorebirdVersion: shorebirdVersion,
|
||||
operatingSystem: operatingSystem,
|
||||
operatingSystemVersion: operatingSystemVersion,
|
||||
xcodeVersion: xcodeVersion,
|
||||
);
|
||||
// coverage:ignore-end
|
||||
|
||||
/// Converts a Map<String, dynamic> to a [BuildEnvironmentMetadata]
|
||||
factory BuildEnvironmentMetadata.fromJson(Map<String, dynamic> json) =>
|
||||
_$BuildEnvironmentMetadataFromJson(json);
|
||||
|
||||
/// Converts a [BuildEnvironmentMetadata] to a Map<String, dynamic>
|
||||
Map<String, dynamic> toJson() => _$BuildEnvironmentMetadataToJson(this);
|
||||
|
||||
/// The version of Shorebird used to run the command.
|
||||
///
|
||||
/// Reason: each version of shorebird has new features and bug fixes. Users
|
||||
/// using an older version may be running into issues that have already been
|
||||
/// fixed.
|
||||
final String shorebirdVersion;
|
||||
|
||||
/// The operating system used to run the release command.
|
||||
///
|
||||
/// Reason: issues may occur on some OSes and not others (especially Windows
|
||||
/// vs non-Windows).
|
||||
final String operatingSystem;
|
||||
|
||||
/// The version of [operatingSystem].
|
||||
///
|
||||
/// Reason: issues may occur on some OS versions and not others.
|
||||
final String operatingSystemVersion;
|
||||
|
||||
/// The version of Xcode used to build the patch. Only provided for iOS
|
||||
/// patches.
|
||||
///
|
||||
/// Reason: Xcode behavior can change between versions. Ex: the
|
||||
/// `shorebird preview` mechanism changed entirely between Xcode 14 and 15.
|
||||
final String? xcodeVersion;
|
||||
|
||||
@override
|
||||
List<Object?> get props => [
|
||||
shorebirdVersion,
|
||||
operatingSystem,
|
||||
operatingSystemVersion,
|
||||
xcodeVersion,
|
||||
];
|
||||
}
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
// ignore_for_file: implicit_dynamic_parameter, require_trailing_commas, cast_nullable_to_non_nullable, lines_longer_than_80_chars
|
||||
|
||||
part of 'build_environment_metadata.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// JsonSerializableGenerator
|
||||
// **************************************************************************
|
||||
|
||||
BuildEnvironmentMetadata _$BuildEnvironmentMetadataFromJson(
|
||||
Map<String, dynamic> json) =>
|
||||
$checkedCreate(
|
||||
'BuildEnvironmentMetadata',
|
||||
json,
|
||||
($checkedConvert) {
|
||||
final val = BuildEnvironmentMetadata(
|
||||
shorebirdVersion:
|
||||
$checkedConvert('shorebird_version', (v) => v as String),
|
||||
operatingSystem:
|
||||
$checkedConvert('operating_system', (v) => v as String),
|
||||
operatingSystemVersion:
|
||||
$checkedConvert('operating_system_version', (v) => v as String),
|
||||
xcodeVersion: $checkedConvert('xcode_version', (v) => v as String?),
|
||||
);
|
||||
return val;
|
||||
},
|
||||
fieldKeyMap: const {
|
||||
'shorebirdVersion': 'shorebird_version',
|
||||
'operatingSystem': 'operating_system',
|
||||
'operatingSystemVersion': 'operating_system_version',
|
||||
'xcodeVersion': 'xcode_version'
|
||||
},
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$BuildEnvironmentMetadataToJson(
|
||||
BuildEnvironmentMetadata instance) =>
|
||||
<String, dynamic>{
|
||||
'shorebird_version': instance.shorebirdVersion,
|
||||
'operating_system': instance.operatingSystem,
|
||||
'operating_system_version': instance.operatingSystemVersion,
|
||||
'xcode_version': instance.xcodeVersion,
|
||||
};
|
||||
@@ -0,0 +1,100 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
import 'package:shorebird_code_push_protocol/src/models/models.dart';
|
||||
|
||||
part 'create_patch_metadata.g.dart';
|
||||
|
||||
/// {@template create_patch_metadata}
|
||||
/// Information about a patch, used for debugging purposes.
|
||||
///
|
||||
/// Collection of this information is done to help Shorebird users debug any
|
||||
/// later failures in their builds.
|
||||
///
|
||||
/// We do not collect Personally Identifying Information (e.g. no paths,
|
||||
/// argument lists, etc.) in accordance with our privacy policy:
|
||||
/// https://shorebird.dev/privacy/
|
||||
/// {@endtemplate}
|
||||
@JsonSerializable()
|
||||
class CreatePatchMetadata extends Equatable {
|
||||
/// {@macro create_patch_metadata}
|
||||
const CreatePatchMetadata({
|
||||
required this.releasePlatform,
|
||||
required this.usedIgnoreAssetChangesFlag,
|
||||
required this.hasAssetChanges,
|
||||
required this.usedIgnoreNativeChangesFlag,
|
||||
required this.hasNativeChanges,
|
||||
required this.environment,
|
||||
});
|
||||
|
||||
// coverage:ignore-start
|
||||
/// Creates a [CreatePatchMetadata] with overridable default values for
|
||||
/// testing purposes.
|
||||
factory CreatePatchMetadata.forTest({
|
||||
ReleasePlatform releasePlatform = ReleasePlatform.android,
|
||||
bool usedIgnoreAssetChangesFlag = false,
|
||||
bool hasAssetChanges = false,
|
||||
bool usedIgnoreNativeChangesFlag = false,
|
||||
bool hasNativeChanges = false,
|
||||
BuildEnvironmentMetadata? environment,
|
||||
}) =>
|
||||
CreatePatchMetadata(
|
||||
releasePlatform: releasePlatform,
|
||||
usedIgnoreAssetChangesFlag: usedIgnoreAssetChangesFlag,
|
||||
hasAssetChanges: hasAssetChanges,
|
||||
usedIgnoreNativeChangesFlag: usedIgnoreNativeChangesFlag,
|
||||
hasNativeChanges: hasNativeChanges,
|
||||
environment: environment ?? BuildEnvironmentMetadata.forTest(),
|
||||
);
|
||||
// coverage:ignore-end
|
||||
|
||||
/// Converts a Map<String, dynamic> to a [CreatePatchMetadata]
|
||||
factory CreatePatchMetadata.fromJson(Map<String, dynamic> json) =>
|
||||
_$CreatePatchMetadataFromJson(json);
|
||||
|
||||
/// Converts a [CreatePatchMetadata] to a Map<String, dynamic>
|
||||
Map<String, dynamic> toJson() => _$CreatePatchMetadataToJson(this);
|
||||
|
||||
/// The platform for which the patch was created.
|
||||
final ReleasePlatform releasePlatform;
|
||||
|
||||
/// Whether the `--allow-asset-diffs` flag was used.
|
||||
///
|
||||
/// Reason: this helps us understand how often prevalent the need to ignore
|
||||
/// asset changes is.
|
||||
final bool usedIgnoreAssetChangesFlag;
|
||||
|
||||
/// Whether asset changes were detected in the patch.
|
||||
///
|
||||
/// Reason: shorebird does not support asset changes in patches, and knowing
|
||||
/// that asset changes were detected can help explain unexpected behavior in
|
||||
/// a patch.
|
||||
final bool hasAssetChanges;
|
||||
|
||||
/// Whether the `--allow-native-diffs` flag was used.
|
||||
///
|
||||
/// Reason: this helps us understand how often prevalent the need to ignore
|
||||
/// native code changes is.
|
||||
final bool usedIgnoreNativeChangesFlag;
|
||||
|
||||
/// Whether native code changes were detected in the patch.
|
||||
///
|
||||
/// Reason: shorebird does not support native code changes in patches, and
|
||||
/// knowing that native code changes were detected can help explain unexpected
|
||||
/// behavior in a patch.
|
||||
final bool hasNativeChanges;
|
||||
|
||||
/// Properties about the environment in which the patch was created.
|
||||
///
|
||||
/// Reason: see [BuildEnvironmentMetadata].
|
||||
final BuildEnvironmentMetadata environment;
|
||||
|
||||
@override
|
||||
List<Object?> get props => [
|
||||
releasePlatform,
|
||||
usedIgnoreAssetChangesFlag,
|
||||
hasAssetChanges,
|
||||
usedIgnoreNativeChangesFlag,
|
||||
hasNativeChanges,
|
||||
environment,
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
// ignore_for_file: implicit_dynamic_parameter, require_trailing_commas, cast_nullable_to_non_nullable, lines_longer_than_80_chars
|
||||
|
||||
part of 'create_patch_metadata.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// JsonSerializableGenerator
|
||||
// **************************************************************************
|
||||
|
||||
CreatePatchMetadata _$CreatePatchMetadataFromJson(Map<String, dynamic> json) =>
|
||||
$checkedCreate(
|
||||
'CreatePatchMetadata',
|
||||
json,
|
||||
($checkedConvert) {
|
||||
final val = CreatePatchMetadata(
|
||||
releasePlatform: $checkedConvert('release_platform',
|
||||
(v) => $enumDecode(_$ReleasePlatformEnumMap, v)),
|
||||
usedIgnoreAssetChangesFlag: $checkedConvert(
|
||||
'used_ignore_asset_changes_flag', (v) => v as bool),
|
||||
hasAssetChanges:
|
||||
$checkedConvert('has_asset_changes', (v) => v as bool),
|
||||
usedIgnoreNativeChangesFlag: $checkedConvert(
|
||||
'used_ignore_native_changes_flag', (v) => v as bool),
|
||||
hasNativeChanges:
|
||||
$checkedConvert('has_native_changes', (v) => v as bool),
|
||||
environment: $checkedConvert(
|
||||
'environment',
|
||||
(v) =>
|
||||
BuildEnvironmentMetadata.fromJson(v as Map<String, dynamic>)),
|
||||
);
|
||||
return val;
|
||||
},
|
||||
fieldKeyMap: const {
|
||||
'releasePlatform': 'release_platform',
|
||||
'usedIgnoreAssetChangesFlag': 'used_ignore_asset_changes_flag',
|
||||
'hasAssetChanges': 'has_asset_changes',
|
||||
'usedIgnoreNativeChangesFlag': 'used_ignore_native_changes_flag',
|
||||
'hasNativeChanges': 'has_native_changes'
|
||||
},
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$CreatePatchMetadataToJson(
|
||||
CreatePatchMetadata instance) =>
|
||||
<String, dynamic>{
|
||||
'release_platform': _$ReleasePlatformEnumMap[instance.releasePlatform]!,
|
||||
'used_ignore_asset_changes_flag': instance.usedIgnoreAssetChangesFlag,
|
||||
'has_asset_changes': instance.hasAssetChanges,
|
||||
'used_ignore_native_changes_flag': instance.usedIgnoreNativeChangesFlag,
|
||||
'has_native_changes': instance.hasNativeChanges,
|
||||
'environment': instance.environment.toJson(),
|
||||
};
|
||||
|
||||
const _$ReleasePlatformEnumMap = {
|
||||
ReleasePlatform.android: 'android',
|
||||
ReleasePlatform.ios: 'ios',
|
||||
};
|
||||
@@ -1,11 +1,14 @@
|
||||
export 'app.dart';
|
||||
export 'app_metadata.dart';
|
||||
export 'auth_provider.dart';
|
||||
export 'build_environment_metadata.dart';
|
||||
export 'channel.dart';
|
||||
export 'create_patch_metadata.dart';
|
||||
export 'error_response.dart';
|
||||
export 'patch.dart';
|
||||
export 'release.dart';
|
||||
export 'release_artifact.dart';
|
||||
export 'release_platform.dart';
|
||||
export 'release_status.dart';
|
||||
export 'update_release_metadata.dart';
|
||||
export 'user.dart';
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
import 'package:shorebird_code_push_protocol/src/models/models.dart';
|
||||
|
||||
part 'update_release_metadata.g.dart';
|
||||
|
||||
/// {@template release_metadata}
|
||||
/// Information about the creation of patch, used for debugging purposes.
|
||||
///
|
||||
/// Collection of this information is done to help Shorebird users debug any
|
||||
/// later failures in their builds.
|
||||
///
|
||||
/// We do not collect Personally Identifying Information (e.g. no paths,
|
||||
/// argument lists, etc.) in accordance with our privacy policy:
|
||||
/// https://shorebird.dev/privacy/
|
||||
/// {@endtemplate}
|
||||
@JsonSerializable()
|
||||
class UpdateReleaseMetadata extends Equatable {
|
||||
/// {@macro release_metadata}
|
||||
const UpdateReleaseMetadata({
|
||||
required this.releasePlatform,
|
||||
required this.flutterVersionOverride,
|
||||
required this.generatedApks,
|
||||
required this.environment,
|
||||
});
|
||||
|
||||
// coverage:ignore-start
|
||||
/// Creates a [UpdateReleaseMetadata] with overridable default values for
|
||||
/// testing purposes.
|
||||
factory UpdateReleaseMetadata.forTest({
|
||||
ReleasePlatform releasePlatform = ReleasePlatform.android,
|
||||
String? flutterVersionOverride = '1.2.3',
|
||||
bool? generatedApks = false,
|
||||
BuildEnvironmentMetadata? environment,
|
||||
}) =>
|
||||
UpdateReleaseMetadata(
|
||||
releasePlatform: releasePlatform,
|
||||
flutterVersionOverride: flutterVersionOverride,
|
||||
generatedApks: generatedApks,
|
||||
environment: environment ?? BuildEnvironmentMetadata.forTest(),
|
||||
);
|
||||
// coverage:ignore-end
|
||||
|
||||
/// Converts a Map<String, dynamic> to a [UpdateReleaseMetadata].
|
||||
factory UpdateReleaseMetadata.fromJson(Map<String, dynamic> json) =>
|
||||
_$UpdateReleaseMetadataFromJson(json);
|
||||
|
||||
/// Converts a [UpdateReleaseMetadata] to a Map<String, dynamic>.
|
||||
Map<String, dynamic> toJson() => _$UpdateReleaseMetadataToJson(this);
|
||||
|
||||
/// The platform for which the patch was created.
|
||||
final ReleasePlatform releasePlatform;
|
||||
|
||||
/// The Flutter version specified by the user, if any.
|
||||
///
|
||||
/// Reason: different Flutter versions have different performance
|
||||
/// characteristics and features. Additionally, this helps us understand which
|
||||
/// versions of Flutter are most commonly used.
|
||||
final String? flutterVersionOverride;
|
||||
|
||||
/// Whether the user opted to generate an APK for the release (android-only).
|
||||
///
|
||||
/// Reason: if this flag is present, it produces different build artifacts,
|
||||
/// which may affect the build process.
|
||||
final bool? generatedApks;
|
||||
|
||||
/// Properties about the environment in which the update to the release was
|
||||
/// performed.
|
||||
///
|
||||
/// Reason: see [BuildEnvironmentMetadata].
|
||||
final BuildEnvironmentMetadata environment;
|
||||
|
||||
@override
|
||||
List<Object?> get props => [
|
||||
releasePlatform,
|
||||
flutterVersionOverride,
|
||||
generatedApks,
|
||||
environment,
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
// ignore_for_file: implicit_dynamic_parameter, require_trailing_commas, cast_nullable_to_non_nullable, lines_longer_than_80_chars
|
||||
|
||||
part of 'update_release_metadata.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// JsonSerializableGenerator
|
||||
// **************************************************************************
|
||||
|
||||
UpdateReleaseMetadata _$UpdateReleaseMetadataFromJson(
|
||||
Map<String, dynamic> json) =>
|
||||
$checkedCreate(
|
||||
'UpdateReleaseMetadata',
|
||||
json,
|
||||
($checkedConvert) {
|
||||
final val = UpdateReleaseMetadata(
|
||||
releasePlatform: $checkedConvert('release_platform',
|
||||
(v) => $enumDecode(_$ReleasePlatformEnumMap, v)),
|
||||
flutterVersionOverride:
|
||||
$checkedConvert('flutter_version_override', (v) => v as String?),
|
||||
generatedApks: $checkedConvert('generated_apks', (v) => v as bool?),
|
||||
environment: $checkedConvert(
|
||||
'environment',
|
||||
(v) =>
|
||||
BuildEnvironmentMetadata.fromJson(v as Map<String, dynamic>)),
|
||||
);
|
||||
return val;
|
||||
},
|
||||
fieldKeyMap: const {
|
||||
'releasePlatform': 'release_platform',
|
||||
'flutterVersionOverride': 'flutter_version_override',
|
||||
'generatedApks': 'generated_apks'
|
||||
},
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$UpdateReleaseMetadataToJson(
|
||||
UpdateReleaseMetadata instance) =>
|
||||
<String, dynamic>{
|
||||
'release_platform': _$ReleasePlatformEnumMap[instance.releasePlatform]!,
|
||||
'flutter_version_override': instance.flutterVersionOverride,
|
||||
'generated_apks': instance.generatedApks,
|
||||
'environment': instance.environment.toJson(),
|
||||
};
|
||||
|
||||
const _$ReleasePlatformEnumMap = {
|
||||
ReleasePlatform.android: 'android',
|
||||
ReleasePlatform.ios: 'ios',
|
||||
};
|
||||
@@ -9,7 +9,8 @@ environment:
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
|
||||
dependencies:
|
||||
json_annotation: ^4.8.1
|
||||
equatable: ^2.0.5
|
||||
json_annotation: ^4.8.1
|
||||
|
||||
dev_dependencies:
|
||||
build_runner: ^2.0.0
|
||||
|
||||
+27
@@ -9,6 +9,33 @@ void main() {
|
||||
wasForced: true,
|
||||
hasAssetChanges: true,
|
||||
hasNativeChanges: false,
|
||||
metadata: CreatePatchMetadata(
|
||||
releasePlatform: ReleasePlatform.android,
|
||||
usedIgnoreAssetChangesFlag: true,
|
||||
usedIgnoreNativeChangesFlag: false,
|
||||
hasAssetChanges: true,
|
||||
hasNativeChanges: false,
|
||||
environment: BuildEnvironmentMetadata(
|
||||
operatingSystem: 'linux',
|
||||
operatingSystemVersion: '1.0.0',
|
||||
shorebirdVersion: '1.2.3',
|
||||
xcodeVersion: null,
|
||||
),
|
||||
),
|
||||
);
|
||||
expect(
|
||||
CreatePatchRequest.fromJson(request.toJson()).toJson(),
|
||||
equals(request.toJson()),
|
||||
);
|
||||
});
|
||||
|
||||
test('can be (de)serialized without metadata', () {
|
||||
const request = CreatePatchRequest(
|
||||
releaseId: 1234,
|
||||
wasForced: true,
|
||||
hasAssetChanges: true,
|
||||
hasNativeChanges: false,
|
||||
metadata: null,
|
||||
);
|
||||
expect(
|
||||
CreatePatchRequest.fromJson(request.toJson()).toJson(),
|
||||
|
||||
+23
@@ -7,6 +7,29 @@ void main() {
|
||||
const request = UpdateReleaseRequest(
|
||||
platform: ReleasePlatform.android,
|
||||
status: ReleaseStatus.active,
|
||||
metadata: UpdateReleaseMetadata(
|
||||
releasePlatform: ReleasePlatform.ios,
|
||||
flutterVersionOverride: null,
|
||||
generatedApks: null,
|
||||
environment: BuildEnvironmentMetadata(
|
||||
operatingSystem: 'macos',
|
||||
operatingSystemVersion: '11.1',
|
||||
shorebirdVersion: '1.2.3',
|
||||
xcodeVersion: '15.3',
|
||||
),
|
||||
),
|
||||
);
|
||||
expect(
|
||||
UpdateReleaseRequest.fromJson(request.toJson()).toJson(),
|
||||
equals(request.toJson()),
|
||||
);
|
||||
});
|
||||
|
||||
test('can be (de)serialized without metadata', () {
|
||||
const request = UpdateReleaseRequest(
|
||||
platform: ReleasePlatform.ios,
|
||||
status: ReleaseStatus.active,
|
||||
metadata: null,
|
||||
);
|
||||
expect(
|
||||
UpdateReleaseRequest.fromJson(request.toJson()).toJson(),
|
||||
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
import 'package:shorebird_code_push_protocol/shorebird_code_push_protocol.dart';
|
||||
import 'package:shorebird_code_push_protocol/src/models/build_environment_metadata.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
void main() {
|
||||
group(BuildEnvironmentMetadata, () {
|
||||
test('can be (de)serialized', () {
|
||||
const metadata = BuildEnvironmentMetadata(
|
||||
operatingSystem: 'macos',
|
||||
operatingSystemVersion: '1.2.3',
|
||||
shorebirdVersion: '4.5.6',
|
||||
xcodeVersion: '15.0',
|
||||
);
|
||||
expect(
|
||||
BuildEnvironmentMetadata.fromJson(metadata.toJson()).toJson(),
|
||||
equals(metadata.toJson()),
|
||||
);
|
||||
});
|
||||
|
||||
group('equatable', () {
|
||||
test('two metadatas with the same properties are equal', () {
|
||||
const metadata = BuildEnvironmentMetadata(
|
||||
operatingSystem: 'macos',
|
||||
operatingSystemVersion: '1.2.3',
|
||||
shorebirdVersion: '4.5.6',
|
||||
xcodeVersion: '15.0',
|
||||
);
|
||||
const otherMetadata = BuildEnvironmentMetadata(
|
||||
operatingSystem: 'macos',
|
||||
operatingSystemVersion: '1.2.3',
|
||||
shorebirdVersion: '4.5.6',
|
||||
xcodeVersion: '15.0',
|
||||
);
|
||||
expect(metadata, equals(otherMetadata));
|
||||
});
|
||||
|
||||
test('two metadatas with different properties are not equal', () {
|
||||
const metadata = BuildEnvironmentMetadata(
|
||||
operatingSystem: 'macos',
|
||||
operatingSystemVersion: '1.2.3',
|
||||
shorebirdVersion: '4.5.6',
|
||||
xcodeVersion: '15.0',
|
||||
);
|
||||
const otherMetadata = BuildEnvironmentMetadata(
|
||||
operatingSystem: 'macos',
|
||||
operatingSystemVersion: '1.2.3',
|
||||
shorebirdVersion: '4.5.6',
|
||||
xcodeVersion: '15.1',
|
||||
);
|
||||
expect(metadata, isNot(equals(otherMetadata)));
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
import 'package:shorebird_code_push_protocol/shorebird_code_push_protocol.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
void main() {
|
||||
group(CreatePatchMetadata, () {
|
||||
test('can be (de)serialized', () {
|
||||
const metadata = CreatePatchMetadata(
|
||||
releasePlatform: ReleasePlatform.android,
|
||||
usedIgnoreAssetChangesFlag: false,
|
||||
hasAssetChanges: false,
|
||||
usedIgnoreNativeChangesFlag: false,
|
||||
hasNativeChanges: false,
|
||||
environment: BuildEnvironmentMetadata(
|
||||
operatingSystem: 'macos',
|
||||
operatingSystemVersion: '1.2.3',
|
||||
shorebirdVersion: '4.5.6',
|
||||
xcodeVersion: '15.0',
|
||||
),
|
||||
);
|
||||
expect(
|
||||
CreatePatchMetadata.fromJson(metadata.toJson()).toJson(),
|
||||
equals(metadata.toJson()),
|
||||
);
|
||||
});
|
||||
|
||||
group('equatable', () {
|
||||
test('two metadatas with the same properties are equal', () {
|
||||
const metadata = CreatePatchMetadata(
|
||||
releasePlatform: ReleasePlatform.android,
|
||||
usedIgnoreAssetChangesFlag: false,
|
||||
hasAssetChanges: false,
|
||||
usedIgnoreNativeChangesFlag: false,
|
||||
hasNativeChanges: false,
|
||||
environment: BuildEnvironmentMetadata(
|
||||
operatingSystem: 'macos',
|
||||
operatingSystemVersion: '1.2.3',
|
||||
shorebirdVersion: '4.5.6',
|
||||
xcodeVersion: '15.0',
|
||||
),
|
||||
);
|
||||
const otherMetadata = CreatePatchMetadata(
|
||||
releasePlatform: ReleasePlatform.android,
|
||||
usedIgnoreAssetChangesFlag: false,
|
||||
hasAssetChanges: false,
|
||||
usedIgnoreNativeChangesFlag: false,
|
||||
hasNativeChanges: false,
|
||||
environment: BuildEnvironmentMetadata(
|
||||
operatingSystem: 'macos',
|
||||
operatingSystemVersion: '1.2.3',
|
||||
shorebirdVersion: '4.5.6',
|
||||
xcodeVersion: '15.0',
|
||||
),
|
||||
);
|
||||
expect(metadata, equals(otherMetadata));
|
||||
});
|
||||
|
||||
test('two metadatas with different properties are not equal', () {
|
||||
const metadata = CreatePatchMetadata(
|
||||
releasePlatform: ReleasePlatform.android,
|
||||
usedIgnoreAssetChangesFlag: false,
|
||||
hasAssetChanges: false,
|
||||
usedIgnoreNativeChangesFlag: false,
|
||||
hasNativeChanges: false,
|
||||
environment: BuildEnvironmentMetadata(
|
||||
operatingSystem: 'macos',
|
||||
operatingSystemVersion: '1.2.3',
|
||||
shorebirdVersion: '4.5.6',
|
||||
xcodeVersion: '15.0',
|
||||
),
|
||||
);
|
||||
const otherMetadata = CreatePatchMetadata(
|
||||
releasePlatform: ReleasePlatform.ios,
|
||||
usedIgnoreAssetChangesFlag: false,
|
||||
hasAssetChanges: false,
|
||||
usedIgnoreNativeChangesFlag: false,
|
||||
hasNativeChanges: false,
|
||||
environment: BuildEnvironmentMetadata(
|
||||
operatingSystem: 'macos',
|
||||
operatingSystemVersion: '1.2.3',
|
||||
shorebirdVersion: '4.5.6',
|
||||
xcodeVersion: '15.0',
|
||||
),
|
||||
);
|
||||
expect(metadata, isNot(equals(otherMetadata)));
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
import 'package:shorebird_code_push_protocol/shorebird_code_push_protocol.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
void main() {
|
||||
group(UpdateReleaseMetadata, () {
|
||||
test('can be (de)serialized', () {
|
||||
const metadata = UpdateReleaseMetadata(
|
||||
releasePlatform: ReleasePlatform.android,
|
||||
flutterVersionOverride: '1.2.3',
|
||||
generatedApks: false,
|
||||
environment: BuildEnvironmentMetadata(
|
||||
operatingSystem: 'macos',
|
||||
operatingSystemVersion: '1.2.3',
|
||||
shorebirdVersion: '4.5.6',
|
||||
xcodeVersion: '15.0',
|
||||
),
|
||||
);
|
||||
expect(
|
||||
UpdateReleaseMetadata.fromJson(metadata.toJson()).toJson(),
|
||||
equals(metadata.toJson()),
|
||||
);
|
||||
});
|
||||
|
||||
group('equatable', () {
|
||||
test('two metadatas with the same properties are equal', () {
|
||||
const metadata = UpdateReleaseMetadata(
|
||||
releasePlatform: ReleasePlatform.android,
|
||||
flutterVersionOverride: '1.2.3',
|
||||
generatedApks: false,
|
||||
environment: BuildEnvironmentMetadata(
|
||||
operatingSystem: 'macos',
|
||||
operatingSystemVersion: '1.2.3',
|
||||
shorebirdVersion: '4.5.6',
|
||||
xcodeVersion: '15.0',
|
||||
),
|
||||
);
|
||||
const otherMetadata = UpdateReleaseMetadata(
|
||||
releasePlatform: ReleasePlatform.android,
|
||||
flutterVersionOverride: '1.2.3',
|
||||
generatedApks: false,
|
||||
environment: BuildEnvironmentMetadata(
|
||||
operatingSystem: 'macos',
|
||||
operatingSystemVersion: '1.2.3',
|
||||
shorebirdVersion: '4.5.6',
|
||||
xcodeVersion: '15.0',
|
||||
),
|
||||
);
|
||||
expect(metadata, equals(otherMetadata));
|
||||
});
|
||||
|
||||
test('two metadatas with different properties are not equal', () {
|
||||
const metadata = UpdateReleaseMetadata(
|
||||
releasePlatform: ReleasePlatform.android,
|
||||
flutterVersionOverride: '1.2.3',
|
||||
generatedApks: false,
|
||||
environment: BuildEnvironmentMetadata(
|
||||
operatingSystem: 'macos',
|
||||
operatingSystemVersion: '1.2.3',
|
||||
shorebirdVersion: '4.5.6',
|
||||
xcodeVersion: '15.0',
|
||||
),
|
||||
);
|
||||
const otherMetadata = UpdateReleaseMetadata(
|
||||
releasePlatform: ReleasePlatform.android,
|
||||
flutterVersionOverride: '1.2.4',
|
||||
generatedApks: false,
|
||||
environment: BuildEnvironmentMetadata(
|
||||
operatingSystem: 'macos',
|
||||
operatingSystemVersion: '1.2.3',
|
||||
shorebirdVersion: '4.5.6',
|
||||
xcodeVersion: '15.0',
|
||||
),
|
||||
);
|
||||
expect(metadata, isNot(equals(otherMetadata)));
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user