mirror of
https://github.com/krahets/hello-algo.git
synced 2024-12-24 04:26:30 +08:00
Fix Python build check script. (#911)
* Fix Python build check script. * Update python code check workflow * Update python test script. * Compatible with Python >=3.9 * Compatible with Python >=3.10 * Fix errors in Windows * test * Add Python version in installation.md * Update test_all.py
This commit is contained in:
parent
459697a131
commit
23cce00e09
4 changed files with 36 additions and 24 deletions
6
.github/workflows/python.yml
vendored
6
.github/workflows/python.yml
vendored
|
@ -22,7 +22,7 @@ jobs:
|
|||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest, windows-latest]
|
||||
python-version: ["3.8", "3.10"]
|
||||
python-version: ["3.10", "3.11"]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
|
@ -36,6 +36,6 @@ jobs:
|
|||
- name: Lint with black
|
||||
run: |
|
||||
black codes/python
|
||||
- name: Build with py_compile
|
||||
- name: Test python code
|
||||
run: |
|
||||
python codes/python/build.py
|
||||
python codes/python/test_all.py
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
import glob
|
||||
import py_compile as pyc
|
||||
|
||||
if __name__ == "__main__":
|
||||
# find source code files
|
||||
src_paths = sorted(glob.glob("codes/python/**/*.py"))
|
||||
num_src = len(src_paths)
|
||||
num_src_error = 0
|
||||
|
||||
# compile python code
|
||||
for src_path in src_paths:
|
||||
try:
|
||||
pyc.compile(src_path, doraise=True)
|
||||
except pyc.PyCompileError as e:
|
||||
num_src_error += 1
|
||||
print(e)
|
||||
|
||||
print(f"===== Build Complete =====")
|
||||
print(f"Total: {num_src}")
|
||||
print(f"Error: {num_src_error}")
|
32
codes/python/test_all.py
Normal file
32
codes/python/test_all.py
Normal file
|
@ -0,0 +1,32 @@
|
|||
import os
|
||||
import glob
|
||||
import subprocess
|
||||
|
||||
env = os.environ.copy()
|
||||
env["PYTHONIOENCODING"] = "utf-8"
|
||||
|
||||
if __name__ == "__main__":
|
||||
# find source code files
|
||||
src_paths = sorted(glob.glob("codes/python/chapter_*/*.py"))
|
||||
errors = []
|
||||
|
||||
# run python code
|
||||
for src_path in src_paths:
|
||||
process = subprocess.Popen(
|
||||
["python", src_path],
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
text=True,
|
||||
env=env,
|
||||
)
|
||||
# Wait for the process to complete, and get the output and error messages
|
||||
stdout, stderr = process.communicate()
|
||||
# Check the exit status
|
||||
exit_status = process.returncode
|
||||
if exit_status != 0:
|
||||
errors.append(stderr)
|
||||
|
||||
print(f"Tested {len(src_paths)} files")
|
||||
print(f"Found exception in {len(errors)} files")
|
||||
if len(errors) > 0:
|
||||
raise RuntimeError("\n\n".join(errors))
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
### Python 环境
|
||||
|
||||
1. 下载并安装 [Miniconda3](https://docs.conda.io/en/latest/miniconda.html) 。
|
||||
1. 下载并安装 [Miniconda3](https://docs.conda.io/en/latest/miniconda.html) ,需要 Python 3.10 或更新版本。
|
||||
2. 在 VSCode 的插件市场中搜索 `python` ,安装 Python Extension Pack 。
|
||||
3. (可选)在命令行输入 `pip install black` ,安装代码格式化工具。
|
||||
|
||||
|
|
Loading…
Reference in a new issue