name: Python tests on: push: branches: [main] paths: - "poetry.lock" - "pyproject.toml" - "src/backend/**" pull_request: branches: [dev] paths: - "poetry.lock" - "pyproject.toml" - "src/backend/**" merge_group: branches: [dev] env: POETRY_VERSION: "1.8.2" jobs: build: runs-on: ubuntu-latest strategy: matrix: python-version: - "3.12" - "3.11" - "3.10" env: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} + Poetry ${{ env.POETRY_VERSION }} uses: "./.github/actions/poetry_caching" with: python-version: ${{ matrix.python-version }} poetry-version: ${{ env.POETRY_VERSION }} cache-key: ${{ runner.os }}-poetry-${{ env.POETRY_VERSION }}-${{ hashFiles('**/poetry.lock') }} - name: Install Python dependencies run: | poetry env use ${{ matrix.python-version }} poetry install - name: Run unit tests run: | make unit_tests args="-n auto" - name: Test CLI run: | poetry run python -m langflow run --host 127.0.0.1 --port 7860 --backend-only & SERVER_PID=$! # Wait for the server to start timeout 120 bash -c 'until curl -f http://127.0.0.1:7860/health; do sleep 2; done' || (echo "Server did not start in time" && kill $SERVER_PID && exit 1) # Terminate the server kill $SERVER_PID || (echo "Failed to terminate the server" && exit 1) sleep 10 # give the server some time to terminate # Check if the server is still running if kill -0 $SERVER_PID 2>/dev/null; then echo "Failed to terminate the server" exit 1 else echo "Server terminated successfully" fi