Use context management when calling open()
Use subprocess proc.poll() to get the return code.
Add a ShellHelper method to read a file as a string.
Add client_info test: test_read_valid_writeback_changes