在Appveyor上设置R包sql集成测试



我希望在Appveyor上的R包中运行一些SQL集成测试。我使用mdf文件来设置感兴趣的数据库,但我看到在我的R包中有mdf文件的问题。以下是相关步骤:

1)在构建之前,调用PowerShell脚本使用我的包中的mdf文件创建数据库。

  • 此步骤没有错误

2) yml文件通过travis-tool.sh run_tests运行R测试,并尝试将R项目文件从c:projectsHCRTools复制到构建目录,即C:UsersappveyorAppDataLocalTemp

  • 这个步骤失败,因为mdf现在绑定到SQL Server,不能复制:

    "文件中有警告。copy(pkgname, Tdir, recursive = TRUE):hcrtoolsinst ciddatabase SAM_log。 users appveor appdata local temp 1 rtmpcq659a Rbuild92c6989d34hcrtoolsinst ciddatabase SAM_log。ldf:拒绝许可错误

将非常感谢任何帮助上传mdf工件,而不是它也在R包中!不能让这个工作。

yml文件:

init:
  ps: |
        $ErrorActionPreference = "Stop"
        Invoke-WebRequest http://raw.github.com/krlmlr/r-appveyor/master/scripts/appveyor-tool.ps1 -OutFile "..appveyor-tool.ps1"
        Import-Module '..appveyor-tool.ps1'
install:
  ps: Bootstrap
services:
  - mssql2012sp1
build_script:
  - ps: iex .instCIDatabaseCIBuild_DBCreate.ps1 #<-- Create DB (w/ no error)!
  - Rscript -e "source('http://bioconductor.org/biocLite.R')" -e "chooseCRANmirror(ind=81)"
  - travis-tool.sh install_deps
test_script:
  - travis-tool.sh run_tests #<-- mdf copy error occurs!
on_failure:
  - 7z a failure.zip *.Rcheck*
  - appveyor PushArtifact failure.zip
environment:
  global:
    WARNINGS_ARE_ERRORS: 0
    _R_CHECK_FORCE_SUGGESTS_: 1
    R_ARCH: x64
  matrix:
    - R_VERSION: release

PowerShell文件上传工件和创建数据库:

#-- Push artifacts up
Push-AppveyorArtifact inst/CIDatabase/SAM.mdf
Push-AppveyorArtifact inst/CIDatabase/SAM_log.ldf
#-- Use mdf/ldf to create SAM db
$mdfFile = "c:projectsHCRToolsinstCIDatabaseSAM.mdf"
$ldfFile = "c:projectsHCRToolsinstCIDatabaseSAM_log.ldf"
sqlcmd -S "(local)SQL2012SP1" -Q "CREATE DATABASE [SAM] ON (FILENAME = '$mdfFile'), (FILENAME = '$ldfFile') for ATTACH"

注意:已经使用https://github.com/hadley/devtools作为R包应用程序的例子。谢谢你的指导!

我克隆了您的存储库,并且能够通过在命令失败之前停止SQL server并在命令失败之后启动它来克服这个问题。在travis-tool.sh中的RunTests()函数中是这样的。

net stop “SQL Server (SQL2012SP1)” R CMD build ${R_BUILD_ARGS} . net start “SQL Server (SQL2012SP1)”

这有助于避免复制文件问题。但是,我真的不知道在运行状态的SQL服务器是否需要失败的步骤。或者测试根本不需要SQL server,可以在travis-tool.sh之外的测试之前停止。

无论如何,我希望这能给你一个想法,你可以做什么。

——ilya。

最新更新