diff --git a/.github/instructions/dotnet-framework.instructions.md b/.github/instructions/dotnet-framework.instructions.md
index 9b796f612a..29316aa88d 100644
--- a/.github/instructions/dotnet-framework.instructions.md
+++ b/.github/instructions/dotnet-framework.instructions.md
@@ -1,4 +1,4 @@
----
+---
description: 'Guidance for working with .NET Framework projects. Includes project structure, C# language version, NuGet management, and best practices.'
applyTo: '**/*.csproj, **/*.cs'
---
@@ -18,7 +18,7 @@ applyTo: '**/*.csproj, **/*.cs'
- Example: ``
- **No Implicit Imports**: Unlike SDK-style projects, .NET Framework projects do not automatically import common namespaces or assemblies
-
+
- **Build Configuration**: Contains explicit `` sections for Debug/Release configurations
- **Output Paths**: Explicit `` and `` definitions
diff --git a/.github/workflows/patch-installer-cd.yml b/.github/workflows/patch-installer-cd.yml
index 4233836bc1..6cc137b838 100644
--- a/.github/workflows/patch-installer-cd.yml
+++ b/.github/workflows/patch-installer-cd.yml
@@ -1,4 +1,4 @@
-name: Patch Installer
+name: Patch Installer
# Builds the FieldWorks Patch Installer on the specified `base_release`
# If `make_release` is true, uploads installers to https://flex-updates.s3.amazonaws.com/?prefix=jobs/FieldWorks-Win-all-Release-Patch.
@@ -151,7 +151,7 @@ jobs:
- name: Setup dotnet
uses: actions/setup-dotnet@v5
with:
- dotnet-version: |
+ dotnet-version: |
3.1.x
5.0.x
@@ -166,7 +166,7 @@ jobs:
choco install wixtoolset --version 3.11.2 --allow-downgrade --force
echo "C:\Program Files (x86)\WiX Toolset v3.11\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
if: github.event_name != 'pull_request'
-
+
- name: Import Base Build Artifacts
shell: pwsh
run: |
@@ -211,7 +211,7 @@ jobs:
)
$valueName = "Switch.System.DisableTempFileCollectionDirectoryFeature"
$expectedValue = "true"
-
+
foreach ($path in $regPaths) {
Write-Host "Adding or updating registry value in $path..."
if (-not (Test-Path $path)) {
@@ -238,11 +238,11 @@ jobs:
$results = Select-String -Path "build.log" -Pattern "^\s*[1-9][0-9]* Error\(s\)"
if ($results) {
foreach ($result in $results) {
- Write-Host "Found errors in build.log $($result.LineNumber): $($result.Line)" -ForegroundColor red
+ Write-Host "Found errors in build.log $($result.LineNumber): $($result.Line)" -ForegroundColor red
}
exit 1
} else {
- Write-Host "No errors found" -ForegroundColor green
+ Write-Host "No errors found" -ForegroundColor green
exit 0
}
diff --git a/.vscode/settings.json b/.vscode/settings.json
index a70510a40a..ded340aacd 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,4 +1,4 @@
-{
+{
"chat.promptFilesRecommendations": {
"speckit.constitution": true,
"speckit.specify": true,
@@ -95,11 +95,7 @@
// Tasks not listed require manual confirmation.
// ============================================================================
"chat.tools.tasks.allowedTasks": [
- // Build tasks (safe - only produce artifacts)
- "Build",
- "Build Release",
-
- // Test tasks (safe - no external changes)
+ // Test tasks remain auto-approved so Linux hosts surface the not-supported message.
"Test",
"Test (no build)",
@@ -125,6 +121,9 @@
]
// ============================================================================
// TASKS REQUIRING MANUAL APPROVAL (not in allowedTasks):
+ // - Build (Windows only)
+ // - Build Release (Windows only)
+ // - Build Tests (Windows only)
// - Test (with filter) (has user input prompt)
// - Test (specific project) (has user input prompt)
// - Agent: Propose updates (modifies files)
diff --git a/AGENTS.md b/AGENTS.md
index 888a0a1cdb..757773468b 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -1,4 +1,4 @@
-# AI Agent Playbook for FieldWorks
+# AI Agent Playbook for FieldWorks
Minimal, high-signal guidance for coding agents in this repository.
@@ -8,10 +8,6 @@ Minimal, high-signal guidance for coding agents in this repository.
- Build with `.\build.ps1`.
- Test with `.\test.ps1`.
- Do not bypass repository scripts for normal build/test work.
-- Before committing or pushing, run the existing VS Code task `CI: Full local check`.
-- After any rebase, merge, cherry-pick, or manual conflict resolution, run `CI: Whitespace check` before committing.
-- If `CI: Whitespace check` rewrites files, review and restage those files, then rerun the task until it passes cleanly.
-- When commit history changes, run `CI: Commit messages` before pushing.
## Critical constraints
@@ -25,6 +21,10 @@ Minimal, high-signal guidance for coding agents in this repository.
- Apply `.github/instructions/navigation.instructions.md` for structural navigation and hidden-dependency handling.
- Use `Src/AGENTS.md`, `.github/AGENTS.md`, `FLExInstaller/AGENTS.md`, and `openspec/AGENTS.md` for area-specific guidance.
+## External Dependencies (LibLcm)
+
+FieldWorks is built upon the `liblcm` (Language & Culture Model) repository, which provides the main data model and FDO (FieldWorks Data Objects) layers used by FieldWorks. The liblcm library is the core FieldWorks model for language and culture data and includes interfaces like `IScrFootnoteFactory` that FieldWorks consumes. If you cannot find a core data model definition within this workspace, ask for access to the `liblcm` repository to reference the source.
+
## Serena navigation
- Prefer Serena symbolic tools for code discovery/navigation before broad file reads.
@@ -40,6 +40,5 @@ Minimal, high-signal guidance for coding agents in this repository.
## Validation checklist
1. Run the relevant build/test scripts for touched areas.
-2. Run `CI: Full local check` before commit/push; use `CI: Whitespace check` immediately after conflict resolution.
-3. Keep edits scoped and avoid unrelated refactors.
-4. Update docs only when behavior/contracts/process changed.
+2. Keep edits scoped and avoid unrelated refactors.
+3. Update docs only when behavior/contracts/process changed.
diff --git a/Build/Agent/FwBuildHelpers.psm1 b/Build/Agent/FwBuildHelpers.psm1
index a785423157..0895213baf 100644
--- a/Build/Agent/FwBuildHelpers.psm1
+++ b/Build/Agent/FwBuildHelpers.psm1
@@ -1,4 +1,4 @@
-<#
+<#
.SYNOPSIS
Shared helper functions for FieldWorks build and test scripts.
@@ -474,6 +474,110 @@ function Test-GitTrackedFile {
}
}
+function Get-NewestWriteTimeUtc {
+ <#!
+ .SYNOPSIS
+ Returns the newest LastWriteTimeUtc among matching files under one or more roots.
+ #>
+ param(
+ [Parameter(Mandatory)][string[]]$Paths,
+ [string[]]$IncludePatterns = @()
+ )
+
+ $latest = [datetime]::MinValue
+ foreach ($path in $Paths) {
+ if (-not (Test-Path $path)) {
+ continue
+ }
+
+ $items = Get-ChildItem -Path $path -Recurse -File -ErrorAction SilentlyContinue
+ if ($IncludePatterns.Count -gt 0) {
+ $items = $items | Where-Object {
+ $fileName = $_.Name
+ foreach ($pattern in $IncludePatterns) {
+ if ($fileName -like $pattern) {
+ return $true
+ }
+ }
+ return $false
+ }
+ }
+
+ foreach ($item in $items) {
+ if ($item.LastWriteTimeUtc -gt $latest) {
+ $latest = $item.LastWriteTimeUtc
+ }
+ }
+ }
+
+ return $latest
+}
+
+function Get-OldestWriteTimeUtc {
+ <#!
+ .SYNOPSIS
+ Returns the oldest LastWriteTimeUtc across a set of required artifact files.
+ Returns $null if any required artifact is missing.
+ #>
+ param(
+ [Parameter(Mandatory)][string[]]$Paths
+ )
+
+ $oldest = [datetime]::MaxValue
+ $foundAny = $false
+ foreach ($path in $Paths) {
+ if (-not (Test-Path $path)) {
+ return $null
+ }
+
+ $item = Get-Item -LiteralPath $path -ErrorAction Stop
+ $foundAny = $true
+ if ($item.LastWriteTimeUtc -lt $oldest) {
+ $oldest = $item.LastWriteTimeUtc
+ }
+ }
+
+ if (-not $foundAny) {
+ return $null
+ }
+
+ return $oldest
+}
+
+function Test-ViewsNativeArtifactsStale {
+ <#!
+ .SYNOPSIS
+ Returns $true when the Views/FwKernel native artifacts are missing or older than relevant native inputs.
+ #>
+ param(
+ [Parameter(Mandatory)][string]$RepoRoot,
+ [Parameter(Mandatory)][string]$Configuration
+ )
+
+ $sourceRoots = @(
+ (Join-Path $RepoRoot 'Src\views'),
+ (Join-Path $RepoRoot 'Src\Kernel'),
+ (Join-Path $RepoRoot 'Src\Generic'),
+ (Join-Path $RepoRoot 'Include')
+ )
+ $sourcePatterns = @('*.cpp', '*.c', '*.cc', '*.h', '*.hpp', '*.ixx', '*.idl', '*.rc', '*.mak', '*.def', '*.bat')
+ $artifactPaths = @(
+ (Join-Path $RepoRoot "Output\$Configuration\Views.dll"),
+ (Join-Path $RepoRoot "Output\$Configuration\views.lib"),
+ (Join-Path $RepoRoot "Output\$Configuration\Common\FwKernelTlb.h"),
+ (Join-Path $RepoRoot "Obj\$Configuration\Views\autopch\VwRootBox.obj")
+ )
+
+ $latestSource = Get-NewestWriteTimeUtc -Paths $sourceRoots -IncludePatterns $sourcePatterns
+ $oldestArtifact = Get-OldestWriteTimeUtc -Paths $artifactPaths
+
+ if ($oldestArtifact -eq $null) {
+ return $true
+ }
+
+ return $latestSource -gt $oldestArtifact
+}
+
# =============================================================================
# Module Exports
# =============================================================================
@@ -493,5 +597,8 @@ Export-ModuleMember -Function @(
'Exit-WorktreeLock',
'Remove-StaleObjFolders',
'Test-IsFileLockError',
- 'Invoke-WithFileLockRetry'
+ 'Invoke-WithFileLockRetry',
+ 'Get-NewestWriteTimeUtc',
+ 'Get-OldestWriteTimeUtc',
+ 'Test-ViewsNativeArtifactsStale'
)
diff --git a/Build/Agent/README.md b/Build/Agent/README.md
index b7f4e6b0a1..51a65e2726 100644
--- a/Build/Agent/README.md
+++ b/Build/Agent/README.md
@@ -1,4 +1,4 @@
-# Build/Agent Scripts
+# Build/Agent Scripts
PowerShell scripts for build, test, and CI orchestration.
@@ -11,6 +11,7 @@ PowerShell scripts for build, test, and CI orchestration.
| Script | Purpose |
|--------|---------|
+| `Run-AllRenders.ps1` | Runs the DetailControls and RootSite render suites sequentially from one command without adding a meta test project. |
| `Summarize-NativeTestResults.ps1` | Parses native Unit++ logs and appends a pass/fail summary table to GitHub step summary. |
## GitHub Actions usage
diff --git a/Build/Agent/Verify-FwDependencies.ps1 b/Build/Agent/Verify-FwDependencies.ps1
index 60250ad7a4..6d2bf3328e 100644
--- a/Build/Agent/Verify-FwDependencies.ps1
+++ b/Build/Agent/Verify-FwDependencies.ps1
@@ -1,4 +1,4 @@
-<#
+<#
.SYNOPSIS
Verifies that all FieldWorks build dependencies are available.
@@ -71,6 +71,8 @@ function Test-Dependency {
[string]$Required = "Required"
)
+ $isRequired = ($Required -eq "Required")
+
try {
$result = & $Check
if ($result) {
@@ -80,18 +82,18 @@ function Test-Dependency {
Write-Host " $result" -ForegroundColor DarkGray
}
}
- return @{ Name = $Name; Found = $true; IsRequired = ($Required -eq "Required"); Info = $result }
+ return @{ Name = $Name; Found = $true; IsRequired = $isRequired; Info = $result }
}
else {
throw "Check returned null/false"
}
}
catch {
- $color = if ($Required -eq "Required") { "Red" } else { "Yellow" }
- $status = if ($Required -eq "Required") { "[FAIL]" } else { "[WARN]" }
+ $color = if ($isRequired) { "Red" } else { "Yellow" }
+ $status = if ($isRequired) { "[FAIL]" } else { "[WARN]" }
Write-Host "$status $Name" -ForegroundColor $color
Write-Host " $_" -ForegroundColor DarkGray
- return @{ Name = $Name; Found = $false; IsRequired = ($Required -eq "Required"); Error = $_.ToString() }
+ return @{ Name = $Name; Found = $false; IsRequired = $isRequired; Error = $_.ToString() }
}
}
@@ -304,9 +306,9 @@ if ($Detailed) {
Write-Host "=== Summary ===" -ForegroundColor Cyan
}
-$required = $results | Where-Object { $_.IsRequired -ne $false }
-$missing = $required | Where-Object { -not $_.Found }
-$optional = $results | Where-Object { $_.IsRequired -eq $false }
+$required = @($results | Where-Object { $_.IsRequired -ne $false })
+$missing = @($required | Where-Object { -not $_.Found })
+$optional = @($results | Where-Object { $_.IsRequired -eq $false })
$totalRequired = ($required | Measure-Object).Count
$foundRequired = ($required | Where-Object { $_.Found } | Measure-Object).Count
diff --git a/Build/Agent/fix-whitespace.ps1 b/Build/Agent/fix-whitespace.ps1
index 1933489889..0e1c96560b 100644
--- a/Build/Agent/fix-whitespace.ps1
+++ b/Build/Agent/fix-whitespace.ps1
@@ -1,4 +1,4 @@
-#!/usr/bin/env pwsh
+#!/usr/bin/env pwsh
$ErrorActionPreference = 'Stop'
# Import shared git helpers
@@ -10,39 +10,10 @@ function Get-BaseRef {
return (Get-DefaultBranchRef)
}
-function Test-HasUtf8Bom {
- param([Parameter(Mandatory)][string]$Path)
-
- # Read only the first three bytes to check for a UTF-8 BOM to avoid loading the entire file.
- $buffer = [byte[]]::new(3)
- $stream = [System.IO.File]::OpenRead($Path)
- try {
- $bytesRead = $stream.Read($buffer, 0, 3)
- }
- finally {
- $stream.Dispose()
- }
-
- if ($bytesRead -lt 3) { return $false }
- return $buffer[0] -eq 0xEF -and $buffer[1] -eq 0xBB -and $buffer[2] -eq 0xBF
-}
-
-function Write-Utf8Text {
- param(
- [Parameter(Mandatory)][string]$Path,
- [Parameter(Mandatory)][string]$Content,
- [Parameter(Mandatory)][bool]$EmitBom
- )
-
- $encoding = New-Object System.Text.UTF8Encoding($EmitBom)
- [System.IO.File]::WriteAllText($Path, $Content, $encoding)
-}
-
function Format-FileWhitespace {
param([Parameter(Mandatory)][string]$Path)
if (-not (Test-Path -LiteralPath $Path)) { return }
try {
- $hasUtf8Bom = Test-HasUtf8Bom -Path $Path
$raw = Get-Content -LiteralPath $Path -Raw -Encoding utf8
}
catch {
@@ -62,7 +33,7 @@ function Format-FileWhitespace {
# Join back and ensure exactly one trailing newline
$new = ($lines -join "`n") + "`n"
if ($new -ne $orig) {
- Write-Utf8Text -Path $Path -Content $new -EmitBom $hasUtf8Bom
+ Set-Content -LiteralPath $Path -Value $new -Encoding utf8 -NoNewline
Write-Host "Fixed whitespace: $Path"
}
}
@@ -85,6 +56,5 @@ $files = $fixFiles | Where-Object { $_ -and (Test-Path $_) }
foreach ($f in $files) { Format-FileWhitespace -Path $f }
-Write-Host "Whitespace fix completed. Review and stage the updated files before committing."
-Write-Host "If check-whitespace reported an older commit in origin/main..HEAD, rewrite history with amend, squash, or rebase so that offending commit is no longer part of the branch."
+Write-Host "Whitespace fix completed. Review changes, commit, and rebase as needed."
exit 0
diff --git a/Build/Installer.legacy.targets b/Build/Installer.legacy.targets
index fc0f808e07..f6b3e76c0d 100644
--- a/Build/Installer.legacy.targets
+++ b/Build/Installer.legacy.targets
@@ -1,4 +1,4 @@
-
+
@@ -280,6 +280,10 @@
+
+
+
+
diff --git a/Build/Src/NativeBuild/NativeBuild.csproj b/Build/Src/NativeBuild/NativeBuild.csproj
index 533911044e..8ced8f8026 100644
--- a/Build/Src/NativeBuild/NativeBuild.csproj
+++ b/Build/Src/NativeBuild/NativeBuild.csproj
@@ -1,4 +1,4 @@
-
+
-
+
none
all
diff --git a/Build/scripts/Invoke-CppTest.ps1 b/Build/scripts/Invoke-CppTest.ps1
index b4fe752632..71348fe807 100644
--- a/Build/scripts/Invoke-CppTest.ps1
+++ b/Build/scripts/Invoke-CppTest.ps1
@@ -1,4 +1,4 @@
-<#
+<#
.SYNOPSIS
Build and/or run native C++ test executables.
@@ -302,11 +302,9 @@ function Ensure-UnitPlusPlusLibrary {
function Ensure-TestViewsPrerequisites {
if ($TestProject -ne 'TestViews') { return }
- $fwKernelHeader = Join-Path $WorktreePath "Output\$Configuration\Common\FwKernelTlb.h"
- $viewsObj = Join-Path $WorktreePath "Obj\$Configuration\Views\autopch\VwRootBox.obj"
- if ((Test-Path $fwKernelHeader) -and (Test-Path $viewsObj)) { return }
+ if (-not (Test-ViewsNativeArtifactsStale -RepoRoot $WorktreePath -Configuration $Configuration)) { return }
- Write-Host "[INFO] Missing native artifacts or generated headers required for TestViews." -ForegroundColor Yellow
+ Write-Host "[INFO] Refreshing native artifacts and generated headers required for TestViews." -ForegroundColor Yellow
Build-NativeArtifacts
Build-ViewsInterfacesArtifacts
}
diff --git a/Directory.Build.props b/Directory.Build.props
index 58dd34ad0e..10a2e3abc3 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -1,4 +1,4 @@
-
+
@@ -84,10 +84,24 @@
$(MSBuildThisFileDirectory)
+
+ $(MSBuildThisFileDirectory)
+ FieldWorks
$(FwRoot)DistFiles\
$(FwRoot)Output\
$(FwOutput)$(Configuration)\
$(FwRoot)Obj\
+
+ $(DefaultItemExcludes);*_wpftmp*
+
+
+ <_StaleWpfTemp Include="$(MSBuildProjectDirectory)\*_wpftmp*" />
+
+
+
+
+
diff --git a/Docs/CONTRIBUTING.md b/Docs/CONTRIBUTING.md
index f44760c00f..df93f0b2ff 100644
--- a/Docs/CONTRIBUTING.md
+++ b/Docs/CONTRIBUTING.md
@@ -1,4 +1,4 @@
-# Contributing to FieldWorks Development
+# Contributing to FieldWorks Development
Thank you for your interest in contributing to FieldWorks (FLEx)!
@@ -14,7 +14,8 @@ There are several ways you can contribute to the development of FieldWorks:
The following steps are required for setting up a FieldWorks development environment on Windows.
-> **Note**: FieldWorks is Windows-only. Linux builds are no longer supported.
+> **Note**: FieldWorks build, test, installer, and setup workflows are Windows-only.
+> Linux and macOS are supported for editing, code search, documentation, specs, and agent work only.
### 1. Install Required Software
@@ -109,6 +110,8 @@ Build FieldWorks using the PowerShell build script:
For more build options, see [.github/instructions/build.instructions.md](../.github/instructions/build.instructions.md).
+On Linux or macOS, do not run `build.ps1` or `test.ps1`; those entry points intentionally fail fast with a not-supported message.
+
### Run tests from the command line
Use `test.ps1` for local test runs:
diff --git a/FLExInstaller/Directory.Packages.props b/FLExInstaller/Directory.Packages.props
index e88cc42dea..c26c1a71fa 100644
--- a/FLExInstaller/Directory.Packages.props
+++ b/FLExInstaller/Directory.Packages.props
@@ -1,10 +1,15 @@
-
+
- false
+ true
+
+
+
+
+
diff --git a/FLExInstaller/wix6/Shared/CustomActions/CustomActions/CustomActions.csproj b/FLExInstaller/wix6/Shared/CustomActions/CustomActions/CustomActions.csproj
index df40f3c071..00dd54417a 100644
--- a/FLExInstaller/wix6/Shared/CustomActions/CustomActions/CustomActions.csproj
+++ b/FLExInstaller/wix6/Shared/CustomActions/CustomActions/CustomActions.csproj
@@ -1,4 +1,4 @@
-
+
net48
CustomActions
@@ -10,8 +10,8 @@
-
-
+
+
diff --git a/ReadMe.md b/ReadMe.md
index 9d908aaf1f..f7ea0eef0f 100644
--- a/ReadMe.md
+++ b/ReadMe.md
@@ -1,4 +1,4 @@
-## Getting Started
+## Getting Started
New to FieldWorks development? Start here:
@@ -9,6 +9,14 @@ New to FieldWorks development? Start here:
> **Note**: We are migrating documentation from the [FwDocumentation wiki](https://github.com/sillsdev/FwDocumentation/wiki) into this repository. Some wiki content may be more recent until migration is complete.
+## Linux and macOS
+
+This repository can be opened on Linux or macOS for editing, code search, documentation, specs, and agent-assisted review.
+
+Builds, tests, installer work, and developer-environment setup are Windows-only and are intentionally disabled on non-Windows hosts.
+
+If you need runnable output, use a Windows machine and run `./build.ps1` or `./test.ps1` there.
+
## Developer Machine Setup
For first-time setup on a Windows development machine:
diff --git a/SDK_MIGRATION.md b/SDK_MIGRATION.md
index e0a7b25139..3a61030e02 100644
--- a/SDK_MIGRATION.md
+++ b/SDK_MIGRATION.md
@@ -1,4 +1,4 @@
-# FieldWorks SDK Migration — Postmortem & Blame Index
+# FieldWorks SDK Migration — Postmortem & Blame Index
**Migration Period**: November 7-21, 2025
**Base Commit**: `8e508dab484fafafb641298ed9071f03070f7c8b`
@@ -262,7 +262,7 @@ With CPM ensuring all projects resolve to the same package version, most manual
- Initializes VS Developer environment
- Supports `/m` parallel builds
- **Stale DLL detection**: Runs `Remove-StaleDlls.ps1` pre-build to catch version-mismatched binaries
-- **Diagnostics config**: Optionally copies dev trace config for Debug builds (`-TraceCrashes` or `UseDevTraceConfig`)
+- **Diagnostics config**: Optionally copies dev trace config for Debug builds (`-EnableTracing` or `UseDevTraceConfig`)
- **Installer support**: `-BuildInstaller` flag triggers full installer build pipeline
**Note**: `build.sh` is not supported in this repo (FieldWorks is Windows-first). Use `.\build.ps1`.
diff --git a/Src/AppForTests.config b/Src/AppForTests.config
index 8beff9f556..943df1b286 100644
--- a/Src/AppForTests.config
+++ b/Src/AppForTests.config
@@ -1,26 +1,29 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Src/Utilities/pcpatrflex/DisambiguateInFLExDB/DisambiguateInFLExDBTests/ToneParsInvokerTests.cs b/Src/Utilities/pcpatrflex/DisambiguateInFLExDB/DisambiguateInFLExDBTests/ToneParsInvokerTests.cs
index bd4974bc53..7cd3a3f750 100644
--- a/Src/Utilities/pcpatrflex/DisambiguateInFLExDB/DisambiguateInFLExDBTests/ToneParsInvokerTests.cs
+++ b/Src/Utilities/pcpatrflex/DisambiguateInFLExDB/DisambiguateInFLExDBTests/ToneParsInvokerTests.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2019 SIL International
+// Copyright (c) 2019 SIL International
// This software is licensed under the LGPL, version 2.1 or later
// (http://www.gnu.org/licenses/lgpl-2.1.html)
@@ -187,7 +187,7 @@ private string NormalizeContent(string input)
string normalized = NormalizeViaIndex(input, "AppData", "AppData");
normalized = NormalizeViaIndex(normalized, "TestData", "TestData");
normalized = NormalizeViaIndex(normalized, tp, tp);
- return normalized;
+ return Regex.Replace(normalized, @"[A-Za-z]:\\(?:[^\\\r\n""]+\\)*", "");
}
private static string NormalizeViaIndex(string input, string match, string change)
diff --git a/Test.runsettings b/Test.runsettings
index 9bc04d68ce..b91f9a54a0 100644
--- a/Test.runsettings
+++ b/Test.runsettings
@@ -1,4 +1,4 @@
-
+
net48
-
- 900000
+
+ 900000