From 389b6d079923ee49ff02192a87c9d198f80c4437 Mon Sep 17 00:00:00 2001 From: Alessandro Bianco Date: Fri, 19 Nov 2021 18:41:01 +0100 Subject: [PATCH 1/2] Update ignore globs depending on compile configuration (fix #33) --- index.js | 4 ++-- test/snapshots/protocol-ava-3.2.js.md | 2 +- test/snapshots/protocol-ava-3.2.js.snap | Bin 756 -> 753 bytes 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index ad5983c..d160f33 100644 --- a/index.js +++ b/index.js @@ -115,7 +115,7 @@ export default function typescriptProvider({negotiateProtocol}) { return false; } - return rewritePaths.some(([from]) => filePath.startsWith(from)); + return rewritePaths.some(([to, from]) => filePath.startsWith(compile === 'tsc' ? from : to)); }, resolveTestFile(testfile) { @@ -142,7 +142,7 @@ export default function typescriptProvider({negotiateProtocol}) { ], ignoredByWatcherPatterns: [ ...ignoredByWatcherPatterns, - ...Object.values(relativeRewritePaths).map(to => `${to}**/*.js.map`), + ...Object.entries(relativeRewritePaths).map(([to, from]) => `${compile === 'tsc' ? from : to}**`), ], }; }, diff --git a/test/snapshots/protocol-ava-3.2.js.md b/test/snapshots/protocol-ava-3.2.js.md index 89878f9..b693d62 100644 --- a/test/snapshots/protocol-ava-3.2.js.md +++ b/test/snapshots/protocol-ava-3.2.js.md @@ -110,6 +110,6 @@ Generated by [AVA](https://avajs.dev). ], ignoredByWatcherPatterns: [ 'assets/**', - 'build/**/*.js.map', + 'src/**', ], } diff --git a/test/snapshots/protocol-ava-3.2.js.snap b/test/snapshots/protocol-ava-3.2.js.snap index df5d750c263db1c2bb8361d6bada36e5e552c2a5..2d4b337f287ad9f7d7b41050cf70b81ec09d2e11 100644 GIT binary patch literal 753 zcmVQ7ILxRUbEZ zo4alAc9)$^+8~083Vw|G?sxIYC*Sl#_~_jAE~zPfD5ZZO4J^CK%XIUA+=2T z8mT&DWQL5T9Dqf<{0=WA-_dB7hxA2Pa|n#kw(ziRa^Go78QR!r)ag3sG`3d5vhPR2 z#_eW3P^r&4Y!iIj+wLQkrr){#R&Pc14mW^@yz`&0G#;+5)YI@Hu8X+NLtJIi%A*u5 zP8QXHZt*TqWn*qoi%IJ89m{2A0^A$aHGJC$%bzhDgG;cmaeKNMttpCH-F zXJ;Q;x22RzwNaWI+okyGWU$vy5%%g4VAuOd``me|(Q~jy$OsOy{Bx2lzc{M`01fwV z^GsnrJuXbC!dILYFtly&pYr^zWkoO=a5*!>J8y8A~- z!ouUMjTACh?bG{sI`kgz**#-=!xU?oDNBcEO3`^xowXh`ZG)v;hMAL$`lp^E=cB-e zDb^xIY>^>tjiK{LxCIs#54^8$NYrC8PO7(XzJp^U=YlXs*YbBcqfsnN92JLLCFDIS zmO!Rj7&A7!mKzDV^!q;PoQR|{Jbci7#cY6Wb6<0uT>6Qczi|A`cNE4)8pg10em(iB zR;%S+`lxUl$J&5m^*_Z)C$l`2U0KhG%U}W@|DtW(LLnoh6i&{2p6}JeeX`zVPs}&l jA_;xZ%MY#$9z4MSxP@FkaO`Mi)ARlTlwC>IED!(yvnHiq z7=qt#lpl)-00000000B+mfdRW->FsOmef^sK+YU zfv?}V6*lJGTEc`}TBd=L4bh}+7K@Nsq2wyHkx?DmiMTAJ0;p7$GOA;=qN={l11mr> z4Uw|&X*Wb$_WDQJnQ+n%Ssl*YXJ;L9#UaEYl~nl} zDLZ6rj!YyRfHisX9bQV_)##Up^hHl|2#nA+kFaI3*l9x)ghAkb7fLT83B<~(hGXE)Iy{z-8bBYh=-i03Sent}A{i76N z9&y@63Yn=6=zTmLdXM+~o-w^q%C)GJmBT9~?>wkZTMwGFz)~*5G)PAMQ!kP8alu9@ z*Sth*ULh@wsq;r@0!zyW-q$z8^qEYO@-3Y2;MmHzAdK;i>|IW2d5?+( zkeLSNj18~lMnWe2zE8R!no=1aKIpw-Ho&%dpgBn{{Y1@QIR0i9x%07_F|3yzPqwO5 zDp{01D%{4gF{D`jPjT8wJBVZ*uX^D=S^u!77V9k$ mhkmu1ZCo1Oc!~jV3z>Xq+quFL_ud9CVfr6`iB?@V5C8yMZFbQB From 6a5ee9b3029f57780be0db83aa98de2eb2df1f56 Mon Sep 17 00:00:00 2001 From: Alessandro Bianco Date: Mon, 29 Nov 2021 08:45:59 +0100 Subject: [PATCH 2/2] Add tests and small refactor with review suggestions --- index.js | 9 ++++++--- test/protocol-ava-3.2.js | 18 ++++++++++++++++-- test/snapshots/protocol-ava-3.2.js.md | 20 +++++++++++++++++++- test/snapshots/protocol-ava-3.2.js.snap | Bin 753 -> 796 bytes 4 files changed, 41 insertions(+), 6 deletions(-) diff --git a/index.js b/index.js index d160f33..f323888 100644 --- a/index.js +++ b/index.js @@ -88,6 +88,8 @@ export default function typescriptProvider({negotiateProtocol}) { compile, } = config; + const compilerEnabled = compile === 'tsc'; + const rewritePaths = Object.entries(relativeRewritePaths).map(([from, to]) => [ path.join(protocol.projectDir, from), path.join(protocol.projectDir, to), @@ -96,7 +98,7 @@ export default function typescriptProvider({negotiateProtocol}) { return { async compile() { - if (compile === 'tsc') { + if (compilerEnabled) { await compileTypeScript(protocol.projectDir); } @@ -115,7 +117,7 @@ export default function typescriptProvider({negotiateProtocol}) { return false; } - return rewritePaths.some(([to, from]) => filePath.startsWith(compile === 'tsc' ? from : to)); + return rewritePaths.some(([from, to]) => filePath.startsWith(compilerEnabled ? to : from)); }, resolveTestFile(testfile) { @@ -142,7 +144,8 @@ export default function typescriptProvider({negotiateProtocol}) { ], ignoredByWatcherPatterns: [ ...ignoredByWatcherPatterns, - ...Object.entries(relativeRewritePaths).map(([to, from]) => `${compile === 'tsc' ? from : to}**`), + ...Object.values(relativeRewritePaths).map(to => `${to}**/*.js.map`), + ...Object.entries(relativeRewritePaths).map(([from, to]) => `${compilerEnabled ? to : from}**`), ], }; }, diff --git a/test/protocol-ava-3.2.js b/test/protocol-ava-3.2.js index 83d53cb..932b6e1 100644 --- a/test/protocol-ava-3.2.js +++ b/test/protocol-ava-3.2.js @@ -67,12 +67,18 @@ test('main() extensions: always returns new arrays', withProvider, (t, provider) t.not(main.extensions, main.extensions); }); -test('main() ignoreChange()', withProvider, (t, provider) => { +test('main() ignoreChange() without compilation', withProvider, (t, provider) => { const main = provider.main({config: {rewritePaths: {'src/': 'build/'}, compile: false}}); t.true(main.ignoreChange(path.join(__dirname, 'src/foo.ts'))); t.false(main.ignoreChange(path.join(__dirname, 'build/foo.js'))); }); +test('main() ignoreChange() with compilation', withProvider, (t, provider) => { + const main = provider.main({config: {rewritePaths: {'src/': 'build/'}, compile: 'tsc'}}); + t.false(main.ignoreChange(path.join(__dirname, 'src/foo.ts'))); + t.false(main.ignoreChange(path.join(__dirname, 'build/foo.js'))); +}); + test('main() resolveTestfile()', withProvider, (t, provider) => { const main = provider.main({config: {rewritePaths: {'src/': 'build/'}, compile: false}}); t.is(main.resolveTestFile(path.join(__dirname, 'src/foo.ts')), path.join(__dirname, 'build/foo.js')); @@ -80,10 +86,18 @@ test('main() resolveTestfile()', withProvider, (t, provider) => { t.is(main.resolveTestFile(path.join(__dirname, 'foo/bar.ts')), path.join(__dirname, 'foo/bar.ts')); }); -test('main() updateGlobs()', withProvider, (t, provider) => { +test('main() updateGlobs() without compilation', withProvider, (t, provider) => { const main = provider.main({config: {rewritePaths: {'src/': 'build/'}, compile: false}}); t.snapshot(main.updateGlobs({ filePatterns: ['src/test.ts'], ignoredByWatcherPatterns: ['assets/**'], })); }); + +test('main() updateGlobs() with compilation', withProvider, (t, provider) => { + const main = provider.main({config: {rewritePaths: {'src/': 'build/'}, compile: 'tsc'}}); + t.snapshot(main.updateGlobs({ + filePatterns: ['src/test.ts'], + ignoredByWatcherPatterns: ['assets/**'], + })); +}); diff --git a/test/snapshots/protocol-ava-3.2.js.md b/test/snapshots/protocol-ava-3.2.js.md index b693d62..9eb75fa 100644 --- a/test/snapshots/protocol-ava-3.2.js.md +++ b/test/snapshots/protocol-ava-3.2.js.md @@ -98,7 +98,7 @@ Generated by [AVA](https://avajs.dev). message: 'Missing \'compile\' property in TypeScript configuration for AVA. See https://github.com/avajs/typescript/blob/v${pkg.version}/README.md', } -## main() updateGlobs() +## main() updateGlobs() without compilation > Snapshot 1 @@ -110,6 +110,24 @@ Generated by [AVA](https://avajs.dev). ], ignoredByWatcherPatterns: [ 'assets/**', + 'build/**/*.js.map', 'src/**', ], } + +## main() updateGlobs() with compilation + +> Snapshot 1 + + { + filePatterns: [ + 'src/test.ts', + '!**/*.d.ts', + '!build/**', + ], + ignoredByWatcherPatterns: [ + 'assets/**', + 'build/**/*.js.map', + 'build/**', + ], + } diff --git a/test/snapshots/protocol-ava-3.2.js.snap b/test/snapshots/protocol-ava-3.2.js.snap index 2d4b337f287ad9f7d7b41050cf70b81ec09d2e11..a23ecca7c7f20efa23726725f88a183b82b5804a 100644 GIT binary patch literal 796 zcmV+%1LOQbRzV-4<~ZcipH{U>>{`}dmf?i zKIG$uPalg200000000B+mQQOFK@`Au68qO`TI!+4DJWZm?t&hw6@`dJRElD?>T$9= zNhaN$8Rkur1`$-$g9q^|)VtrsvnN46h6mqncaz#$q?G=FB=FeTyf-uN{ob3|w^^%3 zDp-e)U$_-E;v1Ei3Au2Q21?dMowivdLS}`MOVl=u>d;Pu%UmmfN@XddI>K30RhvAp z0wmMWP!`^8hB%i!|5kLyoa9I5NMRA5H&JFuVTOz>8>7rD8O?`;%ul#RWDGn&)TdBzU@u-kxJEXpMR;>>t351z(rp9kC!WVR+hau9L6<_>mhcZCWwHghm#Axa#|XM$n;;oawUOhtCEBk=$^^x|u^H`(jV2zM<*v<0SVY2+-tOx+y zxS!2qh56v1Fr|{0hbR-2_YaCPZ0Se@%<@4ed1G&q*p|ldSjuIXILWAg#A1bLgHfTz^+U81^LtiHBO3G@OceoEro@IMjxh^ zb%H1x=8OssIZMcEG|VYY)er=B!Im2dsrKtO?VPAfWq5eI`;6HDd+EOAI63tlEq|c= zMwuho<|7qjSU1gCIx3Y)sqs}bxQ?=l(%xZQ{L6UKNp_z~a@lj_G?>80Z@2XY+1?3cZ8o32*{6Z6%Uh(fQ7ILxRUbEZ zo4alAc9)$^+8~083Vw|G?sxIYC*Sl#_~_jAE~zPfD5ZZO4J^CK%XIUA+=2T z8mT&DWQL5T9Dqf<{0=WA-_dB7hxA2Pa|n#kw(ziRa^Go78QR!r)ag3sG`3d5vhPR2 z#_eW3P^r&4Y!iIj+wLQkrr){#R&Pc14mW^@yz`&0G#;+5)YI@Hu8X+NLtJIi%A*u5 zP8QXHZt*TqWn*qoi%IJ89m{2A0^A$aHGJC$%bzhDgG;cmaeKNMttpCH-F zXJ;Q;x22RzwNaWI+okyGWU$vy5%%g4VAuOd``me|(Q~jy$OsOy{Bx2lzc{M`01fwV z^GsnrJuXbC!dILYFtly&pYr^zWkoO=a5*!>J8y8A~- z!ouUMjTACh?bG{sI`kgz**#-=!xU?oDNBcEO3`^xowXh`ZG)v;hMAL$`lp^E=cB-e zDb^xIY>^>tjiK{LxCIs#54^8$NYrC8PO7(XzJp^U=YlXs*YbBcqfsnN92JLLCFDIS zmO!Rj7&A7!mKzDV^!q;PoQR|{Jbci7#cY6Wb6<0uT>6Qczi|A`cNE4)8pg10em(iB zR;%S+`lxUl$J&5m^*_Z)C$l`2U0KhG%U}W@|DtW(LLnoh6i&{2p6}JeeX`zVPs}&l jA_;xZ%MY#$9z4MSxP@FkaO`Mi)ARlTlwC>IED!(yv