Skip to main content
Glama
config.test.ts3.75 kB
import { afterEach, beforeEach, describe, expect, test } from 'bun:test'; import { requireTiltHost, requireTiltPort, resolveTiltTarget, } from '../../src/tilt/config.js'; describe('Tilt Config', () => { const originalPort = process.env.TILT_PORT; const originalHost = process.env.TILT_HOST; beforeEach(() => { delete process.env.TILT_PORT; delete process.env.TILT_HOST; }); afterEach(() => { if (originalPort !== undefined) { process.env.TILT_PORT = originalPort; } else { delete process.env.TILT_PORT; } if (originalHost !== undefined) { process.env.TILT_HOST = originalHost; } else { delete process.env.TILT_HOST; } }); describe('requireTiltPort()', () => { test('throws when no override or environment variable is provided', () => { expect(() => requireTiltPort()).toThrow(/TILT_PORT is not set/); }); test('returns validated override when provided', () => { expect(requireTiltPort(17350)).toBe(17350); }); test('throws when override is out of range', () => { expect(() => requireTiltPort(0)).toThrow(/Invalid Tilt port/); expect(() => requireTiltPort(70000)).toThrow(/Invalid Tilt port/); }); test('parses and validates TILT_PORT from environment', () => { process.env.TILT_PORT = '17350'; expect(requireTiltPort()).toBe(17350); }); test('trims whitespace when reading TILT_PORT', () => { process.env.TILT_PORT = ' 17350 '; expect(requireTiltPort()).toBe(17350); }); test('rejects non-numeric or empty TILT_PORT values', () => { process.env.TILT_PORT = ''; expect(() => requireTiltPort()).toThrow(/TILT_PORT is empty/); process.env.TILT_PORT = '10350abc'; expect(() => requireTiltPort()).toThrow(/must be an integer/); process.env.TILT_PORT = '10350.5'; expect(() => requireTiltPort()).toThrow(/must be an integer/); process.env.TILT_PORT = '70000'; expect(() => requireTiltPort()).toThrow(/Invalid Tilt port/); }); }); describe('requireTiltHost()', () => { test('returns localhost when no override or environment variable is provided', () => { expect(requireTiltHost()).toBe('localhost'); }); test('returns validated override when provided', () => { expect(requireTiltHost('192.168.1.100')).toBe('192.168.1.100'); }); test('throws when override is empty', () => { expect(() => requireTiltHost(' ')).toThrow(/Tilt host is empty/); }); test('reads and trims TILT_HOST from environment', () => { process.env.TILT_HOST = ' tilt.local '; expect(requireTiltHost()).toBe('tilt.local'); }); test('returns localhost when TILT_HOST is missing or empty', () => { expect(requireTiltHost()).toBe('localhost'); process.env.TILT_HOST = ' '; expect(requireTiltHost()).toBe('localhost'); }); }); describe('resolveTiltTarget()', () => { test('combines host and port overrides', () => { const target = resolveTiltTarget({ port: 30000, host: 'example.com' }); expect(target).toEqual({ port: 30000, host: 'example.com' }); }); test('reads from environment when overrides are omitted', () => { process.env.TILT_PORT = '15000'; process.env.TILT_HOST = 'localhost'; const target = resolveTiltTarget(); expect(target).toEqual({ port: 15000, host: 'localhost' }); }); test('throws when TILT_PORT is missing, defaults host to localhost', () => { expect(() => resolveTiltTarget()).toThrow(/TILT_PORT is not set/); process.env.TILT_PORT = '15000'; const target = resolveTiltTarget(); expect(target).toEqual({ port: 15000, host: 'localhost' }); }); }); });

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/0xBigBoss/tilt-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server