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
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.
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()
).
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()
: Okedevtools::check()
: GAGALDi 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()
: Okedevtools::check()
: Oke
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 ditests/testthat.R