make tests clearer

This commit is contained in:
Robert Brignull 2020-08-25 11:09:07 +01:00
parent 407ef0ac11
commit 82fb31ed5e
9 changed files with 84 additions and 76 deletions

View file

@ -32,7 +32,7 @@ function getTestConfig(tmpDir) {
};
}
// A very minimal setup
ava_1.default('tracerConfig - minimal', async (t) => {
ava_1.default('getTracerConfigForLanguage - minimal setup', async (t) => {
await util.withTmpDir(async (tmpDir) => {
const config = getTestConfig(tmpDir);
const codeQL = codeql_1.setCodeQL({
@ -43,14 +43,24 @@ ava_1.default('tracerConfig - minimal', async (t) => {
};
},
});
const result = await tracer_config_1.tracerConfig(codeQL, config, languages_1.Language.javascript);
const result = await tracer_config_1.getTracerConfigForLanguage(codeQL, config, languages_1.Language.javascript);
t.deepEqual(result, { spec: 'abc', env: { 'foo': 'bar' } });
});
});
// Existing vars should not be overwritten, unless they are critical or prefixed with CODEQL_
ava_1.default('tracerConfig - existing / critical vars', async (t) => {
ava_1.default('getTracerConfigForLanguage - existing / critical vars', async (t) => {
await util.withTmpDir(async (tmpDir) => {
const config = getTestConfig(tmpDir);
// Set up some variables in the environment
process.env['foo'] = 'abc';
process.env['SEMMLE_PRELOAD_libtrace'] = 'abc';
process.env['SEMMLE_RUNNER'] = 'abc';
process.env['SEMMLE_COPY_EXECUTABLES_ROOT'] = 'abc';
process.env['SEMMLE_DEPTRACE_SOCKET'] = 'abc';
process.env['SEMMLE_JAVA_TOOL_OPTIONS'] = 'abc';
process.env['SEMMLE_DEPTRACE_SOCKET'] = 'abc';
process.env['CODEQL_VAR'] = 'abc';
// Now CodeQL returns all these variables, and one more, with different values
const codeQL = codeql_1.setCodeQL({
getTracerEnv: async function () {
return {
@ -66,18 +76,12 @@ ava_1.default('tracerConfig - existing / critical vars', async (t) => {
};
},
});
process.env['foo'] = 'abc';
process.env['SEMMLE_PRELOAD_libtrace'] = 'abc';
process.env['SEMMLE_RUNNER'] = 'abc';
process.env['SEMMLE_COPY_EXECUTABLES_ROOT'] = 'abc';
process.env['SEMMLE_DEPTRACE_SOCKET'] = 'abc';
process.env['SEMMLE_JAVA_TOOL_OPTIONS'] = 'abc';
process.env['SEMMLE_DEPTRACE_SOCKET'] = 'abc';
process.env['CODEQL_VAR'] = 'abc';
const result = await tracer_config_1.tracerConfig(codeQL, config, languages_1.Language.javascript);
const result = await tracer_config_1.getTracerConfigForLanguage(codeQL, config, languages_1.Language.javascript);
t.deepEqual(result, {
spec: 'abc',
env: {
// Should contain all variables except 'foo', because that already existed in the
// environment with a different value, and is not deemed a "critical" variable.
'baz': 'qux',
'SEMMLE_PRELOAD_libtrace': 'SEMMLE_PRELOAD_libtrace',
'SEMMLE_RUNNER': 'SEMMLE_RUNNER',
@ -89,7 +93,7 @@ ava_1.default('tracerConfig - existing / critical vars', async (t) => {
});
});
});
ava_1.default('concatTracerConfigs - minimal', async (t) => {
ava_1.default('concatTracerConfigs - minimal configs correctly combined', async (t) => {
await util.withTmpDir(async (tmpDir) => {
const config = getTestConfig(tmpDir);
const spec1 = path.join(tmpDir, 'spec1');
@ -144,8 +148,7 @@ ava_1.default('concatTracerConfigs - conflicting env vars', async (t) => {
t.deepEqual(e.message, 'Incompatible values in environment parameter b: b and c');
});
});
// If cpp is present then it's spec lines always come at the end
ava_1.default('concatTracerConfigs - cpp comes last', async (t) => {
ava_1.default('concatTracerConfigs - cpp spec lines come last if present', async (t) => {
await util.withTmpDir(async (tmpDir) => {
const config = getTestConfig(tmpDir);
const spec1 = path.join(tmpDir, 'spec1');
@ -178,7 +181,7 @@ ava_1.default('concatTracerConfigs - cpp comes last', async (t) => {
t.deepEqual(fs.readFileSync(result.spec, 'utf8'), path.join(tmpDir, 'compound-build-tracer.log') + '\n3\nghi\nabc\ndef');
});
});
ava_1.default('concatTracerConfigs - SEMMLE_COPY_EXECUTABLES_ROOT', async (t) => {
ava_1.default('concatTracerConfigs - SEMMLE_COPY_EXECUTABLES_ROOT is updated to point to compound spec', async (t) => {
await util.withTmpDir(async (tmpDir) => {
const config = getTestConfig(tmpDir);
const spec = path.join(tmpDir, 'spec');
@ -194,7 +197,7 @@ ava_1.default('concatTracerConfigs - SEMMLE_COPY_EXECUTABLES_ROOT', async (t) =>
});
});
});
ava_1.default('concatTracerConfigs - compound environment file', async (t) => {
ava_1.default('concatTracerConfigs - compound environment file is created correctly', async (t) => {
await util.withTmpDir(async (tmpDir) => {
const config = getTestConfig(tmpDir);
const spec1 = path.join(tmpDir, 'spec1');
@ -217,15 +220,16 @@ ava_1.default('concatTracerConfigs - compound environment file', async (t) => {
const envPath = result.spec + '.environment';
t.true(fs.existsSync(envPath));
const buffer = fs.readFileSync(envPath);
t.deepEqual(28, buffer.length);
t.deepEqual(2, buffer.readInt32LE(0));
t.deepEqual(4, buffer.readInt32LE(4));
t.deepEqual('a=a\0', buffer.toString('utf8', 8, 12));
t.deepEqual(12, buffer.readInt32LE(12));
t.deepEqual('foo=bar_baz\0', buffer.toString('utf8', 16, 28));
// Contents is binary data
t.deepEqual(buffer.length, 28);
t.deepEqual(buffer.readInt32LE(0), 2); // number of env vars
t.deepEqual(buffer.readInt32LE(4), 4); // length of env var definition
t.deepEqual(buffer.toString('utf8', 8, 12), 'a=a\0'); // [key]=[value]\0
t.deepEqual(buffer.readInt32LE(12), 12); // length of env var definition
t.deepEqual(buffer.toString('utf8', 16, 28), 'foo=bar_baz\0'); // [key]=[value]\0
});
});
ava_1.default('getTracerConfig - no traced languages', async (t) => {
ava_1.default('getCombinedTracerConfig - return undefined when no languages are traced languages', async (t) => {
await util.withTmpDir(async (tmpDir) => {
const config = getTestConfig(tmpDir);
// No traced languages
@ -238,10 +242,10 @@ ava_1.default('getTracerConfig - no traced languages', async (t) => {
};
},
});
t.deepEqual(undefined, await tracer_config_1.getTracerConfig(config, codeQL));
t.deepEqual(await tracer_config_1.getCombinedTracerConfig(config, codeQL), undefined);
});
});
ava_1.default('getTracerConfig - full', async (t) => {
ava_1.default('getCombinedTracerConfig - valid spec file', async (t) => {
await util.withTmpDir(async (tmpDir) => {
const config = getTestConfig(tmpDir);
const spec = path.join(tmpDir, 'spec');
@ -254,7 +258,7 @@ ava_1.default('getTracerConfig - full', async (t) => {
};
},
});
const result = await tracer_config_1.getTracerConfig(config, codeQL);
const result = await tracer_config_1.getCombinedTracerConfig(config, codeQL);
t.deepEqual(result, {
spec: path.join(tmpDir, 'compound-spec'),
env: {