Src/AppVeyorManager.psm1
#$env:CI = $true #$env:APPVEYOR_BUILD_FOLDER = 'D:\User\Development\OpenSource\Current\Powershell\DevTools' class AppVeyorManager { [String]$apiLink = 'https://ci.appveyor.com/api/testresults/nunit/{0}' [String]$pesterFileTemplate = '{0}\{1}-{2}.NUnit.xml' [HashTable]$devTools = $global:devTools [String]$apiKey = $env:psGalleryKey [String]$stagingPath = $env:TEMP [String]$projectsPath AppVeyorManager() { $this.projectsPath = (get-item $env:APPVEYOR_BUILD_FOLDER).parent.FullName } [HashTable]getConfig() { return @{ apiKey = $this.apiKey projectsPath = $this.projectsPath environment = $this.environment } } [Void]message($message, $category) { Add-AppveyorMessage $message -Category $category } [Void]pushArtifact($provision, $version) { $destination = '{0}\{1}-{2}.zip' -f $this.stagingPath, $provision.projectName, $version Compress-Archive -Path $provision.project.fullName "$destination" -Force -Verbose Push-AppveyorArtifact -Path $destination -DeploymentName $provision.projectName -Verbose } [Void]uploadTestsFile($provision, $pesterConfig) { $target = $this.apiLink -f $env:APPVEYOR_JOB_ID $message = "{0}Uploading {1} to {2}" -f $provision.cr, $pesterConfig.outputFile, $target $provision.warning($message) (New-Object Net.WebClient).UploadFile($target, $pesterConfig.outputFile) } [HashTable]getPesterDefaultConfig($provision, $moduleVersion) { return @{ path = $provision.tests outputFormat = 'NUnitXml' outputFile = $this.pesterFileTemplate -f ( $env:temp, $provision.projectName, $moduleVersion ) passThru = $true } } [Void]throwOnFail($provision, [Int]$failedCount) { if (!$failedCount) { return } $message = '{0}Failed tests count : {1}' -f ($provision.cr, $failedCount) $provision.error($message) throw $message } } |