Testthat: tes berjalan di sesi R, tetapi "pemeriksaan R CMD" gagal

Dibuat pada 18 Jul 2013  Β·  11Komentar  Β·  Sumber: r-lib/testthat

tes untuk sebuah paket (lihat di bawah) gagal saat dijalankan oleh "R CMD check", tetapi jika saya menjalankannya dari sesi R, semuanya baik-baik saja. paket yang diuji membuat beberapa file dalam tempdir dan saya ingin memeriksa keberadaannya.

saya telah melihat kesalahan seperti
"Error in file(filename, \"r\", encoding = encoding) : tidak dapat membuka koneksi
Panggilan: lokal ... eval.parent -> eval -> eval -> eval -> eval -> sumber -> file
Sebagai tambahan: Pesan peringatan:
Dalam file(nama file, \"r\", encoding = encoding): tidak dapat membuka file 'startup.Rs': Tidak ada file atau direktori seperti itu"

fungsi paket saya menggunakan beberapa panggilan setwd(). ketika saya membuat file "startup.Rs" dummy di direktori tempat fungsi melompat, kesalahan ini hilang. saya tidak tahu apa yang seharusnya dilakukan file ini atau mengapa itu hanya hilang ketika "pemeriksaan R CMD" menjalankan tes. bagaimanapun, tes masih gagal.

selain itu, testthat tidak memuat semua dependensi, saya telah menambahkan panggilan require() secara manual ke test suite. inilah paketnya, jika Anda ingin mencoba mereplikasi masalahnya: http://reaktanz.de/stuff/R/roxyPackage_0.03-11.tar.gz

Komentar yang paling membantu

Menemukan solusi

Masalah ini terkait dengan yang lain ini: https://github.com/hadley/testthat/issues/144 dan https://github.com/zoonproject/zoon/pull/150.

Solusinya ada di sini: https://github.com/luckyrandom/cmaker/commit/b85813ac2b7aef69932eca8fbb4fa0ec225e0af0

Cukup tambahkan Sys.setenv("R_TESTS" = "") sebagai baris pertama di tests/testthat.R

Semua 11 komentar

Hmmm, panggilan ke setwd() biasanya merupakan ide yang buruk. Tes mungkin dijalankan di lingkungan yang berbeda dari yang Anda harapkan - Saya hanya bisa men-debug masalah dengan menambahkan banyak pernyataan cetak dengan susah payah :(

Saya melihat masalah serupa, meskipun saya tidak menelepon setwd() . Saya dapat menjalankan rangkaian pengujian saya menggunakan testthat:::test_dir dan devtools:::test(fresh=TRUE) , tetapi tidak devtools:::test() (yaitu dengan fresh=FALSE ) atau devtools:::check() .

Saya akan menggali lebih dalam masalah ini, tetapi saya pikir saya akan membagikan perilaku aneh saat saya menyelesaikan ini.

Saya menemukan masalah yang sama, menggunakan R 3.2.2 di OSX Mavericks. Sesuai instruksi di README.md , saya memasukkan yang berikut ke tests/testthat.R dengan file uji di tests/testthat :

library(testthat)
library(qFeature)
test_check("qFeature")

Saat menjalankan R CMD CHECK qFeature , hang ketika memulai tes. Memecahnya dengan Ctrl-C memberikan yang berikut:

    Running β€˜testthat.R’^C
 ERROR
Running the tests in β€˜tests/testthat.R’ failed.
Last 13 lines of output:
  > library(testthat)
  > library(qFeature)
  > 
  > test_check("qFeature")
  Error in file(filename, "r", encoding = encoding) : 
    cannot open the connection
  Calls: local ... eval.parent -> eval -> eval -> eval -> eval -> source -> file
  In addition: Warning message:
  In file(filename, "r", encoding = encoding) :
    cannot open file 'startup.Rs': No such file or directory
  Execution halted

Namun, semua hal dianggap sama, pengujian di konsol R berfungsi dengan baik:

 > library(testthat)
 > test_package("qFeature")
ddply_getFeatures() - Output Values : .
discFeatures() - Output Values : .........
fitQ() - Summary Values : Loading required package: qFeature
................................
fitQ() - Linear Output Values : ....
fitQ() - Quadratic Output Values : ....
getFeatures() - Output Values : .

DONE 

PS: devtools::check("~/path_to_package/qFeature") menghasilkan perilaku yang sama seperti menjalankan R CMD CHECK : hang, dan sekali rusak dengan Cntrl-C , kesalahan yang sama muncul.

Menemukan solusi

Masalah ini terkait dengan yang lain ini: https://github.com/hadley/testthat/issues/144 dan https://github.com/zoonproject/zoon/pull/150.

Solusinya ada di sini: https://github.com/luckyrandom/cmaker/commit/b85813ac2b7aef69932eca8fbb4fa0ec225e0af0

Cukup tambahkan Sys.setenv("R_TESTS" = "") sebagai baris pertama di tests/testthat.R

Kode ini terus bermunculan di R.
Kesalahan dalam file (nama file, "r", penyandian = penyandian):
tidak dapat membuka koneksi
Sebagai tambahan: Pesan peringatan:
Dalam file(nama file, "r", penyandian = penyandian):
tidak dapat membuka file 'rankall.R': Tidak ada file atau direktori seperti itu
, Apa yang dapat saya?

Saya juga melihat kesalahan ini dalam apa yang menurut saya merupakan versi yang lebih baru dari testthat (1.0.2). Setelah saya memasukkan Sys.setenv("R_TESTS" = "") sebagai baris pertama dalam tes/testthat.R seperti yang disarankan di sini, ini berfungsi.

* checking tests ...
  Running β€˜testthat.R’^C
 ERROR
Running the tests in β€˜tests/testthat.R’ failed.
Last 13 lines of output:
  > 
  > test_check("phylogenetic")
  Error in file(filename, "r", encoding = encoding) : 
    cannot open the connection
  Calls: local ... eval.parent -> eval -> eval -> eval -> eval -> source -> file
  In addition: Warning message:
  In file(filename, "r", encoding = encoding) :
    cannot open file 'startup.Rs': No such file or directory
  Execution halted

  testthat results ================================================================
  OK: 6 SKIPPED: 0 FAILED: 0
  Execution halted

R version 3.3.2 (2016-10-31)
Platform: x86_64-redhat-linux-gnu (64-bit)
Running under: CentOS Linux 7 (Core)

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8    LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] testthat_1.0.2      phylogenetic_0.1.99

loaded via a namespace (and not attached):
 [1] magrittr_1.5      R6_2.2.0          Matrix_1.2-8      parallel_3.3.2    tools_3.3.2       coda_0.19-1      
 [7] crayon_1.3.2      Rcpp_0.12.9       ABCoptim_0.14.0   nlme_3.1-128      ape_4.0           grid_3.3.2       
[13] numDeriv_2016.8-1 lattice_0.20-34  

Saya mendapatkan kesalahan "RStudio tidak berjalan" yang sama bahkan dengan Sys.setenv("R_TESTS" = "") di testthat.r.

Pengujian berjalan dengan baik dengan devtools::test() atau menjalankannya secara manual. Mereka gagal dengan devtools::check() .

> sessionInfo()
R version 3.4.3 (2017-11-30)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] compiler_3.4.3  tools_3.4.3     withr_2.1.2     yaml_2.1.19     memoise_1.1.0  
[6] git2r_0.21.0    digest_0.6.15   packrat_0.4.8-1 devtools_1.13.5

Saya juga mendapatkan kesalahan yang sama meskipun mencoba solusi Sys.setenv("R_TESTS" = "") di testthat.R.

> sessionInfo()
R version 3.5.1 (2018-07-02)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS High Sierra 10.13.4

Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] mongrel_0.1          BiocInstaller_1.30.0 devtools_1.13.6     

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.17              plyr_1.8.4                compiler_3.5.1            pillar_1.2.3             
 [5] git2r_0.21.0              bindr_0.1.1               forcats_0.3.0             tidybayes_0.12.1.9000    
 [9] tools_3.5.1               testthat_2.0.0            svUnit_0.7-12             digest_0.6.15            
[13] ggstance_0.3              jsonlite_1.5              memoise_1.1.0             tibble_1.4.2             
[17] gtable_0.2.0              lattice_0.20-35           pkgconfig_2.0.1           rlang_0.2.1              
[21] Matrix_1.2-14             commonmark_1.5            parallel_3.5.1            curl_3.2                 
[25] yaml_2.1.19               LaplacesDemon_16.1.1      bindrcpp_0.2.2            coda_0.19-1              
[29] withr_2.1.2               dplyr_0.7.6               httr_1.3.1                stringr_1.3.1            
[33] roxygen2_6.0.1            xml2_1.2.0                knitr_1.20                arrayhelpers_1.0-20160527
[37] grid_3.5.1                tidyselect_0.2.4          glue_1.2.0                R6_2.2.2                 
[41] purrr_0.2.5               tidyr_0.8.1               ggplot2_3.0.0             driver_0.1.0             
[45] magrittr_1.5              ggridges_0.5.0            MASS_7.3-50               scales_0.5.0             
[49] assertthat_0.2.0          colorspace_1.3-2          stringi_1.2.3             lazyeval_0.2.1           
[53] munsell_0.5.0             RcppEigen_0.3.3.4.0    
checking tests ... ERROR
  Running β€˜testthat.R’
Running the tests in β€˜tests/testthat.R’ failed.
Last 13 lines of output:
         if (logical.return) 
             message(paste("Error:", msg), domain = NA)
         else stop(msg, call. = FALSE, domain = NA)
     })
  3: tryCatchList(expr, classes, parentenv, handlers)
  4: tryCatchOne(expr, names, parentenv, handlers[[1L]])
  5: value[[3L]](cond)
  6: stop(msg, call. = FALSE, domain = NA)

  ══ testthat results  ════════════════════════════════════════════════════════════════════════════════════════════════
  OK: 13 SKIPPED: 0 FAILED: 1
  1. Error: (unknown) (@test-main.R#3) 

  Error: testthat unit tests failed
  Execution halted

Ada saran?

@ jsilve24 Silakan buka masalah baru dan jika mungkin sertakan paket yang Anda lihat kesalahan ini sebagai tautan, tidak mungkin untuk men-debug ini tanpa melihat paketnya.

Dalam kasus khusus saya, perbedaan yang saya dapatkan antara devtools::test() dan devtools::check() adalah karena memiliki definisi unit baru dalam file .R daripada di dalam .onLoad() (dan menghapusnya di .onUnload() ).

Sebelum

Dalam R/unit_conversion.R :

units::install_conversion_constant("FL", "ft", 100)

fl_to_foot <- function(fl) {
  fl %>%
    units::set_units(FL) %>%
    units::set_units(ft) %>%
    units::drop_units()
}

di tests/testthat/test-conversion.R :

context("Units convertion")
library(trfcplx)

test_that("fl_to_foot converts flight levels (FL) to feet", {
  expect_equal(fl_to_foot(150), 15000)
})
  • devtools::test() : Oke
  • devtools::check() : GAGAL

Setelah

Di R/unit_conversion.R :

fl_to_foot <- function(fl) {
  fl %>%
    units::set_units(FL) %>%
    units::set_units(ft) %>%
    units::drop_units()
}

Dalam zzz.R (file baru sesuai "Ketika Anda melakukan kebutuhan efek samping" bagian):

# register flight levels (FL) as a unit when loading this package
.onLoad <- function(libname, pkgname) {
  # install user-define unit for flight level
  units::install_conversion_constant("FL", "ft", 100)

  invisible()
}

# register flight levels (FL) as a unit when loading this package
.onUnload <- function(libname, pkgname) {
  # uninstall user-define unit for flight level
  units::remove_symbolic_unit("FL")

  invisible()
}
  • devtools::test() : Oke
  • devtools::check() : Oke
Apakah halaman ini membantu?
0 / 5 - 0 peringkat