Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions .github/workflows/pr_build_linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -473,10 +473,7 @@ jobs:
org.apache.comet.parquet.CometParquetWriterSuite
org.apache.comet.parquet.CometEmptyRelationParquetWriterSuite
org.apache.comet.parquet.ParquetReadV1Suite
org.apache.comet.parquet.ParquetReadV2Suite
org.apache.comet.parquet.ParquetTimestampLtzAsNtzSuite
org.apache.spark.sql.comet.ParquetDatetimeRebaseV1Suite
org.apache.spark.sql.comet.ParquetDatetimeRebaseV2Suite
org.apache.spark.sql.comet.ParquetEncryptionITCase
org.apache.comet.exec.CometNativeReaderSuite
org.apache.comet.CometIcebergNativeSuite
Expand Down Expand Up @@ -510,9 +507,7 @@ jobs:
org.apache.spark.sql.comet.execution.shuffle.CometDiskBlockWriterSuite
org.apache.comet.exec.CometShuffleEncryptionSuite
org.apache.comet.exec.CometShuffleManagerSuite
org.apache.comet.exec.CometAsyncShuffleSuite
org.apache.comet.exec.DisableAQECometShuffleSuite
org.apache.comet.exec.DisableAQECometAsyncShuffleSuite
org.apache.spark.shuffle.comet.CometBoundedShuffleMemoryAllocatorSuite
org.apache.spark.shuffle.sort.SpillSorterSuite
- name: "exec"
Expand Down Expand Up @@ -579,7 +574,6 @@ jobs:
org.apache.comet.GenerateDocsSuite
org.apache.comet.CometSqlFileTestSuite
org.apache.comet.SqlFileTestParserSuite
org.apache.comet.CometExpressionCoverageSuite
org.apache.comet.CometVariantTypeSuite
org.apache.comet.CometHashExpressionSuite
org.apache.comet.CometTemporalExpressionSuite
Expand Down
6 changes: 0 additions & 6 deletions .github/workflows/pr_build_macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -121,10 +121,7 @@ jobs:
org.apache.comet.parquet.CometParquetWriterSuite
org.apache.comet.parquet.CometEmptyRelationParquetWriterSuite
org.apache.comet.parquet.ParquetReadV1Suite
org.apache.comet.parquet.ParquetReadV2Suite
org.apache.comet.parquet.ParquetTimestampLtzAsNtzSuite
org.apache.spark.sql.comet.ParquetDatetimeRebaseV1Suite
org.apache.spark.sql.comet.ParquetDatetimeRebaseV2Suite
org.apache.spark.sql.comet.ParquetEncryptionITCase
org.apache.comet.exec.CometNativeReaderSuite
org.apache.comet.CometIcebergNativeSuite
Expand Down Expand Up @@ -158,9 +155,7 @@ jobs:
org.apache.spark.sql.comet.execution.shuffle.CometDiskBlockWriterSuite
org.apache.comet.exec.CometShuffleEncryptionSuite
org.apache.comet.exec.CometShuffleManagerSuite
org.apache.comet.exec.CometAsyncShuffleSuite
org.apache.comet.exec.DisableAQECometShuffleSuite
org.apache.comet.exec.DisableAQECometAsyncShuffleSuite
org.apache.spark.shuffle.comet.CometBoundedShuffleMemoryAllocatorSuite
org.apache.spark.shuffle.sort.SpillSorterSuite
- name: "exec"
Expand Down Expand Up @@ -227,7 +222,6 @@ jobs:
org.apache.comet.GenerateDocsSuite
org.apache.comet.CometSqlFileTestSuite
org.apache.comet.SqlFileTestParserSuite
org.apache.comet.CometExpressionCoverageSuite
org.apache.comet.CometVariantTypeSuite
org.apache.comet.CometHashExpressionSuite
org.apache.comet.CometTemporalExpressionSuite
Expand Down
35 changes: 35 additions & 0 deletions dev/ci/check-suites.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
# specific language governing permissions and limitations
# under the License.

import re
import sys
from pathlib import Path

Expand Down Expand Up @@ -58,3 +59,37 @@ def file_to_class_name(path: Path) -> str | None:
print(f"Suite not found in workflow {workflow_filename}: {class_name}")
sys.exit(-1)
print(f"Found {class_name} in {workflow_filename}")

# Forward check: every suite named in a workflow must be declared in a source file.
# Filename-based discovery is not enough here, because several suites are declared
# inside a file named after a different class (e.g. CometShuffleSuite is declared in
# CometColumnarShuffleSuite.scala), and version-specific suites such as
# CometStringDecodeSuite live only in the spark-3.x sourceset.
declared = set()
suite_declaration = re.compile(
r"^\s*(?:(?:final|sealed|abstract|private|case)\s+)*(?:class|trait|object)\s+(\w*Suite)\b"
)
for path in Path(".").rglob("*.scala"):
if "target" in path.parts:
continue
class_name = file_to_class_name(path)
if class_name:
declared.add(class_name.rsplit(".", 1)[-1])
for line in path.read_text(encoding="utf-8", errors="ignore").splitlines():
match = suite_declaration.match(line)
if match:
declared.add(match.group(1))

listed_suite = re.compile(r"\borg\.apache\.[A-Za-z0-9_.]*Suite\b")
undeclared = []
for workflow_filename in [".github/workflows/pr_build_linux.yml", ".github/workflows/pr_build_macos.yml"]:
workflow = open(workflow_filename, encoding="utf-8").read()
for name in sorted(set(listed_suite.findall(workflow))):
if name.rsplit(".", 1)[-1] not in declared:
undeclared.append((workflow_filename, name))

if undeclared:
for workflow_filename, name in undeclared:
print(f"Workflow lists an undeclared suite {name} in {workflow_filename}")
sys.exit(-1)
print("All workflow-listed suites are declared")