test: add integration tests for all feasible language runtimes in CI (#7849)
* test: add integration tests for all feasible language runtimes in CI Add integration tests and CI setup for languages that were previously untested. Each test runs a simple "hello world" job through the full worker pipeline to verify end-to-end execution. New language tests added to worker.rs: - Nativets (4 tests): basic string, numeric args, object return, datetime - Bunnative: TypeScript execution via Bun native runtime - CSharp: .NET compilation and execution (feature-gated) - PHP: PHP script execution (feature-gated) - Ruby: Ruby script execution (feature-gated) - MySQL: SQL query via async MySQL client (feature-gated) - PowerShell: pwsh script execution - PostgreSQL: SQL query against test database CI changes (backend-test.yml): - Add MySQL 8.0 service container - Add setup-php (8.3 + composer), setup-ruby (3.3), pwsh install - Enable feature flags: csharp, php, ruby, mysql - Pass language binary paths: PHP_PATH, COMPOSER_PATH, RUBY_PATH, BUNDLE_PATH, GEM_PATH, POWERSHELL_PATH, DOTNET_PATH - Uncomment and modernize CSharp test (was commented out) - Increase test timeout 16m -> 20m for additional runtimes Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * sqlx --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
28
.github/workflows/backend-test.yml
vendored
28
.github/workflows/backend-test.yml
vendored
@@ -31,6 +31,16 @@ jobs:
|
||||
options: >-
|
||||
--health-cmd pg_isready --health-interval 10s --health-timeout 5s
|
||||
--health-retries 5
|
||||
mysql:
|
||||
image: mysql:8.0
|
||||
ports:
|
||||
- 3306:3306
|
||||
env:
|
||||
MYSQL_ROOT_PASSWORD: changeme
|
||||
MYSQL_DATABASE: windmill_test
|
||||
options: >-
|
||||
--health-cmd "mysqladmin ping -h localhost" --health-interval 10s
|
||||
--health-timeout 5s --health-retries 5
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-dotnet@v4
|
||||
@@ -51,6 +61,18 @@ jobs:
|
||||
- uses: astral-sh/setup-uv@v6.2.1
|
||||
with:
|
||||
version: "0.9.24"
|
||||
- uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: '8.3'
|
||||
tools: composer
|
||||
- uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: '3.3'
|
||||
bundler-cache: false
|
||||
- name: Install PowerShell
|
||||
run: |
|
||||
sudo apt-get update && sudo apt-get install -y powershell
|
||||
working-directory: /
|
||||
- uses: actions-rust-lang/setup-rust-toolchain@v1
|
||||
with:
|
||||
cache-workspaces: backend
|
||||
@@ -183,7 +205,7 @@ jobs:
|
||||
restore-keys: |
|
||||
${{ runner.os }}-duckdb-ffi-
|
||||
- name: cargo test
|
||||
timeout-minutes: 16
|
||||
timeout-minutes: 20
|
||||
env:
|
||||
SQLX_OFFLINE: true
|
||||
DATABASE_URL: postgres://postgres:changeme@localhost:5432/windmill
|
||||
@@ -196,6 +218,6 @@ jobs:
|
||||
WMDEBUG_FORCE_NO_LEGACY_DEBOUNCING_COMPAT: 1
|
||||
TEST_NPM_REGISTRY: "http://localhost:4873/:_authToken=${{ env.NPM_TOKEN }}"
|
||||
run: |
|
||||
deno --version && bun -v && node --version && go version && python3 --version
|
||||
deno --version && bun -v && node --version && go version && python3 --version && php --version && ruby --version && pwsh --version && dotnet --version
|
||||
cd windmill-duckdb-ffi-internal && ./build_dev.sh && cd ..
|
||||
DENO_PATH=$(which deno) BUN_PATH=$(which bun) NODE_BIN_PATH=$(which node) GO_PATH=$(which go) UV_PATH=$(which uv) cargo test --features enterprise,deno_core,duckdb,license,python,rust,scoped_cache,parquet,private,private_registry_test --all -- --nocapture
|
||||
DENO_PATH=$(which deno) BUN_PATH=$(which bun) NODE_BIN_PATH=$(which node) GO_PATH=$(which go) UV_PATH=$(which uv) PHP_PATH=$(which php) COMPOSER_PATH=$(which composer) RUBY_PATH=$(which ruby) BUNDLE_PATH=$(which bundle) GEM_PATH=$(which gem) POWERSHELL_PATH=$(which pwsh) DOTNET_PATH=$(which dotnet) cargo test --features enterprise,deno_core,duckdb,license,python,rust,scoped_cache,parquet,private,private_registry_test,csharp,php,ruby,mysql --all -- --nocapture
|
||||
|
||||
Reference in New Issue
Block a user