Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: demaconsulting/FileAssert
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 0.4.0
Choose a base ref
...
head repository: demaconsulting/FileAssert
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 0.5.1
Choose a head ref
  • 6 commits
  • 183 files changed
  • 7 contributors

Commits on Jun 1, 2026

  1. Bump the nuget-dependencies group with 5 updates (#51)

    Bumps demaconsulting.fileassert from 0.3.0 to 0.4.0
    Bumps DemaConsulting.TestResults from 1.7.0 to 1.8.0
    Bumps Microsoft.NET.Test.Sdk from 18.5.1 to 18.6.0
    Bumps Polyfill from 10.7.0 to 10.7.1
    Bumps SonarAnalyzer.CSharp from 10.26.0.140279 to 10.27.0.140913
    
    ---
    updated-dependencies:
    - dependency-name: demaconsulting.fileassert
      dependency-version: 0.4.0
      dependency-type: direct:production
      update-type: version-update:semver-minor
      dependency-group: nuget-dependencies
    - dependency-name: DemaConsulting.TestResults
      dependency-version: 1.8.0
      dependency-type: direct:production
      update-type: version-update:semver-minor
      dependency-group: nuget-dependencies
    - dependency-name: Microsoft.NET.Test.Sdk
      dependency-version: 18.6.0
      dependency-type: direct:production
      update-type: version-update:semver-minor
      dependency-group: nuget-dependencies
    - dependency-name: Polyfill
      dependency-version: 10.7.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
      dependency-group: nuget-dependencies
    - dependency-name: SonarAnalyzer.CSharp
      dependency-version: 10.27.0.140913
      dependency-type: direct:production
      update-type: version-update:semver-minor
      dependency-group: nuget-dependencies
    - dependency-name: SonarAnalyzer.CSharp
      dependency-version: 10.27.0.140913
      dependency-type: direct:production
      update-type: version-update:semver-minor
      dependency-group: nuget-dependencies
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Jun 1, 2026
    Configuration menu
    Copy the full SHA
    2f2a45a View commit details
    Browse the repository at this point in the history

Commits on Jun 8, 2026

  1. Bump the nuget-dependencies group with 4 updates (#52)

    Bumps demaconsulting.pandoctool from 3.9.0.2 to 3.10.0
    Bumps DemaConsulting.TestResults from 1.8.0 to 1.9.0
    Bumps demaconsulting.weasyprinttool from 68.1.0 to 69.0.0
    Bumps Polyfill from 10.7.1 to 10.8.1
    
    ---
    updated-dependencies:
    - dependency-name: demaconsulting.pandoctool
      dependency-version: 3.10.0
      dependency-type: direct:production
      update-type: version-update:semver-minor
      dependency-group: nuget-dependencies
    - dependency-name: DemaConsulting.TestResults
      dependency-version: 1.9.0
      dependency-type: direct:production
      update-type: version-update:semver-minor
      dependency-group: nuget-dependencies
    - dependency-name: demaconsulting.weasyprinttool
      dependency-version: 69.0.0
      dependency-type: direct:production
      update-type: version-update:semver-major
      dependency-group: nuget-dependencies
    - dependency-name: Polyfill
      dependency-version: 10.8.1
      dependency-type: direct:production
      update-type: version-update:semver-minor
      dependency-group: nuget-dependencies
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Jun 8, 2026
    Configuration menu
    Copy the full SHA
    01d3af9 View commit details
    Browse the repository at this point in the history

Commits on Jun 15, 2026

  1. Bump the nuget-dependencies group with 4 updates (#53)

    Bumps demaconsulting.buildmark from 1.2.2 to 1.3.0
    Bumps Microsoft.CodeAnalysis.NetAnalyzers from 10.0.300 to 10.0.301
    Bumps Microsoft.Extensions.FileSystemGlobbing from 10.0.8 to 10.0.9
    Bumps Polyfill from 10.8.1 to 10.10.0
    
    ---
    updated-dependencies:
    - dependency-name: demaconsulting.buildmark
      dependency-version: 1.3.0
      dependency-type: direct:production
      update-type: version-update:semver-minor
      dependency-group: nuget-dependencies
    - dependency-name: Microsoft.CodeAnalysis.NetAnalyzers
      dependency-version: 10.0.301
      dependency-type: direct:production
      update-type: version-update:semver-patch
      dependency-group: nuget-dependencies
    - dependency-name: Microsoft.CodeAnalysis.NetAnalyzers
      dependency-version: 10.0.301
      dependency-type: direct:production
      update-type: version-update:semver-patch
      dependency-group: nuget-dependencies
    - dependency-name: Microsoft.Extensions.FileSystemGlobbing
      dependency-version: 10.0.9
      dependency-type: direct:production
      update-type: version-update:semver-patch
      dependency-group: nuget-dependencies
    - dependency-name: Polyfill
      dependency-version: 10.10.0
      dependency-type: direct:production
      update-type: version-update:semver-minor
      dependency-group: nuget-dependencies
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Jun 15, 2026
    Configuration menu
    Copy the full SHA
    08dc5c7 View commit details
    Browse the repository at this point in the history

Commits on Jun 18, 2026

  1. Introduce IFileContainer for enhanced zip content assertions (#54)

    * Add IFileContainer abstraction for zip content assertions
    
    Introduce IFileContainer (with DirectoryFileContainer and ZipFileContainer
    implementations) so that the full suite of content assertions (text, xml,
    yaml, json, html, pdf, and nested zip) can be applied to entries inside a
    zip archive, recursively.
    
    Key changes:
    - New IContext interface and ScopedContext wrapper for breadcrumb error messages
    - New IFileContainer interface with Glob(), Size(), Open(), and DisplayName
    - DirectoryFileContainer wraps a real filesystem directory
    - ZipFileContainer wraps a ZipArchive (from path or stream, enabling zip-in-zip)
    - All 7 content asserters updated to Run(IContext, IFileContainer, string entryPath)
    - FileAssertFile.Run() unified to take IFileContainer (DirectoryInfoWrapper retired)
    - FileAssertTest constructs DirectoryFileContainer for top-level filesystem runs
    - FileAssertZipAssert rewritten: entries now use FileAssertFileData (full parity),
      opens ZipFileContainer per entry, scopes context with breadcrumb prefix
    - FileAssertZipEntryData deleted; FileAssertZipData.Entries reuses FileAssertFileData
    - 291 tests across net8/net9/net10 (19 new zip content tests, 2 new modeling tests,
      12 new container unit tests, 2 new scoped context tests, 5 new integration tests)
    - Full companion artifact sweep: requirements, design, verification docs, review sets,
      README, and user guide all updated
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Fix formal review findings from IFileContainer feature branch
    
    * Add OTS design docs to YamlDotNet, PdfPig, HtmlAgilityPack, FileSystemGlobbing review sets
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Fix second round of formal review findings
    
    * Fix third round of formal review findings
    
    - Add malformed-HTML lenient-parse test for HtmlAgilityPack OTS
    - Add HTML and PDF zip-entry assertion tests
    - Add multi-page PDF boundary test and PdfMetadataRule negative tests
    - Add YamlAssert.Create() validation (empty queries, no-op, contradictory min/max)
    - Split compound FileAssertFile Count/Size requirements into atomic requirements
    - Fix compound OTS parent requirements (ReviewMark, VersionMark, PdfPig)
    - Restructure OTS design docs to Purpose/Features Used/Integration Pattern (ReviewMark, VersionMark, xUnit)
    - Fix OTS-ReviewMark design: document URL-based evidence source and network dependency
    - Add Features Used and Integration Pattern to OTS-VersionMark design
    - Fix xUnit 'or equivalent' ambiguity and PrivateAssets claim
    - Fix AllRequirements traceability: FileTypeParsing, FileTypeParseError, QueryAssertions, JUnit
    - Add system-level design and verification for --depth flag
    - Complete HtmlAssert design doc tables
    - Add JUnit configuration verification scenario
    - Fix DirectoryFileContainer temp path description
    - Fix introduction.md References section to use verbal references
    
    Tests: 326/326 passing
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Add 'enation' to cspell word list
    
    Used in multi-page PDF boundary tests to verify the page separator
    prevents cross-page token merging (concat + enation).
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Remove flawed LockedFile test and FileTypeReadError requirement
    
    File locking via FileShare.None is not reliably enforced on Linux.
    The IO error path is already covered by per-asserter IOError tests.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Fix duplicated breadcrumb in ZipAssert error messages
    
    ZipFileContainer.GetDisplayPath already builds the full breadcrumb
    path (e.g. 'outer.zip > entry.txt'). The additional context.WithPrefix
    call in FileAssertZipAssert.Run duplicated it, producing messages like
    'outer.zip > File ''outer.zip > entry.txt'' ...'.
    
    Remove WithPrefix from ZipAssert.Run and rely solely on GetDisplayPath.
    Also tighten the breadcrumb test to assert the zip name appears exactly
    once in the error message, so this cannot regress silently.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Fix PR review findings: silent-pass, backslash patterns, misc
    
    - Remove entries: alias (never shipped, no backward compat needed)
    - Validate zip: block requires at least one files: entry; null/empty
      now throws InvalidOperationException instead of silently passing
    - Normalize backslash separators in glob patterns before matching
      so sub\*.txt works against forward-slash normalized entry paths
    - Add tests: NullFiles/EmptyFiles throw, BackslashPattern matches,
      invalid YAML throws, selftest scenario name corrected
    
    Tests: 329/329 passing
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Fix MultiRuntime reqstream filter prefix (net8.0 not dotnet8.x)
    
    The build job produces TRX files named 'macos-latest_net8.0_*.trx'.
    ReqStream derives the source filter from the TRX filename, so the
    correct prefix is 'net8.0@', not 'dotnet8.x@'.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Malcolm Nixon <Malcolm.Nixon@hiarc.inc>
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    Co-authored-by: Developer Agent <agent@dema.local>
    4 people authored Jun 18, 2026
    Configuration menu
    Copy the full SHA
    8677800 View commit details
    Browse the repository at this point in the history
  2. Fix code quality warnings from CodeQL, Roslyn, and SonarQube (#55)

    * Fix code quality warnings from CodeQL, Roslyn, and SonarQube
    
    - Add CodeQL exclusions for cs/useless-assignment-to-local and
      cs/missed-ternary-operator targeting generated obj/ files
    - Inline archiveEntry variable in ZipAssertTests to fix cs/linq/missed-select
    - Use string interpolation in ProgramTests to fix cs/useless-tostring-call
    - Add using var to StringWriter locals in CliTests to fix cs/local-not-disposed
    - Simplify using statement block to using var in CliTests (IDE0063)
    - Change Errors property return type to ReadOnlyCollection<string> in four
      CapturingContext test helpers (CA1859)
    - Extract RunDocumentAssertions and BuildPageText helpers from
      FileAssertPdfAssert.Run to reduce cognitive complexity (S3776)
    - Extract RunEntryChecks helper from FileAssertFile.Run to reduce
      cognitive complexity (S3776)
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Avoid materializing Page objects when only page count is needed
    
    When only a page-count constraint is configured (no text rules),
    enumerate the pages with Count() rather than ToList() to avoid
    allocating Page objects unnecessarily for large PDFs.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Malcolm Nixon <Malcolm.Nixon@hiarc.inc>
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    3 people authored Jun 18, 2026
    Configuration menu
    Copy the full SHA
    f10606b View commit details
    Browse the repository at this point in the history

Commits on Jun 21, 2026

  1. Self validation enhancement (#57)

    * Add self-validation for all file types.
    
    * Update docs and traceability for expanded self-validation suite (#56)
    
    * Update self-validation documentation
    
    * Fix self-validation traceability
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    
    * Potential fix for pull request finding
    
    Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Malcolm Nixon <Malcolm.Nixon@hiarc.inc>
    Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
    4 people authored Jun 21, 2026
    Configuration menu
    Copy the full SHA
    699c4ab View commit details
    Browse the repository at this point in the history
Loading