`is_compatible` has no specified purpose,
"Return whether the cube is compatible with another."

What is compatible?...  determined by only looking at the source code, what's it for?... determined also only by looking at the source.
this means that it can do anything irrespective of what it currently does, and any changes can go into its functionality which might allow this test to succeed where it should not.

Can you not simply:

```Python
# Prepare for comparison
...
name_cube.attributes.clear()

self.assertTrue(name_cube == grib_cube)
```

BTW you have issues with the grib cube coordinates being in the range 0-360, while the name cube is -180 - 180

Also:

```Python
>>> coord='time'; print name_cube.coord(coord); print grib_cube.coord(coord)
DimCoord([2010-01-26 12:00:00], bounds=[[2010-01-26 09:00:00, 2010-01-26 12:00:00]], standard_name='time', calendar='gregorian')
DimCoord([2010-01-26 10:30:00], bounds=[[2010-01-26 09:00:00, 2010-01-26 12:00:00]], standard_name='time', calendar='gregorian')
>>> coord='height'; print name_cube.coord(coord); print grib_cube.coord(coord)
DimCoord(array([ 50.]), bounds=array([[   0.,  100.]]), standard_name='height', units=Unit('m'))
DimCoord(array([ 50.]), bounds=array([[   0.,  100.]]), standard_name=None, units=Unit('m'), long_name='height')
```