()
| 14 | } |
| 15 | |
| 16 | export const createTestingSystem = (): TestingSystem => { |
| 17 | let diskReads = 0; |
| 18 | let diskWrites = 0; |
| 19 | const sys = createSystem(); |
| 20 | |
| 21 | sys.platformPath = path; |
| 22 | |
| 23 | sys.generateContentHash = (content, length) => { |
| 24 | let hash = createHash('sha1').update(content).digest('hex').toLowerCase(); |
| 25 | |
| 26 | if (typeof length === 'number') { |
| 27 | hash = hash.slice(0, length); |
| 28 | } |
| 29 | return Promise.resolve(hash); |
| 30 | }; |
| 31 | |
| 32 | const wrapRead = (fn: any) => { |
| 33 | const orgFn = fn; |
| 34 | return (...args: any[]) => { |
| 35 | diskReads++; |
| 36 | return orgFn.apply(orgFn, args); |
| 37 | }; |
| 38 | }; |
| 39 | |
| 40 | const wrapWrite = (fn: any) => { |
| 41 | const orgFn = fn; |
| 42 | return (...args: any[]) => { |
| 43 | diskWrites++; |
| 44 | return orgFn.apply(orgFn, args); |
| 45 | }; |
| 46 | }; |
| 47 | |
| 48 | sys.access = wrapRead(sys.access); |
| 49 | sys.accessSync = wrapRead(sys.accessSync); |
| 50 | sys.homeDir = wrapRead(sys.homeDir); |
| 51 | sys.readFile = wrapRead(sys.readFile); |
| 52 | sys.readFileSync = wrapRead(sys.readFileSync); |
| 53 | sys.readDir = wrapRead(sys.readDir); |
| 54 | sys.readDirSync = wrapRead(sys.readDirSync); |
| 55 | sys.stat = wrapRead(sys.stat); |
| 56 | sys.statSync = wrapRead(sys.statSync); |
| 57 | |
| 58 | sys.copyFile = wrapWrite(sys.copyFile); |
| 59 | sys.createDir = wrapWrite(sys.createDir); |
| 60 | sys.createDirSync = wrapWrite(sys.createDirSync); |
| 61 | sys.removeFile = wrapWrite(sys.removeFile); |
| 62 | sys.removeFileSync = wrapWrite(sys.removeFileSync); |
| 63 | sys.writeFile = wrapWrite(sys.writeFile); |
| 64 | sys.writeFileSync = wrapWrite(sys.writeFileSync); |
| 65 | |
| 66 | sys.getCompilerExecutingPath = () => 'bin/stencil.js'; |
| 67 | |
| 68 | Object.defineProperties(sys, { |
| 69 | diskReads: { |
| 70 | get() { |
| 71 | return diskReads; |
| 72 | }, |
| 73 | set(val: number) { |
no test coverage detected