Skip to content

Commit

Permalink
Merge pull request #712 from hexagontk/develop
Browse files Browse the repository at this point in the history
Update dependencies and tests
  • Loading branch information
jaguililla committed Aug 3, 2024
2 parents 12f54aa + 293bf71 commit 45e6c3c
Show file tree
Hide file tree
Showing 21 changed files with 110 additions and 29 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v6
- uses: actions/stale@v9
with:
exempt-issue-labels: pinned
include-only-assigned: true
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@ jobs:
runs-on: ubuntu-latest
steps:

- uses: actions/cache@v3
- uses: actions/cache@v4
with:
key: ${{ runner.os }}-mkdocs-${{ hashFiles('**/*.gradle*', '**/gradle*.properties') }}
restore-keys: ${{ runner.os }}-mkdocs-
path: |
~/.local/bin
~/.local/lib/python*/site-packages
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}

Expand Down
31 changes: 27 additions & 4 deletions .github/workflows/release_branch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,15 @@ jobs:
runs-on: ubuntu-latest
steps:

- uses: actions/checkout@v3
- uses: actions/cache@v4
with:
key: ${{ runner.os }}-mkdocs-${{ hashFiles('**/*.gradle*', '**/gradle*.properties') }}
restore-keys: ${{ runner.os }}-mkdocs-
path: |
~/.local/bin
~/.local/lib/python*/site-packages
- uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}

Expand All @@ -19,11 +27,26 @@ jobs:
github-token: ${{ secrets.GITHUB_TOKEN }}
cache: gradle

- env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
export REMOTE="https://$GITHUB_ACTOR:[email protected]/$GITHUB_REPOSITORY.git"
git remote set-url origin "$REMOTE"
git clone "$REMOTE" --branch gh-pages build/gh-pages
./gradlew build
./gradlew -x build buildSite
ls -AlF site/build/site
- env:
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
SIGNING_KEY: ${{ secrets.SIGNING_KEY }}
SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }}
run: |
./gradlew build
./gradlew --no-daemon -x test release
run: ./gradlew --no-daemon -x test release

- run: |
cp -rf site/build/site/* build/gh-pages/
cd build/gh-pages
git add --all
git commit -m "Publishing to gh-pages"
git push origin gh-pages
4 changes: 2 additions & 2 deletions .github/workflows/site.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,15 @@ jobs:
defaults:
run: { shell: bash }
steps:
- uses: actions/cache@v3
- uses: actions/cache@v4
with:
key: ${{ runner.os }}-mkdocs-${{ hashFiles('**/*.gradle*', '**/gradle*.properties') }}
restore-keys: ${{ runner.os }}-mkdocs-
path: |
~/.local/bin
~/.local/lib/python*/site-packages
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
ref: ${{ inputs.ref }}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ internal class MediaTypesTest {
@Test fun `Parse correct media types`() {
MediaType("*/*").apply {
assertEquals(ANY, group)
assertEquals("any", group.text)
assertEquals("*", type)
assertEquals("*/*", fullType)

}

MediaType("text/plain").apply {
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ org.gradle.warning.mode=all
org.gradle.console=plain

# Gradle
version=3.6.0
version=3.6.1
group=com.hexagonkt
description=The atoms of your platform

Expand Down
2 changes: 1 addition & 1 deletion gradle/kotlin.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ repositories {
}

dependencies {
final String scriptJunitVersion = findProperty("junitVersion") ?: "5.10.2"
final String scriptJunitVersion = findProperty("junitVersion") ?: "5.10.3"

implementation("org.jetbrains.kotlin:kotlin-stdlib")

Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-all.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
10 changes: 10 additions & 0 deletions http/http/src/test/kotlin/com/hexagonkt/http/HttpTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,16 @@ import kotlin.test.assertTrue

internal class HttpTest {

@Test fun `Format query string with empty keys`() {
assertEquals("", formatQueryString(QueryParameters(QueryParameter("", 1))))
assertEquals("", formatQueryString(QueryParameters(QueryParameter(" ", 1))))
}

@Test fun `Basic auth is encoded correctly`() {
assertEquals("YTo", basicAuth("a"))
assertEquals("YTpi", basicAuth("a", "b"))
}

@Test fun `Format query string`() {
fun testParseFormat(expected: String, queryString: String) {
assertEquals(expected, formatQueryString(parseQueryString(queryString)))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.hexagonkt.http.model

import com.hexagonkt.http.model.CookieSameSite.*
import org.junit.jupiter.api.Assertions.assertFalse
import org.junit.jupiter.api.Test
import kotlin.IllegalArgumentException
Expand All @@ -20,6 +21,10 @@ internal class CookieTest {
assertEquals(5, cookie.maxAge)
assertTrue(cookie.secure)
assertFalse(cookie.deleted)

assertEquals(LAX, cookie.copy(sameSite = LAX).sameSite)
assertEquals(NONE, cookie.copy(sameSite = NONE).sameSite)
assertEquals(STRICT, cookie.copy(sameSite = STRICT).sameSite)
}

@Test fun `Cookie can be deleted`() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@ import com.hexagonkt.serialization.serialize

class SerializeRequestCallback : HttpCallback {

init {
check(SerializationManager.formats.isNotEmpty()) {
"Serialization callbacks require at least one registered format"
}
}

override fun invoke(context: HttpContext): HttpContext {
val requestBody = context.request.body

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@ import com.hexagonkt.serialization.serialize

class SerializeResponseCallback: HttpCallback {

init {
check(SerializationManager.formats.isNotEmpty()) {
"Serialization callbacks require at least one registered format"
}
}

override fun invoke(context: HttpContext): HttpContext {
val responseBody = context.response.body

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,25 @@ import com.hexagonkt.serialization.SerializationManager
import com.hexagonkt.serialization.jackson.json.Json
import org.junit.jupiter.api.Test
import kotlin.test.assertEquals
import kotlin.test.assertFailsWith
import kotlin.test.assertSame

internal class SerializeRequestCallbackTest {

private val callback = SerializeRequestCallback()
private val callback by lazy { SerializeRequestCallback() }

@Test fun `Serialization callback fails if no formats are defined`() {
val formats = SerializationManager.formats

SerializationManager.formats = emptySet()
val e = assertFailsWith<IllegalStateException> { SerializeRequestCallback() }
assertEquals("Serialization callbacks require at least one registered format", e.message)

SerializationManager.formats = formats
}

@Test fun `Serialize empty request callback creates the proper response`() {
SerializationManager.formats = setOf(Json)
val stringContext = HttpContext().send(body = "")
assertSame(stringContext, callback(stringContext))

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,25 @@ import com.hexagonkt.serialization.SerializationManager
import com.hexagonkt.serialization.jackson.json.Json
import org.junit.jupiter.api.Test
import kotlin.test.assertEquals
import kotlin.test.assertFailsWith
import kotlin.test.assertSame

internal class SerializeResponseCallbackTest {

private val callback = SerializeResponseCallback()
private val callback by lazy { SerializeResponseCallback() }

@Test fun `Serialization callback fails if no formats are defined`() {
val formats = SerializationManager.formats

SerializationManager.formats = emptySet()
val e = assertFailsWith<IllegalStateException> { SerializeResponseCallback() }
assertEquals("Serialization callbacks require at least one registered format", e.message)

SerializationManager.formats = formats
}

@Test fun `Serialize empty response callback creates the proper response`() {
SerializationManager.formats = setOf(Json)
val stringContext = HttpContext().send(body = "")
assertSame(stringContext, callback(stringContext))

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ class DynamicHttpServerTest {
private val dynamicServer: DynamicHttpServer = DynamicHttpServer(JettyServletAdapter())

@BeforeAll fun `Set up mock services`() {
SerializationManager.formats = setOf(Json)
dynamicServer.start()
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import com.hexagonkt.http.model.HttpMethod.PUT
import com.hexagonkt.http.model.HttpResponsePort
import com.hexagonkt.http.model.OK_200
import com.hexagonkt.http.server.jetty.JettyServletAdapter
import com.hexagonkt.serialization.SerializationManager
import com.hexagonkt.serialization.jackson.json.Json
import org.junit.jupiter.api.AfterAll
import org.junit.jupiter.api.BeforeAll
import org.junit.jupiter.api.Test
Expand All @@ -22,6 +24,7 @@ internal class StateHttpClientTest {
private val text = ContentType(TEXT_PLAIN)

@BeforeAll fun `Set up mock services`() {
SerializationManager.formats = setOf(Json)
server.start()
}

Expand Down
2 changes: 1 addition & 1 deletion serverless/serverless_http_google/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ plugins {
}

apply(from = "$rootDir/gradle/kotlin.gradle")
//apply(from = "$rootDir/gradle/publish.gradle")
apply(from = "$rootDir/gradle/publish.gradle")
apply(from = "$rootDir/gradle/dokka.gradle")
apply(from = "$rootDir/gradle/detekt.gradle")

Expand Down
20 changes: 10 additions & 10 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,21 @@ dependencyResolutionManagement {
versionCatalogs {
create("libs") {
// Build
version("kotlin", "2.0.0")
version("kotlin", "2.0.20-RC")
version("dokka", "1.9.20")
version("licenseReport", "2.8")
version("binValidator", "0.15.0-Beta.2")
version("binValidator", "0.16.3")
version("nativeTools", "0.10.2")
version("detekt", "1.23.6")
version("jmhGradle", "0.7.2")
version("gradleWrapper", "8.8")
version("mkdocsMaterial", "9.5.27")
version("gradleWrapper", "8.9")
version("mkdocsMaterial", "9.5.31")
version("mermaidDokka", "0.6.0")
version("maven", "3.9.8")

// Testing
version("junit", "5.10.2")
version("mockk", "1.13.11")
version("junit", "5.10.3")
version("mockk", "1.13.12")
// TODO Latest version breaks stress test (consider using JMeter)
//version("gatling", "3.11.3")
version("gatling", "3.10.5")
Expand All @@ -43,21 +43,21 @@ dependencyResolutionManagement {
version("slf4j", "2.0.13")

// http_server_netty
version("netty", "4.1.111.Final")
version("netty", "4.1.112.Final")
version("nettyTcNative", "2.0.65.Final")

// http_server_helidon
version("helidon", "4.0.10")
version("helidon", "4.0.11")

// http_server_servlet
version("servlet", "6.0.0")
version("jetty", "12.0.10")
version("jetty", "12.0.12")

// rest_tools
version("swaggerRequestValidator", "2.41.0")

// serialization
version("jackson", "2.17.1")
version("jackson", "2.17.2")
version("dslJson", "2.0.2")

// serverless_http_google
Expand Down
1 change: 1 addition & 0 deletions site/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ tasks.register("installMkDocs") {
exec { commandLine("python -m venv $venv".split(" ")) }
exec { commandLine("$venv/bin/pip install mkdocs-material==$mkdocsMaterialVersion".split(" ")) }
exec { commandLine("$venv/bin/pip install mkdocs-htmlproofer-plugin".split(" ")) }
exec { commandLine("$venv/bin/pip install mike".split(" ")) }
}
}

Expand Down
5 changes: 4 additions & 1 deletion site/mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
dev_addr: 127.0.0.1:8000

site_name: Hexagon
site_url: https://hexagontk.com
site_url: https://hexagontk.com/
site_author: Hexagon Toolkit
site_dir: build/site
site_description: The atoms of your platform
Expand Down Expand Up @@ -129,6 +129,9 @@ extra:
provider: google
property: G-BEKWF2E4DJ

# version:
# provider: mike

twitter_user: hexagontk
social:
- icon: fontawesome/brands/github
Expand Down
3 changes: 1 addition & 2 deletions site/pages/gradle.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ IDEs.
## Icons
Create web icons (favicon and thumbnails for browsers/mobile) from SVG images (logos).

For image rendering you will need [rsvg] (librsvg2-bin) and [imagemagick] installed in the
For image rendering you will need [rsvg] (librsvg2-bin) and `imagemagick` installed in the
development machine.

To use it, apply `$gradleScripts/icons.gradle` to your `build.gradle.kts`.
Expand All @@ -81,7 +81,6 @@ To set up this script's parameters, check the [build variables section]. These h
* iconsDirectory: directory inside `build` where icons will be generated. The default is `icons`.

[rsvg]: https://github.com/GNOME/librsvg
[imagemagick]: https://imagemagick.org/index.php

## Kotlin
Adds Kotlin's Gradle plugin.
Expand Down

0 comments on commit 45e6c3c

Please sign in to comment.