Pdf.js: カバレッゞ統蚈を生成テスト

䜜成日 2017幎07月10日  Â·  43コメント  Â·  ゜ヌス: mozilla/pdf.js

テストでカバヌされおいないコヌドの郚分、たたは実際にはデッドコヌドを特定するには、カバレッゞレポヌトを生成するず䟿利です。 別の䜿甚䟋は、特定のPDFファむルの問題を分析するずきにPDF.jsのどの郚分が関連しおいるかをすばやく特定するこずですこれは、新しい寄皿者にずっお特に圹立ちたす。

耇数のツヌルがありたすが、私はhttps://github.com/gotwarlost/istanbulで良い経隓をしたした
Travisず統合でき、結果をカバヌオヌルなどの倖郚サヌビスに公開できたす。たずえば、https//coveralls.io/github/Rob--W/cors-anywhere  branch = masterhttpsず統合 //github.com/Rob--W/cors-anywhere/commit/f9af03e76249b4dd38722b459293773ccddb6c7d。

PDF.jsには、私が知っおいるさたざたな実行方法がありたす詳现に぀いおは、 gulpfile.jsを参照しおください。

  • unittestcli-Node.jsでPDF.jsのいく぀かの単䜓テストを実行したす最小限の゜ヌス倉曎で、gulpfile.jsで構成されたbabelでの倉換のみ。
  • unittest-ブラりザヌでPDF.jsのいく぀かの単䜓テストを実行したす最小限の゜ヌス倉曎で、systemjs.config.jsで構成されたbabelによる倉換のみ
  • browsertest-ブラりザでテストを実行したすChromeずFirefoxをテストしたす。 これは、 genericビルドタヌゲットによっお䜜成されたバむナリに䟝存したす。このバむナリは、babelでトランスパむルされ、webpackgulpfile.jsで構成にバンドルされたコヌドを䜿甚したす。
  • examples / node / pdf2svg.js -Node.jsでSVGレンダリングバック゚ンドをトリガヌするために䜿甚できたすbrowsertestず同様に、 genericビルドタヌゲットによっお異なりたす
  • ブラりザ拡匵機胜Firefox / Chromiumずしお、firefox / chromiumビルドタヌゲットを䜿甚したす䞀般的なタヌゲットず同様のビルドプロセスを䜿甚したすが、定矩が異なりたす

理想的には、元の゜ヌスのカバレッゞ統蚈を取埗したすが、最初に、ブラりザヌ/ Node.jsで盎接実行される生成されたJSファむルのカバレッゞ統蚈を決定するこずもできたす簡単な堎合。

1-test 5-good-beginner-bug

党おのコメント43件

unittestcli-Node.jsでPDF.jsのいく぀かのナニットテストを実行したす最小限の゜ヌス倉曎で、babelによる倉換のみ。
browsertest-ブラりザでテストを実行したすChromeずFirefoxをテストしたす。 これは、 genericビルドタヌゲットによっお䜜成されたバむナリに䟝存しおいたす。このバむナリは、babelでトランスパむルされ、webpackにバンドルされたコヌドを䜿甚したす。

ながらずいう泚意browsertest参照テストを実行したす、たたありたすunittestずは察照的に、ブラりザでナニットテストの完党なセット実行するコマンドunittestcliサブセットのみを実行したす既存のナニットテストの。

さらに、 PDFJS_NEXTビルドフラグが蚭定されおいる堎合 gulpfile.js他のビルドフラグのように、たたはコマンドラむン匕数ずしお、「Babelを䜿甚した倉換」ステップをスキップできるこずに泚意しおください。 コヌドはただWebpackにバンドルされおいたすが、少なくずも倉換ステップを回避するこずは可胜です。

@ Rob--WIはこれに取り組みたい

あなたのものです ご䞍明な点がございたしたら、できればIRCでお知らせください。

@timvandermeij Karmaツヌルを䜿甚するこずを考えおいたす。これは、むスタンブヌルのコヌドカバレッゞ゚ンゞンで動䜜したす。テストの実行に぀いお統蚈を確認し、そこからHTMLレポヌトを䜜成できたす。開始するのに良い方法ですか

Karmaを䜿甚しお、テストレポヌトを取埗したしたhttps://drive.google.com/file/d/0ByddvU1PKkWaWEZTWHFYT0Y0aTg/view?usp=sharing
ただし、テストカバレッゞ統蚈は衚瀺されおいたせんhttps://drive.google.com/file/d/0ByddvU1PKkWaS1ZiT1dobU1DQUk/view?usp=sharing

@ Divya063たずえば、珟圚のコヌドをGithubのpdf.jsフォヌクのブランチにプッシュしお、コヌドを共有できたすか 必芁に応じおwebpackずbabelのどちらを実行しおいるのでしょうか。

たた、どのバヌゞョンのNode.jsを䜿甚しおいたすか

回答ありがずうございたす。ノヌドのバヌゞョンは6.11.1です。 ブランチhttps://github.com/Divya063/pdf.js/tree/devぞのリンクは次の

゚ラヌは次のずおりです。

Firefox 43.0.0
SyntaxErrorむンポヌト宣蚀はトップレベルにのみ衚瀺される堎合がありたす
Chrome 60.0.3112
Uncaught SyntaxError予期しないトヌクンのむンポヌト

これは、コヌドが䜿甚前にトランスパむルされおいないこずを瀺しおいたす。 珟圚、ESモゞュヌルの組み蟌みサポヌトがあり、どのブラりザでもデフォルトで有効になっおいないため詳现、最初にコヌドをトランスパむルする必芁がありたす。

最初の投皿を線集しお、PDF.jsのビルドシステムのどこでトランスパむルが構成されおいるかを指摘したした。 おそらく、既存のプラグむンを䜿甚しお、むスタンブヌルずバベルを統合するこずができたす。 クむック怜玢ではhttps://github.com/istanbuljs/babel-plugin-istanbulが衚瀺され

Firefoxの珟圚の安定バヌゞョンは55です。Firefox43でテストしおいたしたが、これは叀くおサポヌトされおいたせん。再床テストする前に、Firefoxの最新バヌゞョンにアップグレヌドするこずをお勧めしたす

@ Rob--W゚ラヌを衚瀺しおいただきありがずうございたす。結果はすぐに曎新されたす。

@ Rob--WIはkarma-browserifyを䜿甚しおコヌドをトランスパむルし、Firefoxのバヌゞョンをアップグレヌドしたしたが、それでも倚くの゚ラヌが発生しおいたす。ブランチ。 / dev

゚ラヌメッセヌゞを共有できたすか

たた、可胜であれば、browserifyの代わりにwebpackを䜿甚しおみおください。これは、webpackがすでに䜿甚されおいるためです。 そうするこずで、ブラりザで実際に䜿甚されるコヌドをむンストルメント化できたす。

たた、.ideaやその他のナヌザヌ固有のプロゞェクト/ IDEファむルをチェックむンしおいるこずもわかりたす。 既存のプロゞェクトに貢献するずきは、関連のないファむルをプロゞェクトに远加しないこずをお勧めしたす。これは、リポゞトリが乱雑になり、マヌゞの競合が発生するためです。 最終的なプルリク゚ストでは、これらのファむルを含めないでください。

この問題はただ発生しおいたすか はいの堎合、私はそれに取り組みたいず思いたす。

はい、これに自由に取り組んでください。

@timvandermeij
私はこれに取り組んでいたした。 テストをカバヌするためにむスタンブヌルを䜿甚し、レポヌトを衚瀺するためにカバヌオヌルを䜿甚したした。 必芁に応じお、必芁な倉曎を加えたした。 ただし、を䜿甚しおカバヌオヌルを実行するずきはい぀でも

npm run coveralls

次の゚ラヌが発生したす

npm run coveralls

> [email protected] coveralls /home/shikhar/Desktop/mozillaPdfJs/pdf.js
> npm run cover -- --report lcovonly && cat ./coverage/lcov.info | coveralls


> [email protected] cover /home/shikhar/Desktop/mozillaPdfJs/pdf.js
> istanbul cover test/**/*.js "--report" "lcovonly"

Running test 1/16: test_first_run
Running test 2/16: test_first_run_incognito
Running test 3/16: test_storage_managed_unavailable
Running test 4/16: test_managed_pref
Running test 5/16: test_local_pref
Running test 6/16: test_managed_pref_is_overridden
Running test 7/16: test_run_extension_again
Running test 8/16: test_running_for_a_while
Running test 9/16: test_browser_update
Running test 10/16: test_browser_update_between_pref_toggle
Running test 11/16: test_extension_update
Running test 12/16: test_unofficial_build
Running test 13/16: test_fetch_is_supported
Running test 14/16: test_fetch_not_supported
Running test 15/16: test_fetch_mode_not_supported
Running test 16/16: test_network_offline
All tests completed.
No coverage information was collected, exit without writing coverage information
[error] "2017-12-17T11:00:06.112Z"  'error from lcovParse: ' 'Failed to parse string'
[error] "2017-12-17T11:00:06.116Z"  'input: ' ''
[error] "2017-12-17T11:00:06.116Z"  'error from convertLcovToCoveralls'

/home/shikhar/Desktop/mozillaPdfJs/pdf.js/node_modules/coveralls/bin/coveralls.js:18
        throw err;
        ^
Failed to parse string
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] coveralls: `npm run cover -- --report lcovonly && cat ./coverage/lcov.info | coveralls`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] coveralls script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/shikhar/.npm/_logs/2017-12-17T11_00_06_136Z-debug.log

私はこれをここずここで調べおみ

コヌドを芋ずに芋分けるのは難しいです。 ここの寄皿者があなたず䞀緒に芋るこずができるように、コヌドをブランチにプッシュできたすか

@timvandermeijここにありたす。 gemファむルは無芖しおください。 私はすでにそれを削陀したした。

コメント@timvandermeij

グヌグルを少し芋るず、この゚ラヌはcoverallsがlcov圢匏のデヌタを取埗しおいないこずを意味しおいるように芋えたす。 npm run cover -- --report lcovonly && cat ./coverage/lcov.info | coveralls内の個々のコマンドが、実際に期埅する結果を返すかどうかを確認できたす。

@timvandermeij
珟圚の䞻な問題はこの声明です
No coverage information was collected, exit without writing coverage information
このため、lcovファむルは垞に空癜のたたであり、したがっおこれが発生したす

[error] "2017-12-17T11:00:06.112Z"  'error from lcovParse: ' 'Failed to parse string'
[error] "2017-12-17T11:00:06.116Z"  'input: ' ''
[error] "2017-12-17T11:00:06.116Z"  'error from convertLcovToCoveralls'

グヌグルでは、これらは非垞に䞀般的な゚ラヌのようです。 ゚ラヌは基本的にむスタンブヌルにありたす。 同じバヌゞョンを切り替えおみたしたが、゚ラヌが発生し続けたした。 ただし、すべおの堎所で、テストはlintやunittestなどではなく、mochaによっお行われおいるため、ほずんどほずんどの解像床もmocha専甚です。 これらは私が調べたいく぀かの情報源でした

https://github.com/gotwarlost/istanbul/issues/262
https://github.com/coryhouse/react-slingshot/issues/245
https://github.com/gotwarlost/istanbul/issues/496
ず他のいく぀かもありたすが、実際にはどれも圹に立ちたせんでした:(

ビルドはtravis https://travis-ci.org/shikhar-scs/pdf.js/jobs/318422621 で枡され

なぜそうなっおいるのかよくわかりたせんが、ゞャスミンで成功した人もたくさんいるので、それは可胜だず思いたす。 https://bryce.fisher-fleig.org/blog/setting-up-istanbul-with-jasmine/index.htmlが機胜するかどうか詊しおみお

@timvandermeij
カバレッゞレポヌトが぀いに生成されおいたす。 ただし、むンポヌトステヌトメントず゚クスポヌトステヌトメントに問題が発生するため、トランスパむルしおからテストする必芁がありたす。
Transformation error for /home/shikhar/Desktop/mozillaPdfJs/pdf.js/web/ui_utils.js ; return original code 'import' and 'export' may appear only with 'sourceType: "module"' (16:0)
この゚ラヌはすべおのjsファむルで発生しおいるので、すぐに䜜業しおPRを提出したす。

@timvandermeij

ここにそれらがありたすビルドパスずカバレッゞの呌び出し。

カバレッゞレポヌト

ただし、むンポヌトステヌトメントず゚クスポヌトステヌトメントが存圚するため、これらのファむルに到達した埌でも、それらは完党にテストされおいないため、0のカバレッゞレポヌトを取埗しおいたす。 私の知る限り、ゞャスミンテストの前にこれらのファむルをES6にバベリファむする必芁があり、それが問題であるこずが蚌明されおいたす。 ES6コヌドをゞャスミンに提䟛するにはどうすればよいですか
ここhttp://jpsierens.com/use-es6-right-now/に蚘茉されおいるようにgulpファむルに倉曎を加えるこずはできたすか

あなたは確かに解決策に近づいおいたす。 カバレッゞレポヌトから、 libファむルでカバレッゞを実行しおいるように芋えたす。これはすでにES6にトランスパむルされおいるはずですhttps://github.com/mozilla/pdf.js/blob/6ac9e1c5ed0d5f067872b8482724c171c79566b2/gulpfileを参照。 jsL965およびhttps://github.com/mozilla/pdf.js/blob/6ac9e1c5ed0d5f067872b8482724c171c79566b2/gulpfile.js#L985。 それずも、ナニットテスト自䜓がトランスパむルされおいないずいう問題ですか 私はそれがどのように正確に機胜するかに぀いおはあたりよく知りたせんが、そうであれば、ナニットテストのためにGulpfileにいく぀かの倉曎が必芁になる堎合がありたす。

@timvandermeij

それずも、ナニットテスト自䜓がトランスパむルされおいないずいう問題ですか 私はそれがどのように正確に機胜するかに぀いおはあたりよく知りたせんが、そうであれば、ナニットテストのためにGulpfileにいく぀かの倉曎が必芁になる堎合がありたす。

問題は、間違ったフォルダヌでテストを実行しおいたこずでした。 build>libフォルダヌにはすでにES6圢匏のプロゞェクト党䜓が含たれおおり、ゞャスミンずカバヌオヌルのパスなど、すべおを修正したした。
もう1぀の問題は、 --report lcovonlyステヌトメントでした。 魔法のように理由はわかりたせんがこの郚分を぀なぎ服のラむンから削陀するず、レポヌトが生成され始めたした。

npmの個々のコマンドがcoverを実行するかどうかを確認できたす--- report lcovonly && cat ./coverage/lcov.info | カバヌオヌルは実際にあなたが期埅する結果を返したす。

これを指摘しおいただきありがずうございたす。

最埌に、レポヌトを生成するこずができたすtada少し悲しそうに芋えたすが、正確なファむルを読むず、その理由がわかりたす-

  1. 実行されおいないすべおの条件文は、「察象倖」ずしおカりントされたす。
  2. 実行されおいないすべおの割り圓おステヌトメントも「察象倖」ずしおカりントされたす。

私は明らかに生成されたレポヌトを自分でアップロヌドしおいたせんが、ここhttp://pdfjscoveragereport.bitballoon.comのリンクでそれらをホストしおいたす。 これらのリンクにアクセスするず、期埅される正確なレポヌトが埗られたす。

ただし、これらの結果はcoveralls.ioは反映されたせんcry理由はわかりたせん。 たた、耇数回コミットした埌でも、 coverallsは、最近のコミットではなく、非垞に叀いコミットに基づいおプロゞェクトを構築しおいるこずに気付きたした。そのため、カバレッゞは生成されたすが、垞に0のたたです珟圚は0ではありたせんが。 それを解決する方法を教えおください。

ただし、それでもnpm run coverallsは、 build/lib/coverage/lcov-reportフォルダヌにあるこの圢匏のカバレッゞレポヌト党䜓を提䟛したす。

これらすべおが最終的に圹立぀こずを願っおいたすが、最埌の問題は、これらのレポヌトをカバヌオヌルに衚瀺するこずです。

これは私の最新のビルドぞのリンクです。 https://travis-ci.org/shikhar-scs/pdf.js
これは私の最新のコミットぞのリンクです。

coveralls.ioでレポヌトが生成されないこずを陀けば、すべお問題ないず思いたす。 それでは、より倚くの人々から泚目を集め、代わりにこの問題を早期に解決する可胜性があるため、PRを生成したすか

よくやった 報道のアむデアを持っおいるこずは本圓に良いこずです、そしお、レポヌトは最終的に私たちにそれを䞎えたす。 確かに、さらに倚くの単䜓テストが必芁であるこずを明確に瀺しおいたすが、最近単䜓テストを远加したすべおのメ゜ッドは、実際にレポヌトでカバヌされおいるように瀺されおいるため、完党に問題ないように芋えたす。

ビルドされたファむルではなく、゜ヌスファむルに察しおカバレッゞを実行できるかどうか疑問に思いたす。 これにより、理解が容易になりたす。これは、 http//pdfjscoveragereport.bitballoon.com/lib/display/metadata.js.htmlで、28行目がカバヌされおいないのに、コヌドではなく、代わりに自動生成されたコヌドであるこずがわかりたす。 難しいこずが刀明した堎合は、最初のバヌゞョンずしお珟圚のアプロヌチを実行し、フォロヌアップの問題でこれを実行できたす。

それでは、より倚くの人々から泚目を集め、代わりにこの問題を早期に解決する可胜性があるため、PRを生成したすか

はい、それは良い考えです。 その埌、レビュヌプロセスを開始し、察凊すべき問題を確認できたす。

報道のアむデアを持っおいるこずは本圓に良いこずです、そしお、レポヌトは最終的に私たちにそれを䞎えたす。 確かに、さらに倚くの単䜓テストが必芁であるこずを明確に瀺しおいたすが、最近単䜓テストを远加したすべおのメ゜ッドは、実際にレポヌトでカバヌされおいるように瀺されおいるため、完党に問題ないように芋えたす。

より倚くの単䜓テストで実行できるこずは確かですが、悲しいこずに、単䜓テストだけでは「十分な」十分なテストカバレッゞに近づくこずはおそらくないコヌドベヌスの倧郚分がありたす。

https://github.com/mozilla/pdf.js/issues/8632#issue -241690851で述べたように、いく぀かの異なるテストスむヌトがありたす。間違っおいない限り、 gulp browsertestからもカバレッゞ結果を取埗したす。実際のテストカバレッゞがどのように芋えるかを実際に知るためには、ほずんど䞍可欠です。

@Snuffleupagus @timvandermeij

今朝、ステヌトメントcd build && cd lib && istanbul cover --include-all-sources jasmine-node testを䜿甚しお、すべおのフォルダヌでカバレッゞレポヌトを個別に怜玢し、 cd <directory name>を䜿甚しお別のディレクトリを倉曎し、 jasmine-node <directory names and js files>を䜿甚しおテストしたしたが、無駄でした。

テストレポヌトは時々垞にではありたせんが生成されたすが、これは特定のディレクトリにある1぀たたは2぀のES6圢匏のjsファむルが原因で発生しおいたすカバレッゞレポヌトの2〜3未満しかありたせん。 残念ながら、 import or export statementsを含むjsファむルは、この圢匏で゚ラヌを返したす。

Transformation error for /home/shikhar/Desktop/mozillaPdfJs/pdf.js/src/core/arithmetic_decoder.js ; return original code 'import' and 'export' may appear only with 'sourceType: "module"' (183:0) Unable to post-instrument: /home/shikhar/Desktop/mozillaPdfJs/pdf.js/src/core/arithmetic_decoder.js

この゚ラヌでは、ファむルのカバレッゞがたったくチェックされないため、0のレポヌトが返されたす。

ビルドされたファむルではなく、゜ヌスファむルに察しおカバレッゞを実行できるかどうか疑問に思いたす。

繰り返しになりたすが、゜ヌスフォルダヌにはむンポヌトステヌトメントず゚クスポヌトステヌトメントを含むファむルが含たれおいるため、䞊蚘の゚ラヌが発生したす。これにより、関連ファむルがたったくチェックされず、カバレッゞが0になりたす。

したがっお、ビルドフォルダヌ自䜓でテストするこずが䞍可欠です。

gulp browsertestからカバレッゞ結果を取埗するこずも、実際のテストカバレッゞがどのように芋えるかを実際に知るためにほが䞍可欠です。

@Snuffleupagusこれらの特定のテストはどこにありたすか 䞊蚘のjasmine-nodeステヌトメントを䜿甚しお、それらを盎接テストしおみるこずができたす。

難しいこずが刀明した堎合は、最初のバヌゞョンずしお珟圚のアプロヌチを実行し、フォロヌアップの問題でこれを実行できたす。

ええ、私たちはむしろそれを行うこずができたす。

はい、それは良い考えです。 その埌、レビュヌプロセスを開始し、察凊すべき問題を確認できたす。

確かに、私はそれから始めたす。

9308のPRは、単䜓テストのみのテストカバレッゞの䟋を瀺しおいたす。 ナニットテストのセットが非垞に小さいため、生成されたレポヌトはほずんど䟡倀がありたせん。 詳现に぀いおは、 https //github.com/mozilla/pdf.js/pull/9308#issuecomment-353588039を参照しお

したがっお、ブラりザのテストを取埗するには、次のものが必芁です。

  1. カバレッゞデヌタを生成する方法。
  2. カバレッゞデヌタを取埗するそしおそれをカバヌオヌルにアップロヌドする方法。

1に察凊するには、 gulpfile.jsを線集しお、オプションでコヌドむンストルメンテヌションを远加する必芁がありたす。これは、ブラりザヌのwindow.__coverage__オブゞェクトに゚クスポヌトされたす。 gulp-istanbulが圹立぀かもしれたせん。 ドキュメントはたばらに芋えたすが、 https//stackoverflow.com/questions/38208735/no-window-coverage-object-is-created-by-istanbul-phantomjsで䟋を芋぀けたした

手順1を完了するず、ブラりザヌのテストにはwindow.__coverage__倉数たたはcoverageVariable構成パラメヌタヌに入力したものが含たれたす。 カバレッゞレポヌトを取埗するには

  1. テストランナヌhttps://github.com/mozilla/pdf.js/blob/e081a708c36cb2aacff7889048863723fcf23671/test/driver.jsを倉曎しお、カバレッゞ結果をXMLHttpRequestでテストサヌバヌに投皿したす。
  2. テストサヌバヌhttps://github.com/mozilla/pdf.js/blob/e081a708c36cb2aacff7889048863723fcf23671/test/test.jsで、テスト結果を受信するための新しいフックを登録し、 fsを䜿甚しおファむルに曞き蟌みたす。
  3. レポヌトをカバヌオヌルにアップロヌドしたすたずえば、9308に瀺すように「coveralls」コマンドを䜿甚したす。

@ Rob--Wこのような詳现なレビュヌをありがずう。 フォロヌアップしお、できるだけ早く元に戻したす。

このコメントは、実装のヒントを提䟛し、 https //github.com/mozilla/pdf.js/pull/9308#issuecomment-353710595からの質問に察凊し

istanbulは、コヌドにむンストルメンテヌションを远加するだけです。 「むンストルメンテヌション」ずは、実行がその行やステヌトメントなどを通過するタむミングを怜出するJavaScriptコヌドを远加するこずを意味するため、この入力は実行可胜コヌドであるず想定されたす。むンストルメンテヌションを远加した埌にコヌドが倧幅に倉曎されるず、結果のカバレッゞレポヌトは無意味になりたす。

このむンストルメンテヌションは、プログラムの実行䞭にオンザフラむで実行できたすたずえば、コマンドラむンからistanbul coverを実行するず、 istanbulはNode.jsのrequireぞの呌び出しをむンタヌセプトしたすモゞュヌルがロヌドされる前にむンストルメンテヌションを䜿甚しおコヌドを倉換するか、実行ずは別にたずえば、ブログ投皿が瀺すように、むンストルメンテヌションされたコヌドはコマンドラむンで生成され、実行はブラりザヌで実行されたす。

9308の珟圚のPRでは、実行するプログラムずしおjasmineを䜿甚しおistanbul coverを呌び出しおいたす。 前に述べたように、効果はgulp unittestcli実行ず䌌おいたす。぀たり、テストはbuild/libディレクトリにあるビルド枈みのラむブラリに察しお実行されたすこれはtest/unit/clitests.json構成されたす。 。 これは、カバレッゞレポヌトにbuild/lib/を陀くすべおのカバレッゞが0ず衚瀺されおいる理由を説明しおいたす require -dNode.jsモゞュヌルのみがbuild/libずbuild/streams/ - gulp unittestcliタスク定矩の最埌を参照しおください。

有甚なカバレッゞレポヌトを取埗istanbulを統合しお、コヌドがES6からトランスパむルされるずきに、むンストルメンテヌションが远加されるようにする必芁がありたす。 その埌、モゞュヌルごずのレポヌトを生成するこずがより困難になりたすただし、理論的には、゜ヌスマップは、デヌタを元のファむルにマップするのに十分な情報を提䟛したす。
これは課題であり、Babel、gulp、istanbul、および゜ヌスマップ/モゞュヌルの䜿甚方法を十分に理解する必芁がありたすPDF.jsがすべおのモゞュヌルをたずめおPDF.jsを生成する゜ヌスコヌドの関連する堎所をすでに参照したしたラむブラリ-8632を参照。 この知識は非垞に圹立぀ので、挑戊を恐れないのであれば、私の指導の䞋でこれを探求するこずができたす。

しかし、深く掘り䞋げる前に、もっず簡単なこずから始めたしょう。ブラりザからカバレッゞレポヌトを取埗するこずです。 ブラりザでテストを実行するには、 unittestずbrowsertest 2぀の方法がありたす。 Node.jsでナニットテストを実行する簡単な方法はすでにあるので、 browsertest焊点を圓おたしょう。 ブラりザのテストでは個々のモゞュヌルは䜿甚されたせんが、 generic gulpタヌゲットによっおGENERIC_DIR 、別名build/generic/䜜成されたPDF.jsラむブラリが䜿甚されたす。 したがっお、コヌドむンストルメンテヌションをbuild/genericに远加するだけで十分です。 build/generic/を入力ディレクトリずしお䜿甚し、結果をcoverage/build/generic曞き蟌むこずをお勧めしたす。

その埌、 test/test_slave.htmlを倉曎しお、 <script>タグに../build/generic/build/pdf.jsを無条件にロヌドせず、 ../build/generic/build/pdf.jsたたは../coverage/build/generic/build/pdf.jsいずれかを条件付きでロヌドする必芁がありたす。

通垞のpdf.jsラむブラリをむンストルメント化されたpdf.jsラむブラリに眮き換えるず、テストの実行時にカバレッゞ統蚈が生成されたす。 結果はグロヌバルwindow.__coverage__倉数に栌玍されたす。 ブラりザヌ内のテストドラむバヌが終了したら test /driver.jsの_quitメ゜ッド、このレポヌトをシリアル化しおたずえば、 JSON.stringify(window.__coverage__) 、 XMLHttpRequestサヌバヌに送信できたす。 driver.jsファむルの他の堎所を参照しおください- /tellMeToQuitメッセヌゞを送信する前に、必ずサヌバヌにレポヌトを送信しおください。そうしないず、カバレッゞレポヌトが送信されない可胜性がありたす。正しく。
https://github.com/mozilla/pdf.js/blob/ba5dbc96326518ad716158ef040f61794cc72202/test/test.jsで、新しいカスタムAPI呌び出しの新しいハンドラヌを远加できdriver.js XMLHttpRequest呌び出し /tellMeToQuitメッセヌゞなどを芋お、 test.js察応するハンドラヌを芋぀けおください。 サヌバヌ偎でシリアル化されたJSONを受け取ったら、 fs.writeFileSync APIを䜿甚しおカバレッゞレポヌトをファむルに曞き蟌みたすファむルの曞き蟌み方法を瀺す他の䟋がtest.jsたす。 。

@ Rob--W私は珟圚新幎たで利甚できたせん...その埌は確実に远い぀きたす

その埌、test / test_slave.htmlを倉曎しお、.. / build / generic / build /pdf.jsを無条件にロヌドしないようにする必芁がありたす。

その埌、test / test_slave.htmlを倉曎しお、.. / build / generic / build /pdf.jsを無条件にロヌドしないようにする必芁がありたす。

@ Rob--WIはtestFilterパラメヌタヌを暡倣するこずによっお tests.js同様のパラメヌタヌを䜜成するこずに成功したしたが、それをtest/test_slave.htmlに組み蟌むこずは私にずっおただ問題です。 残りの倉曎に぀いおは、もう䞀床PRにアクセスしおください。新しいコミットをプッシュしたした。 9308

たた、PDF.jsに固有のIRCチャネルたたはslack / gitter /メヌリングリストに参加するためのリンクを提䟛しおいただければ幞いです。

@ Rob--W問題はただ発生しおいたすか はいの堎合、私はそれに取り組みたいず思いたす。
ありがずうございたした。

これに察する最初の詊みは9308にあるので、それをむンスピレヌションずしお䜿甚できたす。 最小限のバヌゞョン、぀たりロヌカルでのみ機胜するバヌゞョンを機胜させるこずに焊点を圓おたしょう。 ボットやTravisCIで動䜜する必芁はありたせん。 ロヌカルでカバレッゞレポヌトを䜜成できれば、それはすでに非垞に重芁です。 ロヌカルの堎合は、むンストルメント化された単䜓テストを実行し、それに基づいおカバレッゞレポヌトを生成するgulp coverageずいうコマンドを䜜成するずよいでしょう。 動䜜しおマヌゞされおいるので、い぀でもそれを繰り返すこずができたす。

@timvandermeijはただアクティブですか 私もやっおみるこずができたす

はい、これに自由に取り組んでください 簡単に始めるべきです。 考えられるアプロヌチに぀いおは、 https //github.com/mozilla/pdf.js/issues/8632#issuecomment-455868037を参照しお

@timvandermeij私がこれをみるこずができるかどうか疑問に思っおいたすか 私が持っおいるもう1぀の倧きな質問は、代わりにnpmスクリプトを䜿甚しおレポヌトを生成できるかどうか、たたはgulpタスクである必芁があるかどうかです。

私はgulpあたり粟通しおいたせんが、それがこれの芁件であるかどうかを孊びたいず思っおいたす

誰もこれに取り組んでいないず思うので、どうぞ 最初のパッチではシンプルに保぀こずが重芁です。 私たちはGulpをメむンのツヌルずしお䜿甚しおいるので、それを䜿甚するこずをお勧めしたすが、他の提案も受け付けおいたす。 実装のアむデアに぀いおは、 https //github.com/mozilla/pdf.js/issues/8632#issuecomment-455868037を参照しお

これに取り組みたいず思いたす。 問題はただ開いおいたすか そしお、どこでバグをよりよく理解できたすか

@jezhouはこれに取り組んでおり、11580でいくらかの進歩を遂げたした。 ただし、PRは最近曎新されおいたせん。

曎新ありがずうございたす。 私はそれに取り組み始めるこずができるず思いたすか どこ
詳现情報を入手できたすか 問題ずそれの残りに぀いお??

2020幎5月16日土曜日、午埌5時56分Rob Wu、 notifications @ github.comは次のように曞いおいたす。

@jezhou https://github.com/jezhouはこれに取り組んでいお、いく぀かを䜜りたした
11580https  //github.com/mozilla/pdf.js/pull/11580での進捗状況。 広報
ただし、最近は曎新されおいたせん。

—
あなたがコメントしたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/mozilla/pdf.js/issues/8632#issuecomment-629637879 、
たたは賌読を解陀する
https://github.com/notifications/unsubscribe-auth/AKUZ65CGSIZF6OMFZWENWF3RR2A77ANCNFSM4DSK7SGQ
。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡