21

と統合するには明らかに 2 つの方法がありtestthatますR CMD check。私はどちらも働くことができません。

アプローチ #1: (おそらく非推奨)

devtools wikiによると:

パッケージを開発するときは、テストを inst/tests に置き、次のコードを含むファイル tests/run-all.R (大文字の R でなければならないことに注意してください) を作成します。

library(testthat) 
library(mypackage)
test_package("mypackage") 

これにより、パッケージの名前空間でテストが評価され (エクスポートされていない関数をテストできるようになります)、テストの失敗がある場合はエラーがスローされます。これは、テストの失敗の完全なレポートが表示され、すべてのテストに合格しない限り R CMD チェックに合格しないことを意味します。

パッケージ全体はこちら. その中には、次の 2 つのファイルがあります。

## minimalbugexample/inst/tests/run-all.R
library(testthat)
library(minimalbugexample)
test_package('minimalbugexample')

## minimalbugexample/inst/tests/test-use-Matrix-package.R
context("Intentional break")
  expect_that( TRUE, equals(FALSE))

私の説明は

Package: minimalbugexample
Title: 
Description: 
Version: 0.1.1
Author: Nathan VanHoudnos <nathanvan@letterafterFmail.com>
Maintainer: Nathan VanHoudnos <nathanvan@letterafterFmail.com>
Depends:
    R (>= 3.0.1),
    Matrix (>= 1.0)
Suggests:
    testthat
License: GPL
LazyData: true
Collate:
    'minimalbugexample-package.r'
    'use-Matrix-package.R'

パッケージをインストールした後、テストを問題なく実行できます (予想どおり失敗します)。

> test_package('minimalbugexample')
Intentional break : 1


1. Failure:  -------------------------------------------------------------------
TRUE not equal to FALSE
1 element mismatch
Error: Test failures
> 

しかし、R CMD checkテストは実行されません。

$ R CMD check minimalbugexample_0.1.1.tar.gz 
... snip ...
* checking PDF version of manual ... WARNING
WARNING: There was 1 warning.
See
  ‘/home/nathanvan/software/minimalbugexample.Rcheck/00check.log’
for details.

PDF の警告がこれと関係があるとは思いませんが、要求があれば詳細を提供できます。

アプローチ #2: (ブリーディング エッジ)

リポジトリのREADMEファイルにtestthatよると:

ここで、tests/testthat にテストを配置し、次のコードを tests/test-all.R に配置して R CMD チェックが確実に実行されるようにすることをお勧めします。

library(testthat)
test_check(yourpackage)

そのため、testthat の最新バージョンがインストールされていることを確認しました。

> install_github("testthat")

そして、パッケージを変更しました。このバージョンはこちらから入手できます。2つのファイルを次のように変更しました

## minimalbugexample/inst/tests/test-all.R
library(testthat)
test_check(minimalbugexample)

## minimalbugexample/inst/tests/testthat/test-use-Matrix-package.R
context("Intentional break")
  expect_that( TRUE, equals(FALSE))

次に、DESCRIPTION ファイルでパッケージのバージョンを 0.1.2 に更新すると、ビルドしてインストールし、testthatチェックして以前と同じ出力を得ることができます。したがって、testthat関係する限り、その作業のようです。

ただし、R CMD チェックはまだテストを実行しません。

$ R CMD check minimalbugexample_0.1.2.tar.gz 
... snip ...
* checking PDF version of manual ... WARNING
LaTeX errors when creating PDF version.
This typically indicates Rd problems.
WARNING: There was 1 warning.
See
  ‘/home/nathanvan/software/minimalbugexample.Rcheck/00check.log’
for details.

だから質問:

私は何を間違っていますか?私の好みはアプローチ 2 の解決策ですが、いずれかを採用します。

4

1 に答える 1