Robin Mode Test Run Report

Date: 2026-02-05
Configuration: SPARKLESS_TEST_BACKEND=robin, SPARKLESS_BACKEND=robin
Command: pytest tests/ --ignore=tests/archive -n 10 -v --tb=short
Backend: robin-sparkless (Rust/Polars engine)


Summary

Result

Count

PASSED

1,005

FAILED

1,505

SKIPPED

21

ERROR

0

Total recorded

2,531

Note: The run was interrupted by a 10-minute timeout before the full suite completed (2,545 tests scheduled). Counts are from the captured output; the last ~14 tests may not have finished.


Result files

  • tests/robin_mode_test_results.txt β€” Full verbose pytest output (tee of stdout/stderr).

  • tests/robin_mode_failed_tests.txt β€” One line per failed test (unique test IDs).


Errors

This run had 0 ERRORs. Previously, seven parquet teardown ERRORs were fixed (Robin storage db_path).


Failure areas (sample)

Failed tests are spread across many modules. Representative areas:

  • Parity / DataFrame: filter, join (inner/left/right/outer/semi/anti), select, set operations (union), transformations (distinct, orderBy, withColumn, limit), window (cume_dist, dense_rank, first_value, lag, etc.), parquet/table append persistence.

  • Integration: case sensitivity (case_sensitive_, case_insensitive_, ambiguity_detection).

  • Examples: test_comparison, test_with_backend_info in unified infrastructure example.

Many failures are expected while the Robin backend has limited op coverage (e.g. only a subset of operations are delegated to robin-sparkless; the rest fall back or fail).


Passing areas (sample)

Tests that passed include:

  • Documentation: test_examples_show_v2_features, test_example_outputs_captured

  • Fixture compatibility: session creation, multiple sessions, context manager, cleanup, SparkContext

  • Function API: current_date, current_timestamp, static methods, signatures

  • Parity: cross_join, groupby, aggregations (sum, avg, count, min, max, multiple aggs, groupby multiple columns, global aggregation, nulls), grouped_data mean parity

  • Unit: backend (robin optional), core (column resolver), and many others that either don’t require a full session or exercise paths supported by the Robin backend


How to reproduce

# Ensure robin-sparkless is installed
pip install robin-sparkless

SPARKLESS_TEST_BACKEND=robin SPARKLESS_BACKEND=robin python -m pytest tests/ --ignore=tests/archive -n 10 --dist loadfile -v --tb=short 2>&1 | tee tests/robin_mode_test_results.txt

Conclusion

  • Robin mode is active for the run: session creation uses the Robin backend and fixtures assert backend_type == "robin", so no tests silently used the Polars backend.

  • A large proportion of tests fail under Robin, consistent with the current Robin backend supporting only a subset of operations; the rest hit unsupported paths or fall back in ways that don’t match test expectations.

  • This run had no ERRORs (parquet teardown fixed). Next steps for improving Robin mode pass rate: extend the Robin materializer and backend to support more operations and align behavior with the Polars backend where appropriate.