When using CG degree 1, the result corresponds to degree 2

There are two things that you are ignoring. The first one is that even if you would like to have a linear stress, you do not want a continuous lagrange representation.
Therefore you need to use write_checkpoint. Using a function space that is linear discontinuous you obtain the attached image.

T = TensorFunctionSpace(mesh, 'DQ', fem_order-1)
strain = project(eps(u), T)
[e11, e12, e21, e22] = strain.split(True)
file_results = XDMFFile("./output2.xdmf")
file_results.write_checkpoint(e12, "e12",0.)

If you plot this over the line from 0,0.2 to 2,0.2, you obtain the linear stress you are looking for.