@@ -58,20 +58,20 @@ jobs:
5858 echo 'EOF' >> $GITHUB_OUTPUT
5959
6060 test :
61- name : Run unit tests for module ${{ matrix.modules.module_name }}
61+ name : Run unit tests for module ${{ matrix.modules.module_name }} (Python ${{ matrix.python-version }})
6262 needs : get-modules
6363 strategy :
6464 fail-fast : false
6565 matrix :
6666 modules : ${{ fromJson(needs.get-modules.outputs.matrix) }}
67- python-version : [3.9 ]
67+ python-version : ["3.10", "3.11", "3.12" ]
6868 node-version : [18.x]
6969 runs-on : ubuntu-latest
7070 env :
7171 MODULE_PATH : ' modules/${{ matrix.modules.module_name }}'
7272 steps :
7373 - name : Checkout
74- uses : actions/checkout@v3
74+ uses : actions/checkout@v4
7575 with :
7676 fetch-depth : 0
7777 - id : determine-language
@@ -87,11 +87,17 @@ jobs:
8787 else \
8888 echo "language=none" >> "$GITHUB_OUTPUT"; \
8989 fi
90- - name : Set up Python ${{ matrix.python-version }}
90+ - name : Set up uv
9191 if : ${{ steps.determine-language.outputs.language == 'python' }}
92- uses : actions /setup-python@v4
92+ uses : astral-sh /setup-uv@v5
9393 with :
94- python-version : ${{ matrix.python-version }}
94+ enable-cache : true
95+ - name : Set up Python ${{ matrix.python-version }}
96+ if : ${{ steps.determine-language.outputs.language == 'python' }}
97+ run : uv python install ${{ matrix.python-version }}
98+ - name : Create virtual environment
99+ if : ${{ steps.determine-language.outputs.language == 'python' }}
100+ run : uv venv --python ${{ matrix.python-version }}
95101 - name : Set up Node ${{ matrix.node-version }}
96102 if : ${{ steps.determine-language.outputs.language == 'typescript' }}
97103 uses : actions/setup-node@v4
@@ -101,21 +107,23 @@ jobs:
101107 if : ${{ steps.determine-language.outputs.language == 'python' }}
102108 run : |
103109 set -x
104- python -m pip install --upgrade pip
105- pip install -r requirements-dev.txt
106- pip install -r $MODULE_PATH/requirements.txt
110+ uv pip install -r requirements-dev.txt
111+ uv pip install -r $MODULE_PATH/requirements.txt
107112 - name : Install Requirements (Typescript)
108113 if : ${{ steps.determine-language.outputs.language == 'typescript' }}
109114 run : |
110115 set -x
111116 cd $MODULE_PATH
112117 npm install
113- - name : Static checks and linting
114- if : ${{ steps.determine-language.outputs.language != 'none' }}
115- run : scripts/validate.sh --language ${{ steps.determine-language.outputs.language }} --path $MODULE_PATH/
118+ - name : Static checks and linting (Python)
119+ if : ${{ steps.determine-language.outputs.language == 'python' }}
120+ run : uv run scripts/validate.sh --language python --path $MODULE_PATH/
121+ - name : Static checks and linting (TypeScript)
122+ if : ${{ steps.determine-language.outputs.language == 'typescript' }}
123+ run : ./scripts/validate.sh --language typescript --path $MODULE_PATH/
116124 - name : Pytest
117125 if : ${{ steps.determine-language.outputs.language == 'python' }}
118- run : cd $MODULE_PATH/ && pytest
126+ run : uv run --no-project --directory $MODULE_PATH pytest
119127 - name : NPM Test
120128 if : ${{ steps.determine-language.outputs.language == 'typescript' }}
121129 run : cd $MODULE_PATH/ && npm test
0 commit comments