| 300 | } |
| 301 | |
| 302 | func TestChangeGenerator(t *testing.T) { |
| 303 | is := is.New(t) |
| 304 | ctx := context.Background() |
| 305 | dir := t.TempDir() |
| 306 | td := testdir.New(dir) |
| 307 | td.Files["generator/tailwind/tailwind.go"] = ` |
| 308 | package tailwind |
| 309 | import ( |
| 310 | "github.com/livebud/bud/package/genfs" |
| 311 | ) |
| 312 | type Generator struct {} |
| 313 | func (g *Generator) Generate(fsys genfs.FS, dir *genfs.Dir) error { |
| 314 | dir.GenerateFile("tailwind.css", func(fsys genfs.FS, file *genfs.File) error { |
| 315 | file.Data = []byte("/** tailwind **/") |
| 316 | return nil |
| 317 | }) |
| 318 | return nil |
| 319 | } |
| 320 | ` |
| 321 | is.NoErr(td.Write(ctx)) |
| 322 | cli := testcli.New(dir) |
| 323 | app, err := cli.Start(ctx, "run") |
| 324 | is.NoErr(err) |
| 325 | defer app.Close() |
| 326 | // Check for tailwind |
| 327 | data, err := os.ReadFile(td.Path("bud/internal/tailwind/tailwind.css")) |
| 328 | is.NoErr(err) |
| 329 | is.Equal(string(data), "/** tailwind **/") |
| 330 | // Update generator |
| 331 | generatorFile := filepath.Join(dir, "generator", "tailwind", "tailwind.go") |
| 332 | is.NoErr(os.WriteFile(generatorFile, []byte(dedent.Dedent(` |
| 333 | package tailwind |
| 334 | import ( |
| 335 | "github.com/livebud/bud/package/genfs" |
| 336 | ) |
| 337 | type Generator struct {} |
| 338 | func (g *Generator) Generate(fsys genfs.FS, dir *genfs.Dir) error { |
| 339 | dir.GenerateFile("preflight.css", func(fsys genfs.FS, file *genfs.File) error { |
| 340 | file.Data = []byte("/** preflight **/") |
| 341 | return nil |
| 342 | }) |
| 343 | return nil |
| 344 | } |
| 345 | `)), 0644)) |
| 346 | // Wait for the app to be ready again |
| 347 | readyCtx, cancel := context.WithTimeout(ctx, 15*time.Second) |
| 348 | is.NoErr(app.Ready(readyCtx)) |
| 349 | cancel() |
| 350 | // Check that tailwind has been updated |
| 351 | data, err = os.ReadFile(td.Path("bud/internal/tailwind/tailwind.css")) |
| 352 | is.True(os.IsNotExist(err)) |
| 353 | is.Equal(data, nil) |
| 354 | // Check for preflight |
| 355 | data, err = os.ReadFile(td.Path("bud/internal/tailwind/preflight.css")) |
| 356 | is.NoErr(err) |
| 357 | is.Equal(string(data), "/** preflight **/") |
| 358 | } |
| 359 | |