Max Contiguous Subarray: Divide and Conquer
Nested max
max(max(L, R), X)

can be
max((L, R, X))

Actual tests
Assert what you're expecting:
assert 0 == max_subarray_sum([])
assert 6 == max_subarray_sum([-2, 1, -3, 4, -1, 2, 1, -5, 4])
assert 1479 == max_subarray_sum([904, 40, 523, 12, -335, -385, -124, 481, -31])