createsFile :: FilePath -> (FilePath -> IO ()) -> IO ()
createsFile f action = do
  exists <- shelly $ test_e f
  when exists $ error "cleanup after yourself!"
  action f
  shelly $ rm f
  return ()
createsFile :: FilePath -> (FilePath -> IO ()) -> IO ()
createsFile f action = do
  exists <- shelly $ test_e f
  when exists $ error "cleanup after yourself!"
  action f
  shelly $ rm f
  return ()
createsFile f action = do
  exists <- shelly $ test_e f
  when exists $ error "cleanup after yourself!"
  action f
  shelly $ rm f
  return ()