Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -481,6 +481,13 @@ FodyWeavers.xsd
# 10's Native AOT publish-and-run proof) - regenerated by that script, never committed.
.local-nuget-feed-nunit-aot-smoke/

# Raw per-run outputs from skills/compono-workspace/ eval iterations - transient, regenerated by
# each run. grading.json/timing.json/benchmark.json/feedback.json ARE committed (this repo's own
# established evaluation-evidence convention, see skills/compono-workspace/benchmarks/), only the
# bulky raw outputs/ directories are excluded.
skills/compono-workspace/iteration-*/**/outputs/
skills/compono-workspace/skill-snapshot/

# macOS
.DS_Store
.DS_Store?
Expand Down
7 changes: 5 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,8 +128,11 @@ instead of opening a public issue.

## Status

Compono is under active development. APIs are experimental until the
first public preview.
Compono is publicly released, with stable `0.x` packages on NuGet. It's
still pre-`1.0`, so the public API can still change before the `1.0`
compatibility boundary — see
[Installation](https://layeredcraft.github.io/compono/getting-started/installation/)
for exact package versions.

## License

Expand Down
26 changes: 12 additions & 14 deletions docs/getting-started/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ composed test method parameters/theories. That's two packages — `Compono`
plus whichever test-framework integration matches your test host:

```bash
dotnet add package Compono --prerelease
dotnet add package Compono.XunitV3 --prerelease
dotnet add package Compono
Comment thread
ncipollina marked this conversation as resolved.
dotnet add package Compono.XunitV3
# or, for TUnit:
dotnet add package Compono.TUnit --prerelease
dotnet add package Compono.TUnit
# or, for MSTest (MSTest.TestFramework 4.0.0+ - see the Compono.MSTest Package Guide):
dotnet add package Compono.MSTest --prerelease
dotnet add package Compono.MSTest
# or, for NUnit (NUnit 3.14.0+ - see the Compono.NUnit Package Guide):
dotnet add package Compono.NUnit --prerelease
dotnet add package Compono.NUnit
```

This tutorial's assertions (`.Should()`, throughout this site's own
Expand All @@ -29,17 +29,15 @@ dotnet add package AwesomeAssertions
Add the rest of the ecosystem as your tests need it:

```bash
dotnet add package Compono.NSubstitute --prerelease # automatic substitute composition
dotnet add package Compono.Bogus --prerelease # semantic fake data (names, emails, ...)
dotnet add package Compono.DependencyInjection --prerelease # row.AsServiceProvider() bridge
dotnet add package Compono.Http --prerelease # TestHttpHandler for HttpClient tests
dotnet add package Compono.NSubstitute # automatic substitute composition
dotnet add package Compono.Bogus # semantic fake data (names, emails, ...)
dotnet add package Compono.DependencyInjection # row.AsServiceProvider() bridge
dotnet add package Compono.Http # TestHttpHandler for HttpClient tests
```

Every package targets `net8.0`/`net9.0`/`net10.0`/`net11.0`. Until the first stable `1.0`
release, every published version is a `0.x.y-preview.N` prerelease — the
`--prerelease` flag (or an explicit `<PackageReference Version="0.x.y-preview.N" />`)
is required for `dotnet add package`/NuGet restore to pick it up at all,
since a plain `dotnet add package` skips prerelease versions by default. See
Every package targets `net8.0`/`net9.0`/`net10.0`/`net11.0` and has a
stable release, so a plain `dotnet add package` picks up the right version
for all of them with no extra flag. See
[Package Guides](../packages/index.md) for what each package is for and
when to add it.

Expand Down
11 changes: 5 additions & 6 deletions docs/migrating-from-autofixture.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,17 +67,16 @@ AutoFixture users migrating xUnit tests need:
anonymous values.

```bash
dotnet add package Compono --prerelease
dotnet add package Compono.XunitV3 --prerelease
dotnet add package Compono.NSubstitute --prerelease
dotnet add package Compono.Bogus --prerelease
dotnet add package Compono
dotnet add package Compono.XunitV3
dotnet add package Compono.NSubstitute
dotnet add package Compono.Bogus
```

Install matching versions of every Compono package you add — mixing
versions across packages isn't supported; see
[Package Guides: Version Compatibility](packages/index.md#version-compatibility).
See [Installation](getting-started/installation.md) for the full setup,
including why `--prerelease` is required during public preview.
See [Installation](getting-started/installation.md) for the full setup.

## Quick concept map

Expand Down
4 changes: 2 additions & 2 deletions docs/packages/compono-bogus.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ You want composed string/data members to look like plausible real values
placeholder strings:

```bash
dotnet add package Compono --prerelease
dotnet add package Compono.Bogus --prerelease
dotnet add package Compono
dotnet add package Compono.Bogus
```

If anonymous placeholder values are fine for your tests, you don't need
Expand Down
4 changes: 2 additions & 2 deletions docs/packages/compono-dependencyinjection.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ to enumerate and manually register every dependency a system under test
might ask for:

```bash
dotnet add package Compono --prerelease
dotnet add package Compono.DependencyInjection --prerelease
dotnet add package Compono
dotnet add package Compono.DependencyInjection
```

This package is deliberately **not** framework-specific. It doesn't
Expand Down
4 changes: 2 additions & 2 deletions docs/packages/compono-http.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ pipeline against a configured HTTP response — not substitute an
application-level interface:

```bash
dotnet add package Compono --prerelease
dotnet add package Compono.Http --prerelease
dotnet add package Compono
dotnet add package Compono.Http
```

If the seam under test is already an ordinary application interface
Expand Down
4 changes: 2 additions & 2 deletions docs/packages/compono-logging.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ message, structured properties, exception, scope — not substitute an
unrelated application interface:

```bash
dotnet add package Compono --prerelease
dotnet add package Compono.Logging --prerelease
dotnet add package Compono
dotnet add package Compono.Logging
```

This package depends only on `Compono` and
Expand Down
4 changes: 2 additions & 2 deletions docs/packages/compono-mstest.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ that composes test method parameters directly, instead of hand-building
You write MSTest tests and want method parameters composed automatically:

```bash
dotnet add package Compono --prerelease
dotnet add package Compono.MSTest --prerelease
dotnet add package Compono
dotnet add package Compono.MSTest
```

`Compono.MSTest` doesn't add an MSTest test host for you — it integrates
Expand Down
4 changes: 2 additions & 2 deletions docs/packages/compono-nsubstitute.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ abstract classes) that you'd otherwise create with `Substitute.For<T>()` by
hand:

```bash
dotnet add package Compono --prerelease
dotnet add package Compono.NSubstitute --prerelease
dotnet add package Compono
dotnet add package Compono.NSubstitute
```

If none of your composed types have interface/delegate/abstract-class
Expand Down
4 changes: 2 additions & 2 deletions docs/packages/compono-nunit.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ attribute that composes test method parameters directly, without needing
You write NUnit tests and want method parameters composed automatically:

```bash
dotnet add package Compono --prerelease
dotnet add package Compono.NUnit --prerelease
dotnet add package Compono
dotnet add package Compono.NUnit
```

`Compono.NUnit` doesn't add an NUnit test host for you — it integrates with
Expand Down
4 changes: 2 additions & 2 deletions docs/packages/compono-testdoubles.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ generated double, without pulling in `Compono.NSubstitute`'s runtime proxy
dependency (or when you need the composed path to survive `PublishAot`):

```bash
dotnet add package Compono --prerelease
dotnet add package Compono.TestDoubles --prerelease
dotnet add package Compono
dotnet add package Compono.TestDoubles
```

`Compono.TestDoubles` is not a general-purpose mocking framework — see
Expand Down
4 changes: 2 additions & 2 deletions docs/packages/compono-tunit.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ custom data source generator.
You write TUnit tests and want method parameters composed automatically:

```bash
dotnet add package Compono --prerelease
dotnet add package Compono.TUnit --prerelease
dotnet add package Compono
dotnet add package Compono.TUnit
```

`Compono.TUnit` doesn't add a TUnit test host for you — it integrates with
Expand Down
4 changes: 2 additions & 2 deletions docs/packages/compono-xunitv3.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ You write xUnit v3 tests (`xunit.v3` + the Microsoft Testing Platform
runner) and want theory parameters composed automatically:

```bash
dotnet add package Compono --prerelease
dotnet add package Compono.XunitV3 --prerelease
dotnet add package Compono
dotnet add package Compono.XunitV3
```

`Compono.XunitV3` doesn't add an xUnit v3 test host for you — it integrates
Expand Down
2 changes: 1 addition & 1 deletion docs/packages/compono.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ dependency of `Compono.XunitV3`/`Compono.NSubstitute`/`Compono.Bogus`, so
directly.

```bash
dotnet add package Compono --prerelease
dotnet add package Compono
```

## What it gives you
Expand Down
17 changes: 8 additions & 9 deletions docs/packages/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,9 @@ need the first two.
| [`Compono.Http`](compono-http.md) | `TestHttpHandler` — a reflection-free `HttpMessageHandler` test double: `OnGet`/`OnPost`/etc. + `When(...)` matching, strict unmatched-request behavior, registration-handle verification. | Your test needs to exercise the real `HttpClient` pipeline against a configured HTTP response, instead of substituting an application-level interface. |
| [`Compono.Logging`](compono-logging.md) | `UseLogging()` — `ILogger`/`ILogger<T>` compose as a hand-written `CapturingLogger`/`CapturingLogger<T>`, with structured-property extraction, real scope tracking, and `Verify()` verification. Generation is on by default once installed. | Your composed type takes an `ILogger`/`ILogger<T>` dependency and the test wants to assert what was logged. |

Every package targets `net8.0`/`net9.0`/`net10.0`/`net11.0` and, until the
first stable `1.0` release, publishes as a `0.x.y-preview.N` prerelease —
see [Installation](../getting-started/installation.md) for the exact
`dotnet add package` commands and why `--prerelease` is required. See
Every package targets `net8.0`/`net9.0`/`net10.0`/`net11.0` and has a
stable release — see [Installation](../getting-started/installation.md)
for the exact `dotnet add package` commands. See
[ADR-0038](../adr/0038-net8-net9-explicit-multi-target.md) for why `net8.0`/
`net9.0` were added alongside the existing `net10.0`/`net11.0` window.

Expand All @@ -38,14 +37,14 @@ integration matches your test host — `Compono.XunitV3` for xUnit v3,
for NUnit:

```bash
dotnet add package Compono --prerelease
dotnet add package Compono.XunitV3 --prerelease
dotnet add package Compono
dotnet add package Compono.XunitV3
# or, for TUnit:
dotnet add package Compono.TUnit --prerelease
dotnet add package Compono.TUnit
# or, for MSTest:
dotnet add package Compono.MSTest --prerelease
dotnet add package Compono.MSTest
# or, for NUnit:
dotnet add package Compono.NUnit --prerelease
dotnet add package Compono.NUnit
```

Add `Compono.NSubstitute` and/or `Compono.Bogus` independently, as your
Expand Down
Loading
Loading