# Align command tests with unstable API

```go
import (
	"testing"
	"github.com/soph/git-sync/internal/syncer"
	"github.com/soph/git-sync/pkg/gitsync/unstable"
)

const testBranch = "master"

func TestSummarizeRuns(t *testing.T) {
	runs := []runSummary{
		{
			WallMillis: 100,
			Result: syncer.Result{
				Result: unstable.Result{
					RelayMode: "bootstrap",
					Batching:  false,
					Measurement: syncer.Measurement{
						Measurement: unstable.Measurement{
							ElapsedMillis:      90,
							PeakAllocBytes:     10,
							PeakHeapInuseBytes: 20,
						},
					},
				},
			},
			{
				WallMillis: 140,
				Result: syncer.Result{
					Result: unstable.Result{
						RelayMode:         "bootstrap-batch",
						Batching:          true,
						BatchCount:        3,
						PlannedBatchCount: 4,
						Measurement: syncer.Measurement{
							Measurement: unstable.Measurement{
								ElapsedMillis:      130,
								PeakAllocBytes:     50,
								PeakHeapInuseBytes: 60,
							}
						},
					},
				},
		}
	}
}

func TestMarshalOutput_JSONShape(t *testing.T) {
	data, err := marshalOutput(syncer.FetchResult{
		SourceURL:      "https://example.com/source.git",
		RequestedMode:  "auto",
		Protocol:       "v2",
		Wants:          []syncer.RefInfo{{Name: "refs/heads/main", Hash: plumbing.NewHash("1111111111111111111111111111111111111111")}},
		Haves:          []plumbing.Hash{plumbing.NewHash("2222222222222222222222222222222222222222")},
		FetchedObjects: 42,
		Measurement: syncer.Measurement{
			Measurement: unstable.Measurement{
				Enabled:            true,
				ElapsedMillis:      12,
				PeakAllocBytes:     100,
			}
		},
	}
} 
```
