CI


stage.go: return stateName
//1. Move mock to its own subpackage
//2. factor in getlibzfs and fix UseSystemZFS

3. try to not type assert to mock and implement failing functions with real ZFS
4. don’t create tempdir for mock libzfs
5. run system tests on existing machine with rpool which already exists
6. Conditional t.Parallel() if mock
7. Find a way for snapshot time to be set on mocks without the sleep
8. Helper in tests with:
if err != nil {
	if !tc.wantErr {
	t.Fatalf("expected no error but got: %v", err)
	}
				return
			}
			if err == nil && tc.wantErr {
				t.Fatal("expected an error but got none")
			}



* Transaction:
 1. seulement un struct, pas de nestedtransaction (dépend s'il y a le parent)
 2.:
Done() décide s'il y a 
  defer cancel() (du ctx)
  select:
    <- ctx.Done()
      chanrevert <- true
    default:
      chanrevert <- false

  <-chanrevert



et dans la goroutine de cleanup:

On attend sur
  shouldRevert <-chanrevert
  …
  close(chanrevert)


