@@ -8,6 +8,8 @@ const fixtures = require('../common/fixtures');
88
99const validEnvFilePath = '../fixtures/dotenv/valid.env' ;
1010const nodeOptionsEnvFilePath = '../fixtures/dotenv/node-options.env' ;
11+ const noFinalNewlineEnvFilePath = '../fixtures/dotenv/no-final-newline.env' ;
12+ const noFinalNewlineSingleQuotesEnvFilePath = '../fixtures/dotenv/no-final-newline-single-quotes.env' ;
1113
1214describe ( '.env supports edge cases' , ( ) => {
1315 it ( 'supports multiple declarations, including optional ones' , async ( ) => {
@@ -148,4 +150,24 @@ describe('.env supports edge cases', () => {
148150 assert . strictEqual ( child . stderr , '' ) ;
149151 assert . strictEqual ( child . code , 0 ) ;
150152 } ) ;
153+
154+ it ( 'should handle file without a final newline' , async ( ) => {
155+ const code = `
156+ require('assert').strictEqual(process.env.BASIC, 'basic');
157+ ` . trim ( ) ;
158+ const child = await common . spawnPromisified (
159+ process . execPath ,
160+ [ `--env-file=${ path . resolve ( __dirname , noFinalNewlineEnvFilePath ) } ` , '--eval' , code ] ,
161+ ) ;
162+
163+ const SingleQuotesChild = await common . spawnPromisified (
164+ process . execPath ,
165+ [ `--env-file=${ path . resolve ( __dirname , noFinalNewlineSingleQuotesEnvFilePath ) } ` , '--eval' , code ] ,
166+ ) ;
167+
168+ assert . strictEqual ( child . stderr , '' ) ;
169+ assert . strictEqual ( child . code , 0 ) ;
170+ assert . strictEqual ( SingleQuotesChild . stderr , '' ) ;
171+ assert . strictEqual ( SingleQuotesChild . code , 0 ) ;
172+ } ) ;
151173} ) ;
0 commit comments