171 lines
4.3 KiB
TypeScript
171 lines
4.3 KiB
TypeScript
import { beforeEach, describe, expect, test } from "bun:test";
|
|
|
|
import { detectOS, isCI, isSystemRussian } from "../../src/utils/config";
|
|
|
|
const SAVED_ENV = { ...process.env };
|
|
|
|
beforeEach(() => {
|
|
process.env = { ...SAVED_ENV };
|
|
});
|
|
|
|
describe("detectOS", () => {
|
|
test("returns OSX for darwin", () => {
|
|
expect(detectOS("darwin")).toBe("OSX");
|
|
});
|
|
|
|
test("returns WIN for win32", () => {
|
|
expect(detectOS("win32")).toBe("WIN");
|
|
});
|
|
|
|
test("returns WIN for cygwin", () => {
|
|
expect(detectOS("cygwin")).toBe("WIN");
|
|
});
|
|
|
|
test("returns LINUX for linux", () => {
|
|
expect(detectOS("linux")).toBe("LINUX");
|
|
});
|
|
|
|
test("returns UNKNOWN for unsupported platforms", () => {
|
|
expect(detectOS("freebsd")).toBe("UNKNOWN");
|
|
});
|
|
|
|
test("is case-insensitive", () => {
|
|
expect(detectOS("Darwin")).toBe("OSX");
|
|
expect(detectOS("LINUX")).toBe("LINUX");
|
|
});
|
|
|
|
test("uses process.platform when no argument provided", () => {
|
|
const result = detectOS();
|
|
expect(["OSX", "WIN", "LINUX", "UNKNOWN"]).toContain(result);
|
|
});
|
|
});
|
|
|
|
describe("isSystemRussian", () => {
|
|
test("returns false in English locale", () => {
|
|
process.env.LANG = "en_US.UTF-8";
|
|
process.env.LC_ALL = "";
|
|
process.env.LC_MESSAGES = "";
|
|
process.env.LANGUAGE = "";
|
|
expect(isSystemRussian()).toBe(false);
|
|
});
|
|
|
|
test("returns true when LC_ALL is Russian", () => {
|
|
process.env.LC_ALL = "ru_RU.UTF-8";
|
|
process.env.LANG = "";
|
|
expect(isSystemRussian()).toBe(true);
|
|
});
|
|
|
|
test("returns true when LANG is Russian", () => {
|
|
process.env.LC_ALL = "";
|
|
process.env.LC_MESSAGES = "";
|
|
process.env.LANGUAGE = "";
|
|
process.env.LANG = "ru_RU.UTF-8";
|
|
expect(isSystemRussian()).toBe(true);
|
|
});
|
|
|
|
test("returns true when LANGUAGE is Russian", () => {
|
|
process.env.LC_ALL = "";
|
|
process.env.LANG = "";
|
|
process.env.LANGUAGE = "ru";
|
|
expect(isSystemRussian()).toBe(true);
|
|
});
|
|
|
|
test("returns true when LC_MESSAGES is Russian", () => {
|
|
process.env.LC_ALL = "";
|
|
process.env.LANG = "";
|
|
process.env.LC_MESSAGES = "ru";
|
|
expect(isSystemRussian()).toBe(true);
|
|
});
|
|
|
|
test("returns false when no locale vars set", () => {
|
|
delete process.env.LC_ALL;
|
|
delete process.env.LANG;
|
|
delete process.env.LC_MESSAGES;
|
|
delete process.env.LANGUAGE;
|
|
expect(isSystemRussian()).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe("isCI", () => {
|
|
test("returns false when no CI vars set", () => {
|
|
delete process.env.CI;
|
|
delete process.env.GITHUB_ACTIONS;
|
|
expect(isCI()).toBe(false);
|
|
});
|
|
|
|
test("returns true when CI=true", () => {
|
|
process.env.CI = "true";
|
|
expect(isCI()).toBe(true);
|
|
});
|
|
|
|
test("returns true when CI=1", () => {
|
|
process.env.CI = "1";
|
|
expect(isCI()).toBe(true);
|
|
});
|
|
|
|
test("returns true for GITHUB_ACTIONS", () => {
|
|
process.env.GITHUB_ACTIONS = "true";
|
|
expect(isCI()).toBe(true);
|
|
});
|
|
|
|
test("returns true for GITLAB_CI", () => {
|
|
process.env.GITLAB_CI = "true";
|
|
expect(isCI()).toBe(true);
|
|
});
|
|
|
|
test("returns true for TRAVIS", () => {
|
|
process.env.TRAVIS = "true";
|
|
expect(isCI()).toBe(true);
|
|
});
|
|
|
|
test("returns true for CIRCLECI", () => {
|
|
process.env.CIRCLECI = "true";
|
|
expect(isCI()).toBe(true);
|
|
});
|
|
|
|
test("returns true for JENKINS_URL", () => {
|
|
process.env.JENKINS_URL = "http://jenkins.local";
|
|
expect(isCI()).toBe(true);
|
|
});
|
|
|
|
test("returns true for BUILD_BUILDURI (Azure)", () => {
|
|
process.env.BUILD_BUILDURI = "vstfs:///Build/Build/123";
|
|
expect(isCI()).toBe(true);
|
|
});
|
|
|
|
test("returns true for CODEBUILD_BUILD_ID", () => {
|
|
process.env.CODEBUILD_BUILD_ID = "project:123";
|
|
expect(isCI()).toBe(true);
|
|
});
|
|
|
|
test("returns true for BUILDKITE", () => {
|
|
process.env.BUILDKITE = "true";
|
|
expect(isCI()).toBe(true);
|
|
});
|
|
|
|
test("returns true for BITBUCKET_BUILD_NUMBER", () => {
|
|
process.env.BITBUCKET_BUILD_NUMBER = "123";
|
|
expect(isCI()).toBe(true);
|
|
});
|
|
|
|
test("returns true for NETLIFY", () => {
|
|
process.env.NETLIFY = "true";
|
|
expect(isCI()).toBe(true);
|
|
});
|
|
|
|
test("returns true for VERCEL", () => {
|
|
process.env.VERCEL = "1";
|
|
expect(isCI()).toBe(true);
|
|
});
|
|
|
|
test("returns true for CIRRUS_CI", () => {
|
|
process.env.CIRRUS_CI = "true";
|
|
expect(isCI()).toBe(true);
|
|
});
|
|
|
|
test("returns true for CF_PAGES", () => {
|
|
process.env.CF_PAGES = "1";
|
|
expect(isCI()).toBe(true);
|
|
});
|
|
});
|