UnitAutogen.psd1

@{
    ModuleVersion     = '0.10.0'
    GUID              = 'a1b2c3d4-e5f6-7890-abcd-ef1234567890'
    Author            = 'Munaf Ibrahim Khatri'
    CompanyName       = 'UnitAutogen'
    Copyright         = '(C) 2026 Munaf Ibrahim Khatri. Licensed under AGPL-3.0.'
    Description       = 'PowerShell module for UnitAutogen — auto-generated tSQLt unit tests with real branch coverage for SQL Server. Installs the framework AND the in-database (SQLCLR) predicate parser, runs generation and coverage, and exports Cobertura XML, JUnit XML, and HTML reports for Azure DevOps, GitHub Actions, Jenkins, GitLab CI, and SonarQube. The single C# predicate parser runs inside SQL Server (no PowerShell-side parser); installation registers it and requires sysadmin once plus ''clr enabled''=1.'
    PowerShellVersion = '5.1'
    RootModule        = 'UnitAutogen.psm1'

    FunctionsToExport = @(
        'Install-UnitAutogenDatabase',
        'Invoke-UnitAutogen',
        'Export-CoverageCoberturaXml',
        'Export-TestResultsJunitXml',
        'Export-CoverageHtmlReport'
    )

    CmdletsToExport   = @()
    VariablesToExport = @()
    AliasesToExport   = @()

    # All files that must be present for the module to work
    FileList = @(
        'UnitAutogen.psd1',
        'UnitAutogen.psm1',
        'sql\Install_UnitAutogen.sql',
        'sql\Install-UnitAutogenClr.SSMS.sql'
    )

    PrivateData = @{
        PSData = @{
            ExternalModuleDependencies = @('SqlServer')
            Tags        = @('SQL', 'SQLServer', 'tSQLt', 'Coverage', 'CI-CD',
                            'Cobertura', 'JUnit', 'AzureDevOps', 'Testing',
                            'UnitTest', 'CodeCoverage', 'BranchCoverage',
                            'DatabaseTesting', 'AutomatedTesting')
            LicenseUri  = 'https://github.com/unitautogen/unitautogen-public-repo/blob/main/LICENSE'
            ProjectUri  = 'https://github.com/unitautogen/unitautogen-public-repo'
            IconUri     = 'https://raw.githubusercontent.com/unitautogen/unitautogen-public-repo/main/docs/logo.png'
            ReleaseNotes = @'
## v0.10.0 (beta) — 2026-06-05
 
Major capability + honesty release. New capabilities:
 
- DML EFFECT ASSERTIONS. A modifying procedure's per-table write effect is now asserted
  with EXACT row counts, measured at generation time by running the procedure under its
  own reverse-predicate seed (rolled back). Covers INSERT (VALUES and SELECT), UPDATE and
  DELETE; when the seed drives no write, the test is skipped and names the untouched table.
- DELETE and INSERT...SELECT branch coverage. The snapshot-and-replay branch assertions
  now handle a single-target DELETE and INSERT...SELECT, not just UPDATE / INSERT...VALUES.
- TABLE-VALUED PARAMETERS. A procedure with a TVP is now auto-tested: the generator builds
  and seeds a table variable of the type and passes it (such procedures were previously
  NOT_TESTABLE). The coverage instrumenter emits table parameters schema-qualified + READONLY.
- ROW-LEVEL SECURITY. SafeFakeTable now drops a SECURITY POLICY (and its predicate-function
  chain) before faking, so RLS-protected tables can be faked instead of dooming the test
  with "participates in enforced dependencies".
 
Honesty fixes (no false failures — every non-pass is a pass, a labelled skip, or a clear
NOT_TESTABLE):
 
- Error-expectation tests are no longer over-generated. A CATCH-block re-throw is no longer
  mistaken for input validation, and a parenthesis-less THROW (THROW n,'msg',state;) is now
  detected — so "must reject" / "raises error" tests fire only for genuine validation guards.
- When the generated happy / boundary / NULL inputs cannot satisfy a procedure's own
  validation, the affected tests are SkipTest-annotated with a clear reason instead of
  failing by construction.
- A FOR JSON / FOR XML result set no longer errors the row-baseline test (it cannot be
  captured via INSERT...EXEC); that single test is skipped for such procedures.
 
## v0.9.14 (beta) — 2026-06-04
 
- CATCH-with-ROLLBACK error paths skip with an exact reason; inline TVFs report a clean
  NOT_TESTABLE; SkipTest reasons containing apostrophes are quote-escaped.
 
## v0.9.12 (beta) — 2026-06-04
 
- Result-row baseline quotes JSON keys (result columns with spaces now work); functions
  declared WITH EXECUTE AS OWNER build their coverage shadow correctly.
 
## Earlier releases
 
Full release history (v0.9.11 back to v0.9.0) is in CHANGES.md and on the GitHub
Releases page: https://github.com/unitautogen/unitautogen-public-repo/releases
 
'@

        }
    }
}