Nothing has spawned tmux since D-77 moved Claude session persistence to `--resume`; Claude and terminal panes spawn `claude` or the shell directly. But the toolchain still resolved tmux and listed it in `missing`, so on mac/linux a box without tmux showed a spurious "tmux not found" warning in the welcome view + status bar. The windows-support branch had special-cased that away with a `!Platform.isWindows` guard — the tell that the requirement was dead everywhere, not platform-specific. Drop tmux from ResolvedPaths / ToolchainView / Toolchain (field, getter, `missing`, PATH resolution) on every platform, removing the Windows guards with it. Strip the testmode tmux probes and the comments / CLAUDE.md line that claimed clide spawns tmux. (The dead ToolCheck class that also gated on tmux was already deleted on main and dropped in the preceding merge.) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
77 lines
2.8 KiB
Dart
77 lines
2.8 KiB
Dart
/// Unit tests for `ToolchainView.resolved` (the Flutter-free `_StaticToolchain`)
|
|
/// in `lib/kernel/src/toolchain_paths.dart`. The listenable `Toolchain` and the
|
|
/// top-level `resolveToolchainPaths` are covered by `toolchain_test.dart`.
|
|
library;
|
|
|
|
import 'package:clide/kernel/src/toolchain_paths.dart';
|
|
import 'package:test/test.dart';
|
|
|
|
void main() {
|
|
group('ToolchainView.resolved', () {
|
|
test('exposes the supplied paths verbatim', () {
|
|
final v = ToolchainView.resolved(
|
|
const ResolvedPaths(git: '/opt/git', pql: '/opt/pql', shell: '/usr/bin/zsh', gitEnv: {'GIT_EXEC_PATH': '/opt/git-core'}),
|
|
);
|
|
expect(v.git, '/opt/git');
|
|
expect(v.pql, '/opt/pql');
|
|
expect(v.shell, '/usr/bin/zsh');
|
|
expect(v.gitEnv, {'GIT_EXEC_PATH': '/opt/git-core'});
|
|
expect(v.resolved, isTrue);
|
|
expect(v.allOk, isTrue);
|
|
expect(v.missing, isEmpty);
|
|
});
|
|
|
|
test('falls back to bare command names when paths are null', () {
|
|
final v = ToolchainView.resolved(const ResolvedPaths());
|
|
expect(v.git, 'git');
|
|
expect(v.pql, 'pql');
|
|
expect(v.shell, '/bin/bash');
|
|
expect(v.gitEnv, isNull);
|
|
expect(v.resolved, isTrue);
|
|
expect(v.allOk, isFalse);
|
|
expect(v.missing, ['git', 'pql']);
|
|
});
|
|
|
|
test('missing reports only the unresolved tools', () {
|
|
final v = ToolchainView.resolved(
|
|
const ResolvedPaths(
|
|
git: '/opt/git',
|
|
// pql null → missing.
|
|
),
|
|
);
|
|
expect(v.missing, ['pql']);
|
|
expect(v.allOk, isFalse);
|
|
});
|
|
});
|
|
|
|
group('expandToolPath (T-347)', () {
|
|
const minimal = '/usr/bin:/bin'; // a desktop-launch PATH, no ~/.local/bin
|
|
|
|
test('Linux prepends ~/.local/bin + /usr/local/bin (desktop-launch fix)', () {
|
|
final out = expandToolPath(minimal, isMac: false, isLinux: true, home: '/home/u');
|
|
expect(out, '/home/u/.local/bin:/usr/local/bin:/usr/bin:/bin');
|
|
// No homebrew dirs on Linux.
|
|
expect(out.contains('/opt/homebrew'), isFalse);
|
|
});
|
|
|
|
test('macOS also adds the homebrew dirs', () {
|
|
final out = expandToolPath(minimal, isMac: true, isLinux: false, home: '/Users/u');
|
|
expect(out.split(':'), containsAll(['/Users/u/.local/bin', '/opt/homebrew/bin', '/opt/homebrew/sbin', '/usr/local/bin']));
|
|
});
|
|
|
|
test('does not duplicate dirs already on PATH', () {
|
|
final base = '/home/u/.local/bin:/usr/local/bin:/usr/bin';
|
|
expect(expandToolPath(base, isMac: false, isLinux: true, home: '/home/u'), base);
|
|
});
|
|
|
|
test('skips ~/.local/bin when HOME is empty', () {
|
|
final out = expandToolPath(minimal, isMac: false, isLinux: true, home: '');
|
|
expect(out, '/usr/local/bin:/usr/bin:/bin');
|
|
});
|
|
|
|
test('other platforms pass PATH through unchanged', () {
|
|
expect(expandToolPath(minimal, isMac: false, isLinux: false, home: '/home/u'), minimal);
|
|
});
|
|
});
|
|
}
|