検索条件
お知らせ
現在サイトのリニューアル作業中のため、全体的にページの表示が乱れています。
Issueの中にあるTasksの進捗状況集計したい。したくない?したいですよね!
実はGitHubのREST APIを叩いてもTasks情報を素直に取れません
仕方がないので雑に取得するためのシェルスクリプトを書きました
GitHub CLI使ったら簡単に出来るやろ、そう思っていた時代が私にもありました
なんとできません
検索クエリ投げないとProjectで絞れないようなかったり、痒いところに手が届かない子ですし、まぁ許しましょう
でも REST APIなら流石に…なかった
ちょっと待ってほしい、画面上表示されてるのにAPIとしては提供されてないの?
そんなのある?
2016年には問題提起されていたようですが絶賛放置中
API叩いてIssue本文からTasksの情報を雑に抜いて集計するだけのやつです
超雑なのでインデントとかコードフェンスの中とか何も考慮してません
pull_request
イベントの公式リファレンスが手薄くイベントの意味を明示してないので動きを実際に確認したものをメモ程度に。基本は意味のままだと思いますが…
opened: PRが開いたとき
reopened: PRが開き直されたとき
synchronize: PRに対してPushが走ったとき
- サンプルで作っただけなので中身は適当
pull_request
はbranches
を先頭に書かないと、指定ブランチ以外でも走るので注意
name: testing on opend PR to main
on:
pull_request:
branches:
- main
types:
- opened
- reopened
- synchronize
jobs:
# 事前ブランチチェック
before-check:
runs-on: ubuntu-latest
steps:
- name: fail case
if: startsWith(github.head_ref, 'test/') && github.base_ref == 'main'
# test/* ブランチから main ブランチ宛である場合
# exit 1で終了することで Workflow を failure 扱いにする
# https://docs.github.com/ja/actions/creating-actions/setting-exit-codes-for-actions
run: exit 1
# 前の if に入らなければ、そのまま次のジョブにつながる
after-exec:
# 指定されたジョブの成功を要求、失敗している場合、このジョブを実行しない
# 必然的に線形実行になる(並列では走らない)
needs: [before-check]
runs-on: ubuntu-latest
steps:
- name: TEST!
run: echo "RUN after-exec"
Env |
Ver |
next |
11.1.2 |
typescript |
4.3.4 |
export const useRouter = () => {
return {
route: '/',
pathname: '',
query: '',
asPath: '',
push: jest.fn(),
replace: jest.fn(),
events: {
on: jest.fn(),
off: jest.fn(),
},
beforePopState: jest.fn(() => null),
prefetch: jest.fn(() => null),
};
};
基本出来ないのでwindow.location.href
を操作するためのラッパーを作って、それをjest.spyOn()
して解決する
理由はjsdomが対応していないため
global.navigator
をモックにする方法
jest
のモック機能はプロパティのモックが出来ないので、実オブジェクトを強制的に書き換えて実施する
Object.defineProperty()
を利用して実装
value
, プロパティが返す値
configurable
, 再定義可能かどうか、設定しないと再実行でコケる
- 実際の使用ではユーティリティ関数を作っておき、
afterAll()
でnavigator.userAgent
を初期値に戻すのが望ましい
Object.defineProperty(global.navigator, 'userAgent', {
value:
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36',
configurable: true,
});