cli/test/csharp-integration
Kris Coleman 96f4cde0f8
feat: introduce dagger for integration testing and ci (#100)
* feat: introduce dagger for integration testing and ci

Signed-off-by: Kris Coleman <kriscodeman@gmail.com>

* feat: make integration testing extensible and modular

my intention here is to make the pattern for integration testing more accessible.
let's abstract the integration test pattern itself into a framework to harness the boiler plate.
then reuse our csharp integration test code as our first integration-test.

Signed-off-by: Kris Coleman <kriscodeman@gmail.com>

---------

Signed-off-by: Kris Coleman <kriscodeman@gmail.com>
2025-05-06 18:08:32 +00:00
..
expected feat(csharp): added generator and integration tests (#97) 2025-04-14 17:40:52 +00:00
CompileTest.csproj feat: introduce dagger for integration testing and ci (#100) 2025-05-06 18:08:32 +00:00
Dockerfile feat(csharp): added generator and integration tests (#97) 2025-04-14 17:40:52 +00:00
OpenFeature.cs feat(csharp): added generator and integration tests (#97) 2025-04-14 17:40:52 +00:00
Program.cs feat(csharp): added generator and integration tests (#97) 2025-04-14 17:40:52 +00:00
README.md feat: introduce dagger for integration testing and ci (#100) 2025-05-06 18:08:32 +00:00

README.md

C# Integration Testing

This directory contains integration tests for the C# code generator.

Running the tests

Run the C# integration tests with Dagger:

make test-csharp-dagger

This will:

  1. Build the OpenFeature CLI
  2. Generate C# client code using the sample manifest
  3. Run the C# compilation test in an isolated environment
  4. Report success or failure

What the test does

The integration test:

  1. Builds the OpenFeature CLI inside a container
  2. Generates C# client code using a sample manifest
  3. Compiles the generated code with a sample program
  4. Runs the compiled program to verify it works correctly

Test Files

  • CompileTest.csproj: .NET project file for compilation testing
  • Program.cs: Test program that uses the generated code
  • expected/: Directory containing expected output files (used for verification)

Implementation

The C# integration test uses Dagger to create a reproducible test environment:

  1. It builds the CLI in a Go container
  2. Generates C# code using the CLI
  3. Tests the generated code in a .NET container

The implementation is located in test/integration/cmd/csharp/run.go.

For more implementation details, see the main test/README.md file.