【问题标题】:Setting up R package SQL-integration tests on Appveyor在 Appveyor 上设置 R 包 SQL 集成测试
【发布时间】:2016-10-19 16:55:37
【问题描述】:

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

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

  • 这一步没有错误发生

2) yml 文件通过travis-tool.sh run_tests 运行R 测试并尝试将R 项目文件从c:\projects\HCRTools 复制到构建目录,即C:\Users\appveyor\AppData\Local\Temp

  • 此步骤失败,因为 mdf 现在绑定到 SQL Server 并且无法复制:

    "file.copy(pkgname, Tdir, recursive = TRUE) 中的警告: 将 .\hcrtools\inst\CIDatabase\SAM_log.ldf 复制到 C:\Users\appveyor\AppData\Local\Temp\1\RtmpCq659a\Rbuild92c6989d34\hcrtools\inst\CIDatabase\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 .\inst\CIDatabase\CIBuild_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:\projects\HCRTools\inst\CIDatabase\SAM.mdf"
$ldfFile = "c:\projects\HCRTools\inst\CIDatabase\SAM_log.ldf"

sqlcmd -S "(local)\SQL2012SP1" -Q "CREATE DATABASE [SAM] ON (FILENAME = '$mdfFile'), (FILENAME = '$ldfFile') for ATTACH"

注意:一直使用https://github.com/hadley/devtools 作为 R 包应用程序示例。感谢您的任何指导!

【问题讨论】:

    标签: continuous-integration integration-testing devtools r-package appveyor


    【解决方案1】:

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

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

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

    无论如何,我希望这可以让您了解您可以做什么。

    --伊利亚。

    【讨论】:

      猜你喜欢
      • 2015-03-01
      • 2014-03-29
      • 2023-04-01
      • 2022-08-10
      • 1970-01-01
      • 2021-07-18
      • 1970-01-01
      • 1970-01-01
      • 2014-02-02
      相关资源
      最近更新 更多