view tests/test-hooklib-enforce_draft_commits.t @ 49986:dbcc45221c1f

test: explicitly "add" file before some commit in test-rollback.t `hg commit -A` will revert the `hg addremove` step if the commit fails. However `hg rollback` currently does not. We are about to improve internal consistency around transaction and dirstate and the behavior of `hg rollback` will align on the other behavior in the process. Before doing so, we make sure the test is using a separate call to `hg add` to avoid the test scenario to be affected by that future change. note: the behavior change for `hg rollback` seems fine as it affect a niche usecase and `hg rollback` usage have been strongly discouraged for a while.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Mon, 13 Feb 2023 17:42:32 +0100
parents 4cabeea6d214
children
line wrap: on
line source

  $ cat <<EOF >> $HGRCPATH
  > [extensions]
  > hooklib =
  > 
  > [phases]
  > publish = False
  > EOF
  $ hg init a
  $ hg --cwd a debugbuilddag .
  $ hg --cwd a phase --public 0
  $ hg init b
  $ cat <<EOF >> b/.hg/hgrc
  > [hooks]
  > pretxnclose-phase.enforce_draft_commits = \
  >   python:hgext.hooklib.enforce_draft_commits.hook
  > EOF
  $ hg --cwd b pull ../a
  pulling from ../a
  requesting all changes
  adding changesets
  adding manifests
  adding file changes
  error: pretxnclose-phase.enforce_draft_commits hook failed: New changeset 1ea73414a91b in phase 'public' rejected
  transaction abort!
  rollback completed
  abort: New changeset 1ea73414a91b in phase 'public' rejected
  [255]
  $ hg --cwd a phase --force --draft 0
  $ hg --cwd b pull ../a
  pulling from ../a
  requesting all changes
  adding changesets
  adding manifests
  adding file changes
  added 1 changesets with 0 changes to 0 files
  new changesets 1ea73414a91b (1 drafts)
  (run 'hg update' to get a working copy)
  $ hg --cwd a phase --public 0
  $ hg --cwd b pull ../a
  pulling from ../a
  searching for changes
  no changes found
  error: pretxnclose-phase.enforce_draft_commits hook failed: Phase change from 'draft' to 'public' for 1ea73414a91b rejected
  abort: Phase change from 'draft' to 'public' for 1ea73414a91b rejected
  [255]