From 61f5aff785ab00d1cb28ee120d9f83ed6c28b62a Mon Sep 17 00:00:00 2001 From: Marc Ransome Date: Sun, 25 Aug 2024 20:01:09 +0100 Subject: [PATCH 1/2] Add action inputs/outputs and refactor tests --- .github/workflows/test.yml | 163 +++++++++++++++++++++++++++++++------ README.md | 36 ++++++-- action.yml | 56 ++++++++++--- images/job-summary.png | Bin 0 -> 72029 bytes 4 files changed, 217 insertions(+), 38 deletions(-) create mode 100644 images/job-summary.png diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index cad8865..f2e7c21 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -28,42 +28,159 @@ jobs: uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - name: Install fish shell uses: fish-shop/install-fish-shell@720ad65b07b693d9332d73aaf811502196c1efb8 # v1.0.12 - - name: Create syntactically valid fish shell function + - name: Create syntactically valid fish shell file run: | - cat << EOF >./valid-syntax.fish + echo "\ function valid-syntax echo "valid-syntax" + end" > ./valid-syntax.fish + shell: fish {0} + - name: Syntax check valid fish shell file + id: passing-checks + continue-on-error: true + uses: ./ + with: + patterns: valid-syntax.fish + title: 'Passing syntax checks summary' + - name: Check passing syntax checks outcome + run: | + if test "${{ steps.passing-checks.outcome }}" != "success" + echo "Action is expected to succeed for syntactically valid file" + exit 1 end - EOF - - name: Create syntactically invalid fish shell function + shell: fish {0} + - name: Check passing syntax checks output parameters + env: + TOTAL: ${{ steps.passing-checks.outputs.total }} + PASSED: ${{ steps.passing-checks.outputs.passed }} + FAILED: ${{ steps.passing-checks.outputs.failed }} run: | - cat << EOF >./invalid-syntax.fish + set failures 0 + + set expected_total 1 + if test "$TOTAL" != "$expected_total" + echo "Output parameter 'total' should equal $expected_total (got '$TOTAL')" + set failures (math $failures + 1) + else + echo "Output parameter 'total' equals expected value $expected_total" + end + + set expected_passes 1 + if test "$PASSED" != "$expected_passes" + echo "Output parameter 'passed' should equal $expected_passes (got '$PASSED')" + set failures (math $failures + 1) + else + echo "Output parameter 'passed' equals expected value $expected_passes" end - EOF - - name: Syntax check valid fish file - id: check-valid-file + + set expected_failures 0 + if test "$FAILED" != "$expected_failures" + echo "Output parameter 'failed' should equal $expected_failures (got '$FAILED')" + set failures (math $failures + 1) + else + echo "Output parameter 'failed' equals expected value $expected_failures" + end + + exit $failures + shell: fish {0} + - name: Create syntactically invalid fish shell file + run: | + echo "\ + end" > ./invalid-syntax.fish + shell: fish {0} + - name: Syntax check invalid fish shell file + id: failing-checks continue-on-error: true uses: ./ with: - patterns: valid-syntax.fish - - name: Syntax check invalid fish file - id: check-invalid-file + patterns: invalid-syntax.fish + title: 'Failing syntax checks summary' + - name: Check failing syntax checks outcome + run: | + if test "${{ steps.failing-checks.outcome }}" != "failure" + echo "Action is expected to fail for syntactically invalid file" + exit 1 + end + shell: fish {0} + - name: Check failing syntax checks output parameters + env: + TOTAL: ${{ steps.failing-checks.outputs.total }} + PASSED: ${{ steps.failing-checks.outputs.passed }} + FAILED: ${{ steps.failing-checks.outputs.failed }} + run: | + set failures 0 + + set expected_total 1 + if test "$TOTAL" != "$expected_total" + echo "Output parameter 'total' should equal $expected_total (got '$TOTAL')" + set failures (math $failures + 1) + else + echo "Output parameter 'total' equals expected value $expected_total" + end + + set expected_passes 0 + if test "$PASSED" != "$expected_passes" + echo "Output parameter 'passed' should equal $expected_passes (got '$PASSED')" + set failures (math $failures + 1) + else + echo "Output parameter 'passed' equals expected value $expected_passes" + end + + set expected_failures 1 + if test "$FAILED" != "$expected_failures" + echo "Output parameter 'failed' should equal $expected_failures (got '$FAILED')" + set failures (math $failures + 1) + else + echo "Output parameter 'failed' equals expected value $expected_failures" + end + + exit $failures + shell: fish {0} + - name: Syntax check mixed valid/invalid fish shell files + id: mixed-checks continue-on-error: true uses: ./ with: - patterns: invalid-syntax.fish - - name: Check outcomes + patterns: 'valid-syntax.fish invalid-syntax.fish' + title: 'Mixed syntax checks summary' + - name: Check mixed syntax checks outcome + run: | + if test "${{ steps.mixed-checks.outcome }}" != "failure" + echo "Action is expected to fail for syntactically invalid file" + exit 1 + end + shell: fish {0} + - name: Check mixed syntax checks output parameters + env: + TOTAL: ${{ steps.mixed-checks.outputs.total }} + PASSED: ${{ steps.mixed-checks.outputs.passed }} + FAILED: ${{ steps.mixed-checks.outputs.failed }} run: | - exit_code=0 + set failures 0 - if [[ "${{ steps.check-valid-file.outcome }}" != "success" ]]; then - echo "Action is expected to succeed for file with valid syntax" - exit_code=1 - fi + set expected_total 2 + if test "$TOTAL" != "$expected_total" + echo "Output parameter 'total' should equal $expected_total (got '$TOTAL')" + set failures (math $failures + 1) + else + echo "Output parameter 'total' equals expected value $expected_total" + end - if [[ "${{ steps.check-invalid-file.outcome }}" != "failure" ]]; then - echo "Action is expected to fail for file with invalid syntax" - exit_code=1 - fi + set expected_passes 1 + if test "$PASSED" != "$expected_passes" + echo "Output parameter 'passed' should equal $expected_passes (got '$PASSED')" + set failures (math $failures + 1) + else + echo "Output parameter 'passed' equals expected value $expected_passes" + end + + set expected_failures 1 + if test "$FAILED" != "$expected_failures" + echo "Output parameter 'failed' should equal $expected_failures (got '$FAILED')" + set failures (math $failures + 1) + else + echo "Output parameter 'failed' equals expected value $expected_failures" + end - exit ${exit_code} + exit $failures + shell: fish {0} diff --git a/README.md b/README.md index d73fa95..0e2752f 100644 --- a/README.md +++ b/README.md @@ -14,22 +14,22 @@ Here's an example from the test workflow for [Pond](https://github.com/marcranso ## Prerequisites -This action requires the [fish shell](https://fishshell.com). You can install it using the [fish-shop/install-fish-shell](https://github.com/fish-shop/install-fish-shell) action. +This action requires [fish shell](https://fishshell.com). You can install it using the [fish-shop/install-fish-shell](https://github.com/fish-shop/install-fish-shell) action. ## Usage -Add a suitable `uses` step to your GitHub [workflow](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions) as shown below: +Add a `uses` step to your GitHub [workflow](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions) as shown below: ```yaml - name: Syntax check - uses: fish-shop/syntax-check@v1 + uses: fish-shop/syntax-check@v2 ``` By default, all files under `$GITHUB_WORKSPACE` with a `.fish` file extension are checked. To override the default behaviour, provide one or more space-seperated pattern values to the `patterns` input. For example, to check all `.fish` files starting in the `src` directory and descending into subdirectories: ```yaml - name: Syntax check - uses: fish-shop/syntax-check@v1 + uses: fish-shop/syntax-check@v2 with: patterns: src/**.fish ``` @@ -38,11 +38,37 @@ Each pattern value may include [wildcards](https://fishshell.com/docs/current/la ```yaml - name: Syntax check - uses: fish-shop/syntax-check@v1 + uses: fish-shop/syntax-check@v2 with: patterns: init.fish functions/**.fish {conf.d,completions}/**.fish tests/???-*.fish ``` +## Inputs + +Configure the action using the following inputs: + +| Name | Description | Default | +|--------------|----------------------------------------|-----------------------| +| `patterns` | A space-separated list of file patterns to match against when running syntax checks; each pattern may include [wildcards](https://fishshell.com/docs/current/language.html#expand-wildcard) and/or [brace expansions](https://fishshell.com/docs/current/language.html?highlight=brace+expansion#brace-expansion) | `**.fish` | +| `title` | The title to display in the [job summary](#job-summary); can be used to distinguish multiple summaries generated from a single workflow | `Test results` | + +## Outputs + +The following outputs are made available to subsequent steps in a workflow: + +| Name | Description | +|----------|----------------------------------------------| +| `total` | The total number of files syntax checked | +| `passed` | The number of files that passed syntax check | +| `failed` | The number of files that passed syntax check | + +## Job summary + +This action generates a [job summary](https://github.blog/news-insights/product-news/supercharging-github-actions-with-job-summaries/) at run-time which can be viewed from the workflow run summary page: + +job-summary + + ## Action versions Use one of the following patterns when specifying the version reference for this action in your workflow (i.e. the `{ref}` value in `uses: fish-shop/syntax-check@{ref}`): diff --git a/action.yml b/action.yml index d228f0c..899ef5a 100644 --- a/action.yml +++ b/action.yml @@ -4,21 +4,39 @@ branding: icon: 'check' color: 'green' inputs: + title: + description: 'Title to display in job summary' + required: false + default: 'Syntax check results' patterns: description: 'File patterns to match against when running syntax checks' required: false default: '**.fish' +outputs: + total: + description: "Total number of files syntax checked" + value: ${{ steps.syntax-check.outputs.total }} + passed: + description: "Number of files passed syntax check" + value: ${{ steps.syntax-check.outputs.passed }} + failed: + description: "Number of files failed syntax check" + value: ${{ steps.syntax-check.outputs.failed }} runs: using: "composite" steps: - name: Syntax check fish shell files + id: syntax-check env: + TITLE: ${{ inputs.title }} PATTERNS: ${{ inputs.patterns }} run: | set -gx TERM xterm-256color - set -l passes 0 - set -l failures 0 + set -l passed 0 + set -l failed 0 + + set title "$TITLE" for pattern in (string split --no-empty -- " " $PATTERNS) set -l escaped (string escape --style=script --no-quoted -- $pattern) @@ -35,29 +53,47 @@ runs: for line in (string split -- $output) echo " $line" end - set failures (math $failures + 1) + set failed (math $failed + 1) else set_color green; and echo -n "✔"; and set_color normal echo " $file" - set passes (math $passes + 1) + set passed (math $passed + 1) end end end - set -l total (math $passes + $failures) + set -l total (math $passed + $failed) echo - set_color green; and echo -n "passed: $passes"; and set_color normal + set_color green; and echo -n "passed: $passed"; and set_color normal echo -n " " - set_color red; and echo -n "failed: $failures"; and set_color normal + set_color red; and echo -n "failed: $failed"; and set_color normal echo " of $total files" echo - if test $failures -gt 0 - set_color red; and echo "$failures of $total failed." + if test $failed -gt 0 + set_color red; and echo "$failed of $total failed." else set_color green; and echo "All of $total files passed!" end - exit $failures + if test $failed -eq 0 + set result ":white_check_mark: Pass" + else + set result ":x: Fail" + end + + echo "### $title" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "| Result :microscope: | Passed :white_check_mark: | Failed :x: |" >> $GITHUB_STEP_SUMMARY + echo "|---------------------|---------------------------|------------|" >> $GITHUB_STEP_SUMMARY + echo "| $result | $passed | $failed |" >> $GITHUB_STEP_SUMMARY + + echo "total=$total" >> "$GITHUB_OUTPUT" + echo "passed=$passed" >> "$GITHUB_OUTPUT" + echo "failed=$failed" >> "$GITHUB_OUTPUT" + + if test $failed -ne 0 + exit 1 + end shell: fish {0} diff --git a/images/job-summary.png b/images/job-summary.png new file mode 100644 index 0000000000000000000000000000000000000000..f7c1a9fcf1874990551ed83bcbad1cdb21d7ca96 GIT binary patch literal 72029 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

`ANIgO>w zbClvA04>bu`&KGjhd`KdvwBakIZYi~2Sk{~Y(kK{b#ddu!Oa9=ibH{f9NCS{$og4K z3{j>@ipa2DpIE-$Y#%_ z#C(-vM6vJ3WWHu@(G!=w3_0F*l9|RgtwE8&S*vM0jEv0ba%NwQAK*DN(GhmnFEN3!e^~-gEu> z+#N7Y)%7CiXSSW0fG=}`W9&;r_stpjH>aVpO5+8eO$KV-2DBCFS9Td{PGoDx0s&~A z?OaXqTu#}^sf@Vz*Hr+q-xnJnL&XLzQY%TKA8(di&S%;gQx$R9zEd{Cz;Dx$$E;U0 zd5^-(RlvWn#={dx?A!!VCTpjmavw3Gw^gmYO+*mZa|(alft=4~RD@ZK^L0D8GA-(zp0rWDXx7M$0Q>q!RfgpKP2Y^^$BT%G6!S;?&YeD_g zj!{Eaf^ck5bgYq2ofmkO@}Nef+O|7KIq_0`Ch3bsK$gqrC*^)9&0?kA-r_|p-G-u! zbY@C7%6oiF?-xTXN1GicP@pSmA|Bwm0B^IomZ+@I_spr&BJWZh`wsTY`H-`3O?8)UN_Sohy%p(^j{Us%V^VXI>s1~ zesxDM3InXILz5E2x@WQ=$je6n_ede-gx))JDT!Rd(Os@;y6z?Q#z?MeKM(CIn@C`_ zOVb8W#{(xx0I$hu@y7=ONFAU?G3xc@#K_qIV16n7@`kR4f7#;DQl~_ZxfoP)n?ZvA zG3O*oO)Pl^rLe|aY}Q0a+KX)tqR|mrBc%Q+6l}=&s({(5H)+ETOG>Leg7W^Lg+Dv$ z=8hJ2wp%gzKr284HD;K7n*hqT;J^# zS<5$ZCig6y!UwdOD7_!glfK;CTHGY&x!M%G_r8V2d{8W zmSb{mYEtO7okQs-&?CO-7(Pp7|2%p)jVC=#dF}Ji@$j@V`-TI2g=zvfX0qd8RcDP} z<$b-b2Egb5lux+8h?e_sp%v=O{8n&I#-6F_J8;0&uYx)Sh7;GphDM`{CpiJtbFJjC zhUCM8jiK&WXdkX!tyK6E&x&<1=wu72Rnn)k+DN^Ay=)t8Pm4)@l<6pang}&m!=O=2 zhA`}3u^3B4;;UNEk5tmNC39hJmT}`*TCwtfnX{jcbRfN%0!L5E=lg!%-hk6^pa+{T zKY0+}4|5a3PN(enz=Vg_7`A{nnxi-|Zt)EJaX$%NPW}%yLO-b%;8JQ+Sd#>8Qe3eq z)9ohFjvIIUM9T(Le~1D0zeyy9v)ZN;aN~iv>gyZM&dTDW4kD6EfWSvqtyNwhM0qz) z_8G1kEE}D5C2ThByEnw3H%~ikr^bFuC*PVww)!zk|Hvi>1Win98(+u93f~QI*QGf; z7}DtWn0wVi2|Zp5_6rxo?Q1DdD8Hc^@opWa zX7~cikqnLFeH8&no?{aLlKv$d)8vA?dIuML2Y`2<0h=_q0DO>w@P>PMel7jZ`;Rtu z`IUXwc^@B+MUSyQ8s4n*j}TwgO81QaNX5yPsa)m;=n{Df>7Rcqm41;Yyexyi--LY@ zL3-ydsxNKeMr8i1nmbU@(?DUSRt8^kf7Z9uGjNy7OVMS2jLHKEeUI!# z;URV_Og!1f@#2El`DOCw*c90Y6c-t`EHo*6To_ljKkt9J>E!s`Rf7-ua7D^FJhIO*P=4mT0o6u?CUH zwkanNAZG^%9;R{|*&Ln_CfA!L#4kC0Mcnu#&5Cwe_b!MPY8;-afy{Ant0uEa;&%g+ ztO_(;=P;|rr!uzQLG|%BIvo~*_%LS}Tc9){gKeB9XeXxPxKSK4(y!U7U;M3TQ?srH zXh!5)uX4Ly{X~>3Y7pTFAiK}q6OIWK;tNcg1t;GYa^tk>amcM5AlS)Td){%+VC_03 zTgMgzzS1OTJ5l0cT;WlEXf))SEUTV+wOQ>LhK9q(dU$MVL68RJ6i?t}3e39#+3Nmm zPkcrxZOk0F;A3~pV~Vl}*u%**b;QjL)Qd*3X;iSqKUS;Ofez!jb2re%(|(sDd-5}5 zW7?`V{(}Aa8J<}+_hPmVv1M<9z_Nsae-3*1oekjjq6oq&d%WK2nm8-xfy!{YMS5JE zi2}7>s=J(LTi!K&Hw<9in^-5KWl!8a7#TArp0q8e390&+-&6tO;yYOLa>gg69N!dp z(lpj%h0P=)yl?M=R*`oiBi-CgR5NJRZ}HM?g4HQ)e2vw zGiN*A=cYuG{8l9D2uzt+L0Aq3nkq7O7D2oB} zodWUx>Ou~F|B9IdclqFpD(l#`S)uYVfK3#2mhz+femS*F14uHAv85t6u$8Okzx`{%b_^p7vk!YuUeefHZ) zQ-_rOI}5-j^oR5<=;b*sq#11kGEq?x635Q~?VUwG@2W*KnPz@905J7C17Pjl=7CoT z4>r1hrb}#tlJ<1xC)U84hr>}oxZ^p|qpRE3<4J8jq?V^p>#(0~#n|t0HB2NpjSNvp zX*y6v&7%6HoSDtR9C;I9J0k+Fya7^~>rjwER4!T|sNe#b$Tyc~Ckzz`O7b<^p2%E4 zzeT>o#`^SOwCb=WWz$=qK*gLN>GNKx;{|K4(%j*g3VG_Qo&2 z$abhC*}YPU$8`Ko>Jz2FC~_sK!qxz2VxMy^dPZ&%fDpfW7u%a~Uh2e`v?Oo=IhddM zm*&CD5|F|W9;RH46P5?X&5KUEZI7!j;bb!8%Mac^0K#o`Tt)ZtjDF=a_9(c$e>{`s zS~^KB5Meo`N;3A1C75~uawU&5B)$3zW`vYRP}lf=lySileYg)I=v+G1eoS7}44Y}` zsTOH{3JVTaQS8qf3tPoL0Pbg+vVTM^-8BWETsI^{QuRR;c1G^_L+KH*Sy`8oDkk64 zfdpU2ocL}8is=a6KE8z`KQHW2OY!l4kyr5GM9&*J(NOEcBm1C!iiOX_EIAS4=1$1j z%xj;Zm2V)B=G%9b={b|L1R(K2J!`)T8^5{t8}+>2x>V6dIJ{6fU2I(KwVlIa z{i@yI_1=(`u1=uqcnLSdPA+i}>B4tjm#Fi0v`D=bI7426!d86nwR%_CS@bWK%4N;R zPdyi(4Io&isffv&k1tnmR#gy9%4)OD+NOl1tBNha62p2Z7PrBPyh;z+~io8`9H_SUckydD{@I`?)uFB@+KcDtq&jD+f(S#LU5Nh z0Q{=jxt;772(OA(o~f)f2m@{Zisg^o0ha`4>Xy8*`V0Oj|HtF;0AagZMphcH+R8(k z!|y>d!mrn#&NcD`o?kJwyOs*Hwfpi~o7Bc$^qm1>h9CPB^wVBRvlEOIa3?2f&W%AV z$EV+lMWZEV#wt*CY4IPmBo#;@wRRKt=!EQUkScr{+;+}oiO6c4dmCQOX@*P!uq^D3 zJyG|AmwV!eJZF6bD2JmYARB|(m8YGzi)+1LWXa(-C3+_~O6+kd+10 zTX;8FsrXZ#zL9|*t}~;RNACX_Z*PZu%G1>yJl63@;(k+jdn|FFp8(#nS|Nl?< z@&Bqz`ey+P$1)Si_umzy|0*p-t^(^cG_BD0Kf-Z0fH?ex(5WP5=dwfy@50iNq&
i#NwT!l;(^#gi)g);IU{NasT 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 E4^jDkp8x;= literal 0 HcmV?d00001 From f12b987887199b1b6798023ecb1b32f16dfb921a Mon Sep 17 00:00:00 2001 From: Marc Ransome Date: Sun, 25 Aug 2024 20:07:20 +0100 Subject: [PATCH 2/2] Update README.md --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 0e2752f..f45c150 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ Add a `uses` step to your GitHub [workflow](https://docs.github.com/en/actions/r uses: fish-shop/syntax-check@v2 ``` -By default, all files under `$GITHUB_WORKSPACE` with a `.fish` file extension are checked. To override the default behaviour, provide one or more space-seperated pattern values to the `patterns` input. For example, to check all `.fish` files starting in the `src` directory and descending into subdirectories: +By default, all files under `$GITHUB_WORKSPACE` with a `.fish` file extension are checked. To override the default behaviour, provide one or more space-separated pattern values to the `patterns` input. For example, to check all `.fish` files starting in the `src` directory and descending into subdirectories: ```yaml - name: Syntax check @@ -50,17 +50,17 @@ Configure the action using the following inputs: | Name | Description | Default | |--------------|----------------------------------------|-----------------------| | `patterns` | A space-separated list of file patterns to match against when running syntax checks; each pattern may include [wildcards](https://fishshell.com/docs/current/language.html#expand-wildcard) and/or [brace expansions](https://fishshell.com/docs/current/language.html?highlight=brace+expansion#brace-expansion) | `**.fish` | -| `title` | The title to display in the [job summary](#job-summary); can be used to distinguish multiple summaries generated from a single workflow | `Test results` | +| `title` | The title to display in the [job summary](#job-summary); can be used to distinguish multiple summaries generated from a single workflow | `Syntax check results` | ## Outputs The following outputs are made available to subsequent steps in a workflow: -| Name | Description | -|----------|----------------------------------------------| -| `total` | The total number of files syntax checked | -| `passed` | The number of files that passed syntax check | -| `failed` | The number of files that passed syntax check | +| Name | Description | +|----------|-----------------------------------------------| +| `total` | The total number of files syntax checked | +| `passed` | The number of files that passed syntax checks | +| `failed` | The number of files that failed syntax checks | ## Job summary