From 43c1f7793e1f988e6bc5bf88ccda4f13f5688a4c Mon Sep 17 00:00:00 2001 From: Jonathan Fisher Date: Mon, 16 Nov 2020 21:02:50 +0000 Subject: [PATCH] fix path links --- .../oppen/ariane/io/gemini/AddressTests.kt | 19 +++++++++++++++++-- .../ariane/io/gemini/GeminiDatasourceTests.kt | 8 ++++---- .../oppen/ariane/io/gemini/AddressBuilder.kt | 15 +++++++++++++-- 3 files changed, 34 insertions(+), 8 deletions(-) diff --git a/app/src/androidTest/java/oppen/ariane/io/gemini/AddressTests.kt b/app/src/androidTest/java/oppen/ariane/io/gemini/AddressTests.kt index d22cd03..9e3f592 100644 --- a/app/src/androidTest/java/oppen/ariane/io/gemini/AddressTests.kt +++ b/app/src/androidTest/java/oppen/ariane/io/gemini/AddressTests.kt @@ -32,11 +32,11 @@ class AddressTests { assertThat(uri.toString()).isEqualTo("gemini://gemini.circumlunar.space/~oppen/index.gmi") assertThat(uri.path).isEqualTo("/~oppen/index.gmi") - uri = builder.request("/hello/index.gmi").uri() + uri = builder.request("hello/index.gmi").uri() assertThat(uri.toString()).isEqualTo("gemini://gemini.circumlunar.space/~oppen/hello/index.gmi") - uri = builder.request("/world/index.gmi").uri() + uri = builder.request("world/index.gmi").uri() assertThat(uri.toString()).isEqualTo("gemini://gemini.circumlunar.space/~oppen/hello/world/index.gmi") uri = builder.request("./foo/index.gmi").uri() @@ -70,4 +70,19 @@ class AddressTests { val uri = builder.request("//mycapsule.com").uri() assertThat(uri.toString()).isEqualTo("gemini://mycapsule.com") } + + @Test + fun pathTest(){ + val builder = AddressBuilder() + var uri = builder + .request("gemini://mycapsule.com") + .request("hello/") + .uri() + assertThat(uri.toString()).isEqualTo("gemini://mycapsule.com/hello/index.gmi") + + uri = builder.request("/world/").uri() + + assertThat(uri.toString()).isEqualTo("gemini://mycapsule.com/world/index.gmi") + + } } \ No newline at end of file diff --git a/app/src/androidTest/java/oppen/ariane/io/gemini/GeminiDatasourceTests.kt b/app/src/androidTest/java/oppen/ariane/io/gemini/GeminiDatasourceTests.kt index 0cb470d..842cf33 100644 --- a/app/src/androidTest/java/oppen/ariane/io/gemini/GeminiDatasourceTests.kt +++ b/app/src/androidTest/java/oppen/ariane/io/gemini/GeminiDatasourceTests.kt @@ -6,6 +6,7 @@ import oppen.ariane.Ariane import oppen.toURI import com.google.common.truth.Truth.assertThat import oppen.ariane.io.GemState +import oppen.ariane.io.database.ArianeDatabase import org.junit.Before import org.junit.Test import org.junit.runner.RunWith @@ -32,10 +33,9 @@ class GeminiDatasourceTests { val capsule = capsules.random() println("Using $capsule for Gemini tests") capsuleIndex = capsules.indexOf(capsule) - gemini = Datasource.factory( - InstrumentationRegistry.getInstrumentation().targetContext, - db.history() - ) + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + val db = ArianeDatabase(appContext) + gemini = Datasource.factory(InstrumentationRegistry.getInstrumentation().targetContext, db.history()) } @Test diff --git a/app/src/main/java/oppen/ariane/io/gemini/AddressBuilder.kt b/app/src/main/java/oppen/ariane/io/gemini/AddressBuilder.kt index 2d68402..4c3e3e2 100644 --- a/app/src/main/java/oppen/ariane/io/gemini/AddressBuilder.kt +++ b/app/src/main/java/oppen/ariane/io/gemini/AddressBuilder.kt @@ -18,8 +18,19 @@ class AddressBuilder { fun request(link: String): AddressBuilder { val linkUri = Uri.parse(link) when { - linkUri.isAbsolute -> uri = linkUri - linkUri.toString().startsWith("//") -> uri = Uri.parse("gemini:$link") + linkUri.isAbsolute -> { + uri = linkUri + } + linkUri.toString().startsWith("//") -> { + uri = Uri.parse("gemini:$link") + } + linkUri.toString().startsWith("/") -> { + val pathLink = "${uri.scheme}://${uri.host}$linkUri" + uri = when { + pathLink.endsWith("/") -> Uri.parse("${pathLink}index.gmi") + else -> Uri.parse(pathLink) + } + } else -> { val currentAddress = uri.toString()