Skip to main content
Glama

baidu-ai-search

Official
by baidubce
run_python_test.sh4.44 kB
# Copyright (c) 2024 Baidu, Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # 该脚本执行以下功能 # 1、克隆git仓库: # 2、基于环境变量,checkout到指定commit # 3、执行setup.sh,生产whl包,并更新当前环境的python库 # 4、执行parallel_ut_run.py,运行python单元测试 # 5、基于测试结果计算单测覆盖率 # # 1、克隆git仓库 # git clone https://github.com/baidubce/app-builder.git # cd app-builder # 1.1、添加提交者的源 # fork_repo="https://github.com/$AGILE_MODULE_NAME.git" # git clone $fork_repo # cd app-builder # git remote add upstream https://github.com/baidubce/app-builder.git # git fetch upstream # # 2、checkout到制定commit # # 环境变量形如:AGILE_REVISION=2352a2574bdfcfff22f0ba7413d9318781a85b3d # export AGILE_REVISION=2352a2574bdfcfff22f0ba7413d9318781a85b3d # commit_id=$AGILE_REVISION # # checkout 到指定commit # git checkout $commit_id # 代码Pass,保存在流水线配置中,并在流水线环境执行 # 3、单测环境的涉密准备 # 3.1、首先是各个单测所需的token、appid、secret等信息,会保存在仅在百度内网可以下载的环境中 # 代码Pass,保存在流水线配置中,并在流水线环境执行 # 4、执行setup.py,生产whl包,并更新当前环境的python库 python3 -m pip install wheel python3 -m pip install coverage python3 -m pip install diff-cover python3 setup.py bdist_wheel python3 -m pip install --force-reinstall dist/*.whl python3 -m pip uninstall numpy -y python3 -m pip install numpy==1.26.4 echo "重新安装pydantic包,设置版本为2.7.4" python3 -m pip uninstall -y pydantic python3 -m pip install pydantic==2.7.4 python3 -m pip install langchain==0.3.0 python3 -m pip install datamodel-code-generator==0.25.8 python3 -m pip install jsonschema python3 -m pip install mcp; true cd python/tests/ # 5、执行parallel_ut_run.py,运行python单元测试 python3 parallel_ut_run.py run_result=$? # 6、基于coverage 测试结果计算全量单测覆盖率 # coverage combine ./python/tests/ coverage combine coverage xml -o coverage.xml coverage html -d coverage_html echo "--------------------------" echo "全量代码覆盖率为:" coverage report -m echo "--------------------------" # 7、计算增量代码的单测覆盖率 # 首先需要将coverage.xml里的文件路径替换 # 规则是:从python lib的安装目录,替换为git clone的目录,举例: # 替换前 /Users/chengmo/Library/Python/3.9/lib/python/site-packages/ # 替换后 /Users/chengmo/workspace/baidu_code/app-builder/ # 首先获取appbuilder-sdk的python lib的安装目录 python_lib=$(python3 -m pip show appbuilder-sdk | grep Location | awk '{print $2}') # 再获取git clone的目录, 当前目录为 app-builder/python/tests, 取 app-builder/目录 git_dir=$(pwd | sed 's/python\/tests//') # 批量替换coverage.xml文件中的python_lib为git_dir,并将源文件备份一个orignal.xml后缀 python3 -u sed_str.py coverage.xml $python_lib $git_dir sed -i 's|/appbuilder|python|g' coverage.xml # 最后进行增量代码覆盖率测试 echo "增量代码覆盖率为:" diff-cover coverage.xml --compare-branch=upstream/master --html-report coverage_diff.html --fail-under=90 cover_result=$? echo "--------------------------" echo "CI 流水线运行结果如下: " echo "单测运行结果: $run_result" echo "单测覆盖率结果: $cover_result" echo "--------------------------" echo "--------------------------" echo "Components组件检查规范性检测结果: " python3 print_components_error_info.py echo "--------------------------" # 若单测失败,则退出 if [ $run_result -ne 0 ]; then echo "单测运行失败,请检查错误日志,修复单测后重试" && exit 1; fi if [ $cover_result -ne 0 ]; then echo "增量代码的单元测试覆盖率低于90%,请完善单元测试后重试" && exit 1; fi

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/baidubce/app-builder'

If you have feedback or need assistance with the MCP directory API, please join our Discord server