-
-
Notifications
You must be signed in to change notification settings - Fork 356
feat: add support for Python virtual environment in testsuite setup #956
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
WalkthroughThe changes add optional support in Changes
Sequence Diagram(s)sequenceDiagram
participant Developer
participant dev.sh
participant Python
participant venv
Developer->>dev.sh: Run with or without --use-global-env
alt Use global environment
dev.sh->>Python: pip install -r requirements.txt (global)
dev.sh->>Python: Run integration testsuite (global)
else Use virtual environment
dev.sh->>venv: setup_venv(./venv)
venv-->>dev.sh: venv created & activated
dev.sh->>Python: pip install -r requirements.txt (inside venv)
dev.sh->>Python: Run integration testsuite (inside venv)
dev.sh->>venv: cleanup_venv() on exit/interruption
end
Estimated code review effort2 (~20 minutes) Poem
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (2)
🚧 Files skipped from review as they are similar to previous changes (2)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
🧹 Nitpick comments (1)
dev.sh (1)
119-122
: Offer a short flag for ergonomicsConsider adding
-e
as a shorthand for--use-venv
, mirroring the existing pattern (-t/-s/-v
). Small DX win, zero cost.- --use-venv) + -e|--use-venv) USE_VENV=true shift ;;
Cases of failure (e.g., ~/superfile$ ./dev.sh --testsuite --use-global-env
🚀 Starting superfile development workflow
==> Tidying Go modules...
✓ Go modules tidied
==> Formatting Go code...
✓ Code formatted
==> Running golangci-lint...
✓ Linting passed
==> Running unit tests...
? github.com/yorukot/superfile [no test files]
? github.com/yorukot/superfile/src/cmd [no test files]
? github.com/yorukot/superfile/src/config [no test files]
? github.com/yorukot/superfile/src/config/icon [no test files]
ok github.com/yorukot/superfile/src/internal (cached)
ok github.com/yorukot/superfile/src/internal/common (cached)
? github.com/yorukot/superfile/src/internal/ui [no test files]
ok github.com/yorukot/superfile/src/internal/ui/prompt (cached)
ok github.com/yorukot/superfile/src/internal/ui/rendering (cached)
ok github.com/yorukot/superfile/src/internal/ui/sidebar (cached)
ok github.com/yorukot/superfile/src/internal/utils (cached)
? github.com/yorukot/superfile/src/pkg/file_preview [no test files]
? github.com/yorukot/superfile/src/pkg/string_function [no test files]
✓ Unit tests passed
==> Running integration testsuite...
==> Installing testsuite requirements globally...
⚠ Using global Python environment - consider removing --use-global-env flag to use virtual environment
⚠ Failed to install testsuite requirements - continuing anyway
Traceback (most recent call last):
File "/home/khitoshi/superfile/testsuite/main.py", line 64, in <module>
main()
File "/home/khitoshi/superfile/testsuite/main.py", line 58, in main
success = run_tests(spf_path, only_run_tests=args.tests)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/khitoshi/superfile/testsuite/core/runner.py", line 57, in run_tests
spf_manager = TmuxSPFManager(str(spf_path))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/khitoshi/superfile/testsuite/core/tmux_manager.py", line 33, in __init__
raise RuntimeError(
RuntimeError: libtmux version 0.31.0 or higher is required. Current version: 0.30.2. Please upgrade with: pip install 'libtmux>=0.31.0'
✗ Integration testsuite failed Successful Cases ~/superfile$ ./dev.sh --testsuite --use-global-env
🚀 Starting superfile development workflow
==> Tidying Go modules...
✓ Go modules tidied
==> Formatting Go code...
✓ Code formatted
==> Running golangci-lint...
✓ Linting passed
==> Running unit tests...
? github.com/yorukot/superfile [no test files]
? github.com/yorukot/superfile/src/cmd [no test files]
? github.com/yorukot/superfile/src/config [no test files]
? github.com/yorukot/superfile/src/config/icon [no test files]
ok github.com/yorukot/superfile/src/internal (cached)
ok github.com/yorukot/superfile/src/internal/common (cached)
? github.com/yorukot/superfile/src/internal/ui [no test files]
ok github.com/yorukot/superfile/src/internal/ui/prompt (cached)
ok github.com/yorukot/superfile/src/internal/ui/rendering (cached)
ok github.com/yorukot/superfile/src/internal/ui/sidebar (cached)
ok github.com/yorukot/superfile/src/internal/utils (cached)
? github.com/yorukot/superfile/src/pkg/file_preview [no test files]
? github.com/yorukot/superfile/src/pkg/string_function [no test files]
✓ Unit tests passed
==> Running integration testsuite...
==> Installing testsuite requirements globally...
⚠ Using global Python environment - consider removing --use-global-env flag to use virtual environment
⚠ Failed to install testsuite requirements - continuing anyway
[2025-07-23 12:38:44 - INFO] Testcases : [ChooserFileTest, CopyWTest, DeleteDirTest, EmptyPanelTest, CompressExtractTest, CommandTest, CopyDirTest, RenameTest, CutTest, CopyTest, DeleteTest]
[2025-07-23 12:38:44 - INFO] Running test ChooserFileTest
[2025-07-23 12:38:48 - INFO] Passed test ChooserFileTest
[2025-07-23 12:38:48 - INFO] Running test CopyWTest
[2025-07-23 12:38:50 - INFO] Passed test CopyWTest
[2025-07-23 12:38:50 - INFO] Running test DeleteDirTest
[2025-07-23 12:38:51 - INFO] Passed test DeleteDirTest
[2025-07-23 12:38:51 - INFO] Running test EmptyPanelTest
[2025-07-23 12:38:53 - INFO] Passed test EmptyPanelTest
[2025-07-23 12:38:53 - INFO] Running test CompressExtractTest
[2025-07-23 12:38:55 - INFO] Passed test CompressExtractTest
[2025-07-23 12:38:55 - INFO] Running test CommandTest
[2025-07-23 12:38:57 - INFO] Passed test CommandTest
[2025-07-23 12:38:57 - INFO] Running test CopyDirTest
[2025-07-23 12:38:58 - INFO] Passed test CopyDirTest
[2025-07-23 12:38:58 - INFO] Running test RenameTest
[2025-07-23 12:39:00 - INFO] Passed test RenameTest
[2025-07-23 12:39:00 - INFO] Running test CutTest
[2025-07-23 12:39:02 - INFO] Passed test CutTest
[2025-07-23 12:39:02 - INFO] Running test CopyTest
[2025-07-23 12:39:04 - INFO] Passed test CopyTest
[2025-07-23 12:39:04 - INFO] Running test DeleteTest
[2025-07-23 12:39:06 - INFO] Passed test DeleteTest
[2025-07-23 12:39:06 - INFO] Finished running 11 test. 11 passed
✓ Integration testsuite passed
==> Building spf binary...
✓ Build completed successfully
🎉 All steps completed successfully!
Binary location: ./bin/spf
Binary size: 23M |
…ve pane retrieval in TmuxSPFManager
~/superfile$ ./dev.sh --testsuite
🚀 Starting superfile development workflow
==> Tidying Go modules...
✓ Go modules tidied
==> Formatting Go code...
✓ Code formatted
==> Running golangci-lint...
✓ Linting passed
==> Running unit tests...
? github.com/yorukot/superfile [no test files]
? github.com/yorukot/superfile/src/cmd [no test files]
? github.com/yorukot/superfile/src/config [no test files]
? github.com/yorukot/superfile/src/config/icon [no test files]
ok github.com/yorukot/superfile/src/internal (cached)
ok github.com/yorukot/superfile/src/internal/common (cached)
? github.com/yorukot/superfile/src/internal/ui [no test files]
ok github.com/yorukot/superfile/src/internal/ui/prompt (cached)
ok github.com/yorukot/superfile/src/internal/ui/rendering (cached)
ok github.com/yorukot/superfile/src/internal/ui/sidebar (cached)
ok github.com/yorukot/superfile/src/internal/utils (cached)
? github.com/yorukot/superfile/src/pkg/file_preview [no test files]
? github.com/yorukot/superfile/src/pkg/string_function [no test files]
✓ Unit tests passed
==> Running integration testsuite...
==> Using existing virtual environment at ./venv
==> Upgrading pip in virtual environment...
✓ Pip upgraded successfully
==> Installing testsuite requirements in virtual environment...
✓ Testsuite requirements installed in virtual environment
[2025-07-23 12:46:00 - INFO] Testcases : [ChooserFileTest, CopyWTest, DeleteDirTest, EmptyPanelTest, CompressExtractTest, CommandTest, CopyDirTest, RenameTest, CutTest, CopyTest, DeleteTest]
[2025-07-23 12:46:00 - INFO] Running test ChooserFileTest
[2025-07-23 12:46:04 - INFO] Passed test ChooserFileTest
[2025-07-23 12:46:04 - INFO] Running test CopyWTest
[2025-07-23 12:46:06 - INFO] Passed test CopyWTest
[2025-07-23 12:46:06 - INFO] Running test DeleteDirTest
[2025-07-23 12:46:07 - INFO] Passed test DeleteDirTest
[2025-07-23 12:46:07 - INFO] Running test EmptyPanelTest
[2025-07-23 12:46:09 - INFO] Passed test EmptyPanelTest
[2025-07-23 12:46:09 - INFO] Running test CompressExtractTest
[2025-07-23 12:46:11 - INFO] Passed test CompressExtractTest
[2025-07-23 12:46:11 - INFO] Running test CommandTest
[2025-07-23 12:46:13 - INFO] Passed test CommandTest
[2025-07-23 12:46:13 - INFO] Running test CopyDirTest
[2025-07-23 12:46:15 - INFO] Passed test CopyDirTest
[2025-07-23 12:46:15 - INFO] Running test RenameTest
[2025-07-23 12:46:16 - INFO] Passed test RenameTest
[2025-07-23 12:46:16 - INFO] Running test CutTest
[2025-07-23 12:46:18 - INFO] Passed test CutTest
[2025-07-23 12:46:18 - INFO] Running test CopyTest
[2025-07-23 12:46:22 - INFO] Passed test CopyTest
[2025-07-23 12:46:22 - INFO] Running test DeleteTest
[2025-07-23 12:46:24 - INFO] Passed test DeleteTest
[2025-07-23 12:46:24 - INFO] Finished running 11 test. 11 passed
✓ Integration testsuite passed
==> Building spf binary...
✓ Build completed successfully
🎉 All steps completed successfully!
Binary location: ./bin/spf
Binary size: 23M |
… pane retrieval in TmuxSPFManager
~/superfile$ ./dev.sh --testsuite --use-global-env --verbose
....
[2025-07-23 01:54:28 - DEBUG] spf_manager info : [], Current file structure :
D-dir1
D-dir2
F-dir1/file1(1).txt
F-dir1/file1.txt
[2025-07-23 01:54:28 - INFO] Passed test CopyTest
[2025-07-23 01:54:28 - INFO] Running test DeleteTest
[2025-07-23 01:54:28 - DEBUG] Current file structure :
F-file_to_delete.txt
[2025-07-23 01:54:28 - DEBUG] windows_command : /home/khitoshi/superfile/bin/spf -c /home/khitoshi/superfile/src/superfile_config/config.toml --hf /home/khitoshi/superfile/src/superfile_config/hotkeys.toml
[2025-07-23 01:54:28 - DEBUG] spf_session initialised : Session($0 spf_session)
[2025-07-23 01:54:29 - DEBUG] sendind key : 'a'
[2025-07-23 01:54:29 - DEBUG] sendind key : '\x04'
[2025-07-23 01:54:29 - DEBUG] sendind key : '\r'
[2025-07-23 01:54:29 - DEBUG] sendind key : '\x1b'
[2025-07-23 01:54:30 - DEBUG] Finished Execution
[2025-07-23 01:54:30 - DEBUG] spf_manager info : [], Current file structure :
[2025-07-23 01:54:30 - INFO] Passed test DeleteTest
[2025-07-23 01:54:30 - INFO] Finished running 11 test. 11 passed
✓ Integration testsuite passed
==> Building spf binary...
✓ Build completed successfully |
dev.sh
Outdated
if pip3 install -r requirements.txt > /dev/null 2>&1; then | ||
print_success "Testsuite requirements installed" | ||
# Setup virtual environment if requested | ||
if [ "$USE_VENV" = true ]; then |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hey @Khitoshi Thanks for this. I would prefer if its other way around.
--use-global-env
or a better name -> Uses global
default -> Uses venv
Default using global sounds bad.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
that makes more sense. I’ll switch the default to venv and add a --use-global-env flag.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. Tested. I would have @yorukot also take a look as he wrote this script.
close #917
Description
This PR resolves the issue with Python package management in the
dev.sh
script by adding support for Python virtual environments when running the integration testsuite.Changes Made
Added Virtual Environment Support
--use-venv
command line flag to enable Python virtual environment usagesetup_venv()
function to create and activate virtual environmentscleanup_venv()
function to properly deactivate virtual environmentstestsuite/venv
when enabledEnhanced Testsuite Execution
--use-venv
flag is used:testsuite/venv
Updated Documentation
--use-venv
option to help messageUsage Examples
Summary by CodeRabbit