|
@@ -1,7 +1,8 @@
|
|
|
-import { homedir } from 'node:os'
|
|
|
|
|
|
|
+import { mkdtempSync, rmSync, symlinkSync } from 'node:fs'
|
|
|
|
|
+import { homedir, tmpdir } from 'node:os'
|
|
|
import { join } from 'node:path'
|
|
import { join } from 'node:path'
|
|
|
import { describe, expect, it } from 'vitest'
|
|
import { describe, expect, it } from 'vitest'
|
|
|
-import { launchAgentPlist } from '../bin/hermes-yaoyao.mjs'
|
|
|
|
|
|
|
+import { isMainModule, launchAgentPlist } from '../bin/hermes-yaoyao.mjs'
|
|
|
|
|
|
|
|
describe('hermes-yaoyao LaunchAgent plist', () => {
|
|
describe('hermes-yaoyao LaunchAgent plist', () => {
|
|
|
it('includes the local Hermes CLI directory in PATH', () => {
|
|
it('includes the local Hermes CLI directory in PATH', () => {
|
|
@@ -21,4 +22,15 @@ describe('hermes-yaoyao LaunchAgent plist', () => {
|
|
|
expect(plist).toContain(`<string>${join(root, 'dist-server', 'server', 'index.js')}</string>`)
|
|
expect(plist).toContain(`<string>${join(root, 'dist-server', 'server', 'index.js')}</string>`)
|
|
|
expect(plist).toContain(`<key>WorkingDirectory</key><string>${root}</string>`)
|
|
expect(plist).toContain(`<key>WorkingDirectory</key><string>${root}</string>`)
|
|
|
})
|
|
})
|
|
|
|
|
+
|
|
|
|
|
+ it('runs the CLI when its entry path uses the stable current symlink', () => {
|
|
|
|
|
+ const root = mkdtempSync(join(tmpdir(), 'hermes-service-cli-'))
|
|
|
|
|
+ const entry = join(root, 'hermes-yaoyao.mjs')
|
|
|
|
|
+ symlinkSync(join(process.cwd(), 'bin', 'hermes-yaoyao.mjs'), entry)
|
|
|
|
|
+ try {
|
|
|
|
|
+ expect(isMainModule(entry)).toBe(true)
|
|
|
|
|
+ } finally {
|
|
|
|
|
+ rmSync(root, { recursive: true, force: true })
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
})
|
|
})
|