Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Spelling: Remove deprecated --no-install, replace with --no #9013

Open
wants to merge 9 commits into
base: main
Choose a base branch
from
41 changes: 41 additions & 0 deletions eng/common-tests/spelling/Invoke-Cspell.Tests.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
Describe 'Tool Version' {
BeforeAll {
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@weshaggard -- This is done in lieu of adding a .vscode/cspell.json file to this repo's root.

$ShouldCleanUpVscodeDirectory = $false

$cspellConfigPath = "$PSScriptRoot/../../../.vscode/cspell.json"
if (!(Test-Path $cspellConfigPath)) {
$ShouldCleanUpVscodeDirectory = $true

$vscodeDirectory = Split-Path $cspellConfigPath -Parent
New-Item -ItemType Directory -Path $vscodeDirectory -Force | Out-Null
$configJsonContent = @"
{
"version": "0.2",
"language": "en",
"ignorePaths": [
".vscode/cspell.json",
]
}
"@
$configJsonContent > $cspellConfigPath
}
}

AfterAll {
if ($ShouldCleanUpVscodeDirectory) {
Remove-Item -Path $vscodeDirectory -Recurse -Force | Out-Null
}
}

It 'Should have the correct version' -Tag 'UnitTest' {
# Arrange
$expectedPackageVersion = '6.31.2'

# Act
$actual = &"$PSScriptRoot/../../common/spelling/Invoke-Cspell.ps1" `
-JobType '--version'

# Assert
$actual | Should -Be $expectedPackageVersion
}
}
196 changes: 196 additions & 0 deletions eng/common-tests/spelling/check-spelling-in-changed-files.tests.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,196 @@
Describe 'Spell checking' -Tag 'UnitTest' {
BeforeAll {
$workingDirectory = Join-Path ([System.IO.Path]::GetTempPath()) ([System.IO.Path]::GetRandomFileName())

Write-Host "Create test temp dir: $workingDirectory"
New-Item -ItemType Directory -Force -Path $workingDirectory | Out-Null

Push-Location $workingDirectory | Out-Null
git init

# Set up git user information for this specific repo if no user
# information is set globally. Windows DevOps machines do not have a
# global git identity set.
if (!(git config --get user.email)) {
git config user.email "test@contoso.com"
}
if (!(git config --get user.name)) {
git config user.name "Test User"
}

New-Item -ItemType Directory -Force -Path "./excluded"
New-Item -ItemType Directory -Force -Path "./included"
New-Item -ItemType Directory -Force -Path "./.vscode"

"Placeholder" > "./excluded/placeholder.txt"
"Placeholder" > "./included/placeholder.txt"

$configJsonContent = @"
{
"version": "0.2",
"language": "en",
"ignorePaths": [
".vscode/cspell.json",
"excluded/**"
]
}
"@
$configJsonContent > "./.vscode/cspell.json"

git add -A
git commit -m "Init"

# This forces normal Write-Error behavior (as seen on desktop) for
# errors encountered during testing of
# check-spelling-in-changed-files.ps1. Setting this keeps errors out of
# the DevOps logs for successful tests. Any errors produced by these
# tests are expected or will result in test failures.
$OriginalTeamProjectId = $env:SYSTEM_TEAMPROJECTID
$env:SYSTEM_TEAMPROJECTID = $null
Comment on lines +43 to +49
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is needed to prevent DevOps from showing a bunch of fake error messages produced by the testing.

}

AfterAll {
Pop-Location | Out-Null
Write-Host "Remove test temp dir: $workingDirectory"
Remove-Item -Path $workingDirectory -Recurse -Force | Out-Null

$env:SYSTEM_TEAMPROJECTID = $OriginalTeamProjectId
}

BeforeEach {
$initCommit = git rev-parse HEAD
}

AfterEach {
# Empty out the working tree
git checkout .
git clean -xdf

$revCount = git rev-list --count HEAD
if ($revCount -gt 1) {
# Reset N-1 changes so there is only the initial commit
$revisionsToReset = $revCount - 1
git reset --hard HEAD~$revisionsToReset
}
}


It 'Exits 0 when all files are excluded' {
# Arrange
"sepleing errrrrorrrrr" > ./excluded/excluded-file.txt
git add -A
git commit -m "One change"

# Act
&"$PSScriptRoot/../../common/scripts/check-spelling-in-changed-files.ps1" `
-CspellConfigPath "./.vscode/cspell.json" `
-SpellCheckRoot "./" `
-ExitWithError `
-SourceCommittish (git rev-parse HEAD) `
-TargetCommittish $initCommit

# Assert
$LASTEXITCODE | Should -Be 0
}

It 'Exits 1 when included file has spelling error' {
# Arrange
"sepleing errrrrorrrrr" > ./included/included-file.txt
git add -A
git commit -m "One change"

# Act
&"$PSScriptRoot/../../common/scripts/check-spelling-in-changed-files.ps1" `
-CspellConfigPath "./.vscode/cspell.json" `
-SpellCheckRoot "./" `
-ExitWithError `
-SourceCommittish (git rev-parse HEAD) `
-TargetCommittish $initCommit

# Assert
$LASTEXITCODE | Should -Be 1
}

It 'Exits 0 when included file has no spelling error' {
# Arrange
"correct spelling" > ./included/included-file.txt
git add -A
git commit -m "One change"

# Act
&"$PSScriptRoot/../../common/scripts/check-spelling-in-changed-files.ps1" `
-CspellConfigPath "./.vscode/cspell.json" `
-SpellCheckRoot "./" `
-ExitWithError `
-SourceCommittish (git rev-parse HEAD) `
-TargetCommittish $initCommit

# Assert
$LASTEXITCODE | Should -Be 0
}

It 'Exits 1 when changed file already has spelling error' {
# Arrange
"sepleing errrrrorrrrr" > ./included/included-file.txt
git add -A
git commit -m "First change"

"A statement without spelling errors" >> ./included/included-file.txt
git add -A
git commit -m "Second change"

# Act
&"$PSScriptRoot/../../common/scripts/check-spelling-in-changed-files.ps1" `
-CspellConfigPath "./.vscode/cspell.json" `
-SpellCheckRoot "./" `
-ExitWithError `
-SourceCommittish (git rev-parse HEAD) `
-TargetCommittish $initCommit

# Assert
$LASTEXITCODE | Should -Be 1
}

It 'Exits 0 when unaltered file has spelling error' {
# Arrange
"sepleing errrrrorrrrr" > ./included/included-file-1.txt
git add -A
git commit -m "One change"

# Use baseCommit instead of initCommit to simulate a scenario where the
# file with the spelling error is already checked in.
$baseCommit = git rev-parse HEAD

"A statement without spelling errors" > ./included/included-file-2.txt
git add -A
git commit -m "Second change"

# Act
&"$PSScriptRoot/../../common/scripts/check-spelling-in-changed-files.ps1" `
-CspellConfigPath "./.vscode/cspell.json" `
-SpellCheckRoot "./" `
-ExitWithError `
-SourceCommittish (git rev-parse HEAD) `
-TargetCommittish $baseCommit

# Assert
$LASTEXITCODE | Should -Be 0
}

It 'Exits 0 when spelling errors and no ExitWithError' {
# Arrange
"sepleing errrrrorrrrr" > ./included/included-file-1.txt
git add -A
git commit -m "One change"

# Act
&"$PSScriptRoot/../../common/scripts/check-spelling-in-changed-files.ps1" `
-CspellConfigPath "./.vscode/cspell.json" `
-SpellCheckRoot "./" `
-SourceCommittish (git rev-parse HEAD) `
-TargetCommittish $initCommit

# Assert
$LASTEXITCODE | Should -Be 0
}
}
Loading