Skip to content

[Repo Assist] test+eng: 37 StructuralInference unit tests; CI reads SDK version from global.json #1746

@github-actions

Description

@github-actions

🤖 This is an automated pull request from Repo Assist, an AI assistant for this repository.

Summary

This PR combines two improvements from the current run:

Task 9 — Testing Improvements

Adds tests/FSharp.Data.Core.Tests/StructuralInference.fs with 37 unit tests for StructuralInference.fs, which is the largest source file (777 lines) and previously had no dedicated unit tests. It contains the core type-inference algorithms used by all type providers.

Tests cover:

Area What's tested
typeTag All InferedType cases; DateOnly/TimeOnly guarded by #if NET6_0_OR_GREATER
subtypeInfered — Top/Null Top ⊔ X = X; Null ⊔ int → optional int; Null ⊔ string (allowEmptyValues=true) → non-optional
subtypeInfered — numeric widening Bit0+Bit1→Bit, int+int64→int64, int+float→float, decimal+float→float, Bit0+bool→bool
subtypeInfered — incompatible string+int and Guid+stringHeterogeneous; optionality propagation
subtypeInfered — Records Field union; different record names → Heterogeneous
inferCollectionType Single type; mixed numeric widening; Single/Multiple multiplicity
getInferedTypeFromString Empty→Null; Bit/bool/int/int64/decimal/string/Guid; NoInference mode
InferenceMode'.FromPublicApi All public enum values
supportsUnitsOfMeasure Numeric vs non-numeric types

Task 4 — Engineering Investments

Replaces the hardcoded dotnet-version: 10.0.201 in CI with dotnet-version-file: global.json in both workflows (pull-requests.yml ×3, push-master.yml ×1). The SDK version is now a single source of truth in global.json (which already pins "version": "10.0.201" with "rollForward": "latestMinor"). This means future SDK bumps only require editing one file.

Also renames the CI step from "Setup .NET 10" → "Setup .NET" so it doesn't become stale after the next SDK major bump.

Test Status

All 2957 tests pass (was 2920 before this PR; +37 new tests).

Passed! - Failed: 0, Passed: 2957, Skipped: 0, Total: 2957

Format check: ✅ (dotnet run --project build/build.fsproj -t CheckFormat passes)

Generated by 🌈 Repo Assist, see workflow run.


Warning

Protected Files — Push Permission Denied

This was originally intended as a pull request, but the patch modifies protected files. A human must create the pull request manually.

Protected files

The push was rejected because GitHub Actions does not have workflows permission to push these changes, and is never allowed to make such changes, or other authorization being used does not have this permission.

Create the pull request manually
# Download the patch from the workflow run
gh run download 24547876999 -n agent -D /tmp/agent-24547876999

# Create a new branch
git checkout -b repo-assist/test-structural-inference-2026-04-17-cd136a8845dc218d main

# Apply the patch (--3way handles cross-repo patches)
git am --3way /tmp/agent-24547876999/aw-repo-assist-test-structural-inference-2026-04-17.patch

# Push the branch and create the pull request
git push origin repo-assist/test-structural-inference-2026-04-17-cd136a8845dc218d
gh pr create --title '[Repo Assist] test+eng: 37 StructuralInference unit tests; CI reads SDK version from global.json' --base main --head repo-assist/test-structural-inference-2026-04-17-cd136a8845dc218d --repo fsprojects/FSharp.Data

Generated by 🌈 Repo Assist, see workflow run. Learn more.

To install this agentic workflow, run

gh aw add githubnext/agentics/workflows/repo-assist.md@97143ac59cb3a13ef2a77581f929f06719c7402a

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions