1'use strict'; 2 3// This tests the TypeScript compiler in the snapshot. 4 5require('../common'); 6 7const assert = require('assert'); 8const { spawnSync } = require('child_process'); 9const tmpdir = require('../common/tmpdir'); 10const fixtures = require('../common/fixtures'); 11const path = require('path'); 12const fs = require('fs'); 13 14tmpdir.refresh(); 15const blobPath = path.join(tmpdir.path, 'snapshot.blob'); 16 17// Concat test/fixtures/snapshot/typescript.js with 18// test/fixtures/snapshot/typescript.js into 19// tmpdir/snapshot.js. 20const file = path.join(tmpdir.path, 'snapshot.js'); 21fs.copyFileSync(fixtures.path('snapshot', 'typescript.js'), file); 22fs.appendFileSync(file, 23 fs.readFileSync(fixtures.path('snapshot', 'typescript-main.js'))); 24 25{ 26 const child = spawnSync(process.execPath, [ 27 '--snapshot-blob', 28 blobPath, 29 '--build-snapshot', 30 file, 31 ], { 32 cwd: tmpdir.path 33 }); 34 const stderr = child.stderr.toString(); 35 const stdout = child.stdout.toString(); 36 console.log(stderr); 37 console.log(stdout); 38 assert.strictEqual(child.status, 0); 39 40 const stats = fs.statSync(path.join(tmpdir.path, 'snapshot.blob')); 41 assert(stats.isFile()); 42} 43 44{ 45 const outPath = path.join(tmpdir.path, 'ts-example.js'); 46 const child = spawnSync(process.execPath, [ 47 '--snapshot-blob', 48 blobPath, 49 fixtures.path('snapshot', 'ts-example.ts'), 50 outPath, 51 ], { 52 cwd: tmpdir.path, 53 }); 54 const stderr = child.stderr.toString(); 55 const snapshotOutput = child.stdout.toString(); 56 console.log(stderr); 57 console.log(snapshotOutput); 58 59 assert.strictEqual(child.status, 0); 60 const result = fs.readFileSync(outPath, 'utf8'); 61 const expected = fs.readFileSync( 62 fixtures.path('snapshot', 'ts-example.js'), 'utf8'); 63 assert.strictEqual(result, expected); 64} 65