blob: 139fa65a6364876c486e563c15e7f28b57c77974 [file]
/*---------------------------------------------------------
* Copyright (C) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------*/
import assert from 'assert';
import { GoVersion, substituteEnv } from '../../src/util';
import { toolExecutionEnvironment } from '../../src/goEnv';
import sinon = require('sinon');
import { getGoConfig } from '../../src/config';
suite('utils Tests', () => {
test('substituteEnv: default', () => {
// prepare test
const env = Object.assign({}, process.env);
process.env['test1'] = 'abcd';
process.env['test2'] = 'defg';
const actual = substituteEnv(' ${env:test1} \r\n ${env:test2}\r\n${env:test1}');
const expected = ' abcd \r\n defg\r\nabcd';
assert.equal(actual, expected);
// test completed
process.env = env;
});
test('build GoVersion', () => {
// [input, wantFormat, wantFormatIncludePrerelease, wantIsValid]
const testCases: [string, string, string, boolean][] = [
[
'go version devel go1.17-756fd56bbf Thu Apr 29 01:15:34 2021 +0000 darwin/amd64',
'devel 1.17-756fd56bbf',
'devel 1.17-756fd56bbf',
true
],
['go version go1.14 darwin/amd64', '1.14.0', '1.14', true],
['go version go1.14.1 linux/amd64', '1.14.1', '1.14.1', true],
['go version go1.15rc1 darwin/amd64', '1.15.0', '1.15rc1', true],
['go version go1.15.1rc2 windows/amd64', '1.15.1', '1.15.1rc2', true],
['go version go1.15.3-beta.1 darwin/amd64', '1.15.3', '1.15.3-beta.1', true],
['go version go1.15.3-beta.1.2.3 foobar/amd64', '1.15.3', '1.15.3-beta.1.2.3', true],
['go version go10.0.1 js/amd64', 'unknown', 'unknown', false],
['something wrong', 'unknown', 'unknown', false]
];
for (const [input, wantFormat, wantFormatIncludePrerelease, wantIsValid] of testCases) {
const go = new GoVersion('/path/to/go', input);
assert.equal(go.isValid(), wantIsValid, `GoVersion(${input}) = ${JSON.stringify(go)}`);
assert.equal(go.format(), wantFormat, `GoVersion(${input}) = ${JSON.stringify(go)}`);
assert.equal(go.format(true), wantFormatIncludePrerelease, `GoVersion(${input}) = ${JSON.stringify(go)}`);
}
});
});
suite('goEnv', () => {
const config = require('../../src/config');
const sandbox = sinon.createSandbox();
teardown(() => {
delete process.env.ENV_VAR_FOR_GO_ENV_TEST;
sandbox.restore();
});
test('toolExecutionEnvironment', () => {
const goConfig = Object.create(getGoConfig(), {
toolsEnvVars: {
value: {
FOOBAR: '${env:ENV_VAR_FOR_GO_ENV_TEST}/baz',
FOOBAR2: '${env:UNKNOWN_ENV_VAR}/foo'
}
}
});
sandbox.stub(config, 'getGoConfig').returns(goConfig);
process.env['ENV_VAR_FOR_GO_ENV_TEST'] = 'foobar';
const toolExecEnv = toolExecutionEnvironment(undefined, true);
assert.strictEqual(toolExecEnv.FOOBAR, 'foobar/baz');
assert.strictEqual(toolExecEnv.FOOBAR2, '/foo');
});
});