From 0eec35bb51aeda5b5b1932ace748cfb54d01ff7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20K=C3=BCrten?= <sebastian@mobanisto.de> Date: Thu, 30 Sep 2021 11:45:11 +0200 Subject: [PATCH] Add a testing executable that uses a temporary data directory --- .../briar/desktop/TestWithTemporaryAccount.kt | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 src/test/kotlin/org/briarproject/briar/desktop/TestWithTemporaryAccount.kt diff --git a/src/test/kotlin/org/briarproject/briar/desktop/TestWithTemporaryAccount.kt b/src/test/kotlin/org/briarproject/briar/desktop/TestWithTemporaryAccount.kt new file mode 100644 index 0000000000..6dd7bbda2e --- /dev/null +++ b/src/test/kotlin/org/briarproject/briar/desktop/TestWithTemporaryAccount.kt @@ -0,0 +1,66 @@ +package org.briarproject.briar.desktop + +import androidx.compose.ui.ExperimentalComposeUiApi +import androidx.compose.ui.window.application +import org.briarproject.bramble.BrambleCoreEagerSingletons +import org.briarproject.bramble.util.OsUtils.isLinux +import org.briarproject.bramble.util.OsUtils.isMac +import org.briarproject.bramble.util.OsUtils.isWindows +import org.briarproject.briar.BriarCoreEagerSingletons +import java.io.IOException +import java.nio.file.Files +import java.nio.file.Files.setPosixFilePermissions +import java.nio.file.Path +import java.nio.file.attribute.PosixFilePermission +import java.nio.file.attribute.PosixFilePermission.OWNER_EXECUTE +import java.nio.file.attribute.PosixFilePermission.OWNER_READ +import java.nio.file.attribute.PosixFilePermission.OWNER_WRITE +import java.util.logging.Level.INFO +import java.util.logging.LogManager +import kotlin.io.path.absolute + +private class TestWithTemporaryAccount { + + @OptIn(ExperimentalComposeUiApi::class) + fun run() = application { + LogManager.getLogManager().getLogger("").level = INFO + + val dataDir = getDataDir() + println("Using data directory '$dataDir'") + + val app = + DaggerBriarDesktopApp.builder().desktopModule( + DesktopModule(dataDir.toFile()) + ).build() + // We need to load the eager singletons directly after making the + // dependency graphs + BrambleCoreEagerSingletons.Helper.injectEagerSingletons(app) + BriarCoreEagerSingletons.Helper.injectEagerSingletons(app) + + app.getUI().startBriar() + } + + private fun getDataDir(): Path { + val dataDir = Files.createTempDirectory("briar") + if (!Files.exists(dataDir)) { + throw IOException("Could not create directory: ${dataDir.absolute()}") + } else if (!Files.isDirectory(dataDir)) { + throw IOException("Data dir is not a directory: ${dataDir.absolute()}") + } + if (isLinux() || isMac()) { + val perms = HashSet<PosixFilePermission>() + perms.add(OWNER_READ) + perms.add(OWNER_WRITE) + perms.add(OWNER_EXECUTE) + setPosixFilePermissions(dataDir, perms) + } else if (isWindows()) { + val file = dataDir.toFile() + file.setReadable(true, true) + file.setWritable(true, true) + file.setExecutable(true, true) + } + return dataDir + } +} + +fun main(args: Array<String>) = TestWithTemporaryAccount().run() -- GitLab