From fa8131f5d0a367cd6b283ae81e9d2ec3b1144cea Mon Sep 17 00:00:00 2001 From: erezrokah Date: Tue, 17 Aug 2021 13:31:13 +0200 Subject: [PATCH 1/5] fix(command-dev): pass framework-info env to sub process --- src/commands/dev/index.js | 2 +- src/utils/detect-server-settings.js | 2 +- tests/framework-detection.test.js | 20 ++++++++++++++++++ .../snapshots/framework-detection.test.js.md | 13 ++++++++++++ .../framework-detection.test.js.snap | Bin 1572 -> 1640 bytes 5 files changed, 35 insertions(+), 2 deletions(-) diff --git a/src/commands/dev/index.js b/src/commands/dev/index.js index 5c44bb566f0..ed6033c35e8 100644 --- a/src/commands/dev/index.js +++ b/src/commands/dev/index.js @@ -61,7 +61,7 @@ const startFrameworkServer = async function ({ settings, exit }) { log(`${NETLIFYDEVLOG} Starting Netlify Dev with ${settings.framework || 'custom config'}`) // we use reject=false to avoid rejecting synchronously when the command doesn't exist - const frameworkProcess = execa.command(settings.command, { preferLocal: true, reject: false }) + const frameworkProcess = execa.command(settings.command, { preferLocal: true, reject: false, env: settings.env }) frameworkProcess.stdout.pipe(stripAnsiCc.stream()).pipe(process.stdout) frameworkProcess.stderr.pipe(stripAnsiCc.stream()).pipe(process.stderr) process.stdin.pipe(frameworkProcess.stdin) diff --git a/src/utils/detect-server-settings.js b/src/utils/detect-server-settings.js index ef8b7872ddb..d44a57226fc 100644 --- a/src/utils/detect-server-settings.js +++ b/src/utils/detect-server-settings.js @@ -155,7 +155,7 @@ const getSettingsFromFramework = (framework) => { }, name: frameworkName, staticAssetsDirectory: staticDir, - env, + env = {}, } = framework return { diff --git a/tests/framework-detection.test.js b/tests/framework-detection.test.js index c140d0f7813..da56bad648b 100644 --- a/tests/framework-detection.test.js +++ b/tests/framework-detection.test.js @@ -1,3 +1,5 @@ +const { platform } = require('process') + const test = require('ava') const execa = require('execa') @@ -283,3 +285,21 @@ test('should filter frameworks with no dev command', async (t) => { }) }) }) + +test('should pass framework-info env to framework sub process', async (t) => { + await withSiteBuilder('site-with-gatsby', async (builder) => { + await builder + .withPackageJson({ + packageJson: { + dependencies: { gatsby: '^3.0.0' }, + scripts: { develop: platform === 'win32' ? 'echo %GATSBY_LOGGER%' : 'echo $GATSBY_LOGGER' }, + }, + }) + .withContentFile({ path: 'gatsby-config.js', content: '' }) + .buildAsync() + + // a failure is expected since this is not a true Gatsby project + const error = await t.throwsAsync(() => withDevServer({ cwd: builder.directory }, () => {}, true)) + t.snapshot(normalize(error.stdout)) + }) +}) diff --git a/tests/snapshots/framework-detection.test.js.md b/tests/snapshots/framework-detection.test.js.md index dee7d290b93..79f08565921 100644 --- a/tests/snapshots/framework-detection.test.js.md +++ b/tests/snapshots/framework-detection.test.js.md @@ -223,3 +223,16 @@ Generated by [AVA](https://avajs.dev). └──────────────────────────────────────────────────┘␊ ␊ ` + +## should pass framework-info env to framework sub process + +> Snapshot 1 + + `◈ Netlify Dev ◈␊ + ◈ Starting Netlify Dev with Gatsby␊ + ␊ + > develop␊ + > echo $GATSBY_LOGGER␊ + ␊ + yurnalist␊ + ◈ "npm run develop" exited with code *. Shutting down Netlify Dev server` diff --git a/tests/snapshots/framework-detection.test.js.snap b/tests/snapshots/framework-detection.test.js.snap index 5e053eb83ce98ff4bfcb7e32c12626c4438af5f5..898852c2d048e2d9ae2031bf1d7e1d2d7ea4adfa 100644 GIT binary patch literal 1640 zcmV-u2ABCkRzViy?;Reqzv@h(B&g$Z5vn;m zqhrsKqKD=zd;Qm4bowGmP+x*ey}u)BUeqp(jko{Y@l)YBNl<5vMyOQ_z4(VcYWb9V zFLus-|JY7RP`?_3&)wNeG?Bd$$!FFcwZ(uyStaN$FilP(uX>{r2>5#` z6s{u87`}%*T0K{7PR)46%@)cNSaTiDl2~JAjK)I=Vi-*92oo*Au=pOvq?K}_2OF49 zaB&3JCtNOA>a4}g;Oh{(nb^HGlURR>$r?*0Ra2KSykHsBj1ykVY%XKVW)=ahiGx*} zV4JLUsqJZzASRY$wwfd@%w8j7>VQa&Im7Z~-yAu^EyW}HlfK;X3~*@DG6;6K%BdD; zkDG|5x(>mzqUh9?am-NTxJ3m~7SU*o5?yepj+@N(m;`osnsA?~sS)f70qPY+L~x~W zx(mi##SJlL1B2k0fV*o6!F8@_3ON~C$81;>cHp!W@30hV>ZDbPQG=9NZj(W^a3~!Q zy>=PY;Y4r)AI|a~p%BKnr@gJG{fQg$`HZjMIy~qHY`VNxxWe~=$yy-9R6T{6i4&Y# z<5NY)fiG1mrt(x#-#n-dB65-?hW z0?o@s&^Zuwnn5FJK~UC8g3k(YnG7|3H3(5W3x%v3p*zWWw%-P!hGEsR(#HE*6FqVj z{QI9D<-lM)?iyAW$+Jj4P$ZWc`%BPjvspE$jxYTjz+ujyZHQ5m@{|JIw9-UU4Bl2d z;Rvqg*hw(g(4kEM_ret`$Hf_7ur&(?*B1;f_jp-I$U?$EAt7ha5SqJ6a3UwTj;I>P z6_ynW&GCZM=J0NNM8(l;YH=r^3U-yjFZ-AZAsVz9Uds{m8s*rulGt`lf6pLWkDWuX zBC2wyDdp)7sYeWE!6(rV-4m@?RzL62RZEseqx0)Rp_FTzs+T{0&y?0P*mVsWr>=iA zS@FOratXK_W&c-VdXnRBlCuz+h0rX74iAKWcE$P5T>PMGaOx$l#TkcMK*pkO;nNF z3V=+LQs-|%6|4E#uLV+>MQ7B-wu286bah00sfcP6XBAsyCAOHZcaUuTz literal 1572 zcmV+<2HW{TRzV+EdX`%g&- zMjB#b6R;7f(O~?D)IbD3;s-{sVxkfPsPPYLjG_UfL`YDAZ)f+Q*HF?{iWqNmdwctK z=Djy>-uu0`@3t!lO-ADmH}1c&Jky-2)RptUp<%Nb2Nb zgqlvx>E6Ap{QdXcF!YQMe(jzs#Q;s)aF|d`o%l2xTd7(uc_&2_L+kp|ENgnjwnJW z@Sd&H_gaf*ELy#==a}-2BB{%!A@tjmvmV~oT)vdtRa(`oPMWDmY9E}xXHNC6?>p=+ z*2OxHxXgcWER(xHVpR>pSD8iTu?ie_pqIc zG&Vd}unabsousKqnphT-Gh)O@Gc508m~>D<%y0rT39g9a6=_dMmL_Yr^Z2@iw-G*2 zGldPMm};<0Mz>8B!xvUT%@h&Mj0+VzoH+!vCN9=F!JItmQSNJzCN@@+T+fhp#@DKt zx*$?u!LV8yEJw{VOU1aMq_1@S1-LZhSOmL57t{!~$F0QBJ(plr(@e@$oV4^5Zr4GS zLkyav#FQKwQ#Rv1lW-lrCL&;J8w7h&fPPUCaa<>j?!n?NVTL5*z#!Zv;O;q6@N&<# zrJOvilN<)cT-Ytm-z<&VCh5?U)FPFR*J@EC7RmX;fLRuG1(DpqhV%R*62TbvcXjr6 zJ$6-oo(l9^hev$CqziMUDFPeVtQ}lTH?x@8I4y)zQ(0*-L$}h*6*bZ*gJ+Lca@W6Y zy`er^B9Xknd826T0;k}=1^*pu|6M
CesvC4!+>y;s6%GO&Un!trkA_&h=o8Z9d zAqQ9{>@hr&9I+n|t_+rV7>b6+Ik5%yGon-lQl%jn&j!o&(*|S_I}jU(1zM6xun-+5 zOw!f@%nd=oeSA4GShG0GJP!KgmXb?vZam~mV9^F7Xi+1b&IPYCEE>-Vg0xl{{?>p? zDdhAuAVl+5C}mv@)k)FQLly{44C{`QTYR83G2@rOzyJAG4iDB-p5+vfyny7xMRKKO zr~qxW+jNVX`26btjtK^3Lz3E5WHqR!wN{d4a9QKV;o}3f0^d2gfGhWjnrm?C2sflk zc6H&KeNqP(4a*F_(bUBg1N|b2_d|g2ar;>5~5h=94xz*WL?Z446_ai zVo~Qtx*UKh(Vz>rHQR#K9MFKX6N@=225Th-W7>dmQl^TdiR#*DV%FUHXkzZ1I=H(V z&ZW^rRc-#YVc2^6axbCPf)Q#pyXvxNHCU#WClMB3dfn0~*M9K8_i3sutt` zDDq;ezXu{s27wn#2B4LPbudzIV^D;Ov}{FN;b6d{j3Z!d2LLk7kpEnAYQ7SU^SoyF z2)gH?9t3Mz@F0LGpN}6$GBpl<(BkivalY&B?{B{H4h$-^Ckx5riX@Lsm!pF9hc60( z-_kwXNc+<+U|a65re=%i5G(N8XQ$@jiRvSUE8MH+AG<=6bRluqrOL;MZg6a)AJAOHXY#Q?ql From e850e8b1385be409c1e9ad7fcc314018f62bedcb Mon Sep 17 00:00:00 2001 From: erezrokah Date: Tue, 17 Aug 2021 13:58:04 +0200 Subject: [PATCH 2/5] test(framework-detection): update normalization to match more npm scripts --- tests/utils/snapshots.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/utils/snapshots.js b/tests/utils/snapshots.js index dd85ff6c9e5..afc08d1b1b3 100644 --- a/tests/utils/snapshots.js +++ b/tests/utils/snapshots.js @@ -9,7 +9,7 @@ const normalizers = [ // normalize exit code from different OSes { pattern: /code \d+/, value: 'code *' }, // this is specific to npm v6 - { pattern: /@ start.+\/.+netlify-cli-tests-v10.+/, value: 'start' }, + { pattern: /@ (\w+?) .+\/.+netlify-cli-tests-v10.+/, value: '$1' }, { pattern: /It should be one of.+/gm, value: 'It should be one of: *' }, ] From 79f04d2ce629f5b289cbd60729aa93fc5deb7521 Mon Sep 17 00:00:00 2001 From: erezrokah Date: Tue, 17 Aug 2021 14:03:24 +0200 Subject: [PATCH 3/5] test(framework-detection): fix windows normalization --- tests/utils/snapshots.js | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/utils/snapshots.js b/tests/utils/snapshots.js index afc08d1b1b3..3e7269adfd6 100644 --- a/tests/utils/snapshots.js +++ b/tests/utils/snapshots.js @@ -6,6 +6,7 @@ const normalizers = [ { pattern: /\\/gu, value: '/' }, { pattern: /\r\n/gu, value: '\n' }, { pattern: /❯/gu, value: '>' }, + { pattern: /%(.+?)%/gu, value: '$$$1' }, // normalize exit code from different OSes { pattern: /code \d+/, value: 'code *' }, // this is specific to npm v6 From 1d0cdb51271a1dd4590c1c17d080b588e085460b Mon Sep 17 00:00:00 2001 From: erezrokah Date: Tue, 17 Aug 2021 14:05:39 +0200 Subject: [PATCH 4/5] test(framework-detection): don't use shell specific command --- tests/framework-detection.test.js | 4 +--- .../snapshots/framework-detection.test.js.md | 2 +- .../framework-detection.test.js.snap | Bin 1640 -> 1653 bytes tests/utils/snapshots.js | 1 - 4 files changed, 2 insertions(+), 5 deletions(-) diff --git a/tests/framework-detection.test.js b/tests/framework-detection.test.js index da56bad648b..674bbe4d765 100644 --- a/tests/framework-detection.test.js +++ b/tests/framework-detection.test.js @@ -1,5 +1,3 @@ -const { platform } = require('process') - const test = require('ava') const execa = require('execa') @@ -292,7 +290,7 @@ test('should pass framework-info env to framework sub process', async (t) => { .withPackageJson({ packageJson: { dependencies: { gatsby: '^3.0.0' }, - scripts: { develop: platform === 'win32' ? 'echo %GATSBY_LOGGER%' : 'echo $GATSBY_LOGGER' }, + scripts: { develop: 'node -p process.env.GATSBY_LOGGER' }, }, }) .withContentFile({ path: 'gatsby-config.js', content: '' }) diff --git a/tests/snapshots/framework-detection.test.js.md b/tests/snapshots/framework-detection.test.js.md index 79f08565921..03f46b7bf58 100644 --- a/tests/snapshots/framework-detection.test.js.md +++ b/tests/snapshots/framework-detection.test.js.md @@ -232,7 +232,7 @@ Generated by [AVA](https://avajs.dev). ◈ Starting Netlify Dev with Gatsby␊ ␊ > develop␊ - > echo $GATSBY_LOGGER␊ + > node -p process.env.GATSBY_LOGGER␊ ␊ yurnalist␊ ◈ "npm run develop" exited with code *. Shutting down Netlify Dev server` diff --git a/tests/snapshots/framework-detection.test.js.snap b/tests/snapshots/framework-detection.test.js.snap index 898852c2d048e2d9ae2031bf1d7e1d2d7ea4adfa..25c095bcb0ace8905e2b70d76a4d100fe2d78a89 100644 GIT binary patch literal 1653 zcmV-*28#JXRzVCVQm?0@hG0EgS_bwFSkLird|}yM?`-b$7Py#XnRM zf{})pSOYX7H5v_Sqy{4R4H&72iAo5dMiXm{q5-2sNKk@rX78ZaP|{Y47;kfXd-rzc zea(Bn_jY!VgwS|2;z)J(O*wD=84Z74x_rj=9YBPm1J3K0toiu5b>Eym*tzZdw!+74 zNlRlaS>%4YuY_$F7j-Lw7NP;?RG(xRf;DtY&QOl;> zalUiT`$x7*g8J1Mgr47esOs3x*6*I}Jn?DQZQVyDL7jIaLS0|(fBX1zE7s?HJ*nv2 z#c4-@ffNl?otBJ{=miK*ujyC2%ZvUk2xDtnTkPM(C&FW$ig zWjQr}O^8jl&K~;cM@dj0nT*g$yn9RDK6Am8`77ph9+%#c1ohTDgnoN++RCl9g^S4D z`6adT*r}4BJ_G0P@zXtP4;*n9c30%u2XanIf?9YxLL*SNSSx818lSZu^=y0s*AQkJ zkp!+H%^3a%IIW(k4l}H1+RYY&#jxhNjK;A>t%wl~#E5B9F(XK{7{%g$5R+De5j{D9 z>I4^saDB{Uf~8JdtTetZahi$KTQiCFrvNa>P;Nq=h=GWo)=0l3_-%obQ_>r@5tQM1Rtkx!eHPh}$N?E>oGI zCAG&*L{mMNU|CUg!;x{sRHL{>1yMH9jEF&W!J#^8QHL{0+QBtpK2u90*b@TOONt2L zO5t=5jJu2*BGdr}$z=lWo-G8|d6p&Qq-h;-U{KJ7)l&FkDTbw!RwZJXq}cYFOhXF> zQt{AhmT9<*2yWoRS^NkDFvdOYZ9VOeU6Y@ueErtoK_4*b;#}bh-v<_Lfe=&m1f~{_ zF=m$)7n@X5%@}oAnQ%(q*+Z4w{%?D)zt5&XAT4p;$Qr)H$;59aeuq1L*AAf`CM(Er zRl=;bQolK6sZEeg5W+fP#EBag!G6#~4KQ_BW4I+aVxADLNS07C6*bRsh{Z6kh(Z-8 zl^UZ?!Z(+f4X7fPFE#`Qnu3XMh>9C@(%cBlHD*Bga5*Ab6F5OV2lPpqk}7X*D9M+A z(HazJRwjbZg{ad^Ba{*ZWvw{*TLCWlP}5g|5QSSPWL*p0N!HW-HV8EotG1mo-q)Jw zq08Xk|9mM22J2DJv@=MaLGpnjxzyNSf>vA2s%hx>!s7rAG74=&#IOvOP@tPunn;4e zWtAHY;cAB681+mY+7xgvoRKnIlm-TyGhlFa!Qf(#mw|)~Bn%W1vUUxjxvK;xGJ@-f zsxe$)+krqi4^D@{)!{_N)f~fSZjvh4RVJV8BPxVwvd!QvN3z!_!Tz5!4Vp1D^SzH&z=9?xOaorHHnnU4=rS)?kSh;vfI6SW|5J-5ArSfd@ zJE)Y_Ngh|Ajq3VG`z#!)LKk4XQTCr1Q~NspBsl}989>bd>hJ*SXP4aVnS<}~OlI)J zwW;eGO@0PDEVbha=|w$&$AV>$#j4|gXIGPiiz%dG!X|z$s*V;b1ej{@v8xfwec(sN z;H`$f_}pupkSXKbhSG}MhG{daavNsOsDyuW;ars4P*Rb84G&mvF84B8l@C&@=_OZ0 ztG+UoG>Kq*3HLxrWuQXWdu@i}**K_)sfu6EpkWQld<|HP^Z_p#@j)vM>tLkXOrfD> zF|n;~CIN+S;q}5+H5keh_a0l6pV|SNt13OmRLuk3?zgd!v!B zm3H9`0$<;BEVHe88roDZMxC%>tBmKNjFE@E5iwOOr6RLB+h&DqIm zcp`JeaG87UynW1U_zq^nH?{pfv{0bbb`=A#T2~CHeNol0QUUQdh4X%|=^y|ARcRM8 literal 1640 zcmV-u2ABCkRzViy?;Reqzv@h(B&g$Z5vn;m zqhrsKqKD=zd;Qm4bowGmP+x*ey}u)BUeqp(jko{Y@l)YBNl<5vMyOQ_z4(VcYWb9V zFLus-|JY7RP`?_3&)wNeG?Bd$$!FFcwZ(uyStaN$FilP(uX>{r2>5#` z6s{u87`}%*T0K{7PR)46%@)cNSaTiDl2~JAjK)I=Vi-*92oo*Au=pOvq?K}_2OF49 zaB&3JCtNOA>a4}g;Oh{(nb^HGlURR>$r?*0Ra2KSykHsBj1ykVY%XKVW)=ahiGx*} zV4JLUsqJZzASRY$wwfd@%w8j7>VQa&Im7Z~-yAu^EyW}HlfK;X3~*@DG6;6K%BdD; zkDG|5x(>mzqUh9?am-NTxJ3m~7SU*o5?yepj+@N(m;`osnsA?~sS)f70qPY+L~x~W zx(mi##SJlL1B2k0fV*o6!F8@_3ON~C$81;>cHp!W@30hV>ZDbPQG=9NZj(W^a3~!Q zy>=PY;Y4r)AI|a~p%BKnr@gJG{fQg$`HZjMIy~qHY`VNxxWe~=$yy-9R6T{6i4&Y# z<5NY)fiG1mrt(x#-#n-dB65-?hW z0?o@s&^Zuwnn5FJK~UC8g3k(YnG7|3H3(5W3x%v3p*zWWw%-P!hGEsR(#HE*6FqVj z{QI9D<-lM)?iyAW$+Jj4P$ZWc`%BPjvspE$jxYTjz+ujyZHQ5m@{|JIw9-UU4Bl2d z;Rvqg*hw(g(4kEM_ret`$Hf_7ur&(?*B1;f_jp-I$U?$EAt7ha5SqJ6a3UwTj;I>P z6_ynW&GCZM=J0NNM8(l;YH=r^3U-yjFZ-AZAsVz9Uds{m8s*rulGt`lf6pLWkDWuX zBC2wyDdp)7sYeWE!6(rV-4m@?RzL62RZEseqx0)Rp_FTzs+T{0&y?0P*mVsWr>=iA zS@FOratXK_W&c-VdXnRBlCuz+h0rX74iAKWcE$P5T>PMGaOx$l#TkcMK*pkO;nNF z3V=+LQs-|%6|4E#uLV+>MQ7B-wu286bah00sfcP6XBAsyCAOHZcaUuTz diff --git a/tests/utils/snapshots.js b/tests/utils/snapshots.js index 3e7269adfd6..afc08d1b1b3 100644 --- a/tests/utils/snapshots.js +++ b/tests/utils/snapshots.js @@ -6,7 +6,6 @@ const normalizers = [ { pattern: /\\/gu, value: '/' }, { pattern: /\r\n/gu, value: '\n' }, { pattern: /❯/gu, value: '>' }, - { pattern: /%(.+?)%/gu, value: '$$$1' }, // normalize exit code from different OSes { pattern: /code \d+/, value: 'code *' }, // this is specific to npm v6 From ebea1c19f9bfcac027f2bb268d95dc15600f439d Mon Sep 17 00:00:00 2001 From: erezrokah Date: Tue, 17 Aug 2021 15:19:40 +0200 Subject: [PATCH 5/5] test: try to fix regex --- tests/utils/snapshots.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/utils/snapshots.js b/tests/utils/snapshots.js index afc08d1b1b3..900a2a66272 100644 --- a/tests/utils/snapshots.js +++ b/tests/utils/snapshots.js @@ -9,7 +9,7 @@ const normalizers = [ // normalize exit code from different OSes { pattern: /code \d+/, value: 'code *' }, // this is specific to npm v6 - { pattern: /@ (\w+?) .+\/.+netlify-cli-tests-v10.+/, value: '$1' }, + { pattern: /@ (\w+).+\/.+netlify-cli-tests-v10.+/, value: '$1' }, { pattern: /It should be one of.+/gm, value: 'It should be one of: *' }, ]