diff --git a/.github/workflows/conformance.yml b/.github/workflows/conformance.yml index 9ae8a51e..03f27450 100644 --- a/.github/workflows/conformance.yml +++ b/.github/workflows/conformance.yml @@ -76,3 +76,12 @@ jobs: useBuildpacks: false validateConcurrency: true cmd: "'functions-framework --source tests/conformance/main.py --target write_http_declarative_concurrent'" + + - name: Run Typed tests declarative + uses: GoogleCloudPlatform/functions-framework-conformance/action@v1.6.0 + with: + version: 'v1.6.0' + functionType: 'http' + useBuildpacks: false + validateMapping: false + cmd: "'functions-framework --source tests/conformance/main.py --target write_typed_event_declarative'" diff --git a/tests/conformance/main.py b/tests/conformance/main.py index 67926ff6..057edaa7 100644 --- a/tests/conformance/main.py +++ b/tests/conformance/main.py @@ -8,6 +8,17 @@ filename = "function_output.json" +class ConformanceType: + json_request: str + + def __init__(self, json_request: str) -> None: + self.json_request = json_request + + @staticmethod + def from_dict(obj: dict) -> "ConformanceType": + return ConformanceType(json.dumps(obj)) + + def _write_output(content): with open(filename, "w") as f: f.write(content) @@ -53,3 +64,9 @@ def write_cloud_event_declarative(cloud_event): def write_http_declarative_concurrent(request): time.sleep(1) return "OK", 200 + + +@functions_framework.typed(ConformanceType) +def write_typed_event_declarative(x): + _write_output(x.json_request) + return "OK"