name: Tests on: - push - pull_request env: FORGE_CQ_TEST: "True" jobs: test: name: tests on CPU runs-on: soaska if: gitea.event_name != 'pull_request' || gitea.event.pull_request.head.repo.full_name != gitea.event.pull_request.base.repo.full_name steps: - name: Checkout Code uses: actions/checkout@v3 - name: Set up Python 3.10 uses: actions/setup-python@v4 with: python-version: 3.10.6 cache: pip cache-dependency-path: | **/requirements*txt launch.py - name: Cache models id: cache-models uses: actions/cache@v3 with: path: models key: "2023-12-30" - name: Install test dependencies run: pip install wait-for-it -r requirements-test.txt env: PIP_DISABLE_PIP_VERSION_CHECK: "1" PIP_PROGRESS_BAR: "off" - name: Setup environment run: python launch.py --skip-torch-cuda-test --exit env: PIP_DISABLE_PIP_VERSION_CHECK: "1" PIP_PROGRESS_BAR: "off" TORCH_INDEX_URL: https://download.pytorch.org/whl/cpu WEBUI_LAUNCH_LIVE_OUTPUT: "1" PYTHONUNBUFFERED: "1" - name: Print installed packages run: pip freeze - name: Download models run: | declare -a urls=( "https://huggingface.co/lllyasviel/fav_models/resolve/main/fav/realisticVisionV51_v51VAE.safetensors" ) for url in "${urls[@]}"; do filename="models/Stable-diffusion/${url##*/}" # Extracts the last part of the URL if [ ! -f "$filename" ]; then curl -Lo "$filename" "$url" fi done # - name: Download ControlNet models # run: | # declare -a urls=( # "https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_canny.pth" # ) # for url in "${urls[@]}"; do # filename="models/ControlNet/${url##*/}" # Extracts the last part of the URL # if [ ! -f "$filename" ]; then # curl -Lo "$filename" "$url" # fi # done - name: Start test server run: > python -m coverage run --data-file=.coverage.server launch.py --skip-prepare-environment --skip-torch-cuda-test --test-server --do-not-download-clip --no-half --disable-opt-split-attention --always-cpu --api-server-stop --ckpt models/Stable-diffusion/realisticVisionV51_v51VAE.safetensors 2>&1 | tee output.txt & - name: Run tests run: | wait-for-it --service 127.0.0.1:7860 -t 20 python -m pytest -vv --junitxml=test/results.xml --cov . --cov-report=xml --verify-base-url test # TODO(huchenlei): Enable ControlNet tests. Currently it is too slow to run these tests on CPU with # real SD model. We need to find a way to load empty SD model. # - name: Run ControlNet tests # run: > # python -m pytest # --junitxml=test/results.xml # --cov ./extensions-builtin/sd_forge_controlnet # --cov-report=xml # --verify-base-url # ./extensions-builtin/sd_forge_controlnet/tests - name: Kill test server if: always() run: curl -vv -XPOST http://127.0.0.1:7860/sdapi/v1/server-stop && sleep 10 - name: Upload main app output uses: actions/upload-artifact@v3 if: always() with: name: output path: output.txt