mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-17 13:55:50 +00:00
113 lines
2.6 KiB
TypeScript
113 lines
2.6 KiB
TypeScript
import { afterEach, beforeEach, describe, expect, mock, test } from 'bun:test'
|
|
|
|
let ffiShouldThrow = false
|
|
let nativeFlags = 0
|
|
let dlopenCalls = 0
|
|
|
|
mock.module('bun:ffi', () => ({
|
|
FFIType: {
|
|
i32: 0,
|
|
u64: 0,
|
|
},
|
|
dlopen: () => {
|
|
dlopenCalls++
|
|
if (ffiShouldThrow) {
|
|
throw new Error('ffi load failed')
|
|
}
|
|
return {
|
|
symbols: {
|
|
CGEventSourceFlagsState: () => nativeFlags,
|
|
},
|
|
}
|
|
},
|
|
}))
|
|
|
|
const originalPlatform = process.platform
|
|
|
|
async function loadModule() {
|
|
return import(`../index.ts?case=${Math.random()}`)
|
|
}
|
|
|
|
beforeEach(() => {
|
|
ffiShouldThrow = false
|
|
nativeFlags = 0
|
|
dlopenCalls = 0
|
|
Object.defineProperty(process, 'platform', {
|
|
value: originalPlatform,
|
|
configurable: true,
|
|
})
|
|
})
|
|
|
|
afterEach(() => {
|
|
Object.defineProperty(process, 'platform', {
|
|
value: originalPlatform,
|
|
configurable: true,
|
|
})
|
|
})
|
|
|
|
describe('modifiers-napi', () => {
|
|
test('returns false for non-darwin platforms', async () => {
|
|
Object.defineProperty(process, 'platform', {
|
|
value: 'win32',
|
|
configurable: true,
|
|
})
|
|
const mod = await loadModule()
|
|
|
|
await mod.prewarm()
|
|
expect(dlopenCalls).toBe(0)
|
|
expect(mod.isModifierPressed('shift')).toBe(false)
|
|
expect(mod.isModifierPressed('command')).toBe(false)
|
|
})
|
|
|
|
test('prewarm is idempotent on darwin', async () => {
|
|
Object.defineProperty(process, 'platform', {
|
|
value: 'darwin',
|
|
configurable: true,
|
|
})
|
|
const mod = await loadModule()
|
|
|
|
await mod.prewarm()
|
|
await mod.prewarm()
|
|
|
|
expect(dlopenCalls).toBe(1)
|
|
})
|
|
|
|
test('returns false when ffi loading fails on darwin', async () => {
|
|
Object.defineProperty(process, 'platform', {
|
|
value: 'darwin',
|
|
configurable: true,
|
|
})
|
|
ffiShouldThrow = true
|
|
const mod = await loadModule()
|
|
|
|
await mod.prewarm()
|
|
expect(mod.isModifierPressed('shift')).toBe(false)
|
|
})
|
|
|
|
test('returns false for unknown modifier names on darwin', async () => {
|
|
Object.defineProperty(process, 'platform', {
|
|
value: 'darwin',
|
|
configurable: true,
|
|
})
|
|
nativeFlags = 0x20000
|
|
const mod = await loadModule()
|
|
|
|
await mod.prewarm()
|
|
expect(mod.isModifierPressed('unknown')).toBe(false)
|
|
})
|
|
|
|
test('uses native flag bits for known modifiers on darwin', async () => {
|
|
Object.defineProperty(process, 'platform', {
|
|
value: 'darwin',
|
|
configurable: true,
|
|
})
|
|
nativeFlags = 0x20000 | 0x40000
|
|
const mod = await loadModule()
|
|
|
|
await mod.prewarm()
|
|
expect(mod.isModifierPressed('shift')).toBe(true)
|
|
expect(mod.isModifierPressed('control')).toBe(true)
|
|
expect(mod.isModifierPressed('option')).toBe(false)
|
|
})
|
|
})
|