PHP의 팩스를 테스트할 필요가 있는지 판단하는 동작을 만들었습니다.
6152 단어 PHPGitHub ActionsASTtech
의 목적
팩스로 보내면 코드 스타일을 수정하거나 주석을 수정할 수 있습니다.
이러한 변경은 PHP의 동작에 아무런 영향을 미치지 않지만, 변경된 이상 실제 동작에 영향을 미치지 않는지 테스트를 하지 않으면 불안하다.(사실 아무런 영향이 없다. 흔히 있는 일이라 유감이다.)
그러나 영향 범위가 워낙 넓어 인력 테스트가 어렵고 원래 영향 범위를 모르는 경우도 있다.
자동 테스트가 충실하면 인력으로 테스트를 하지 않을 수도 있다고 판단할 수 있지만 전체 프로젝트를 완전히 망라하는 프로젝트는 많지 않다고 생각합니다.
그렇다면 동작에 영향을 미치지 않는다는 것을 보증할 수 있다면 어떨까요?
동작에 영향을 주지 않는다면 직접 발표해도 문제없다.
이 기사에서 우리는 추상적인 문법목(AST:Abstract Syntax Tree)의 변경으로 인해 동작에 영향을 주지 않을 것을 보증합니다.
액션에 영향을 미치지 않는 테스트를 했다고 할 수도 있다.
재밌어서 기릿허브 액션스로 가볍게 동작을 실행해봤다.
PHP 아니에요.
PHPnikic/php-ast를 사용하면AST를 획득할 수 있습니다.
베이스, 헤드는 각각의 지점으로 아스트의 해시 값을 구하고 비교한다.
세부 코드
분기 표준에 따라 경로를 똑똑히 찾다
https://github.com/snow-actions/php-ast-changed/blob/e2d4f0192b13f7fb41c63a859966e43c4b74fe9e/action.yml#L28-L49
아스트의 해시치를 따로따로 구하다
https://github.com/snow-actions/php-ast-changed/blob/e2d4f0192b13f7fb41c63a859966e43c4b74fe9e/action.yml#L51-L67
AST 해시 값을 구하는 스크립트
https://github.com/snow-actions/php-ast-changed/blob/e2d4f0192b13f7fb41c63a859966e43c4b74fe9e/php-ast-hashes.php
비교
https://github.com/snow-actions/php-ast-changed/blob/e2d4f0192b13f7fb41c63a859966e43c4b74fe9e/action.yml#L69-L77
작성된 작업
사용법
pull_request
또는 pull_request_target
이벤트에 사용됩니다.${{ steps.<step-id>.outputs.changed }}
반환"true"
또는 "false"
.는 문자열입니다."false"
라면 AST가 변경되지 않았기 때문テスト不要
이기 때문에 라벨을 붙일 수 있을 것 같아요.미리 라벨을 만들어야 해요.
.github/workflows/php-ast-changed.yml
name: PHP AST Changed
on:
pull_request:
paths:
- '**.php'
label-if-not-changed:
runs-on: ubuntu-20.04
timeout-minutes: 30
steps:
- uses: snow-actions/php-ast-[email protected]
id: php-ast
- name: Label
run: |
set -x
label='テスト不要'
if [ "${changed}" = 'false' ]; then
gh pr edit ${pr_number} --add-label ${label}
else
gh pr edit ${pr_number} --remove-label ${label}
fi
env:
GH_TOKEN: ${{ github.token }}
pr_number: ${{ github.event.number }}
changed: ${{ steps.php-ast.outputs.changed }}
작업 템플릿 만들기
예전에 만든 이걸 사용했어요.
Reference
이 문제에 관하여(PHP의 팩스를 테스트할 필요가 있는지 판단하는 동작을 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/snowcait/articles/30f44683fed179텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)