diff --git a/packages/nextcloud/pubspec.yaml b/packages/nextcloud/pubspec.yaml index 274a6167098..a5fa03e8948 100644 --- a/packages/nextcloud/pubspec.yaml +++ b/packages/nextcloud/pubspec.yaml @@ -44,4 +44,5 @@ dev_dependencies: path: ^1.9.0 process_run: ^0.13.3 test: ^1.24.9 + test_api: ^0.6.1 xml_serializable: ^2.4.0 diff --git a/packages/nextcloud/test/core_test.dart b/packages/nextcloud/test/core_test.dart index 912f36b8259..ddd326cbcf9 100644 --- a/packages/nextcloud/test/core_test.dart +++ b/packages/nextcloud/test/core_test.dart @@ -2,6 +2,7 @@ import 'package:nextcloud/core.dart' as core; import 'package:nextcloud/nextcloud.dart'; import 'package:nextcloud_test/nextcloud_test.dart'; import 'package:test/test.dart'; +import 'package:test_api/src/backend/invoker.dart'; void main() { presets('server', (final preset) { @@ -14,7 +15,12 @@ void main() { container = await DockerContainer.create(preset); client = await TestNextcloudClient.create(container); }); - tearDown(() => container.destroy()); + tearDown(() async { + if (Invoker.current!.liveTest.errors.isNotEmpty) { + print(await container.allLogs()); + } + container.destroy(); + }); test('Is supported from capabilities', () async { final response = await client.core.ocs.getCapabilities(); diff --git a/packages/nextcloud/test/dashboard_test.dart b/packages/nextcloud/test/dashboard_test.dart index 4b7d14313db..b8080a8106f 100644 --- a/packages/nextcloud/test/dashboard_test.dart +++ b/packages/nextcloud/test/dashboard_test.dart @@ -2,6 +2,7 @@ import 'package:nextcloud/dashboard.dart'; import 'package:nextcloud/nextcloud.dart'; import 'package:nextcloud_test/nextcloud_test.dart'; import 'package:test/test.dart'; +import 'package:test_api/src/backend/invoker.dart'; import 'package:version/version.dart'; void main() { @@ -15,7 +16,12 @@ void main() { container = await DockerContainer.create(preset); client = await TestNextcloudClient.create(container); }); - tearDown(() => container.destroy()); + tearDown(() async { + if (Invoker.current!.liveTest.errors.isNotEmpty) { + print(await container.allLogs()); + } + container.destroy(); + }); test('Get widgets', () async { final response = await client.dashboard.dashboardApi.getWidgets(); diff --git a/packages/nextcloud/test/news_test.dart b/packages/nextcloud/test/news_test.dart index 687ea8e485c..43fc5b0bda1 100644 --- a/packages/nextcloud/test/news_test.dart +++ b/packages/nextcloud/test/news_test.dart @@ -4,6 +4,7 @@ import 'package:nextcloud/news.dart' as news; import 'package:nextcloud/nextcloud.dart'; import 'package:nextcloud_test/nextcloud_test.dart'; import 'package:test/test.dart'; +import 'package:test_api/src/backend/invoker.dart'; void main() { presets('news', (final preset) { @@ -16,7 +17,12 @@ void main() { container = await DockerContainer.create(preset); client = await TestNextcloudClient.create(container); }); - tearDown(() => container.destroy()); + tearDown(() async { + if (Invoker.current!.liveTest.errors.isNotEmpty) { + print(await container.allLogs()); + } + container.destroy(); + }); Future> addWikipediaFeed([final int? folderID]) async => client.news.addFeed( diff --git a/packages/nextcloud/test/notes_test.dart b/packages/nextcloud/test/notes_test.dart index e2ff0ed360f..23cd9907674 100644 --- a/packages/nextcloud/test/notes_test.dart +++ b/packages/nextcloud/test/notes_test.dart @@ -3,6 +3,7 @@ import 'package:nextcloud/nextcloud.dart'; import 'package:nextcloud/notes.dart' as notes; import 'package:nextcloud_test/nextcloud_test.dart'; import 'package:test/test.dart'; +import 'package:test_api/src/backend/invoker.dart'; void main() { presets('notes', (final preset) { @@ -15,7 +16,12 @@ void main() { container = await DockerContainer.create(preset); client = await TestNextcloudClient.create(container); }); - tearDown(() => container.destroy()); + tearDown(() async { + if (Invoker.current!.liveTest.errors.isNotEmpty) { + print(await container.allLogs()); + } + container.destroy(); + }); test('Is supported', () async { final response = await client.core.ocs.getCapabilities(); diff --git a/packages/nextcloud/test/notifications_test.dart b/packages/nextcloud/test/notifications_test.dart index 7765527c1ff..5dae93ebbf5 100644 --- a/packages/nextcloud/test/notifications_test.dart +++ b/packages/nextcloud/test/notifications_test.dart @@ -4,6 +4,7 @@ import 'package:nextcloud/nextcloud.dart'; import 'package:nextcloud/notifications.dart'; import 'package:nextcloud_test/nextcloud_test.dart'; import 'package:test/test.dart'; +import 'package:test_api/src/backend/invoker.dart'; void main() { presets('server', (final preset) { @@ -19,7 +20,12 @@ void main() { username: 'admin', ); }); - tearDown(() => container.destroy()); + tearDown(() async { + if (Invoker.current!.liveTest.errors.isNotEmpty) { + print(await container.allLogs()); + } + container.destroy(); + }); Future sendTestNotification() async { await client.notifications.api.generateNotification( @@ -118,7 +124,12 @@ void main() { username: 'admin', ); }); - tearDown(() => container.destroy()); + tearDown(() async { + if (Invoker.current!.liveTest.errors.isNotEmpty) { + print(await container.allLogs()); + } + container.destroy(); + }); // The key size has to be 2048, other sizes are not accepted by Nextcloud (at the moment at least) // ignore: avoid_redundant_argument_values diff --git a/packages/nextcloud/test/provisioning_api_test.dart b/packages/nextcloud/test/provisioning_api_test.dart index 8dc2b9d6b12..7a5f1639618 100644 --- a/packages/nextcloud/test/provisioning_api_test.dart +++ b/packages/nextcloud/test/provisioning_api_test.dart @@ -2,6 +2,7 @@ import 'package:nextcloud/nextcloud.dart'; import 'package:nextcloud/provisioning_api.dart'; import 'package:nextcloud_test/nextcloud_test.dart'; import 'package:test/test.dart'; +import 'package:test_api/src/backend/invoker.dart'; void main() { presets('server', (final preset) { @@ -17,7 +18,12 @@ void main() { username: 'admin', ); }); - tearDown(() => container.destroy()); + tearDown(() async { + if (Invoker.current!.liveTest.errors.isNotEmpty) { + print(await container.allLogs()); + } + container.destroy(); + }); group('Users', () { test('Get current user', () async { diff --git a/packages/nextcloud/test/settings_test.dart b/packages/nextcloud/test/settings_test.dart index cf2d2151082..9e4c68deaa0 100644 --- a/packages/nextcloud/test/settings_test.dart +++ b/packages/nextcloud/test/settings_test.dart @@ -4,6 +4,7 @@ import 'package:nextcloud/nextcloud.dart'; import 'package:nextcloud/settings.dart'; import 'package:nextcloud_test/nextcloud_test.dart'; import 'package:test/test.dart'; +import 'package:test_api/src/backend/invoker.dart'; void main() { presets('server', (final preset) { @@ -19,7 +20,12 @@ void main() { username: 'admin', ); }); - tearDown(() => container.destroy()); + tearDown(() async { + if (Invoker.current!.liveTest.errors.isNotEmpty) { + print(await container.allLogs()); + } + container.destroy(); + }); group('Logs', () { test('Download', () async { diff --git a/packages/nextcloud/test/spreed_test.dart b/packages/nextcloud/test/spreed_test.dart index 3f7e40d04ed..e9dcc5956a2 100644 --- a/packages/nextcloud/test/spreed_test.dart +++ b/packages/nextcloud/test/spreed_test.dart @@ -7,6 +7,7 @@ import 'package:nextcloud/nextcloud.dart'; import 'package:nextcloud/spreed.dart' as spreed; import 'package:nextcloud_test/nextcloud_test.dart'; import 'package:test/test.dart'; +import 'package:test_api/src/backend/invoker.dart'; void main() { presets('spreed', (final preset) { @@ -19,7 +20,12 @@ void main() { container = await DockerContainer.create(preset); client1 = await TestNextcloudClient.create(container); }); - tearDown(() => container.destroy()); + tearDown(() async { + if (Invoker.current!.liveTest.errors.isNotEmpty) { + print(await container.allLogs()); + } + container.destroy(); + }); Future createTestRoom() async => (await client1.spreed.room.createRoom( roomType: spreed.RoomType.public.value, diff --git a/packages/nextcloud/test/uppush_test.dart b/packages/nextcloud/test/uppush_test.dart index 1d398cdec3d..412a8aa1c60 100644 --- a/packages/nextcloud/test/uppush_test.dart +++ b/packages/nextcloud/test/uppush_test.dart @@ -2,6 +2,7 @@ import 'package:nextcloud/nextcloud.dart'; import 'package:nextcloud/uppush.dart'; import 'package:nextcloud_test/nextcloud_test.dart'; import 'package:test/test.dart'; +import 'package:test_api/src/backend/invoker.dart'; void main() { presets('uppush', (final preset) { @@ -17,7 +18,12 @@ void main() { username: 'admin', ); }); - tearDown(() => container.destroy()); + tearDown(() async { + if (Invoker.current!.liveTest.errors.isNotEmpty) { + print(await container.allLogs()); + } + container.destroy(); + }); test('Is installed', () async { final response = await client.uppush.check(); diff --git a/packages/nextcloud/test/user_status_test.dart b/packages/nextcloud/test/user_status_test.dart index 7218eb2f5ec..eb3ebf851e1 100644 --- a/packages/nextcloud/test/user_status_test.dart +++ b/packages/nextcloud/test/user_status_test.dart @@ -2,6 +2,7 @@ import 'package:nextcloud/nextcloud.dart'; import 'package:nextcloud/user_status.dart' as user_status; import 'package:nextcloud_test/nextcloud_test.dart'; import 'package:test/test.dart'; +import 'package:test_api/src/backend/invoker.dart'; void main() { presets('server', (final preset) { @@ -14,7 +15,12 @@ void main() { container = await DockerContainer.create(preset); client = await TestNextcloudClient.create(container); }); - tearDown(() => container.destroy()); + tearDown(() async { + if (Invoker.current!.liveTest.errors.isNotEmpty) { + print(await container.allLogs()); + } + container.destroy(); + }); group('Predefined status', () { test('Find all', () async { diff --git a/packages/nextcloud/test/webdav_test.dart b/packages/nextcloud/test/webdav_test.dart index 26e7b96b4a9..90123c3d4bd 100644 --- a/packages/nextcloud/test/webdav_test.dart +++ b/packages/nextcloud/test/webdav_test.dart @@ -5,6 +5,7 @@ import 'dart:typed_data'; import 'package:nextcloud/nextcloud.dart'; import 'package:nextcloud_test/nextcloud_test.dart'; import 'package:test/test.dart'; +import 'package:test_api/src/backend/invoker.dart'; import 'package:universal_io/io.dart'; void main() { @@ -145,7 +146,12 @@ void main() { container = await DockerContainer.create(preset); client = await TestNextcloudClient.create(container); }); - tearDown(() => container.destroy()); + tearDown(() async { + if (Invoker.current!.liveTest.errors.isNotEmpty) { + print(await container.allLogs()); + } + container.destroy(); + }); test('List directory', () async { final responses = (await client.webdav.propfind( diff --git a/packages/nextcloud_test/lib/src/docker_container.dart b/packages/nextcloud_test/lib/src/docker_container.dart index 57e272a1495..527542a91a0 100644 --- a/packages/nextcloud_test/lib/src/docker_container.dart +++ b/packages/nextcloud_test/lib/src/docker_container.dart @@ -82,18 +82,18 @@ class DockerContainer { ), ); - /// Reads the server logs. - Future serverLogs() async { + /// Reads the web server logs. + Future webServerLogs() async { final result = await runExecutableArguments( 'docker', [ 'logs', id, ], - stdoutEncoding: utf8, + stderrEncoding: utf8, ); - return result.stdout as String; + return result.stderr as String; } /// Reads the Nextcloud logs. @@ -114,6 +114,6 @@ class DockerContainer { /// Reads all logs. /// - /// Combines the output of [serverLogs] and [nextcloudLogs]. - Future allLogs() async => '${await serverLogs()}\n\n${await nextcloudLogs()}'; + /// Combines the output of [webServerLogs] and [nextcloudLogs]. + Future allLogs() async => 'Web server:\n${await webServerLogs()}\nNextcloud:\n${await nextcloudLogs()}'; }