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