pester / Pester

Pester is the ubiquitous test and mock framework for PowerShell.

Home Page:https://pester.dev/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CodeCoverage.OutputEncoding ignored in xml encoding-attribute

fflaten opened this issue · comments

Checklist

What is the issue?

CodeCoverage XML reports always report encoding="utf-8" regardless of CodeCoverage.OutputEncoding configuration option. The file itself is written using the selected encoding.

Related comment: #2298 (comment)

Expected Behavior

XML report should report the correct encoding in xml declaration.

Steps To Reproduce

# Executed in pester-repo
$c = New-PesterConfiguration
$c.Run.Path = './tst/functions/assertions'
$c.Run.ExcludePath = '*/demo/*', '*/examples/*', '*/testProjects/*', '*/Pester.Tests.ps1'
$c.Output.Verbosity = 'Detailed'
$c.CodeCoverage.Enabled = $true
$c.CodeCoverage.Path = './src/functions'
$c.CodeCoverage.UseBreakpoints = $false
$c.CodeCoverage.OutputFormat = 'JaCoCo'
$c.CodeCoverage.OutputEncoding = 'unicode' #utf-16
Invoke-Pester -Configuration $c

Generated coverage.xml is UTF-16 LE, but says <?xml version="1.0" encoding="UTF-8" standalone="no"?>

Describe your environment

Pester version : 5.6.0-beta1 /workspaces/Pester/bin/Pester.psm1
PowerShell version : 7.4.1
OS version : Unix 5.15.133.1

Possible Solution?

  1. Improve type for configuration option or limit current string option to valid encodings. Related issue #2451

  2. Remove/replace hard-coded value here:

    $jaCoCoReport = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>'

  3. Consider replacing Out-File with XmlWriter and XmlWriterSettings.Encoding-option like TestResults? See related issue #2452