@@ -8,6 +8,7 @@ import type { PackageContext } from '../scripts/package/context';
88import { parsePackageCliArgs } from '../scripts/package/cli' ;
99import {
1010 restorePackageJson ,
11+ stageDistFilesForTarget ,
1112 stagePackageJsonForTarget ,
1213 stageProfileTraceAssets ,
1314} from '../scripts/package/manifest' ;
@@ -88,6 +89,90 @@ describe('package staging', () => {
8889 ) ;
8990 } ) ;
9091
92+ it ( 'removes desktop entry points from web packages' , ( ) => {
93+ const context = temporaryPackageContext ( ) ;
94+ fs . writeFileSync (
95+ path . join ( context . vscodeDir , 'package.json' ) ,
96+ `${ JSON . stringify (
97+ {
98+ main : './dist/extension.js' ,
99+ browser : './dist/browser/extension.js' ,
100+ contributes : {
101+ commands : [
102+ { command : 'vide.profileDiagnostics' } ,
103+ { command : 'vide.showOutput' } ,
104+ ] ,
105+ } ,
106+ } ,
107+ null ,
108+ 2 ,
109+ ) } \n`,
110+ ) ;
111+
112+ const plan = createPackagePlan ( {
113+ target : 'web' ,
114+ profile : 'release' ,
115+ serverMode : 'build' ,
116+ } ) ;
117+ const originalPackageJson = stagePackageJsonForTarget ( context , plan ) ;
118+ const packageJson = JSON . parse (
119+ fs . readFileSync ( path . join ( context . vscodeDir , 'package.json' ) , 'utf8' ) ,
120+ ) as {
121+ main ?: unknown ;
122+ browser ?: unknown ;
123+ contributes ?: { commands ?: Array < { command ?: unknown } > } ;
124+ } ;
125+
126+ assert . equal ( packageJson . main , undefined ) ;
127+ assert . equal ( packageJson . browser , './dist/browser/extension.js' ) ;
128+ assert . deepEqual ( packageJson . contributes ?. commands , [ { command : 'vide.showOutput' } ] ) ;
129+
130+ restorePackageJson ( context , originalPackageJson ) ;
131+ const restored = fs . readFileSync ( path . join ( context . vscodeDir , 'package.json' ) , 'utf8' ) ;
132+ assert . match ( restored , / " m a i n " / ) ;
133+ assert . match ( restored , / v i d e \. p r o f i l e D i a g n o s t i c s / ) ;
134+ } ) ;
135+
136+ it ( 'removes stale desktop bundle from web packages' , ( ) => {
137+ const context = temporaryPackageContext ( ) ;
138+ const nodeBundle = path . join ( context . vscodeDir , 'dist' , 'extension.js' ) ;
139+ const browserBundle = path . join ( context . vscodeDir , 'dist' , 'browser' , 'extension.js' ) ;
140+ fs . mkdirSync ( path . dirname ( nodeBundle ) , { recursive : true } ) ;
141+ fs . mkdirSync ( path . dirname ( browserBundle ) , { recursive : true } ) ;
142+ fs . writeFileSync ( nodeBundle , '' ) ;
143+ fs . writeFileSync ( browserBundle , '' ) ;
144+
145+ const plan = createPackagePlan ( {
146+ target : 'web' ,
147+ profile : 'release' ,
148+ serverMode : 'build' ,
149+ } ) ;
150+ stageDistFilesForTarget ( context , plan ) ;
151+
152+ assert . equal ( fs . existsSync ( nodeBundle ) , false ) ;
153+ assert . equal ( fs . existsSync ( browserBundle ) , true ) ;
154+ } ) ;
155+
156+ it ( 'removes stale browser bundle from native packages' , ( ) => {
157+ const context = temporaryPackageContext ( ) ;
158+ const nodeBundle = path . join ( context . vscodeDir , 'dist' , 'extension.js' ) ;
159+ const browserBundle = path . join ( context . vscodeDir , 'dist' , 'browser' , 'extension.js' ) ;
160+ fs . mkdirSync ( path . dirname ( nodeBundle ) , { recursive : true } ) ;
161+ fs . mkdirSync ( path . dirname ( browserBundle ) , { recursive : true } ) ;
162+ fs . writeFileSync ( nodeBundle , '' ) ;
163+ fs . writeFileSync ( browserBundle , '' ) ;
164+
165+ const plan = createPackagePlan ( {
166+ target : 'linux-x64' ,
167+ profile : 'release' ,
168+ serverMode : 'build' ,
169+ } ) ;
170+ stageDistFilesForTarget ( context , plan ) ;
171+
172+ assert . equal ( fs . existsSync ( nodeBundle ) , true ) ;
173+ assert . equal ( fs . existsSync ( browserBundle ) , false ) ;
174+ } ) ;
175+
91176 it ( 'removes stale profile trace assets when profile trace is disabled' , ( ) => {
92177 const context = temporaryPackageContext ( ) ;
93178 const speedscopeDir = path . join ( context . vscodeDir , 'dist' , 'speedscope' ) ;
0 commit comments