Skip to content

Conversation

@taku0
Copy link

@taku0 taku0 commented Aug 2, 2025

キーボードマクロを使ったテストを追加します。

テスト用の一時辞書を設定した上で一時バッファでキーボードマクロ等を実行し、バッファの内容やユーザ辞書の内容を確認するマクロを定義して使っています。詳細はtest-utils.elskk-define-e2e-testを参照してください。

テストは概ねDDSKKのマニュアルの「基本的な使い方」「便利な応用機能」に沿っています。
ただし、ソースコードが別ファイルになっている機能はテストも別ファイルとして実装しています。

(skk-define-e2e-test basic-henkan/test1
  "送り有りと送り無しで変換できる。"

  ;; 一時辞書の送り仮名有りエントリのリスト。
  ;; 複数指定した場合はソートした上で改行で連結する。
  (okuri-ari-entries "かんj /感/")

  ;; 一時辞書の送り仮名無しエントリのリスト。
  ;; 複数指定した場合はソートした上で改行で連結する。
  (okuri-nasi-entries "かんじ /幹事/漢字/")

  ;; 実行する処理のリスト。
  ;; 文字列はキーボードマクロとして実行する。
  ;; 関数は無引数で呼び出す。
  (actions #'skk-mode
           ;; 送り仮名有り。
           "K a n J i C-j"
           ;; 送り仮名無し。
           "K a n j i SPC SPC C-j")

  ;; actionsを実行後に期待するバッファの内容。
  (expected-buffer-string "感じ漢字"))

実行方法

make clean
make elc
make test

DockerでEmacsの各バージョンで実行する場合

#!/bin/sh
{
    for EMACS_VERSION in 24 25 26 27 28 29 30
    do
        echo "--- Version $EMACS_VERSION ---"
        echo
        docker \
            run \
            -it \
            --rm \
            --volume="$(pwd)":/src \
            --user "$(id -u):$(id -g)" \
            --env=HOME=/tmp \
            --workdir=/src/ silex/emacs:"${EMACS_VERSION}"-ci \
            bash -c "make clean && make elc && make test" || exit 1
        echo
    done

    exit 0
}

基本的にカバーしていないもの

  • 変換後のバッファの状態や個人辞書の状態以外の部分(UIやチュートリアルなど)。
  • SKKの初期化時に変数を設定しておく必要がある機能。
  • skk-setupでの設定が必要な機能。
  • 「ローマ字入力以外の入力方式」
  • 外部プログラムやサーバが必要なもの。
  • キーボード入力以外で起動する機能(skk-hiragana-regionなど)。

スキップしているテスト

  • skk-henkan-in-minibuff/test4 (再帰的辞書登録): Emacs 28以前で上手く動作せず。要調査。
  • skk-process-prefix-or-suffix/test1 (接頭辞・接尾辞): Emacs 28以前で上手く動作せず。要調査。
  • skk-henkan-in-minibuff/test6 (.で強制的に辞書登録モードに入る): ミニバッファに表示されていた最初の候補が登録される。別途イシューを立てる予定。
  • skk-sticky/test1 (skk-sticky-keyにより任意のキーで変換位置を指定する): SKKのロード時に設定する必要がある。
  • skk-jisx0213/test1 (JIS X 0213で追加された文字を含む候補を除外する): 新しいEmacsではfind-charset-stringが返す値が変わったらしく、動かない。別途イシューを立てる予定。
  • skk-jisx0201/test1 (半角カナモード): SKKのロード時に設定する必要がある。
  • skk-isearch/test1 (skk-isearch): skk-setupでの設定が必要。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant