Skip to content

2 3compatability - #14

Merged
nickmonad merged 4 commits into
masterfrom
2-3compatability
Oct 16, 2017
Merged

2 3compatability#14
nickmonad merged 4 commits into
masterfrom
2-3compatability

Conversation

@solipsis

Copy link
Copy Markdown
Contributor

update encrypt_keyvalue and decrypt_keyvalue to work with both python 2.7 and 3.6

@nickmonad

Copy link
Copy Markdown
Contributor

+1

@nickmonad
nickmonad merged commit 5a8e758 into masterOct 16, 2017
@nickmonad
nickmonad deleted the 2-3compatability branch October 16, 2017 21:24
keepkeyjon added a commit that referenced this pull request Sep 5, 2018
BitHighlander added a commit that referenced this pull request May 3, 2026
…ANSPORT, split confirm-flow setUp
Three findings from review of PR #14:
#1 (High) test_dylib_confirm_flow used common.KeepKeyTest.setUp which calls
wipe_device() — the same path the file's pending regression is for.
Hangs in setUp can't be classified by xfail or interrupted by
pytest-timeout, so test_features_round_trip ("just Initialize") was
actually wipe + Initialize. Refactored to construct
KeepKeyDebuglinkClient directly in setUp (matching test_dylib_screenshot's
pattern), moved wipe + load_device into the one pending test.
Tried the reviewer-suggested @pytest.mark.xfail(strict=True) +
@pytest.mark.timeout combo. pytest-timeout (both signal and thread
methods) cannot interrupt the C-level kkemu_poll busy-loop — the
hang locks up the entire test runner instead of failing the test.
Switched to @unittest.skip with explicit rationale documenting
exactly that, plus the promotion path: when firmware lands the
confirm fix, drop the skip; if a future change makes kkemu_poll
GIL-friendly, switch back to xfail+timeout.
#2 (Medium) tests/config.py treated any non-empty KK_TRANSPORT as
"explicit" and skipped HID/WebUSB autodetect, but only "dylib" was
actually handled. A typo like KK_TRANSPORT=dyllib silently fell
through to UDP with hardware disabled. Now scoped to a
_KNOWN_TRANSPORTS set; unsupported values raise at config import,
surfacing typos at test collection time. Verified end-to-end:
`KK_TRANSPORT=dyllib pytest test_msg_signtx.py` now errors on
collection with the typo'd value in the message.
#3 (Medium/Low) DylibTransport.ready_to_read appended raw frame bytes
to read_buffer but DylibTransport._pump_one stripped the leading '?'
HID marker first. Inconsistent stripping corrupts multi-frame message
reassembly: _read_headers can scan a stray '?' from one chunk into
the middle of contiguous payload bytes from another, decoding the
wrong message-type / length.
Centralised the read+strip into a private _poll_and_stash helper
shared by both ready_to_read (no sleep) and _pump_one (sleeps on
miss). Now the buffer always contains continuation+payload bytes
only; the leading '?' is stripped at the single point of stashing.
Trailing HID padding zeros from short messages are still tolerated
by _read_headers' magic-character search.
Verified locally:
KK_TRANSPORT=dylib KK_DYLIB=build-emu/lib/libkkemu.dylib \
pytest tests/test_dylib_screenshot.py tests/test_dylib_confirm_flow.py
================== 5 passed, 1 skipped in 0.15s ==================
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@solipsis@nickmonad