Browse Source

chore: WIP

feature/multiple-server-versions
jld3103 1 year ago
parent
commit
32b127692f
No known key found for this signature in database
GPG Key ID: 9062417B9E8EB7B3
  1. 18
      packages/nextcloud/lib/src/version_supported.dart
  2. 19
      packages/nextcloud/test/core_test.dart
  3. 16
      packages/nextcloud/test/helper.dart

18
packages/nextcloud/lib/src/version_supported.dart

@ -3,8 +3,14 @@ import 'package:nextcloud/src/api/news.openapi.dart';
import 'package:nextcloud/src/api/notes.openapi.dart';
import 'package:version/version.dart';
/// Version of core/Server supported
const coreSupportedVersion = 27;
/// Versions of core/Server supported
const coreSupportedVersions = [
'25.0.10',
'26.0.5',
'27.0.0',
'27.0.1',
'27.0.2',
];
/// API version of the news app supported
const newsSupportedVersion = 'v1-3';
@ -17,16 +23,16 @@ extension CoreVersionSupported on CoreClient {
/// Check if the core/Server version is supported by this client
///
/// Also returns the supported version number
(bool, int) isSupported(final CoreOcsGetCapabilitiesResponseApplicationJson_Ocs_Data capabilities) => (
capabilities.version.major == coreSupportedVersion,
coreSupportedVersion,
(bool, List<String>) isSupported(final CoreOcsGetCapabilitiesResponseApplicationJson_Ocs_Data capabilities) => (
coreSupportedVersions.contains(capabilities.version.string),
coreSupportedVersions,
);
}
// ignore: public_member_api_docs
extension CoreStatusVersionSupported on CoreStatus {
/// Check if the core/Server version is supported
bool get isSupported => version.startsWith('$coreSupportedVersion.');
bool get isSupported => coreSupportedVersions.contains(versionstring);
}
// ignore: public_member_api_docs

19
packages/nextcloud/test/core_test.dart

@ -4,11 +4,14 @@ import 'package:test/test.dart';
import 'helper.dart';
void main() {
for (final serverVersion in coreSupportedVersions) {
final serverVersionMajor = int.parse(serverVersion.split('.').first);
group(
'core',
serverVersion,
() {
group('core', () {
late DockerImage image;
setUpAll(() async => image = await getDockerImage());
setUpAll(() async => image = await getDockerImage(serverVersion: serverVersion));
late DockerContainer container;
late TestNextcloudClient client;
@ -33,8 +36,8 @@ void main() {
expect(status.installed, true);
expect(status.maintenance, false);
expect(status.needsDbUpgrade, false);
expect(status.version, startsWith('$coreSupportedVersion.'));
expect(status.versionstring, startsWith('$coreSupportedVersion.'));
expect(status.version, startsWith('$serverVersion.'));
expect(status.versionstring, serverVersion);
expect(status.edition, '');
expect(status.productname, 'Nextcloud');
expect(status.extendedSupport, false);
@ -42,8 +45,8 @@ void main() {
test('Get capabilities', () async {
final capabilities = await client.core.ocs.getCapabilities();
expect(capabilities.ocs.data.version.major, coreSupportedVersion);
expect(capabilities.ocs.data.version.string, startsWith('$coreSupportedVersion.'));
expect(capabilities.ocs.data.version.major, serverVersionMajor);
expect(capabilities.ocs.data.version.string, serverVersion);
expect(capabilities.ocs.data.capabilities.commentsCapabilities, isNotNull);
expect(capabilities.ocs.data.capabilities.davCapabilities, isNotNull);
expect(capabilities.ocs.data.capabilities.filesCapabilities, isNotNull);
@ -108,7 +111,7 @@ void main() {
expect(response.ocs.data[2].subline, '');
expect(response.ocs.data[2].shareWithDisplayNameUnique, '');
},
skip: true, // TODO: This test only works on 28+ due to a bug fix with the status
skip: serverVersionMajor < 28, // This test only works on 28+ due to a bug fix with the status
);
test('Get preview', () async {
@ -155,8 +158,10 @@ void main() {
expect(response.ocs.data.entries.single.rounded, isFalse);
expect(response.ocs.data.entries.single.attributes, isEmpty);
});
});
},
retry: retryCount,
timeout: timeout,
);
}
}

16
packages/nextcloud/test/helper.dart

@ -192,8 +192,15 @@ Future<DockerContainer> getDockerContainer(final DockerImage image, {final bool
typedef DockerImage = String;
Future<DockerImage> getDockerImage() async {
const dockerImageName = 'nextcloud-neon-dev';
Future<DockerImage> getDockerImage({
final String? serverVersion,
}) async {
final buildArgs = <String, String>{
if (serverVersion != null) 'SERVER_VERSION': serverVersion,
};
final dockerImageName =
'nextcloud-neon-test${buildArgs.isNotEmpty ? '-' : ''}${buildArgs.entries.map((final buildArg) => '${buildArg.key.toLowerCase().replaceAll('_', '-')}-${buildArg.value}').join('-')}';
final inputStream = StreamController<List<int>>();
final process = runExecutableArguments(
@ -202,6 +209,9 @@ Future<DockerImage> getDockerImage() async {
'build',
'-t',
dockerImageName,
...buildArgs.entries
.map((final buildArg) => ['--build-arg', '${buildArg.key}=${buildArg.value}'])
.expand((final buildArg) => buildArg),
'-f',
'-',
'../../tool',
@ -213,7 +223,7 @@ Future<DockerImage> getDockerImage() async {
final result = await process;
if (result.exitCode != 0) {
throw Exception('Failed to build docker image');
throw Exception('Failed to build docker image:\n${result.stdout as String}\n${result.stderr as String}');
}
return dockerImageName;

Loading…
Cancel
Save