| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- import { afterEach, beforeEach, describe, expect, it } from 'vitest';
- import { parseEnvLevels } from './env-var-parser';
- describe('parseEnvLevels', () => {
- const originalEnv = process.env;
- beforeEach(() => {
- // Reset env before each test
- process.env = { ...originalEnv };
- delete process.env.DEBUG;
- delete process.env.TRACE;
- delete process.env.INFO;
- delete process.env.WARN;
- delete process.env.ERROR;
- delete process.env.FATAL;
- });
- afterEach(() => {
- process.env = originalEnv;
- });
- it('returns empty object when no env vars are set', () => {
- const result = parseEnvLevels();
- expect(result).toEqual({});
- });
- it('parses a single namespace from DEBUG', () => {
- process.env.DEBUG = 'growi:service:page';
- const result = parseEnvLevels();
- expect(result).toEqual({ 'growi:service:page': 'debug' });
- });
- it('parses multiple comma-separated namespaces from DEBUG', () => {
- process.env.DEBUG = 'growi:routes:*,growi:service:page';
- const result = parseEnvLevels();
- expect(result).toEqual({
- 'growi:routes:*': 'debug',
- 'growi:service:page': 'debug',
- });
- });
- it('parses all six level env vars', () => {
- process.env.DEBUG = 'ns:debug';
- process.env.TRACE = 'ns:trace';
- process.env.INFO = 'ns:info';
- process.env.WARN = 'ns:warn';
- process.env.ERROR = 'ns:error';
- process.env.FATAL = 'ns:fatal';
- const result = parseEnvLevels();
- expect(result).toEqual({
- 'ns:debug': 'debug',
- 'ns:trace': 'trace',
- 'ns:info': 'info',
- 'ns:warn': 'warn',
- 'ns:error': 'error',
- 'ns:fatal': 'fatal',
- });
- });
- it('trims whitespace around namespace patterns', () => {
- process.env.DEBUG = ' growi:service , growi:routes ';
- const result = parseEnvLevels();
- expect(result).toEqual({
- 'growi:service': 'debug',
- 'growi:routes': 'debug',
- });
- });
- it('ignores empty entries from trailing/double commas', () => {
- process.env.DEBUG = 'growi:service,,growi:routes,';
- const result = parseEnvLevels();
- expect(result).toEqual({
- 'growi:service': 'debug',
- 'growi:routes': 'debug',
- });
- });
- it('uses the last value when the same namespace appears in multiple env vars', () => {
- process.env.DEBUG = 'growi:service';
- process.env.TRACE = 'growi:service';
- const result = parseEnvLevels();
- // TRACE is processed after DEBUG, so it wins
- expect(result['growi:service']).toBe('trace');
- });
- it('supports glob wildcard patterns', () => {
- process.env.DEBUG = 'growi:*';
- const result = parseEnvLevels();
- expect(result).toEqual({ 'growi:*': 'debug' });
- });
- });
|