Basically block_custom_block_save expects $body to be an array with keys 'value' and 'format', we pass it a string so we end up with just the first character of the previous block body.
Test to verify fail.
Then a fix.

#3 linkchecker.block-tests.patch2.44 KBlarowlan
PASSED: [[SimpleTest]]: [MySQL] 174 pass(es).
[ View ]
linkchecker.pass_.patch3.2 KBlarowlan
FAILED: [[SimpleTest]]: [MySQL] Unable to apply patch linkchecker.pass_.patch. Unable to apply patch. See the log in the details link for more information.
[ View ]
linkchecker.fail_.patch2.35 KBlarowlan
FAILED: [[SimpleTest]]: [MySQL] Unable to apply patch linkchecker.fail_.patch. Unable to apply patch. See the log in the details link for more information.
[ View ]


Status:Needs review» Needs work

The last submitted patch, linkchecker.pass_.patch, failed testing.

What link checker version are you using? Your patch looks not correct. Have you seen linkchecker_block_custom_block_get()?

Priority:Major» Normal
Status:Needs work» Needs review
new2.44 KB
PASSED: [[SimpleTest]]: [MySQL] 174 pass(es).
[ View ]

Yep, looks like the issue has been fixed in the dev branch, I had the 7.x-1.0-beta1, apologies.
Regardless the attached patch adds extra test coverage.

Title:Link checker destroys block bodies when auto-update is configured for 301 redirectsAdd extra tests for block checking and update features
Category:bug» task

beta1 is very old and has some issues... This was fixed before 1.0 final. Please use latest version only.

Thanks for these tests!

Status:Needs review» Needs work

I see some issues with this test. The main problem here is that the test rely on googles today behaivior. This is a real life test, but this is not reliable on the other side if something change at google. I'm strongly for faking the status code and manually do the tests.

The test here is a good starting point for #1917188: Write tests for status code handling and auto update.

Aside, do we have a hook_block_update/insert/delete now in D8?