Skip to content

fix(191): reconcile JD error-code drift (wire JD0023/JD0025)#202

Merged
JerrettDavis merged 1 commit into
mainfrom
feat/191-error-code-drift
Jul 11, 2026
Merged

fix(191): reconcile JD error-code drift (wire JD0023/JD0025)#202
JerrettDavis merged 1 commit into
mainfrom
feat/191-error-code-drift

Conversation

@JerrettDavis

Copy link
Copy Markdown
Owner

Summary

Part of #191 (ERROR-CODE DRIFT sub-item). Reconciles emitted-vs-documented JD00xx error codes so every documented code has exactly one emitting call site and vice versa.

Enumeration (emitted vs. documented)

  • Emitted codes (via log.Error("JDxxxx", ...) / log.Warn("JDxxxx", ...) in src/): JD0001, JD0002, JD0003, JD0011, JD0012, JD0013, JD0014, JD0015, JD0016, JD0017, JD0018, JD0019, JD0020, JD0021, JD0022, JD0024, JD0026, JD0027, JD0028, JD0030, JD0031 (via SourceNotInstalledCode/SecretNotFoundCode builders), JD0032, JD0033, JD0034, JD0040, JD0041.
  • Documented codes (### JDxxxx headings in docs/user-guide/error-codes.md): JD0001-3, JD0011-19, JD0040-41, JD0020-28, JD0030-34 — a full 1:1 match with emitted codes except for two drift points found:
    1. JD0025 ("Failed to Add SQL File Warnings") was documented as Error severity, but AddSqlFileWarnings.cs emitted the corresponding warning message with no JD code at all (log.Warn($"Failed to process {file}: ...")).
    2. JD0023 ("SqlPackage Execution Failed (Exception)") was fully documented but never emittedRunSqlPackage.cs's ExecuteSqlPackage had no try/catch around Process.Start/WaitForExit at all, so any exception there (e.g. a non-executable tool path) fell through to the generic, uncoded top-level task exception handler instead of a JD-coded error.

No other drift was found: JD0026-28 (#186 tool acquisition), JD0030-34 (#188 connection-string sources), and JD0017-19/JD0040-41 (#184 custom providers) are all correctly documented and emitted 1:1 — left untouched per instructions.

Changes

  • src/JD.Efcpt.Build.Tasks/AddSqlFileWarnings.cs: wired the per-file exception warning to log.Warn("JD0025", ...).
  • docs/user-guide/error-codes.md: corrected JD0025 severity from Error to Warning (matches the log.Warn call site) and updated its example to reflect the actual message format and warning prefix.
  • src/JD.Efcpt.Build.Tasks/RunSqlPackage.cs: wrapped the sqlpackage process execution (ExecuteSqlPackage) in a try/catch, emitting log.Error("JD0023", $"SqlPackage execution failed: {ex.Message}") for the exception path, while JD0022 remains the exit-code (non-exception) failure path.
  • Tests updated to lock in the corrected behavior:
    • tests/JD.Efcpt.Build.Tests/AddSqlFileWarningsTests.cs: Continues_when_individual_file_fails now asserts Code == "JD0025" on the logged warning (previously only checked the message text).
    • tests/JD.Efcpt.Build.Tests/RunSqlPackageTests.cs: added SqlPackage_execution_exception_error, which points ToolPath at a non-executable file to trigger a genuine Process.Start exception and asserts Code == "JD0023".

Deliberately not changed

Test plan

  • dotnet build JD.Efcpt.Build.sln -c Debug — 0 errors, 6 pre-existing NuGet TFM-support warnings unrelated to this change (build has TreatWarningsAsErrors=true and passed)
  • dotnet test tests/JD.Efcpt.Build.Tests --filter "FullyQualifiedName~AddSqlFileWarnings |FullyQualifiedName~RunSqlPackage|FullyQualifiedName~SqlPackage" — 55/55 passed

@JerrettDavis JerrettDavis changed the title docs+fix(191): reconcile JD error-code drift fix(191): reconcile JD error-code drift (wire JD0023/JD0025) Jul 11, 2026
@codecov

codecov Bot commented Jul 11, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 90.90909% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 92.19%. Comparing base (7e099a9) to head (5173218).

Files with missing lines Patch % Lines
src/JD.Efcpt.Build.Tasks/RunSqlPackage.cs 90.62% 3 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #202      +/-   ##
==========================================
+ Coverage   83.70%   92.19%   +8.48%     
==========================================
  Files          92       92              
  Lines        4788     4791       +3     
  Branches      737      614     -123     
==========================================
+ Hits         4008     4417     +409     
+ Misses        485      374     -111     
+ Partials      295        0     -295     
Flag Coverage Δ
unittests 92.19% <90.90%> (+8.48%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@JerrettDavis JerrettDavis force-pushed the feat/191-error-code-drift branch from fef772a to 5173218 Compare July 11, 2026 13:21
@github-actions

Copy link
Copy Markdown
Contributor

Code Coverage

Summary
  Generated on: 07/11/2026 - 13:35:00
  Coverage date: 07/11/2026 - 13:22:47 - 07/11/2026 - 13:34:57
  Parser: MultiReport (6x Cobertura)
  Assemblies: 11
  Classes: 131
  Files: 92
  Line coverage: 88.7%
  Covered lines: 5472
  Uncovered lines: 692
  Coverable lines: 6164
  Total lines: 14355
  Branch coverage: 70.6% (2143 of 3032)
  Covered branches: 2143
  Total branches: 3032
  Method coverage: 96.2% (1043 of 1084)
  Full method coverage: 85.8% (931 of 1084)
  Covered methods: 1043
  Fully covered methods: 931
  Total methods: 1084

JD.Efcpt.Build.ConnectionStrings.AwsSecretsManager                                                                                                                 80%
  JD.Efcpt.Build.ConnectionStrings.AwsSecretsManager.AwsSecretsManagerClientAdapter                                                                              57.1%
  JD.Efcpt.Build.ConnectionStrings.AwsSecretsManager.AwsSecretsManagerConnectionStringSource                                                                     91.2%

JD.Efcpt.Build.ConnectionStrings.AzureKeyVault                                                                                                                   80.9%
  JD.Efcpt.Build.ConnectionStrings.AzureKeyVault.AzureKeyVaultConnectionStringSource                                                                             94.4%
  JD.Efcpt.Build.ConnectionStrings.AzureKeyVault.AzureSecretClientAdapter                                                                                           0%

JD.Efcpt.Build.Core                                                                                                                                              88.4%
  JD.Efcpt.Build.Core.Config.CodeGenerationOverrides                                                                                                              100%
  JD.Efcpt.Build.Core.Config.EfcptConfigGenerator                                                                                                                77.7%
  JD.Efcpt.Build.Core.Config.EfcptConfigOverrides                                                                                                                 100%
  JD.Efcpt.Build.Core.Config.FileLayoutOverrides                                                                                                                  100%
  JD.Efcpt.Build.Core.Config.NamesOverrides                                                                                                                       100%
  JD.Efcpt.Build.Core.Config.ReplacementsOverrides                                                                                                                100%
  JD.Efcpt.Build.Core.Config.TypeMappingsOverrides                                                                                                                100%
  JD.Efcpt.Build.Core.ConnectionStrings.AppConfigConnectionStringParser                                                                                           100%
  JD.Efcpt.Build.Core.ConnectionStrings.AppSettingsConnectionStringParser                                                                                         100%
  JD.Efcpt.Build.Core.ConnectionStrings.ConfigurationFileTypeValidator                                                                                            100%
  JD.Efcpt.Build.Core.ConnectionStrings.ConnectionStringResolutionChain                                                                                          88.5%
  JD.Efcpt.Build.Core.ConnectionStrings.ConnectionStringResolutionContext                                                                                         100%
  JD.Efcpt.Build.Core.ConnectionStrings.ConnectionStringResult                                                                                                    100%
  JD.Efcpt.Build.Core.ConnectionStrings.ConnectionStringSourceContext                                                                                              75%
  JD.Efcpt.Build.Core.ConnectionStrings.ConnectionStringSourceException                                                                                           100%
  JD.Efcpt.Build.Core.ConnectionStrings.ConnectionStringSourceResult                                                                                               90%
  JD.Efcpt.Build.Core.ConnectionStrings.CoreConnectionStringSourceResolver                                                                                          0%
  JD.Efcpt.Build.Core.ConnectionStrings.EnvironmentVariableConnectionStringSource                                                                                 100%
  JD.Efcpt.Build.Core.Diagnostics.DefaultSdkProbe                                                                                                                33.3%
  JD.Efcpt.Build.Core.Diagnostics.DefaultToolAcquirer                                                                                                            68.4%
  JD.Efcpt.Build.Core.Diagnostics.DoctorEngine                                                                                                                   91.8%
  JD.Efcpt.Build.Core.Diagnostics.DoctorInputs                                                                                                                   90.9%
  JD.Efcpt.Build.Core.Diagnostics.DotNetToolUtilities                                                                                                            85.2%
  JD.Efcpt.Build.Core.Diagnostics.SdkProbeCache                                                                                                                    86%
  JD.Efcpt.Build.Core.Diagnostics.ToolAcquisitionOutcome                                                                                                          100%
  JD.Efcpt.Build.Core.Diagnostics.ToolAcquisitionRequest                                                                                                          100%
  JD.Efcpt.Build.Core.FileHash                                                                                                                                    100%
  JD.Efcpt.Build.Core.Logging.NullBuildLog                                                                                                                        100%
  JD.Efcpt.Build.Core.PathUtils                                                                                                                                  91.6%
  JD.Efcpt.Build.Core.Processes.CommandNormalizationStrategy                                                                                                     94.1%
  JD.Efcpt.Build.Core.Processes.ProcessCommand                                                                                                                    100%
  JD.Efcpt.Build.Core.Processes.ProcessResult                                                                                                                     100%
  JD.Efcpt.Build.Core.Processes.ProcessRunner                                                                                                                    80.7%
  JD.Efcpt.Build.Core.Providers.ProviderNames                                                                                                                    96.4%

JD.Efcpt.Build.Firebird                                                                                                                                          98.7%
  JD.Efcpt.Build.Tasks.Schema.Providers.FirebirdProviderAdapter                                                                                                   100%
  JD.Efcpt.Build.Tasks.Schema.Providers.FirebirdSchemaReader                                                                                                     98.6%

JD.Efcpt.Build.MySqlConnector                                                                                                                                     100%
  JD.Efcpt.Build.Tasks.Schema.Providers.MySqlProviderAdapter                                                                                                      100%
  JD.Efcpt.Build.Tasks.Schema.Providers.MySqlSchemaReader                                                                                                         100%

JD.Efcpt.Build.Oracle                                                                                                                                             100%
  JD.Efcpt.Build.Tasks.Schema.Providers.OracleProviderAdapter                                                                                                     100%
  JD.Efcpt.Build.Tasks.Schema.Providers.OracleSchemaReader                                                                                                        100%

JD.Efcpt.Build.PostgreSQL                                                                                                                                         100%
  JD.Efcpt.Build.Tasks.Schema.Providers.PostgreSqlProviderAdapter                                                                                                 100%
  JD.Efcpt.Build.Tasks.Schema.Providers.PostgreSqlSchemaReader                                                                                                    100%

JD.Efcpt.Build.Providers.Abstractions                                                                                                                              98%
  JD.Efcpt.Build.Tasks.Extensions.DataRowExtensions                                                                                                               100%
  JD.Efcpt.Build.Tasks.Extensions.StringExtensions                                                                                                                100%
  JD.Efcpt.Build.Tasks.Schema.ColumnModel                                                                                                                         100%
  JD.Efcpt.Build.Tasks.Schema.ColumnNameMapping                                                                                                                   100%
  JD.Efcpt.Build.Tasks.Schema.ConstraintModel                                                                                                                     100%
  JD.Efcpt.Build.Tasks.Schema.ForeignKeyColumnModel                                                                                                               100%
  JD.Efcpt.Build.Tasks.Schema.ForeignKeyModel                                                                                                                      90%
  JD.Efcpt.Build.Tasks.Schema.IndexColumnModel                                                                                                                    100%
  JD.Efcpt.Build.Tasks.Schema.IndexModel                                                                                                                         92.8%
  JD.Efcpt.Build.Tasks.Schema.SchemaModel                                                                                                                         100%
  JD.Efcpt.Build.Tasks.Schema.SchemaReaderBase                                                                                                                    100%
  JD.Efcpt.Build.Tasks.Schema.TableModel                                                                                                                         92.8%

JD.Efcpt.Build.Snowflake                                                                                                                                          100%
  JD.Efcpt.Build.Tasks.Schema.Providers.SnowflakeProviderAdapter                                                                                                  100%

JD.Efcpt.Build.Sqlite                                                                                                                                             100%
  JD.Efcpt.Build.Tasks.Schema.Providers.SqliteProviderAdapter                                                                                                     100%
  JD.Efcpt.Build.Tasks.Schema.Providers.SqliteSchemaReader                                                                                                        100%

JD.Efcpt.Build.Tasks                                                                                                                                             87.4%
  JD.Efcpt.Build.Tasks.AddSqlFileWarnings                                                                                                                         100%
  JD.Efcpt.Build.Tasks.ApplyConfigOverrides                                                                                                                       100%
  JD.Efcpt.Build.Tasks.BuildLog                                                                                                                                   100%
  JD.Efcpt.Build.Tasks.Chains.DirectoryResolutionChain                                                                                                           91.6%
  JD.Efcpt.Build.Tasks.Chains.DirectoryResolutionContext                                                                                                          100%
  JD.Efcpt.Build.Tasks.Chains.FileResolutionChain                                                                                                                 100%
  JD.Efcpt.Build.Tasks.Chains.FileResolutionContext                                                                                                               100%
  JD.Efcpt.Build.Tasks.Chains.ResourceResolutionChain                                                                                                            93.1%
  JD.Efcpt.Build.Tasks.Chains.ResourceResolutionContext                                                                                                           100%
  JD.Efcpt.Build.Tasks.CheckSdkVersion                                                                                                                           40.9%
  JD.Efcpt.Build.Tasks.ComputeFingerprint                                                                                                                        97.8%
  JD.Efcpt.Build.Tasks.Config.EfcptConfigOverrideApplicator                                                                                                      93.1%
  JD.Efcpt.Build.Tasks.ConnectionStrings.SatelliteConnectionStringSourceResolver                                                                                 67.2%
  JD.Efcpt.Build.Tasks.DacpacFingerprint                                                                                                                         96.1%
  JD.Efcpt.Build.Tasks.DbContextNameGenerator                                                                                                                    83.6%
  JD.Efcpt.Build.Tasks.Decorators.ProfileInputAttribute                                                                                                           100%
  JD.Efcpt.Build.Tasks.Decorators.ProfileOutputAttribute                                                                                                           50%
  JD.Efcpt.Build.Tasks.Decorators.ProfilingBehavior                                                                                                              91.6%
  JD.Efcpt.Build.Tasks.Decorators.TaskExecutionContext                                                                                                           66.6%
  JD.Efcpt.Build.Tasks.Decorators.TaskExecutionDecorator                                                                                                          100%
  JD.Efcpt.Build.Tasks.DetectSqlProject                                                                                                                            84%
  JD.Efcpt.Build.Tasks.EfcptDoctor                                                                                                                                100%
  JD.Efcpt.Build.Tasks.EnsureDacpacBuilt                                                                                                                         96.1%
  JD.Efcpt.Build.Tasks.Extensions.EnumerableExtensions                                                                                                            100%
  JD.Efcpt.Build.Tasks.FileSystemHelpers                                                                                                                          100%
  JD.Efcpt.Build.Tasks.FinalizeBuildProfiling                                                                                                                     100%
  JD.Efcpt.Build.Tasks.InitializeBuildProfiling                                                                                                                   100%
  JD.Efcpt.Build.Tasks.MessageLevelHelpers                                                                                                                        100%
  JD.Efcpt.Build.Tasks.ModuleInitializer                                                                                                                          100%
  JD.Efcpt.Build.Tasks.MsBuildPropertyHelpers                                                                                                                     100%
  JD.Efcpt.Build.Tasks.Profiling.ArtifactInfo                                                                                                                     100%
  JD.Efcpt.Build.Tasks.Profiling.BuildConfiguration                                                                                                               100%
  JD.Efcpt.Build.Tasks.Profiling.BuildGraph                                                                                                                       100%
  JD.Efcpt.Build.Tasks.Profiling.BuildGraphNode                                                                                                                   100%
  JD.Efcpt.Build.Tasks.Profiling.BuildProfiler                                                                                                                   95.2%
  JD.Efcpt.Build.Tasks.Profiling.BuildProfilerManager                                                                                                             100%
  JD.Efcpt.Build.Tasks.Profiling.BuildRunOutput                                                                                                                   100%
  JD.Efcpt.Build.Tasks.Profiling.DiagnosticMessage                                                                                                                100%
  JD.Efcpt.Build.Tasks.Profiling.JsonTimeSpanConverter                                                                                                            100%
  JD.Efcpt.Build.Tasks.Profiling.ProjectInfo                                                                                                                      100%
  JD.Efcpt.Build.Tasks.Profiling.TaskExecution                                                                                                                    100%
  JD.Efcpt.Build.Tasks.ProfilingHelper                                                                                                                            100%
  JD.Efcpt.Build.Tasks.QuerySchemaMetadata                                                                                                                       93.4%
  JD.Efcpt.Build.Tasks.RenameGeneratedFiles                                                                                                                       100%
  JD.Efcpt.Build.Tasks.ResolveDbContextName                                                                                                                      96.9%
  JD.Efcpt.Build.Tasks.ResolveSqlProjAndInputs                                                                                                                   92.6%
  JD.Efcpt.Build.Tasks.RunEfcpt                                                                                                                                  98.1%
  JD.Efcpt.Build.Tasks.RunSqlPackage                                                                                                                             50.5%
  JD.Efcpt.Build.Tasks.Schema.CustomProviderException                                                                                                             100%
  JD.Efcpt.Build.Tasks.Schema.DatabaseProviderFactory                                                                                                             100%
  JD.Efcpt.Build.Tasks.Schema.EfcptToolAcquisitionFailedException                                                                                                 100%
  JD.Efcpt.Build.Tasks.Schema.EfcptToolAcquisitionNotConfiguredException                                                                                          100%
  JD.Efcpt.Build.Tasks.Schema.EfcptToolNotAvailableOfflineException                                                                                               100%
  JD.Efcpt.Build.Tasks.Schema.ProviderAdapterResolver                                                                                                              95%
  JD.Efcpt.Build.Tasks.Schema.ProviderDriverNotFoundException                                                                                                     100%
  JD.Efcpt.Build.Tasks.Schema.Providers.SqlServerProviderAdapter                                                                                                  100%
  JD.Efcpt.Build.Tasks.Schema.Providers.SqlServerSchemaReader                                                                                                     100%
  JD.Efcpt.Build.Tasks.Schema.SchemaFingerprinter                                                                                                                 100%
  JD.Efcpt.Build.Tasks.SerializeConfigProperties                                                                                                                  100%
  JD.Efcpt.Build.Tasks.SqlProjectDetector                                                                                                                        94.5%
  JD.Efcpt.Build.Tasks.StageEfcptInputs                                                                                                                          95.7%
  System.Text.RegularExpressions.Generated                                                                                                                       80.3%
  System.Text.RegularExpressions.Generated.<RegexGenerator_g>F9F9425F6F5E055E5C6489D8E6FA46DE135B3C69D9A15B4CBA235D8D2417FD2EC__AssemblySymbolsMetadataRegex_1   86.2%
  System.Text.RegularExpressions.Generated.<RegexGenerator_g>F9F9425F6F5E055E5C6489D8E6FA46DE135B3C69D9A15B4CBA235D8D2417FD2EC__DatabaseKeywordRegex_4           75.7%
  System.Text.RegularExpressions.Generated.<RegexGenerator_g>F9F9425F6F5E055E5C6489D8E6FA46DE135B3C69D9A15B4CBA235D8D2417FD2EC__DataSourceKeywordRegex_6         72.3%
  System.Text.RegularExpressions.Generated.<RegexGenerator_g>F9F9425F6F5E055E5C6489D8E6FA46DE135B3C69D9A15B4CBA235D8D2417FD2EC__FileNameMetadataRegex_0          86.2%
  System.Text.RegularExpressions.Generated.<RegexGenerator_g>F9F9425F6F5E055E5C6489D8E6FA46DE135B3C69D9A15B4CBA235D8D2417FD2EC__InitialCatalogKeywordRegex_5     71.2%
  System.Text.RegularExpressions.Generated.<RegexGenerator_g>F9F9425F6F5E055E5C6489D8E6FA46DE135B3C69D9A15B4CBA235D8D2417FD2EC__NonLetterRegex_2                  100%
  System.Text.RegularExpressions.Generated.<RegexGenerator_g>F9F9425F6F5E055E5C6489D8E6FA46DE135B3C69D9A15B4CBA235D8D2417FD2EC__SolutionProjectLineRegex_7       82.5%
  System.Text.RegularExpressions.Generated.<RegexGenerator_g>F9F9425F6F5E055E5C6489D8E6FA46DE135B3C69D9A15B4CBA235D8D2417FD2EC__TrailingDigitsRegex_3            95.2%

@JerrettDavis JerrettDavis merged commit 6dcce66 into main Jul 11, 2026
12 checks passed
@JerrettDavis JerrettDavis deleted the feat/191-error-code-drift branch July 11, 2026 13:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant