File tree Expand file tree Collapse file tree 4 files changed +19
-7
lines changed Expand file tree Collapse file tree 4 files changed +19
-7
lines changed Original file line number Diff line number Diff line change 11# Bash Language Server
22
3+ ## 5.3.2
4+
5+ - Handle non-zero exit status when formatting using shfmt https://github.com/bash-lsp/bash-language-server/pull/1163
6+
37## 5.3.1
48
59- Clear diagnostics when closing document https://github.com/bash-lsp/bash-language-server/pull/1135
Original file line number Diff line number Diff line change 33 "description" : " A language server for Bash" ,
44 "author" : " Mads Hartmann" ,
55 "license" : " MIT" ,
6- "version" : " 5.3.1 " ,
6+ "version" : " 5.3.2 " ,
77 "main" : " ./out/server.js" ,
88 "typings" : " ./out/server.d.ts" ,
99 "bin" : {
Original file line number Diff line number Diff line change @@ -38,7 +38,7 @@ describe('formatter', () => {
3838 expect ( new Formatter ( { executablePath : 'foo' } ) . canFormat ) . toBe ( true )
3939 } )
4040
41- it ( 'should set canFormat to false when formatting fails ' , async ( ) => {
41+ it ( 'should set canFormat to false when the executable cannot be found ' , async ( ) => {
4242 const [ result , formatter ] = await getFormattingResult ( {
4343 document : textToDoc ( '' ) ,
4444 executablePath : 'foo' ,
@@ -54,6 +54,14 @@ describe('formatter', () => {
5454 )
5555 } )
5656
57+ it ( 'should throw when formatting fails' , async ( ) => {
58+ expect ( async ( ) => {
59+ await getFormattingResult ( { document : FIXTURE_DOCUMENT . PARSE_PROBLEMS } )
60+ } ) . rejects . toThrow (
61+ 'Shfmt: exited with status 1: <standard input>:10:1: > must be followed by a word' ,
62+ )
63+ } )
64+
5765 it ( 'should format when shfmt is present' , async ( ) => {
5866 const [ result ] = await getFormattingResult ( { document : FIXTURE_DOCUMENT . SHFMT } )
5967 expect ( result ) . toMatchInlineSnapshot ( `
Original file line number Diff line number Diff line change @@ -91,14 +91,10 @@ export class Formatter {
9191 proc . stdin . end ( documentText )
9292 } )
9393
94- // NOTE: do we care about exit code? 0 means "ok", 1 possibly means "errors",
95- // but the presence of parseable errors in the output is also sufficient to
96- // distinguish.
9794 let exit
9895 try {
9996 exit = await proc
10097 } catch ( e ) {
101- // TODO: we could do this up front?
10298 if ( ( e as any ) . code === 'ENOENT' ) {
10399 // shfmt path wasn't found, don't try to format any more:
104100 logger . warn (
@@ -107,7 +103,11 @@ export class Formatter {
107103 this . _canFormat = false
108104 return ''
109105 }
110- throw new Error ( `Shfmt: failed with code ${ exit } : ${ e } \nout:\n${ out } \nerr:\n${ err } ` )
106+ throw new Error ( `Shfmt: child process error: ${ e } ` )
107+ }
108+
109+ if ( exit != 0 ) {
110+ throw new Error ( `Shfmt: exited with status ${ exit } : ${ err } ` )
111111 }
112112
113113 return out
You can’t perform that action at this time.
0 commit comments