Unit Test PR--fix(grid,dropdown,select, pager,tooltip):fix the saas theme #2205
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Unit Test PR | |
run-name: Unit Test PR--${{ github.event.pull_request.title }} | |
on: | |
pull_request: | |
types: [opened, reopened, synchronize, edited] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.number || github.sha }} | |
cancel-in-progress: true | |
jobs: | |
parse-components: | |
name: Parse Affected Components | |
runs-on: ubuntu-latest | |
outputs: | |
testComponents: ${{ steps.parseTitle.outputs.testComponents }} | |
utilsModified: ${{ steps.check-utils-changes.outputs.modified }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Parse Title | |
id: parseTitle | |
uses: actions/github-script@v6 | |
with: | |
script: | | |
const prTitle = context.payload.pull_request.title | |
const regex = /\[(.*?)\]/ | |
const matches = prTitle.match(regex) | |
if (matches && matches.length > 1 && matches[1]) { | |
let components = matches[1] | |
.split(',') | |
.map((c) => c.trim()) | |
.filter((c) => /^[a-z\-\/]+$/.test(c)) | |
.map((c) => `${c}`) | |
components = [...new Set(components)].slice(0, 3).join(' ') | |
core.setOutput('testComponents', components) | |
} else { | |
const warningString =`**[unit-test-warn]** | |
The component to be tested is missing. | |
The title of the Pull request should look like "fix(vue-renderless): [action-menu, alert] fix xxx bug". | |
Please make sure you've read our [contributing guide](https://github.com/opentiny/tiny-vue/blob/dev/CONTRIBUTING.md) | |
` | |
core.setOutput('tip', warningString) | |
core.warning(warningString) | |
} | |
- name: Check Utils Changes | |
id: check-utils-changes | |
run: | | |
# 从远程仓库获取目标分支的最新代码 | |
git fetch origin ${{ github.base_ref }} | |
# 获取当前PR分支相对于目标分支的所有变更文件列表 | |
CHANGED_FILES=$(git diff --name-only origin/${{ github.base_ref }}..HEAD) | |
# 使用grep检查变更文件列表中是否包含utils包的改动 | |
# ^packages/utils/ 表示以packages/utils/开头的文件路径 | |
if echo "$CHANGED_FILES" | grep -q "^packages/utils/"; then | |
# 如果检测到utils包有改动,设置modified输出变量为true | |
echo "modified=true" >> $GITHUB_OUTPUT | |
echo "Utils package has been modified, utils tests will be executed" | |
else | |
# 如果没有检测到utils包的改动,设置modified输出变量为false | |
echo "modified=false" >> $GITHUB_OUTPUT | |
echo "No changes detected in utils package" | |
fi | |
- name: generate user-tip.txt | |
if: ${{ steps.parseTitle.outputs.tip }} | |
run: | | |
cat << EOF > user-tip.txt | |
${{ steps.parseTitle.outputs.tip }} | |
EOF | |
- name: Upload User Tip | |
if: ${{ steps.parseTitle.outputs.tip }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: user-tip | |
path: user-tip.txt | |
retention-days: 1 | |
- name: Save PR number | |
if: ${{ steps.parseTitle.outputs.tip }} | |
run: echo ${{ github.event.number }} > ./pr-id.txt | |
- name: Upload PR number | |
if: ${{ steps.parseTitle.outputs.tip }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: pr | |
path: ./pr-id.txt | |
pr-test: | |
name: PR Unit Test | |
needs: parse-components | |
runs-on: ubuntu-latest | |
env: | |
TEST_COMPONENTS: ${{ needs.parse-components.outputs.testComponents }} | |
UTILS_MODIFIED: ${{ needs.parse-components.outputs.utilsModified }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup pnpm | |
uses: pnpm/action-setup@v2 | |
- name: Setup node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 20 | |
- name: Get pnpm store directory | |
id: pnpm-cache | |
run: | | |
echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT | |
- uses: actions/cache@v3 | |
name: Setup pnpm cache | |
with: | |
path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} | |
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} | |
restore-keys: | | |
${{ runner.os }}-pnpm-store- | |
- name: Install dependencies | |
run: pnpm i --no-frozen-lockfile | |
- name: Unit Test for Components | |
if: ${{ env.TEST_COMPONENTS }} | |
run: pnpm test:unit3 ${{ env.TEST_COMPONENTS }} | |
- name: Utils Unit Test | |
if: ${{ env.UTILS_MODIFIED == 'true' }} | |
run: pnpm test:utils |