Commits


tog regress: TAB instruction + test for diff J keymap Add the TAB instruction to the test harness, and a test case for the previous commit: scroll down the log from the diff view with the J keymap when on the last loaded commit. ok stsp@


tog: resize log view if toggling fullscreen from child view We call resize_log_view() when toggling 'F'ullscreen from the log view, but forgot to do this when toggling fullscreen from a child view if its parent is the log view. This fixes a bug that prevents scrolling down the log view from the diff view with the J keymap if already on the last loaded commit. Regress test in the following commit. ok stsp@


tog: mark HSPLIT_SCALE as float; unbreak regress on i386 On i386 view_split_begin_y() computed a value slightly different than on other arches, breaking the regress. Casting HSPLIT_SCALE as float unbreaks it. Diff from jamsek, committing on his behalf. Thanks!


tog: open screendump file early during regress we can't open arbitrary files after unveil(), and that's a feature! So, open it early and truncate it before use just in case screendump() ends up being called more than once. ok/tweak stsp, ok jamsek


tog: don't check whether stdin is a tty during regress ok stsp, jamsek


tog: don't open /dev/tty during regress as it might not be there (for e.g. if ran under cron). Reuse instead /dev/null since it's not expected to get input from stdin. ok jamsek


tog: always use alternate charset for vertical/horizontal line ncurses(3) will use the line drawing characters from the VT100 alternate graphics character set if the terminal supports this as indicated by termcap/terminfo, otherwise it will fall back to ASCII replacement characters. ok jamsek stsp


tog: teach test harness to count and basic tree tests Add count instruction to the test harness to simulate count modifier compound keys (e.g., 11j), and add basic tests for the tree view. ok stsp@


tog regress: zap needless defines and use "vt220" TERM Also, overwrite - and | unconditionally when capturing screen dumps, and unset TOG_COLORS and TOG_DIFF_ALGORITHM in regress setup. All tweaks suggested by naddy@ ok stsp@


tog regress: use pthread conditions for wait instruction As suggested by stsp, rather than busy wait in the view loop, use pthread conditions to wait for the blame thread to signal completion before drawing the screen. We can add more conditions for other views when needed, but by keeping the general WAIT_FOR_UI instruction and flag, this should make their use context-dependent so we won't need more test harness WAIT_* instructions. ok stsp@


tog: lock mutex if leaving view_loop() on a script read error ok stsp@


tog: tweak blame tog_view deallocation fix from 2ca2f982 Both view_close() and close_blame_view() are called from view_loop() irrespective of error, so only call these from cmd_blame() to ensure the tog_view structure is not leaked when open_blame_view() errors. ok stsp@


tog: blame regress and new test framework wait instruction Basic blame view test required adding the WAIT_FOR_UI instruction to delay screen dumps till the ui has been completely rendered. This will also apply to future test cases such as limited log views and further blame test cases. ok stsp@


tog: rename regress test script envvar As per stsp's idea: use a more descriptive name, and use the TOG_TEST_SCRIPT envvar both in tog.c and the test scripts. ok stsp@


document the S key in tog's online help screen


tog: plug tog_view structure leak on open_*_view() error ok stsp@


release tog_io regress mock term resources in main() ok stsp@


make tog regress run with pledge active ok jamsek


tog: implement automated test harness Add framework for scripting tog tests by capturing screen dumps to compare with expected output. Includes some preliminary log view tests but lots more tests are needed to cover diff, blame, tree, ref, and help views. ok stsp@


tog: resume blame and diff search from the first line In diff and blame views, if the user scrolls up during a search, resume search from the first displayed line--not the current match. This makes sense in these views as the "cursor" or current line is the first line. Patch by Mikhail. ok op@


portable: configure: split out dependencies Rather than assume all dependencies are required for all programs, split them out. This will make packaging easier, as well as splitting the code to use subprojects. Note that due to the use of config.h semantics, in most cases the got_compat.h header file is now at the top of the .c file it is included in, so that it can handle the system header inclusion properly.


portable: rework SHA detection Simply the SHA detection by not predicating on libcrypto, but instead checking individual header files.


portable: remove sha1.h; found portably Remove sha1.h as this is found portably across systems.


include sha2.h too where sha1.h is included In preparation for wide sha256 support; stsp@ agrees. Change done mechanically with find . -iname \*.[cy] -exec sam {} + X ,x/<sha1\.h>/i/\n#include <sha2.h>


fix tog diff between arbitrary commits Don't assume commit info is always written. This is only true when diffing a commit against (one of) its direct parent(s). Otherwise we perform an invalid read on a tmp got_diff_line array and end up passing bogus offsets to fseeko(). Bug found and fixed by stsp with a minor tweak by me. ok jamsek for stsp's initial diff ok stsp@