-
Notifications
You must be signed in to change notification settings - Fork 187
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Spelling: Remove deprecated --no-install, replace with --no (#9013)
* Spelling: Remove deprecated --no-install, replace with --no * Extract testing, use npm exec instead of npx * Move tests to eng/common-tests/ * Tag tests * Ensure .vscode/cspell.json exists for tests * Add git identity in cases where it's not already present (Windows) * Disable unnecessary errors * Cleanup, documentation * More cleanup * Update $command
- Loading branch information
1 parent
70c4878
commit c6132dd
Showing
4 changed files
with
259 additions
and
226 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
Describe 'Tool Version' { | ||
BeforeAll { | ||
$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
196
eng/common-tests/spelling/check-spelling-in-changed-files.tests.ps1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 "[email protected]" | ||
} | ||
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 | ||
} | ||
|
||
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 | ||
} | ||
} |
Oops, something went wrong.