Loading
Write Go test code using the gt library. Use when writing tests, creating test files, or when the user asks to add tests for Go code.
Recommended by author
This prompt takes no variables — just pick a model and run.
# Writing Tests with gt
When writing Go test code, use the `gt` library for type-safe assertions.
## Step 1: Locate gt documentation
First, find where gt is installed and read its documentation:
```bash
GT_DIR=$(go list -m -f '{{.Dir}}' github.com/m-mizutani/gt 2>/dev/null)
```
If gt is available, read the relevant documentation from `$GT_DIR/docs/`:
- `docs/README.md` - Overview and quick reference
- `docs/types/*.md` - Detailed documentation for each test type
- `docs/patterns/*.md` - Common patterns (method chaining, Required, Describe)
## Step 2: Choose the right test type
| Data Type | Use | NOT |
|-----------|-----|-----|
| `[]T` (slice) | `gt.Array(t, arr).Length(3)` | `gt.Value(t, len(arr)).Equal(3)` |
| `string` | `gt.String(t, s).Contains("x")` | `gt.Bool(t, strings.Contains(s, "x")).True()` |
| `error` | `gt.NoError(t, err)` | `gt.Value(t, err).Nil()` |
| `int`, `float`, etc. | `gt.Number(t, n).Greater(5)` | `gt.Bool(t, n > 5).True()` |
| `map[K]V` | `gt.Map(t, m).HasKey("k")` | manual check with `gt.Bool` |
| `bool` | `gt.Bool(t, b).True()` | `gt.Value(t, b).Equal(true)` |
## Step 3: Apply common patterns
### Use `Required()` for fail-fast
```go
gt.NoError(t, err).Required() // Stop immediately if error
gt.Value(t, result).NotNil().Required() // Stop if nil
```
### Use `Describef()` for context
```go
gt.Array(t, users).
Describef("Users for tenant %s", tenantID).
Length(5)
```
### Handle function returns with R1/R2/R3
```go
result := gt.R1(parseJSON(input)).NoError(t)
gt.String(t, result.Name).Equal("Alice")
```
## Quick Reference
**Constructors**: `gt.Value`, `gt.Array`, `gt.Map`, `gt.Number`, `gt.String`, `gt.Bool`, `gt.Error`, `gt.NoError`, `gt.File`, `gt.Cast`, `gt.R1/R2/R3`
**Short aliases**: `gt.V`, `gt.A`, `gt.M`, `gt.N`, `gt.S`, `gt.B`, `gt.F`, `gt.C`Running prompts needs a free account.
Sign in and we'll stream the response from GPT-5 right here — no config needed for the platform models.
Write Go test code using the gt library. Use when writing tests, creating test files, or when the user asks to add tests for Go code.
# Writing Tests with gt
When writing Go test code, use the `gt` library for type-safe assertions.
## Step 1: Locate gt documentation
First, find where gt is installed and read its documentation:
```bash
GT_DIR=$(go list -m -f '{{.Dir}}' github.com/m-mizutani/gt 2>/dev/null)
```
If gt is available, read the relevant documentation from `$GT_DIR/docs/`:
- `docs/README.md` - Overview and quick reference
- `docs/types/*.md` - Detailed documentation for each test type
- `docs/patterns/*.md` - Common patterns (method chaining, Required, Describe)
## Step 2: Choose the right test type
| Data Type | Use | NOT |
|-----------|-----|-----|
| `[]T` (slice) | `gt.Array(t, arr).Length(3)` | `gt.Value(t, len(arr)).Equal(3)` |
| `string` | `gt.String(t, s).Contains("x")` | `gt.Bool(t, strings.Contains(s, "x")).True()` |
| `error` | `gt.NoError(t, err)` | `gt.Value(t, err).Nil()` |
| `int`, `float`, etc. | `gt.Number(t, n).Greater(5)` | `gt.Bool(t, n > 5).True()` |
| `map[K]V` | `gt.Map(t, m).HasKey("k")` | manual check with `gt.Bool` |
| `bool` | `gt.Bool(t, b).True()` | `gt.Value(t, b).Equal(true)` |
## Step 3: Apply common patterns
### Use `Required()` for fail-fast
```go
gt.NoError(t, err).Required() // Stop immediately if error
gt.Value(t, result).NotNil().Required() // Stop if nil
```
### Use `Describef()` for context
```go
gt.Array(t, users).
Describef("Users for tenant %s", tenantID).
Length(5)
```
### Handle function returns with R1/R2/R3
```go
result := gt.R1(parseJSON(input)).NoError(t)
gt.String(t, result.Name).Equal("Alice")
```
## Quick Reference
**Constructors**: `gt.Value`, `gt.Array`, `gt.Map`, `gt.Number`, `gt.String`, `gt.Bool`, `gt.Error`, `gt.NoError`, `gt.File`, `gt.Cast`, `gt.R1/R2/R3`
**Short aliases**: `gt.V`, `gt.A`, `gt.M`, `gt.N`, `gt.S`, `gt.B`, `gt.F`, `gt.C`