Сбой тестов SpecFlow из-за исключений отказа в доступе

После запуска и запуска Orchard CMS, а затем проверки в нашем репозитории Subversion, я просмотрел существующее тестовое покрытие и, в частности, тесты SpecFlow.

Когда я пытаюсь запустить тесты из средства запуска тестов CodeRush или из графического интерфейса NUnit (v2.5.10), я получаю исключения в 67 тестах:

Orchard.Specs.AdditionFeature.AnonymousUserCanSeeTheHomePageButNotTheDashboard:
System.UnauthorizedAccessException : Access to the path
'C:\Users\richard.slater\AppData\Local\Temp\Orchard.Specs\5dchvodt.b1i\Modules\
Orchard.Packaging\Views\.svn\all-wcprops' is denied.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite)
at Orchard.Specs.Util.PathExtensions.FileCopy(Path sourcePath, Path targetPath, Path sourceFile) in C:\Project\Damovo.co.uk_NEW\src\Orchard.Specs\Util\PathExtensions.cs:line 51
at Orchard.Specs.Util.PathExtensions.c__DisplayClass1.b__0(Path file) in C:\Project\Damovo.co.uk_NEW\src\Orchard.Specs\Util\PathExtensions.cs:line 22
at Bleroy.FluentPath.PathCollection.ForEach(Action`1 action)
at Orchard.Specs.Util.PathExtensions.DeepCopy(Path sourcePath, Path targetPath) in C:\Project\Damovo.co.uk_NEW\src\Orchard.Specs\Util\PathExtensions.cs:line 20
at Orchard.Specs.Hosting.WebHost.CopyExtension(String extensionFolder, String extensionName, ExtensionDeploymentOptions deploymentOptions) in C:\Project\Damovo.co.uk_NEW\src\Orchard.Specs\Hosting\WebHost.cs:line 202
at Orchard.Specs.Bindings.WebAppHosting.GivenIHaveModule(String moduleName) in C:\Project\Damovo.co.uk_NEW\src\Orchard.Specs\Bindings\WebAppHosting.cs:line 132
at Orchard.Specs.Bindings.WebAppHosting.GivenIHaveACleanSiteWith(String virtualDirectory, Table table) in C:\Project\Damovo.co.uk_NEW\src\Orchard.Specs\Bindings\WebAppHosting.cs:line 161
at Orchard.Specs.Bindings.OrchardSiteFactory.GivenIHaveInstalledOrchard(String virtualDirectory) in C:\Project\Damovo.co.uk_NEW\src\Orchard.Specs\Bindings\OrchardSiteFactory.cs:line 23
at Orchard.Specs.Bindings.OrchardSiteFactory.GivenIHaveInstalledOrchard() in C:\Project\Damovo.co.uk_NEW\src\Orchard.Specs\Bindings\OrchardSiteFactory.cs:line 16
at TechTalk.SpecFlow.Bindings.MethodBinding.InvokeAction(Object[] arguments, ITestTracer testTracer, TimeSpan& duration)
at TechTalk.SpecFlow.TestRunner.ExecuteStepMatch(BindingMatch match, Object[] arguments)
at TechTalk.SpecFlow.TestRunner.ExecuteStep(StepArgs stepArgs)
at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors()
at Orchard.Specs.AdditionFeature.AnonymousUserCanSeeTheHomePageButNotTheDashboard() in c:\Project\Damovo.co.uk_NEW\src\Orchard.Specs\PermissionModel.feature:line 28

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


person Richard Slater    schedule 24.05.2011    source источник


Ответы (1)


Похоже, он пытается получить доступ к скрытым папкам Subversion (.svn), а они просто недоступны. Возможные причины:

  • Учетная запись пользователя, под которой вы сейчас работаете, не имеет достаточных прав доступа (чтение). Попробуйте установить их для текущего пользователя, вошедшего в систему, на вкладке «Безопасность» на экране «Свойства» папки репозитория верхнего уровня. - изменения должны распространяться на все нижние папки.
  • В фоновом режиме работает клиент Subversion (например, TortoiseSVN), в котором эти файлы открыты для чтения/записи. Это более вероятно. Попробуйте отключить его (или убить клиентский процесс SVN, если нет возможности его закрыть) и посмотреть, что произойдет.

Воздействие с внутренними файлами .svn может быть опасным и привести к повреждению извлеченной папки репозитория. Я не знаю, изменяет ли SpecFlow эти файлы в процессе — если нет, то это хорошо

Существует также решение для экспорта файлов репозитория (через параметр экспорта TortoiseSVN) в отдельную папку (материал, связанный с SVN, не будет скопирован), выполните всю работу над копировать, и каждый раз, когда вы хотите зафиксировать - копируйте измененные файлы обратно в папку, связанную с SVN.

person Piotr Szmyd    schedule 24.05.2011
comment
Предоставление всем полного контроля над папкой не работает. Клонировал Orchard из репозитория HG, и теперь я получаю исключение в HttpClient.cs, подозреваю, что это связано с тем, что тесты ожидают увидеть Orchard на localhost вместо localhost:‹port-num›. Я буду исследовать дальше. Спасибо за вашу помощь и вклад плагина в сообщество. - person Richard Slater; 26.05.2011