0

Я ищу несколько тестов интеграции SQL в своем R-пакете на Appveyor. Я использую файл mdf для создания интересующей базы данных, но я вижу проблемы с наличием файла mdf в моем R-пакете. Ниже приведены соответствующие шаги:Настройка тестов SQL-интеграции R на Appveyor

1) Перед созданием позвоните сценарию PowerShell, чтобы создать db, используя файл mdf в моем пакете.

  • Этот шаг происходит без ошибок

2) Файл YML проходит тесты R через travis-tool.sh run_tests и пытается скопировать файлы 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 \ инст \ CIDatabase \ SAM_log.ldf: Разрешение отказано ОШИБКА копирование для создания каталога не удалось»

бы очень признателен за любую помощь в загрузке кросса артефакт без него также быть в пакете 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 appveyor примера. Спасибо за любое направление!

ответ

1

Я клонировал ваш репозиторий и смог преодолеть эту проблему, остановив SQL-сервер перед сбоем команды и включив ее после. Это выглядит так в travis-tool.sh внутри функции RunTests().

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

Это помогло избежать копирования файлов проблемы. Тем не менее, я действительно не знаю, требуется ли SQL-сервер в рабочем состоянии для этого неудачного шага или нет. Или, может быть, SQL-сервер вообще не требуется для тестов и может быть остановлен перед тестом вне travis-tool.sh.

В любом случае я надеюсь, что это может дать представление о том, что вы можете сделать.

--ilya.

Смежные вопросы