cmu-db / noisepage

Self-Driving Database Management System from Carnegie Mellon University
https://noise.page
MIT License
1.75k stars 503 forks source link

PYTHONPATH of tests is forcefully set during CMake. #1612

Open lmwnshn opened 3 years ago

lmwnshn commented 3 years ago

Documentation

PYTHONPATH of tests is forcefully set during CMake.

Summary

ctest does not seem to pass environment variables through to the tests that it invokes.

For an example of where this fails, consider

PYTHONPATH=.. ninja self_driving_e2e_test

where self_driving_e2e_test will invoke model_server_test.

The PYTHONPATH has to be specified because we are using relative imports in model_server.py. We must use relative imports in model_server.py because we are relying on Python's import cache to simulate having a global importable singleton. So the proper invocation has to be something like, from a typical build folder,

PYTHONPATH=.. ./test/model_server_test

Attempted fixes that I have tried include

  1. export PYTHONPATH=.. before running ninja self_driving_e2e_test
  2. PYTHONPATH=.. ninja self_driving_e2e_test

We can fix this in CMake per #1611, but it is a bit unexpected/surprising. I don't know how you would fix it otherwise.