11import { testQuartoCmd , ExecuteOutput , Verify } from "../../test.ts" ;
22import { fileExists , folderExists , noErrorsOrWarnings , printsMessage } from "../../verify.ts" ;
33import { join , fromFileUrl , dirname } from "../../../src/deno_ral/path.ts" ;
4+ import { writeDefaultProject , writeFixture } from "../../utils.ts" ;
45import { ensureDirSync , existsSync } from "../../../src/deno_ral/fs.ts" ;
56import { pathWithForwardSlashes } from "../../../src/core/path.ts" ;
67
@@ -90,7 +91,7 @@ testQuartoCmd(
9091 ] ,
9192 {
9293 setup : ( ) => {
93- Deno . writeTextFileSync ( join ( basicDir , "_quarto.yml" ) , "project:\n type: default\n" ) ;
94+ writeDefaultProject ( basicDir ) ;
9495 return Promise . resolve ( ) ;
9596 } ,
9697 cwd : ( ) => basicDir ,
@@ -137,7 +138,7 @@ testQuartoCmd(
137138 ] ,
138139 {
139140 setup : ( ) => {
140- Deno . writeTextFileSync ( join ( dryRunDir , "_quarto.yml" ) , "project:\n type: default\n" ) ;
141+ writeDefaultProject ( dryRunDir ) ;
141142 return Promise . resolve ( ) ;
142143 } ,
143144 cwd : ( ) => dryRunDir ,
@@ -188,14 +189,12 @@ testQuartoCmd(
188189 ] ,
189190 {
190191 setup : ( ) => {
191- Deno . writeTextFileSync ( join ( forceOverwriteDir , "_quarto.yml" ) , "project:\n type: default\n" ) ;
192+ writeDefaultProject ( forceOverwriteDir ) ;
192193 // Create existing _brand directory with files
193- const brandDir = join ( forceOverwriteDir , "_brand" ) ;
194- ensureDirSync ( brandDir ) ;
195194 // This file exists in source - should be overwritten
196- Deno . writeTextFileSync ( join ( brandDir , "_brand.yml" ) , "meta:\n name: Old Brand\n" ) ;
195+ writeFixture ( forceOverwriteDir , "_brand/_brand .yml" , "meta:\n name: Old Brand\n" ) ;
197196 // This file does NOT exist in source - should be preserved
198- Deno . writeTextFileSync ( join ( brandDir , "unrelated.txt" ) , "keep me" ) ;
197+ writeFixture ( forceOverwriteDir , "_brand/ unrelated.txt" , "keep me" ) ;
199198 return Promise . resolve ( ) ;
200199 } ,
201200 cwd : ( ) => forceOverwriteDir ,
@@ -257,12 +256,10 @@ testQuartoCmd(
257256 ] ,
258257 {
259258 setup : ( ) => {
260- Deno . writeTextFileSync ( join ( dryRunOverwriteDir , "_quarto.yml" ) , "project:\n type: default\n" ) ;
259+ writeDefaultProject ( dryRunOverwriteDir ) ;
261260 // Create existing _brand directory with _brand.yml and extra.txt (not logo.png)
262- const brandDir = join ( dryRunOverwriteDir , "_brand" ) ;
263- ensureDirSync ( brandDir ) ;
264- Deno . writeTextFileSync ( join ( brandDir , "_brand.yml" ) , "meta:\n name: Old Brand\n" ) ;
265- Deno . writeTextFileSync ( join ( brandDir , "extra.txt" ) , "extra file not in source" ) ;
261+ writeFixture ( dryRunOverwriteDir , "_brand/_brand.yml" , "meta:\n name: Old Brand\n" ) ;
262+ writeFixture ( dryRunOverwriteDir , "_brand/extra.txt" , "extra file not in source" ) ;
266263 return Promise . resolve ( ) ;
267264 } ,
268265 cwd : ( ) => dryRunOverwriteDir ,
@@ -285,7 +282,7 @@ testQuartoCmd(
285282 ] ,
286283 {
287284 setup : ( ) => {
288- Deno . writeTextFileSync ( join ( errorFlagDir , "_quarto.yml" ) , "project:\n type: default\n" ) ;
285+ writeDefaultProject ( errorFlagDir ) ;
289286 return Promise . resolve ( ) ;
290287 } ,
291288 cwd : ( ) => errorFlagDir ,
@@ -336,7 +333,7 @@ testQuartoCmd(
336333 ] ,
337334 {
338335 setup : ( ) => {
339- Deno . writeTextFileSync ( join ( multiFileDir , "_quarto.yml" ) , "project:\n type: default\n" ) ;
336+ writeDefaultProject ( multiFileDir ) ;
340337 return Promise . resolve ( ) ;
341338 } ,
342339 cwd : ( ) => multiFileDir ,
@@ -384,7 +381,7 @@ testQuartoCmd(
384381 ] ,
385382 {
386383 setup : ( ) => {
387- Deno . writeTextFileSync ( join ( nestedDir , "_quarto.yml" ) , "project:\n type: default\n" ) ;
384+ writeDefaultProject ( nestedDir ) ;
388385 return Promise . resolve ( ) ;
389386 } ,
390387 cwd : ( ) => nestedDir ,
@@ -464,14 +461,12 @@ testQuartoCmd(
464461 ] ,
465462 {
466463 setup : ( ) => {
467- Deno . writeTextFileSync ( join ( nestedOverwriteDir , "_quarto.yml" ) , "project:\n type: default\n" ) ;
464+ writeDefaultProject ( nestedOverwriteDir ) ;
468465 // Create existing _brand/images directory with files
469- const imagesDir = join ( nestedOverwriteDir , "_brand" , "images" ) ;
470- ensureDirSync ( imagesDir ) ;
471466 // This file exists in source - should be overwritten
472- Deno . writeTextFileSync ( join ( imagesDir , "logo.png" ) , "old logo\n" ) ;
467+ writeFixture ( nestedOverwriteDir , "_brand/images/ logo.png" , "old logo\n" ) ;
473468 // This file does NOT exist in source - should be preserved
474- Deno . writeTextFileSync ( join ( imagesDir , "unrelated.png" ) , "keep me nested" ) ;
469+ writeFixture ( nestedOverwriteDir , "_brand/images/ unrelated.png" , "keep me nested" ) ;
475470 return Promise . resolve ( ) ;
476471 } ,
477472 cwd : ( ) => nestedOverwriteDir ,
@@ -521,13 +516,11 @@ testQuartoCmd(
521516 ] ,
522517 {
523518 setup : ( ) => {
524- Deno . writeTextFileSync ( join ( dryRunNestedDir , "_quarto.yml" ) , "project:\n type: default\n" ) ;
519+ writeDefaultProject ( dryRunNestedDir ) ;
525520 // Create existing _brand/images directory with only logo.png (not header.png)
526- const imagesDir = join ( dryRunNestedDir , "_brand" , "images" ) ;
527- ensureDirSync ( imagesDir ) ;
528- Deno . writeTextFileSync ( join ( imagesDir , "logo.png" ) , "old logo\n" ) ;
521+ writeFixture ( dryRunNestedDir , "_brand/images/logo.png" , "old logo\n" ) ;
529522 // Also create _brand.yml so we're only testing nested behavior
530- Deno . writeTextFileSync ( join ( dryRunNestedDir , "_brand" , " _brand.yml") , "meta:\n name: Old\n" ) ;
523+ writeFixture ( dryRunNestedDir , "_brand/ _brand.yml" , "meta:\n name: Old\n" ) ;
531524 return Promise . resolve ( ) ;
532525 } ,
533526 cwd : ( ) => dryRunNestedDir ,
@@ -565,11 +558,9 @@ testQuartoCmd(
565558 ] ,
566559 {
567560 setup : ( ) => {
568- Deno . writeTextFileSync ( join ( nestedNewSubdirDir , "_quarto.yml" ) , "project:\n type: default\n" ) ;
561+ writeDefaultProject ( nestedNewSubdirDir ) ;
569562 // Create _brand/ but NOT images/ subdirectory
570- const brandDir = join ( nestedNewSubdirDir , "_brand" ) ;
571- ensureDirSync ( brandDir ) ;
572- Deno . writeTextFileSync ( join ( brandDir , "_brand.yml" ) , "meta:\n name: Old Brand\n" ) ;
563+ writeFixture ( nestedNewSubdirDir , "_brand/_brand.yml" , "meta:\n name: Old Brand\n" ) ;
573564 return Promise . resolve ( ) ;
574565 } ,
575566 cwd : ( ) => nestedNewSubdirDir ,
@@ -610,11 +601,9 @@ testQuartoCmd(
610601 ] ,
611602 {
612603 setup : ( ) => {
613- Deno . writeTextFileSync ( join ( dryRunNewSubdirDir , "_quarto.yml" ) , "project:\n type: default\n" ) ;
604+ writeDefaultProject ( dryRunNewSubdirDir ) ;
614605 // Create _brand/ but NOT images/ subdirectory
615- const brandDir = join ( dryRunNewSubdirDir , "_brand" ) ;
616- ensureDirSync ( brandDir ) ;
617- Deno . writeTextFileSync ( join ( brandDir , "_brand.yml" ) , "meta:\n name: Old\n" ) ;
606+ writeFixture ( dryRunNewSubdirDir , "_brand/_brand.yml" , "meta:\n name: Old\n" ) ;
618607 return Promise . resolve ( ) ;
619608 } ,
620609 cwd : ( ) => dryRunNewSubdirDir ,
@@ -659,11 +648,9 @@ testQuartoCmd(
659648 ] ,
660649 {
661650 setup : ( ) => {
662- Deno . writeTextFileSync ( join ( emptyDirCleanupDir , "_quarto.yml" ) , "project:\n type: default\n" ) ;
651+ writeDefaultProject ( emptyDirCleanupDir ) ;
663652 // Create _brand/extras/ with a file not in source
664- const extrasDir = join ( emptyDirCleanupDir , "_brand" , "extras" ) ;
665- ensureDirSync ( extrasDir ) ;
666- Deno . writeTextFileSync ( join ( extrasDir , "orphan.txt" ) , "this file will be removed" ) ;
653+ writeFixture ( emptyDirCleanupDir , "_brand/extras/orphan.txt" , "this file will be removed" ) ;
667654 return Promise . resolve ( ) ;
668655 } ,
669656 cwd : ( ) => emptyDirCleanupDir ,
@@ -708,11 +695,9 @@ testQuartoCmd(
708695 ] ,
709696 {
710697 setup : ( ) => {
711- Deno . writeTextFileSync ( join ( deepNestedCleanupDir , "_quarto.yml" ) , "project:\n type: default\n" ) ;
698+ writeDefaultProject ( deepNestedCleanupDir ) ;
712699 // Create _brand/deep/nested/path/ with a file not in source
713- const deepDir = join ( deepNestedCleanupDir , "_brand" , "deep" , "nested" , "path" ) ;
714- ensureDirSync ( deepDir ) ;
715- Deno . writeTextFileSync ( join ( deepDir , "orphan.txt" ) , "deeply nested orphan" ) ;
700+ writeFixture ( deepNestedCleanupDir , "_brand/deep/nested/path/orphan.txt" , "deeply nested orphan" ) ;
716701 return Promise . resolve ( ) ;
717702 } ,
718703 cwd : ( ) => deepNestedCleanupDir ,
@@ -772,7 +757,7 @@ testQuartoCmd(
772757 ] ,
773758 {
774759 setup : ( ) => {
775- Deno . writeTextFileSync ( join ( brandExtDir , "_quarto.yml" ) , "project:\n type: default\n" ) ;
760+ writeDefaultProject ( brandExtDir ) ;
776761 return Promise . resolve ( ) ;
777762 } ,
778763 cwd : ( ) => brandExtDir ,
@@ -807,7 +792,7 @@ testQuartoCmd(
807792 ] ,
808793 {
809794 setup : ( ) => {
810- Deno . writeTextFileSync ( join ( brandExtDryRunDir , "_quarto.yml" ) , "project:\n type: default\n" ) ;
795+ writeDefaultProject ( brandExtDryRunDir ) ;
811796 return Promise . resolve ( ) ;
812797 } ,
813798 cwd : ( ) => brandExtDryRunDir ,
@@ -853,7 +838,7 @@ testQuartoCmd(
853838 ] ,
854839 {
855840 setup : ( ) => {
856- Deno . writeTextFileSync ( join ( brandExtSubdirDir , "_quarto.yml" ) , "project:\n type: default\n" ) ;
841+ writeDefaultProject ( brandExtSubdirDir ) ;
857842 return Promise . resolve ( ) ;
858843 } ,
859844 cwd : ( ) => brandExtSubdirDir ,
0 commit comments