問題タブ [ert]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
unit-testing - ERT、同じと見なす必要がある異なるシンボルが原因で等価テストが失敗する
そこで、Emacs の単体テスト パッケージである ERT に慣れようとしています。を使ったマクロ展開をテストしたいgensym
。gensym が同じnameのシンボルを生成することを確認できますが、それらは同じシンボルではないため、失敗します。以下は、より良いアイデアを提供するためのコードです。
失敗メッセージは次のとおりです。
もちろん、それは別のシンボルですが、そうであると予想されます。どうすればこれを成功させることができますか?
編集
これは私がこれまでに思いついたものです:
でも、もっといい方法があればもっと嬉しいです。
emacs - Elisp:ertでテストを実行するときにsleep-forがブロックされない
バックグラウンドプロセスを続行するためにスリープする必要があるertを使用していくつかのテストを設定しようとしています。とを使ってみましsleep-for
たaccept-process-output
。どちらも信頼できません。これが小さな例です。
このテストは5秒間スリープしてから、少なくとも3秒が経過したことを確認します。それを使用sleep-for
するとすぐに終了し、失敗します。コメントがない場合shell-command
は、予想される5秒かかり、成功します。ここで何が起こっているのですか?
編集:
前の例をテストしたとき、私の環境には何か奇妙なことがあったに違いありません。このわずかに変更された例には、テストする必要があるようなバックグラウンドプロセスが含まれており、失敗します。インタラクティブとコマンドの両方を使用してテストしました。
出力は次のとおりです。
EDIT2:
プロセス出力を示しているように見える新しいバージョンは、割り込みに十分sleep-for
です:
EDIT3:
心が重いので、別のバージョンを投稿します。
sleep-for
ブロックに頼ることができないことは明らかなようです。
emacs - Emacs ERT テストの順序を変更できますか?
ert-run-tests-batch-and-exit
Emacs のERT テスト ( ) は名前 (順番) で実行されることに気付きました。
どういうわけか、定義した順序でテストを実行できますか?
例えば:
最初に「test-2」を実行し、次に「test-1」を実行します。
PS: テストは順序に依存するべきではありませんが、それでも必要であることはわかっています。
emacs - GUI テストが必要な場合、Emacs ERT テストはどのように実行すればよいですか?
でテストを実行しましert-run-tests-batch-and-exit
た。ターミナルでもOKです。
しかし今、テストするには GUI を備えた Emacs が必要です。
そして技術的ert-run-tests-batch-and-exit
にも機能します。
しかし、シェルでの結果は次のようになります。
以上です。すべての ERT(backtrace)
は Emacs で (その*Messages*
バッファー内で) 強制終了されます。
何が問題なのかを確認できるように、標準出力に出力する方法を見つけたいだけです。
UPD:standard-output
変数を使ったいくつかのトリックでしょうか?
unit-testing - Emacs ERT テストを対話的に実行できない
Emacs ert テストを対話的に実行しようとしていますが、実行されません。このサンプル テストを実行するために、 Emacs ERT ガイドに従っています。
を使用してバッファからこのテストを実行すると、次のM-x ert RET t RETように出力されます。
ただし、コンソールから (バッチ モードで) 実行すると機能します。
私はemacs 24.5を使用しています。
sql - PLSQL開発者でデータベース内のすべてのテーブルのERD図を取得するにはどうすればよいですか?
データベースからすべてのテーブルの ERD ダイアグラムを取得しようとしています.それは可能ですか? PL/sql 開発者を使用しています。プラグインがあるかどうか、または同じものを取得する方法があるかどうかを知りたいです/
matlab - 2 つの行の間に特定の値を持つ Matlab 塗りつぶし行列 (Bresenham)
学校のプロジェクトでは、8 本の金属ピンでカーボン ファイバー シートのあらゆる種類の損傷を特定する必要があります。損傷を判断するために、複数のポイント間の抵抗率測定を使用します。
ポイント間の抵抗を可視化するために、Matlab スクリプトを使用します。値を行列にプロットし、ブレゼンハム関数で線を作成します。
問題は次のとおりです。
ブレゼンハム関数は行列に線を作成しますが、関数を探して、2 つの線の間の行列をそれらの 2 つの線を組み合わせた平均で埋めます。行との間の行列を埋める必要があるS1_(1)
の平均。最終的なプロットは、すべての点が描画される場所です。線間のすべての領域が塗りつぶされると、円のどこかに高い頂点が作成されます。S1_(2)
x1_1,y1_1
x1_1,y1_2
誰かがこの問題を解決するのを手伝ってくれますか?
アップデート:
関数を呼び出して三角行列を作成し、それらすべての行列を合計します。
emacs - ISO ert インライン テスト イディオム (複数の ert 呼び出しからの TEST_OUTPUT の追加)
---+ 概要
Q: 複数の個別の独立した ert 呼び出しがある場合、これらのテストの出力を同じバッファーに連結するように手配できますか? 異なる時間に ert の呼び出しが行われていますか?
(これらの独立したテストについて知っている中央集権的なものはありません。)
たとえば、.emacs ファイルに 2 つ (またはそれ以上) のテストがある場合
両方とも実行されます。*Messages*
ただし、*ert*
バッファーには最後のテスト実行の出力のみが含まれます。
---+詳細
---++ モチベーション
Q: なぜこれをやりたいのですか?
A: 「インライン テスト」です。特に、私の .emacs ファイル (およびそれがロードおよび/または必要とするファイル) 内のもののインライン テスト。
.emacs または同様のファイルがロードされるたびに実行されるテスト。(バッチモードで実行する他のテストがあるかもしれませんが、ここでは、.emacs が読み込まれるたびにすぐに実行したいテストについて話しています (.emacs の変更中に編集/デバッグするのに便利です)。
つまり、インライン テストのイディオムを探しています。
次のようなコードを .emacs および ~/lib/gnu-emacs/**.el ファイルに入れています。
つまり、関数とテストを定義し、テストを実行します。
... 私はしばしば「prog」をラップすることを認めます。
これにより、関数 foo またはテストを編集し、progn の最後にジャンプして eval-last-sexp を実行することが容易になるためです (これは Cj にバインドされています)。また、開発中の機能を簡単に無効にするために、if または and and and and around をラップすることもよくあります。機能に変数がある場合は、let* を使用してミックスすることもあります。
(私はert -run-tests-batchやert-run-tests-interactively のような他のert-ファミリー ランナーを使用しました。しかし、単純な古いertで十分なようです。)
( defunとdeftestをprognやその他の内部に置くと、 defun が常に最上位にあることを期待するいくつかのツールが機能しなくなります。また、複数行の docstring がさらに醜くなります。しかし、これは非常に便利であり、プログラミング言語ファイルを操作する IMHO ツールは、プログラミングを解析する必要があります。言語。)
そのため、後で、別のモジュールに対して同じことを行います。遠く。おそらく別のファイル、おそらくライブラリファイルにあります。
どちらのモジュールも、他のモジュールを認識してはなりません。
最後に実行される、そのようなすべてのテストのリストを持つ集中型モジュールも存在しないでください。
ファイルのロードの途中で失敗する可能性があるという理由だけで。そして、その時点までのどのテストが成功したか失敗したかがわかると便利です。
(一方、最後にすべてのテストを収集して実行すると、増分テスト実行能力が失われます。)
---++ マクロである必要があります
私は繰り返しが嫌いです。たとえば、以下の例では、BAR を 3 回入力する必要がありません。
したがって、もちろんこの繰り返しを減らすマクロを作成します。とはいえ、 ert-deftestを探している人は混乱するでしょう...
---++ 中程度の長さの簡単な例
私が持っている場合
私は素敵な*ert*
バッファを取得します
そして後で私が持っている場合
バッファ内の test1 の出力を消去し、*ert*
それを置き換えます
私が望むのは、両方のテストの出力を連結することです: