From 6c90b1c3ec6836a8487ad8c3c593c67ee51e825e Mon Sep 17 00:00:00 2001 From: nathanbegbie Date: Tue, 4 Nov 2025 15:54:23 +1030 Subject: [PATCH 1/8] include new versions of elixir and OTP that we're running on engage --- .github/workflows/elixir.yml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/elixir.yml b/.github/workflows/elixir.yml index a2fd1ea9..ea558c1e 100644 --- a/.github/workflows/elixir.yml +++ b/.github/workflows/elixir.yml @@ -13,11 +13,19 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - elixir: ["1.15", "1.18"] - otp: ["26", "27"] + elixir: ["1.15", "1.18", "1.19"] + otp: ["26", "27", "28"] exclude: - elixir: "1.15" otp: "27" + - elixir: "1.15" + otp: "28" + - elixir: "1.18" + otp: "28" + - elixir: "1.19" + otp: "26" + - elixir: "1.19" + otp: "27" cache_version: ["3"] steps: From 2aa2647cb9a2058bdb38ec33b73ce1f6e159bd60 Mon Sep 17 00:00:00 2001 From: nathanbegbie Date: Tue, 4 Nov 2025 16:06:19 +1030 Subject: [PATCH 2/8] obey the machine spirits --- .github/workflows/elixir.yml | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/.github/workflows/elixir.yml b/.github/workflows/elixir.yml index ea558c1e..789b5c9b 100644 --- a/.github/workflows/elixir.yml +++ b/.github/workflows/elixir.yml @@ -13,19 +13,13 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - elixir: ["1.15", "1.18", "1.19"] - otp: ["26", "27", "28"] - exclude: + include: - elixir: "1.15" - otp: "27" - - elixir: "1.15" - otp: "28" - - elixir: "1.18" - otp: "28" - - elixir: "1.19" otp: "26" - - elixir: "1.19" + - elixir: "1.18" otp: "27" + - elixir: "1.19" + otp: "28" cache_version: ["3"] steps: From 3a53dc85b93df3e18333a5b813e6e783cfb06a54 Mon Sep 17 00:00:00 2001 From: nathanbegbie Date: Tue, 4 Nov 2025 16:08:23 +1030 Subject: [PATCH 3/8] document document document --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 0be10096..12e28926 100644 --- a/README.md +++ b/README.md @@ -156,3 +156,7 @@ version. Documentation can be generated with [ExDoc](https://github.com/elixir-lang/ex_doc) and published on [HexDocs](https://hexdocs.pm). Once published, the docs can be found at [https://hexdocs.pm/expression](https://hexdocs.pm/expression). + +## Testing & Compatibility + +We follow a diagonal testing strategy to ensure backward compatibility while keeping CI manageable. If you encounter issues with a specific version combination within our supported range, please open an issue. From 9c7ffe805370f3bf20224e6933e958e2b7565283 Mon Sep 17 00:00:00 2001 From: Simon de Haan Date: Thu, 8 Jan 2026 14:46:40 +0100 Subject: [PATCH 4/8] only check formatting against elixir 1.19 --- .github/workflows/elixir.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/elixir.yml b/.github/workflows/elixir.yml index 789b5c9b..1dcf58ce 100644 --- a/.github/workflows/elixir.yml +++ b/.github/workflows/elixir.yml @@ -16,10 +16,13 @@ jobs: include: - elixir: "1.15" otp: "26" + check_formatting: false - elixir: "1.18" otp: "27" + check_formatting: false - elixir: "1.19" otp: "28" + check_formatting: true cache_version: ["3"] steps: @@ -43,6 +46,7 @@ jobs: mix local.hex --force mix deps.get - name: Check Formatting + if: matrix.check_formatting run: mix format --check-formatted - name: Credo run: mix credo --strict From 545b644be4e4015b9e0a4c754298e195f3ca53fa Mon Sep 17 00:00:00 2001 From: Simon de Haan Date: Thu, 8 Jan 2026 14:47:42 +0100 Subject: [PATCH 5/8] default to elixir 1.19 --- .tool-versions | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.tool-versions b/.tool-versions index 8b6a3527..078af8ba 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,2 +1,2 @@ -elixir 1.18.1-otp-27 -erlang 27.0 +elixir 1.19.4-otp-28 +erlang 28.1 From ba526c6f538106527bd342bdf2216da1397d4fb5 Mon Sep 17 00:00:00 2001 From: Simon de Haan Date: Thu, 8 Jan 2026 14:54:12 +0100 Subject: [PATCH 6/8] fix test for elixir 1.19 formatter --- test/expression_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/expression_test.exs b/test/expression_test.exs index 2429c80d..d63edce7 100644 --- a/test/expression_test.exs +++ b/test/expression_test.exs @@ -601,7 +601,7 @@ defmodule ExpressionTest do }) end - assert_raise BadMapError, "expected a map, got: [\"A\", \"B\", \"C\"]", fn -> + assert_raise BadMapError, ~r/expected a map, got:.*\["A", "B", "C"\]/s, fn -> Expression.evaluate("@delete(map, \"key\")", %{ "map" => ["A", "B", "C"] }) From ad2fef8d62d17a95a81df82cbe17e1ab81dd5748 Mon Sep 17 00:00:00 2001 From: Simon de Haan Date: Thu, 8 Jan 2026 14:54:51 +0100 Subject: [PATCH 7/8] fix formatting --- test/expression/v2/parser_test.exs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/expression/v2/parser_test.exs b/test/expression/v2/parser_test.exs index 90e8e2e4..1692cecc 100644 --- a/test/expression/v2/parser_test.exs +++ b/test/expression/v2/parser_test.exs @@ -217,8 +217,8 @@ defmodule Expression.V2.ParserTest do "\nHi there ", [{"__property__", ["contact", "whatsapp_profile_name"]}], "\n\n*HANGMAN*)\n)\n" - ], "", _, _, - _} = Parser.parse("\nHi there @contact.whatsapp_profile_name\n\n*HANGMAN*)\n)\n") + ], "", _, _, _} = + Parser.parse("\nHi there @contact.whatsapp_profile_name\n\n*HANGMAN*)\n)\n") end end end From 37722456b01a0be8ad87ecce7dc9b1ad7029ff3c Mon Sep 17 00:00:00 2001 From: nathanbegbie Date: Thu, 8 Jan 2026 17:05:43 +0300 Subject: [PATCH 8/8] use latest Elixir versions in release CI process as well --- .github/workflows/releases.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml index a7e60618..6b2c4831 100644 --- a/.github/workflows/releases.yml +++ b/.github/workflows/releases.yml @@ -14,8 +14,8 @@ jobs: - name: Setup BEAM uses: erlef/setup-beam@v1 with: - elixir-version: "1.16" - otp-version: "26" + elixir-version: "1.19" + otp-version: "28" - name: Publish to Hex.pm run: | mix local.hex --force