82 lines
2.7 KiB
TypeScript
82 lines
2.7 KiB
TypeScript
|
|
import { tap, expect } from '@git.zone/tstest/tapbundle';
|
|||
|
|
import * as smartenv from '../ts/index.js';
|
|||
|
|
|
|||
|
|
let testEnv: smartenv.Smartenv;
|
|||
|
|
|
|||
|
|
tap.test('should create smartenv instance', async () => {
|
|||
|
|
testEnv = new smartenv.Smartenv();
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
tap.test('should detect Bun runtime correctly', async () => {
|
|||
|
|
expect(testEnv.runtimeEnv).toEqual('bun');
|
|||
|
|
expect(testEnv.isBun).toBeTrue();
|
|||
|
|
expect(testEnv.isNode).toBeFalse();
|
|||
|
|
expect(testEnv.isDeno).toBeFalse();
|
|||
|
|
expect(testEnv.isBrowser).toBeFalse();
|
|||
|
|
console.log(' Bun runtime detected correctly');
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
tap.test('should get Bun version', async () => {
|
|||
|
|
const version = testEnv.bunVersion;
|
|||
|
|
expect(version).not.toEqual('undefined');
|
|||
|
|
expect(typeof version).toEqual('string');
|
|||
|
|
console.log('Bun version is ' + version);
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
tap.test('should print environment', async () => {
|
|||
|
|
testEnv.printEnv();
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
tap.test('should load modules for Bun', async () => {
|
|||
|
|
const pathModule = await testEnv.getSafeModuleFor('bun', 'path');
|
|||
|
|
expect(pathModule).not.toBeUndefined();
|
|||
|
|
expect(typeof pathModule.join).toEqual('function');
|
|||
|
|
console.log(' Successfully loaded module for Bun');
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
tap.test('should load modules for server runtimes', async () => {
|
|||
|
|
const pathModule = await testEnv.getSafeModuleFor('server', 'path');
|
|||
|
|
expect(pathModule).not.toBeUndefined();
|
|||
|
|
expect(typeof pathModule.join).toEqual('function');
|
|||
|
|
console.log(' Successfully loaded module with server target');
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
tap.test('should load modules for array of runtimes', async () => {
|
|||
|
|
const pathModule = await testEnv.getSafeModuleFor(['bun', 'node'], 'path');
|
|||
|
|
expect(pathModule).not.toBeUndefined();
|
|||
|
|
expect(typeof pathModule.join).toEqual('function');
|
|||
|
|
console.log(' Successfully loaded module with array target');
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
tap.test('should not load modules for wrong runtime', async () => {
|
|||
|
|
const result = await testEnv.getSafeModuleFor('node', 'path');
|
|||
|
|
expect(result).toBeUndefined();
|
|||
|
|
console.log(' Correctly rejected Node.js-only module in Bun');
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
tap.test('should detect OS', async () => {
|
|||
|
|
const resultMac = await testEnv.isMacAsync();
|
|||
|
|
const resultLinux = await testEnv.isLinuxAsync();
|
|||
|
|
const resultWindows = await testEnv.isWindowsAsync();
|
|||
|
|
const osModule = await import('os');
|
|||
|
|
if (resultMac) {
|
|||
|
|
expect(osModule.platform()).toEqual('darwin');
|
|||
|
|
console.log('platform is Mac!');
|
|||
|
|
} else if (resultLinux) {
|
|||
|
|
expect(osModule.platform()).toEqual('linux');
|
|||
|
|
console.log('platform is Linux!');
|
|||
|
|
} else {
|
|||
|
|
expect(osModule.platform()).toEqual('win32');
|
|||
|
|
console.log('platform is Windows!');
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
tap.test('should detect CI environment if present', async () => {
|
|||
|
|
if (process.env.CI) {
|
|||
|
|
expect(testEnv.isCI).toBeTrue();
|
|||
|
|
}
|
|||
|
|
console.log('CI detection: ' + testEnv.isCI);
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
tap.start();
|