問題タブ [modulino]
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.
perl - Perl で、自分のファイルがモジュールとして使用されているか、スクリプトとして実行されているかを確認するにはどうすればよいですか?
スクリプトとして呼び出されたときにのみ実行する必要がある部分がある Perl ファイルがあるとします。これらの部分を main() メソッドに含めて、
でもどんな状態だったか忘れました。Google で検索しても、実りあるものは何も見つかりませんでした。誰かがこれを探すのに適切な場所を指摘できますか?
ruby - ユニットテストをrubyモジュールに含めるにはどうすればよいですか?
Perl modulinoモデルに従って、モジュール自体と同じソースファイルにモジュールの単体テストを含めようとしています。
これで、このソースファイルを実行する単体テストを実行できます。
ただし、別のスクリプトからそれらを要求/ロードするときにも実行されます。どうすればこれを回避できますか?
この慣習が推奨されない限り、Rubyでこれを達成するためのより慣用的な方法はありますか?
perl - テストするモジュールが利用できない場合、perlテストスクリプトを強制終了するにはどうすればよいですか?
テストを簡単にするために、perlアプリケーションを「モジュリノ」として構築しています。ディレクトリ構造は次のようになります。
各.tテストファイルの最初のテストでは、次のモジュールもロードされます。
テストのために、トップレベルのディレクトリで次のコマンドを実行します。
この時点までのすべてがうまく機能します。気になるのは、誤って.tテストスクリプトを直接実行したときです。
私の指には、テキストエディタに保存した直後に、ホットキーを押してスクリプトを実行するというほぼ自律的な習慣があります。テストファイルの1つでこれを行うと、それは忠実に実行され、全面的に障害を報告します。独自のディレクトリから実行するとモジュールを認識できないため、これは予想されることです。私の懸念は、いくつかのテストがファイルシステムに書き込むことです。例としては、検証に使用される構成ファイルやデータファイルがあります。私の好みは、テストするはずのモジュールをロードできない場合、テストスクリプトが何かを実行する前にクロークすることです。そうすれば、残りのテストで問題が発生することを心配する必要はありません。
私が現在取り組んでいる解決策は、BEGIN { use_ok('MainScript'); }
回線を標準使用の呼び出しに置き換えることです。
でテストを実行してprove -l
も、期待どおりに機能します。use_okテストが削除されたとしても、ファイルの残りの部分が実行されるので、明らかに問題ありません。何らかの理由でテストでモジュールが見つからない場合、テストはチョークし、「証明」するとテストファイルが失敗したと表示されます。エディターから直接スクリプトを実行すると、コンパイル時に失敗し、@INCで要求されたモジュールが見つからないというメッセージが表示されます。これは私にとって望ましい行動のようです。
これを行うためのより良い方法はありますか、および/またはこのアプローチに私を噛み付くような何かがありますか?
perl - TextMate内でフォームを証明するために設計されたテストperlスクリプトを実行するにはどうすればよいですか?
私はTextMate1.5.10(Mac OSX 10.7.2)を使用してperlmodulinoアプリケーションを作成しています。prove
機能を確認するために、コマンドラインツールで実行するように設計されたテストスクリプトを使用しています。
私が使用しているディレクトリ構造の例は次のようになります。
001_load_test.tファイルは次のようになります。
prove
またはprove -v
「text_mate_test」ディレクトリで実行すると、すべてが期待どおりに通過します。
ターミナルにジャンプせずにテストファイルを実行できるようにするホットキーをTextMateに設定できるようにしたいと思います。現在、Cmd + Rを使用してTextMate内から直接「001_load_test.t」を実行すると、「@INCでMyModule.pmが見つかりません」というメッセージが表示されます。テストスクリプトは直接実行するように設計されていないため、これは予想されることです。(私はまだテストファイルを書くのはかなり新しいですが、それがそれらを設定するための適切な方法だと思います。)
テストファイル自体を変更したくないという前提から外して、TextMate内からファイルを正確に実行できるようにホットキーを設定する方法はありますか?
perl - Perl -d と modulino の問題
「モジュリーノ」のアイデアを使用して単体テストを開始したスクリプトがいくつかあります。スクリプトが "perl -d" で呼び出されると、caller() が真の値を返すため、スクリプトが実行されないという問題が発生しました。
スクリプトの本体が main() にラップされており、いくつかのサブルーチンが main() から独自のサブルーチンにゆっくりと引き出されています。
私が持っているスクリプトの上部に:
.t テストで呼び出すと、main() を実行せずに希望どおりに動作するため、サブルーチンをテストできます。CLI からスクリプトを呼び出すと、main() を呼び出すとうまく機能します。
CLI から次のように呼び出すと、問題が発生します。
この段階で、呼び出し元は (undef ではなく) 有効な値を返し、main は呼び出されません。
これにアプローチする方法についての提案は大歓迎です。
perl - モジュール名はわからないがファイル名はわからないperlモジュールを読み込んで使う
私は modulino perl パターンをいじっていましたが、パッケージ名とそれが含まれているファイルだけを知らずにロードしたいと考えています。次のように使用できるものを探しています。
ここsomething
が鍵です。いいえrequire
、またはuse
後でモジュール名が必要になるためです。を読んで名前$file
を解析してから使用する必要がありますか? package
きっともっと良い方法があるかもしれません。perlには常にあります。
python - Ruby、PythonのPerl Modulinoに相当しますか?
Perl には modulino と呼ばれる設計パターンがあり、ライブラリ モジュール ファイルがライブラリとスクリプトの両方として機能することは知っています。Ruby / Pythonにこれに相当するものはありますか?
この設計パターンは私にとって非常に役立つと思います。私はかなり短いワーカーを書いていますが、それらを実行するにはスクリプトも必要です。これをすべて同じ場所から実行できると便利だと思います。
ありがとうございました!
system - Perl6 で modulino を作成するにはどうすればよいですか?
Perl6でmodulino(モジュールとしてもスクリプトとしても実行できるファイル)を作りたいです。
次のコードは、コマンド ラインからファイル名を「処理」します。
これを実行できるので保存するmain.pm6
と動作します:
ですから、これをモジュールにして、機能を追加してテストを容易にしたいと考えています。ただし、module
宣言を追加すると、何も出力されなくなります。
結果は何も出力されません:
では、Perl6 で modulino を構築するにはどうすればよいでしょうか?
2015年1月リリースのらくどうスターからMoarVM上で動作するPerl6を使用しています。
アップデート:
モジュールを中かっこでラップしようとすると、次のようになります。
エラーも発生します: