This is an automated email from the ASF dual-hosted git repository. agrove pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/datafusion-comet.git
The following commit(s) were added to refs/heads/main by this push: new 65bbe4314 build: Check that all Scala test suites run in PR builds (#2304) 65bbe4314 is described below commit 65bbe43140f822836131f798b35a18ecb6e3a07e Author: Andy Grove <agr...@apache.org> AuthorDate: Tue Sep 9 22:06:19 2025 -0700 build: Check that all Scala test suites run in PR builds (#2304) --- .github/workflows/pr_build_macos.yml | 1 + .github/workflows/pr_missing_suites.yml | 30 +++++++++++++++++ dev/ci/check-suites.py | 59 +++++++++++++++++++++++++++++++++ 3 files changed, 90 insertions(+) diff --git a/.github/workflows/pr_build_macos.yml b/.github/workflows/pr_build_macos.yml index 36b2db5e1..6c71006e5 100644 --- a/.github/workflows/pr_build_macos.yml +++ b/.github/workflows/pr_build_macos.yml @@ -112,6 +112,7 @@ jobs: org.apache.spark.sql.comet.CometTaskMetricsSuite org.apache.comet.CometBitwiseExpressionSuite org.apache.comet.CometMapExpressionSuite + org.apache.comet.objectstore.NativeConfigSuite fail-fast: false name: ${{ matrix.os }}/${{ matrix.profile.name }} [${{ matrix.suite.name }}] runs-on: ${{ matrix.os }} diff --git a/.github/workflows/pr_missing_suites.yml b/.github/workflows/pr_missing_suites.yml new file mode 100644 index 000000000..0966e8c03 --- /dev/null +++ b/.github/workflows/pr_missing_suites.yml @@ -0,0 +1,30 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +name: Check that all test suites are added to PR workflows + +on: + pull_request: + types: [opened, edited, reopened] + +jobs: + check-missing-suites: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - name: Check Missing Suites + run: python3 dev/ci/check-suites.py diff --git a/dev/ci/check-suites.py b/dev/ci/check-suites.py new file mode 100644 index 000000000..62bcd77b5 --- /dev/null +++ b/dev/ci/check-suites.py @@ -0,0 +1,59 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +import sys +from pathlib import Path + +def file_to_class_name(path: Path) -> str | None: + parts = path.parts + if "org" not in parts or "apache" not in parts: + return None + org_index = parts.index("org") + package_parts = parts[org_index:] + class_name = ".".join(package_parts) + class_name = class_name.replace(".scala", "") + return class_name + +if __name__ == "__main__": + + # ignore traits, abstract classes, and intentionally skipped test suites + ignore_list = [ + "org.apache.comet.parquet.ParquetReadSuite", # abstract + "org.apache.comet.parquet.ParquetReadFromS3Suite", # manual test suite + "org.apache.spark.sql.comet.CometPlanStabilitySuite", # abstract + "org.apache.spark.sql.comet.ParquetDatetimeRebaseSuite", # abstract + "org.apache.comet.exec.CometColumnarShuffleSuite", # abstract + # TODO add CometToPrettyStringSuite to PR worklows + # https://github.com/apache/datafusion-comet/issues/2307 + "org.apache.spark.sql.CometToPrettyStringSuite" + ] + + for workflow_filename in [".github/workflows/pr_build_linux.yml", ".github/workflows/pr_build_macos.yml"]: + workflow = open(workflow_filename, encoding="utf-8").read() + + root = Path(".") + for path in root.rglob("*Suite.scala"): + class_name = file_to_class_name(path) + if class_name: + if "Shim" in class_name: + continue + if class_name in ignore_list: + continue + if class_name not in workflow: + print(f"Suite not found in workflow {workflow_filename}: {class_name}") + sys.exit(-1) + print(f"Found {class_name} in {workflow_filename}") --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@datafusion.apache.org For additional commands, e-mail: commits-h...@datafusion.apache.org