libchewing
libchewing copied to clipboard
A Smooth Transition to Rust - Documenting Existing Development Workflow.
Introduction
The libchewing project is currently undergoing a transition from C to Rust. This change will require updating the methods used for building, testing, and deploying the project. As a result, existing documents and scripts utilized in the development process will gradually become out-of-sync.
Purpose of this issue
The goal of this issue is to make the transition process as smooth as possible. As a result, there are two tasks that will be tracked in this issue.
- Ensure that there exists an environment guaranteed to work for developing this project by utilizing dev-containers
- #396
- #398
- Summarize and document existing tools and scripts used in the development process.
- #401
I'll help to record existing tools and scripts in the following section. Feel free to leave any comments below.
(WIP) Scripts and Tools Used in the developing process
- TBD:
- [ ]
test/stresstest.py
- [ ]
Fully automated Tests
- Files in
test/***-test.c
Chores
- Generate project docs with
textinfo
-
doc/
-
- Generate keystroke files as test input
-
test/genkeystroke.c
-
test/randkeystroke.c
-
Semi-automated Tests
- Soak testing - continuously give keystrokes and make sure the library won't crash. (
test/stress.c
) - Performance testing - Peek the throughput of libchewing by feeding example keystrokes (
test/performance.c
) - Simulate some important test cases, see how libchewing performs (
test/simulate.c
,test/materials.txt
)
Debugging
- Use Gdb for debugging (
test/debug-chewing-shell.sh
)
Deployment
- Install runtime related data:
data/
Notes
- programs under
test/
need to run with cwd=test/, cd totest
before running