From 545260e9a41a1853022c595699b0a59f34ce3005 Mon Sep 17 00:00:00 2001 From: Oguz Kocer Date: Thu, 27 Nov 2025 11:05:40 -0500 Subject: [PATCH 1/5] Update WordPress version to 6.9-RC3 for testing Test against WordPress 6.9 Release Candidate 3 to identify any compatibility issues before the stable release. Changes: - Update Buildkite pipeline matrix to 6.9-RC3 - Update docker-compose.yml default to 6.9-RC3 - Update wordpress.Dockerfile default to 6.9-RC3 --- .buildkite/pipeline.yml | 2 +- docker-compose.yml | 2 +- wordpress.Dockerfile | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 0600533d1..938e3236f 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -17,7 +17,7 @@ common_params: # - '6.4' # - '6.5' # - '6.6' - - '6.8.1' + - '6.9-RC3' steps: # diff --git a/docker-compose.yml b/docker-compose.yml index 0255b146e..6fe1a0344 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,7 +4,7 @@ services: context: . dockerfile: wordpress.Dockerfile args: - WORDPRESS_VERSION: ${WORDPRESS_VERSION:-6.8.1} + WORDPRESS_VERSION: ${WORDPRESS_VERSION:-6.9-RC3} container_name: 'wordpress' ports: - '80:80' diff --git a/wordpress.Dockerfile b/wordpress.Dockerfile index 60694f177..fe736db23 100644 --- a/wordpress.Dockerfile +++ b/wordpress.Dockerfile @@ -1,4 +1,4 @@ -ARG WORDPRESS_VERSION="6.8.1" +ARG WORDPRESS_VERSION="6.9-RC3" FROM public.ecr.aws/docker/library/wordpress:${WORDPRESS_VERSION} From 4c7f94ac91719be0286931ab2ab126303de64440 Mon Sep 17 00:00:00 2001 From: Oguz Kocer Date: Thu, 27 Nov 2025 11:14:51 -0500 Subject: [PATCH 2/5] Fix WordPress 6.9-RC3 Docker image tag and source The RC tags use the `beta-` prefix and aren't mirrored to ECR. Changes: - Use correct tag format `beta-6.9-RC3` - Switch to Docker Hub since ECR doesn't mirror beta/RC tags --- .buildkite/pipeline.yml | 2 +- docker-compose.yml | 2 +- wordpress.Dockerfile | 5 +++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 938e3236f..c1b0e970f 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -17,7 +17,7 @@ common_params: # - '6.4' # - '6.5' # - '6.6' - - '6.9-RC3' + - 'beta-6.9-RC3' steps: # diff --git a/docker-compose.yml b/docker-compose.yml index 6fe1a0344..fd47313c7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,7 +4,7 @@ services: context: . dockerfile: wordpress.Dockerfile args: - WORDPRESS_VERSION: ${WORDPRESS_VERSION:-6.9-RC3} + WORDPRESS_VERSION: ${WORDPRESS_VERSION:-beta-6.9-RC3} container_name: 'wordpress' ports: - '80:80' diff --git a/wordpress.Dockerfile b/wordpress.Dockerfile index fe736db23..48cf01b46 100644 --- a/wordpress.Dockerfile +++ b/wordpress.Dockerfile @@ -1,6 +1,7 @@ -ARG WORDPRESS_VERSION="6.9-RC3" +ARG WORDPRESS_VERSION="beta-6.9-RC3" -FROM public.ecr.aws/docker/library/wordpress:${WORDPRESS_VERSION} +# Using Docker Hub directly since ECR doesn't mirror beta/RC tags +FROM docker.io/library/wordpress:${WORDPRESS_VERSION} RUN apt-get update \ && apt-get install -y wget gpg From 2e17892e957dbc7c568050f0fd3018e098ea1750 Mon Sep 17 00:00:00 2001 From: Jeremy Massel <1123407+jkmassel@users.noreply.github.com> Date: Thu, 27 Nov 2025 10:05:56 -0700 Subject: [PATCH 3/5] Fix swift toolchain --- wordpress.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wordpress.Dockerfile b/wordpress.Dockerfile index 48cf01b46..5ef7c3fd9 100644 --- a/wordpress.Dockerfile +++ b/wordpress.Dockerfile @@ -63,7 +63,7 @@ ENV PATH="/root/.local/share/swiftly/bin:$PATH" RUN curl -s -o swiftly.tar.gz "https://download.swift.org/swiftly/linux/swiftly-$(uname -m).tar.gz" \ && tar zxf swiftly.tar.gz \ && rm swiftly.tar.gz \ - && ./swiftly init --assume-yes --skip-install + && ./swiftly init --assume-yes --skip-install --platform debian12 RUN apt-get update \ && apt-get -y -qq install libicu-dev libcurl4-openssl-dev libedit-dev libsqlite3-dev \ libncurses-dev libpython3-dev libxml2-dev uuid-dev git libstdc++-12-dev From 720376881b0a684dd765398301979990e07c9e5e Mon Sep 17 00:00:00 2001 From: Oguz Kocer Date: Fri, 28 Nov 2025 11:01:39 -0500 Subject: [PATCH 4/5] Use JsonValue for post type supports field WordPress 6.9 returns post type supports as either bool or array, so we use JsonValue wrapped in PostTypeSupportsValue for flexibility. Changes: - Add PostTypeSupportsValue type wrapping JsonValue - Update PostTypeSupportsMap to use Arc - Update test assertion to use as_json_bool() method --- wp_api/src/post_types.rs | 26 +++++++++++++++++-- .../tests/test_post_types_immut.rs | 8 ++++-- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/wp_api/src/post_types.rs b/wp_api/src/post_types.rs index b905d5c50..370ba0be6 100644 --- a/wp_api/src/post_types.rs +++ b/wp_api/src/post_types.rs @@ -1,7 +1,8 @@ -use crate::impl_as_query_value_from_to_string; +use crate::{JsonValue, impl_as_query_value_from_to_string}; use serde::{Deserialize, Serialize}; use std::collections::HashMap; use std::str::FromStr; +use std::sync::Arc; use wp_contextual::WpContextual; use wp_serde_helper::deserialize_empty_array_or_hashmap; @@ -97,7 +98,28 @@ pub struct PostTypeSupportsMap { #[serde(deserialize_with = "deserialize_empty_array_or_hashmap")] #[serde(flatten)] #[serde(rename = "supports")] - pub map: HashMap, + pub map: HashMap>, +} + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, uniffi::Object)] +#[serde(transparent)] +pub struct PostTypeSupportsValue { + #[serde(flatten)] + pub json_value: JsonValue, +} + +#[uniffi::export] +impl PostTypeSupportsValue { + fn as_json_value(&self) -> JsonValue { + self.json_value.clone() + } + + pub fn as_json_bool(&self) -> Option { + match self.json_value { + JsonValue::Bool(b) => Some(b), + _ => None, + } + } } #[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize, uniffi::Record)] diff --git a/wp_api_integration_tests/tests/test_post_types_immut.rs b/wp_api_integration_tests/tests/test_post_types_immut.rs index 140cba347..7c142acf8 100644 --- a/wp_api_integration_tests/tests/test_post_types_immut.rs +++ b/wp_api_integration_tests/tests/test_post_types_immut.rs @@ -93,8 +93,12 @@ async fn retrieve_post_types_with_edit_context( // post types might not support `Title` in which case it's perfectly fine to completely // remove this assertion. assert_eq!( - post_type.supports.map.get(&PostTypeSupports::Title), - Some(true).as_ref() + post_type + .supports + .map + .get(&PostTypeSupports::Title) + .and_then(|v| v.as_json_bool()), + Some(true) ); // All post types in our current testing sites have `EditPost` capability, so we use this // assertion to verify that we are able to parse `capabilities` field properly. From 59e2f409ace4a917ad2b207c75e8589329aed4bd Mon Sep 17 00:00:00 2001 From: Oguz Kocer Date: Fri, 28 Nov 2025 14:27:37 -0500 Subject: [PATCH 5/5] Update Kotlin test to use asJsonBool() for post type supports --- .../kotlin/src/integrationTest/kotlin/PostTypesEndpointTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/native/kotlin/api/kotlin/src/integrationTest/kotlin/PostTypesEndpointTest.kt b/native/kotlin/api/kotlin/src/integrationTest/kotlin/PostTypesEndpointTest.kt index f954e8037..201d653f4 100644 --- a/native/kotlin/api/kotlin/src/integrationTest/kotlin/PostTypesEndpointTest.kt +++ b/native/kotlin/api/kotlin/src/integrationTest/kotlin/PostTypesEndpointTest.kt @@ -26,7 +26,7 @@ class PostTypesEndpointTest { val postTypesPost = client.request { requestBuilder -> requestBuilder.postTypes().retrieveWithEditContext(PostType.Post) }.assertSuccessAndRetrieveData().data - assert(postTypesPost.supports.map[PostTypeSupports.Title]!!) + assert(postTypesPost.supports.map[PostTypeSupports.Title]!!.asJsonBool()!!) assertFalse(postTypesPost.capabilities[PostTypeCapabilities.EditPosts]!!.isEmpty()) }