From d24fab896744d5d104727a88aca0f66b1dddfd83 Mon Sep 17 00:00:00 2001 From: Garrett Gu Date: Tue, 6 Aug 2024 15:08:02 -0500 Subject: [PATCH] refactor bazel test setup --- src/workerd/server/tests/python/BUILD.bazel | 42 ++++++++----------- .../server/tests/python/import_tests.bzl | 8 ++-- .../tests/python/langchain/langchain.wd-test | 23 ---------- .../server/tests/python/langchain/worker.py | 12 ------ .../server/tests/python/py_wd_test.bzl | 19 +++++++++ 5 files changed, 41 insertions(+), 63 deletions(-) delete mode 100644 src/workerd/server/tests/python/langchain/langchain.wd-test delete mode 100644 src/workerd/server/tests/python/langchain/worker.py create mode 100644 src/workerd/server/tests/python/py_wd_test.bzl diff --git a/src/workerd/server/tests/python/BUILD.bazel b/src/workerd/server/tests/python/BUILD.bazel index 97a212360f5..2f9d85c9966 100644 --- a/src/workerd/server/tests/python/BUILD.bazel +++ b/src/workerd/server/tests/python/BUILD.bazel @@ -1,67 +1,61 @@ load("//:build/wd_test.bzl", "wd_test") +load("//src/workerd/server/tests/python:py_wd_test.bzl", "py_wd_test") + load("@bazel_skylib//rules:copy_file.bzl", "copy_file") +# pyodide-dev.capnp.bin represents a custom pyodide version "dev" that is generated +# at build time using the latest contents of the src/pyodide directory. +# This is used to run tests to ensure that they are always run against the latest build of +# the Pyodide bundle. copy_file( name = "pyodide-dev.capnp.bin@rule", src = "//src/pyodide:pyodide.capnp.bin", out = "pyodide-bundle-cache/pyodide-dev.capnp.bin" ) -wd_test( +py_wd_test( src = "hello/hello.wd-test", - args = ["--experimental", "--pyodide-bundle-disk-cache-dir", "$(location pyodide-dev.capnp.bin@rule)/.."], + args = ["--experimental"], data = glob( [ "hello/*", ], exclude = ["**/*.wd-test"], - ) + ["pyodide-dev.capnp.bin@rule"], + ), ) -wd_test( +py_wd_test( src = "env-param/env.wd-test", - args = ["--experimental", "--pyodide-bundle-disk-cache-dir", "$(location pyodide-dev.capnp.bin@rule)/.."], + args = ["--experimental"], data = glob( [ "env-param/*", ], exclude = ["**/*.wd-test"], - ) + ["pyodide-dev.capnp.bin@rule"], + ), ) -wd_test( +py_wd_test( src = "random/random.wd-test", - args = ["--experimental", "--pyodide-bundle-disk-cache-dir", "$(location pyodide-dev.capnp.bin@rule)/.."], + args = ["--experimental"], data = glob( [ "random/*", ], exclude = ["**/*.wd-test"], - ) + ["pyodide-dev.capnp.bin@rule"], + ), ) -# Disabled because it tests the same thing as the import test defined in import_tests.bzl -# wd_test( -# src = "langchain/langchain.wd-test", -# args = ["--experimental", "--pyodide-package-disk-cache-dir", "../all_pyodide_wheels", "--pyodide-bundle-disk-cache-dir", "$(location pyodide-dev.capnp.bin@rule)/.."], -# data = glob( -# [ -# "langchain/*", -# ], -# exclude = ["**/*.wd-test"], -# ) + ["@all_pyodide_wheels//:whls", "pyodide-dev.capnp.bin@rule"], -# ) - -wd_test( +py_wd_test( src = "subdirectory/subdirectory.wd-test", - args = ["--experimental", "--pyodide-bundle-disk-cache-dir", "$(location pyodide-dev.capnp.bin@rule)/.."], + args = ["--experimental"], data = glob( [ "subdirectory/**", ], exclude = ["**/*.wd-test"], - ) + ["pyodide-dev.capnp.bin@rule"], + ), ) load("//src/workerd/server/tests/python:import_tests.bzl", "gen_import_tests") diff --git a/src/workerd/server/tests/python/import_tests.bzl b/src/workerd/server/tests/python/import_tests.bzl index a5b65f4c7c8..850dc807be8 100644 --- a/src/workerd/server/tests/python/import_tests.bzl +++ b/src/workerd/server/tests/python/import_tests.bzl @@ -1,6 +1,6 @@ load("@bazel_skylib//rules:write_file.bzl", "write_file") -load("//:build/wd_test.bzl", "wd_test") +load("//src/workerd/server/tests/python:py_wd_test.bzl", "py_wd_test") def generate_import_py_file(imports): res = "" @@ -54,9 +54,9 @@ def gen_import_tests(to_test): tags = ["slow"], ) - wd_test( + py_wd_test( src = wd_test_fname, - args = ["--experimental", "--pyodide-package-disk-cache-dir", "../all_pyodide_wheels", "--pyodide-bundle-disk-cache-dir", "$(location pyodide-dev.capnp.bin@rule)/.."], - data = [worker_py_fname, "@all_pyodide_wheels//:whls", "pyodide-dev.capnp.bin@rule"], + args = ["--experimental", "--pyodide-package-disk-cache-dir", "../all_pyodide_wheels"], + data = [worker_py_fname, "@all_pyodide_wheels//:whls"], tags = ["slow"], ) diff --git a/src/workerd/server/tests/python/langchain/langchain.wd-test b/src/workerd/server/tests/python/langchain/langchain.wd-test deleted file mode 100644 index 39c617f0f73..00000000000 --- a/src/workerd/server/tests/python/langchain/langchain.wd-test +++ /dev/null @@ -1,23 +0,0 @@ -using Workerd = import "/workerd/workerd.capnp"; - -const unitTests :Workerd.Config = ( - services = [ - ( name = "python-langchain", - worker = ( - modules = [ - (name = "worker.py", pythonModule = embed "./worker.py"), - (name = "aiohttp", pythonRequirement = "aiohttp"), - (name = "ssl", pythonRequirement = "ssl"), - (name = "langchain_core", pythonRequirement = ""), - (name = "langchain_openai", pythonRequirement = ""), - ], - compatibilityDate = "2024-01-15", - compatibilityFlags = ["python_workers"], - ) - ), - ], - - autogates = [ - "workerd-autogate-pyodide-load-external", - ] -); diff --git a/src/workerd/server/tests/python/langchain/worker.py b/src/workerd/server/tests/python/langchain/worker.py deleted file mode 100644 index 7b1ab338055..00000000000 --- a/src/workerd/server/tests/python/langchain/worker.py +++ /dev/null @@ -1,12 +0,0 @@ -""" -This just tests that we can import all the dependencies and set up the -ChatOpenAI session. We don't make any requests here, so it doesn't check that -part. - -TODO: update this to test that something happened -""" - -def test(): - from langchain_core.prompts import PromptTemplate - from langchain_openai import OpenAI - diff --git a/src/workerd/server/tests/python/py_wd_test.bzl b/src/workerd/server/tests/python/py_wd_test.bzl new file mode 100644 index 00000000000..3c768cadee9 --- /dev/null +++ b/src/workerd/server/tests/python/py_wd_test.bzl @@ -0,0 +1,19 @@ +load("//:build/wd_test.bzl", "wd_test") + +def py_wd_test( + src, + data = [], + name = None, + args = [], + **kwargs +): + data += ["pyodide-dev.capnp.bin@rule"] + args += ["--pyodide-bundle-disk-cache-dir", "$(location pyodide-dev.capnp.bin@rule)/.."] + + wd_test( + src = src, + data = data, + name = name, + args = args, + **kwargs + )