@@ -765,6 +765,125 @@ describe("versions upload", () => {
765765 expect ( std . warn ) . toMatchInlineSnapshot ( `""` ) ;
766766 } ) ;
767767 } ) ;
768+
769+ describe ( "keep_vars" , ( ) => {
770+ beforeEach ( ( ) => {
771+ mockGetScript ( ) ;
772+ mockGetWorkerSubdomain ( { enabled : true , previews_enabled : false } ) ;
773+ writeWorkerSource ( ) ;
774+ setIsTTY ( false ) ;
775+ } ) ;
776+
777+ test ( "should include plain_text and json in keep_bindings when keep_vars is true" , async ( ) => {
778+ const mockUploadVersionCapture = captureRequestsFrom (
779+ http . post (
780+ `*/accounts/:accountId/workers/scripts/:scriptName/versions` ,
781+ async ( ) => {
782+ return HttpResponse . json (
783+ createFetchResult ( {
784+ id : "version-id" ,
785+ startup_time_ms : 500 ,
786+ metadata : {
787+ has_preview : false ,
788+ } ,
789+ } )
790+ ) ;
791+ }
792+ )
793+ ) ( ) ;
794+
795+ writeWranglerConfig ( {
796+ name : "test-name" ,
797+ main : "./index.js" ,
798+ keep_vars : true ,
799+ } ) ;
800+
801+ await runWrangler ( "versions upload" ) ;
802+
803+ const request = mockUploadVersionCapture . requests [ 0 ] ;
804+ const formBody = await request . clone ( ) . formData ( ) ;
805+ const metadata = JSON . parse (
806+ await toString ( formBody . get ( "metadata" ) )
807+ ) as WorkerMetadata ;
808+
809+ expect ( metadata . keep_bindings ) . toEqual (
810+ expect . arrayContaining ( [ "plain_text" , "json" ] )
811+ ) ;
812+ } ) ;
813+
814+ test ( "should not include plain_text and json in keep_bindings when keep_vars is false" , async ( ) => {
815+ const mockUploadVersionCapture = captureRequestsFrom (
816+ http . post (
817+ `*/accounts/:accountId/workers/scripts/:scriptName/versions` ,
818+ async ( ) => {
819+ return HttpResponse . json (
820+ createFetchResult ( {
821+ id : "version-id" ,
822+ startup_time_ms : 500 ,
823+ metadata : {
824+ has_preview : false ,
825+ } ,
826+ } )
827+ ) ;
828+ }
829+ )
830+ ) ( ) ;
831+
832+ writeWranglerConfig ( {
833+ name : "test-name" ,
834+ main : "./index.js" ,
835+ keep_vars : false ,
836+ } ) ;
837+
838+ await runWrangler ( "versions upload" ) ;
839+
840+ const request = mockUploadVersionCapture . requests [ 0 ] ;
841+ const formBody = await request . clone ( ) . formData ( ) ;
842+ const metadata = JSON . parse (
843+ await toString ( formBody . get ( "metadata" ) )
844+ ) as WorkerMetadata ;
845+
846+ expect ( metadata . keep_bindings ) . not . toEqual (
847+ expect . arrayContaining ( [ "plain_text" , "json" ] )
848+ ) ;
849+ } ) ;
850+
851+ test ( "should not include plain_text and json in keep_bindings when keep_vars is not provided" , async ( ) => {
852+ const mockUploadVersionCapture = captureRequestsFrom (
853+ http . post (
854+ `*/accounts/:accountId/workers/scripts/:scriptName/versions` ,
855+ async ( ) => {
856+ return HttpResponse . json (
857+ createFetchResult ( {
858+ id : "version-id" ,
859+ startup_time_ms : 500 ,
860+ metadata : {
861+ has_preview : false ,
862+ } ,
863+ } )
864+ ) ;
865+ }
866+ )
867+ ) ( ) ;
868+
869+ writeWranglerConfig ( {
870+ name : "test-name" ,
871+ main : "./index.js" ,
872+ } ) ;
873+
874+ await runWrangler ( "versions upload" ) ;
875+
876+ const request = mockUploadVersionCapture . requests [ 0 ] ;
877+ const formBody = await request . clone ( ) . formData ( ) ;
878+ const metadata = JSON . parse (
879+ await toString ( formBody . get ( "metadata" ) )
880+ ) as WorkerMetadata ;
881+
882+ expect ( metadata . keep_bindings ) . not . toEqual (
883+ expect . arrayContaining ( [ "plain_text" , "json" ] )
884+ ) ;
885+ } ) ;
886+ } ) ;
768887} ) ;
769888
770889const mockExecSync = vi . fn ( ) ;
0 commit comments