1- import { describe , expect , it , jest } from "bun:test" ;
1+ import { describe , expect , it } from "bun:test" ;
22import {
33 random ,
44 getRandomCallCount ,
@@ -9,9 +9,28 @@ import { generateDataset } from "./dataset";
99import type { IMessageSchema , IMessageSchemaContext } from "./types" ;
1010import { user , assistant , times , generatedToolCall , tool } from "./schema" ;
1111import { between , oneOf } from "./schema-rng" ;
12- import { openai } from "@ai-sdk/openai " ;
12+ import { MockLanguageModelV2 } from "ai/test " ;
1313import z from "zod" ;
1414
15+ export const mockModel = (
16+ response : { type : "text" ; text : string } [ ] = [
17+ {
18+ type : "text" ,
19+ text : "mock response" ,
20+ } ,
21+ ]
22+ ) => {
23+ return new MockLanguageModelV2 ( {
24+ doGenerate : async ( ) => ( {
25+ content : response ,
26+ finishReason : "stop" ,
27+ usage : { inputTokens : 10 , outputTokens : 20 , totalTokens : 30 } ,
28+ warnings : [ ] ,
29+ rawResponse : { headers : { } } ,
30+ } ) ,
31+ } ) ;
32+ } ;
33+
1534describe ( "seed tracking" , ( ) => {
1635 it ( "tracks random call count" , async ( ) => {
1736 await withSeed ( 42 , async ( ) => {
@@ -88,7 +107,7 @@ describe("seed skewing detection", () => {
88107
89108 // The error is caught by the batch processor, so it returns an empty array
90109 const result = await generateDataset ( skewedSchema , {
91- model : openai ( "gpt-4" ) ,
110+ model : mockModel ( ) ,
92111 count : 1 ,
93112 seed : 42 ,
94113 output : "/tmp/seed-skew-test.jsonl" ,
@@ -119,7 +138,7 @@ describe("seed skewing detection", () => {
119138
120139 // Should fail with empty result due to skewing at second message
121140 const result = await generateDataset ( skewedSchema , {
122- model : openai ( "gpt-4" ) ,
141+ model : mockModel ( ) ,
123142 count : 1 ,
124143 seed : 42 ,
125144 output : "/tmp/seed-skew-step-test.jsonl" ,
@@ -141,7 +160,7 @@ describe("seed skewing detection", () => {
141160
142161 // This should not throw
143162 const result = await generateDataset ( consistentSchema , {
144- model : openai ( "gpt-4" ) ,
163+ model : mockModel ( ) ,
145164 count : 1 ,
146165 seed : 42 ,
147166 output : "/tmp/seed-consistent-test.jsonl" ,
@@ -162,7 +181,7 @@ describe("seed skewing detection", () => {
162181
163182 // This should not throw because oneOf uses random() consistently
164183 const result = await generateDataset ( schemaWithOneOf , {
165- model : openai ( "gpt-4" ) ,
184+ model : mockModel ( ) ,
166185 count : 1 ,
167186 seed : 42 ,
168187 output : "/tmp/seed-oneof-test.jsonl" ,
@@ -181,7 +200,7 @@ describe("seed does not skew", () => {
181200 ] ;
182201
183202 const result = await generateDataset ( schema , {
184- model : openai ( "gpt-4" ) ,
203+ model : mockModel ( ) ,
185204 count : 1 ,
186205 seed : 42 ,
187206 output : "/tmp/seed-oneof-test.jsonl" ,
@@ -197,7 +216,7 @@ describe("seed does not skew", () => {
197216 ] ;
198217
199218 const result = await generateDataset ( schema , {
200- model : openai ( "gpt-4" ) ,
219+ model : mockModel ( ) ,
201220 count : 1 ,
202221 seed : 42 ,
203222 output : "/tmp/seed-times-test.jsonl" ,
@@ -207,22 +226,14 @@ describe("seed does not skew", () => {
207226
208227 it ( "flattens nested schema arrays produced by helpers" , async ( ) => {
209228 const schema : IMessageSchema = async ( ) => [
210- [
211- user ( { content : "Hello" } ) ,
212- [
213- assistant ( { content : "Hi there" } ) ,
214- ] ,
215- ] ,
229+ [ user ( { content : "Hello" } ) , [ assistant ( { content : "Hi there" } ) ] ] ,
216230 times ( 2 , [
217- [
218- user ( { content : "Nested" } ) ,
219- assistant ( { content : "Response" } ) ,
220- ] ,
231+ [ user ( { content : "Nested" } ) , assistant ( { content : "Response" } ) ] ,
221232 ] ) ,
222233 ] ;
223234
224235 const result = await generateDataset ( schema , {
225- model : openai ( "gpt-4" ) ,
236+ model : mockModel ( ) ,
226237 count : 1 ,
227238 seed : 7 ,
228239 output : "/tmp/seed-nested-schema-test.jsonl" ,
@@ -241,7 +252,7 @@ describe("seed does not skew", () => {
241252 } ;
242253
243254 const result = await generateDataset ( schema , {
244- model : openai ( "gpt-4" ) ,
255+ model : mockModel ( ) ,
245256 count : 1 ,
246257 seed : 42 ,
247258 output : "/tmp/seed-between-test.jsonl" ,
@@ -257,7 +268,7 @@ describe("seed does not skew", () => {
257268 ] ;
258269
259270 const result = await generateDataset ( schema , {
260- model : openai ( "gpt-4" ) ,
271+ model : mockModel ( ) ,
261272 count : 1 ,
262273 seed : 42 ,
263274 output : "/tmp/seed-mixed-test.jsonl" ,
@@ -286,7 +297,12 @@ describe("seed does not skew", () => {
286297 } ;
287298
288299 const result = await generateDataset ( singleAsyncNoResultYetAsk ( ) , {
289- model : openai ( "gpt-4.1-nano" ) ,
300+ model : mockModel ( [
301+ {
302+ type : "text" ,
303+ text : JSON . stringify ( { name : "tool1" } ) ,
304+ } ,
305+ ] ) ,
290306 count : 1 ,
291307 seed : 42 ,
292308 output : "/tmp/seed-generated-tool-call-test.jsonl" ,
0 commit comments