sfdx force : source : deploy로 실패한 테스트 결과를 쉽게 볼 수있는 단일 라이너

CI로 테스트 실패했을 때 불편했기 때문에 원 라이너로 궁리해 보았다. TL;DR

force:apex:test:run은 테스트 결과를 쉽게 볼 수 있습니다.



디폴트라면 --resultformat human 로 출력해 줍니다. 참고: 명령 참조
$ sfdx force:apex:test:run --tests HogeTest.test -w 10
=== Test Results
TEST NAME      OUTCOME  MESSAGE                                              RUNTIME (MS)
─────────────  ───────  ───────────────────────────────────────────────────  ────────────
HogeTest.test  Fail     System.AssertException: Assertion Failed: テスト失敗しました  12
                        Class.HogeTest.test: line 4, column 1

force : source : deploy로 테스트가 실패하면 알려주지 않습니다.


--json 이외에 특히 결과를 출력하는 옵션을 찾을 수 없습니다. 참고: 명령 참조--json 지정하면 매우 긴 결과 JSON이 출력되어 테스트 결과의 위치를 ​​찾는 것이 어렵습니다.force:source:deploy:report 해도 The metadata deploy operation failed. 정도밖에 가르쳐 주지 않습니다.
issue도 서 있었다 htps : // 기주 b. 코 m / 후 r 하지만 t 코 m / c ぃ / 이스에 s / 57
$ sfdx force:source:deploy -p "force-app/main/default/classes/HogeTest.cls" --testlevel RunSpecifiedTests --runtests HogeTest -w 10 --checkonly
Job ID | 0Af1y000002kGUICA2
SOURCE PROGRESS | ████████████████████░░░░░░░░░░░░░░░░░░░░ | 1/2 Files
$ sfdx force:source:deploy:report -i 0Af1y000002kGUICA2
Job ID | 0Af1y000002kGUICA2
SOURCE PROGRESS | ████████████████████░░░░░░░░░░░░░░░░░░░░ | 1/2 Files
ERROR running force:source:deploy:report:  The metadata deploy operation failed.

원라이너


--json 결과를 보기 쉽게 가공해 봅니다.
force:source:deploy --json의 결과를 > result.json라는 파일로 내뿜고 있습니다.

원 라이너라고 말하면서 길기 때문에 보기 쉽게 개행하고 있습니다.
if [ "$?" != "0" ]; then 
  cat result.json \
  | jq -r '.result.details.runTestResult.failures | if type=="array" then .[] else . end | [.name, .methodName, .message, .stackTrace] | @tsv' \
  | column -t -s $'\t' \
  | grep --color=auto -e '^.*$'
fi

Travis CI의 결과 표시는 다음과 같습니다.





해설


  • if [ "$?" != "0" ]; then : 테스트에 성공하면 force:source:deploy가 종료 코드 0을 반환하기 때문에 성공하면 특별히 아무 작업도 수행하지 않습니다.

  • jq로 결과 json을 장미


  • .result.details.runTestResult.failures : 결과의 세부 사항
    ...라고 추적합니다.
  • if type=="array" then .[] else . end : 실패가 하나의 경우는 object, 복수의 경우는 배열로 돌아온다고 하는 끔찍한 포맷이므로 형태로 판정해 결과를 장미합니다
  • [.name, .methodName, .message, .stackTrace] : 원하는 속성 만 배열로 검색하고 레코드화
  • @tsv : 마지막으로 탭으로 구분하여 표준 출력으로 다음 파이프에 연결합니다

  • 참고: htps : // 이 m / 나카 / ms / 272bfd00b7 83d162 3

    columns 명령으로 보기 쉽게 정형


  • column -t -s $'\t'

  • 색칠하기


  • grep --color=auto -e '^.*$' : CI 결과에서 눈에 띄도록 오류 결과를 빨간색으로 표시합니다.
  • 좋은 웹페이지 즐겨찾기