sapling/tests/test-rebase-inmemory-nochanges-t.py
Jun Wu 0c36fd8b5e tests: translate some .t tests to Python
Summary:
Those tests were converted using:

  echo *.t | xargs -P20 -n1 python -m testutil.dott.translate --black --verify

They run 5x faster (via run-tests.py), and 10x faster (via python directly).

run-tests.py on old .t files, 652 CPU seconds:

  % time ./run-tests.py `cat list-t.txt`  --noprogress
  .................................................................................................................................
  # Ran 129 tests, 0 skipped, 0 failed.
  ./run-tests.py `cat list-t.txt` --noprogress  505.30s user 146.37s system 1451% cpu 44.899 total

run-tests.py on new py tests, 135 CPU seconds:

  % time ./run-tests.py `cat list-py.txt` --noprogress
  .............................................................................................................................
  # Ran 125 tests, 0 skipped, 0 failed.
  ./run-tests.py `cat list-py.txt` --noprogress  55.73s user 78.80s system 744% cpu 18.061 total

vanilla python on new tests, 59 CPU seconds:

  % time (for i in `cat list-py.txt`; do python $i; done;)
  ( for i in `cat list-py.txt`; do; python $i; done; )  41.61s user 17.47s system 90% cpu 1:05.31 total

The new tests also have auto fix ability. `python test-foo-t.py --fix` will
autofix the code.

Reviewed By: xavierd

Differential Revision: D16172902

fbshipit-source-id: dda53990a7dfff5ac214c1237e4206a4d67e8e48
2019-07-17 21:11:32 -07:00

64 lines
2.2 KiB
Python

# Copyright (c) Facebook, Inc. and its affiliates.
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
from __future__ import absolute_import
from testutil.dott import feature, sh, testtmp # noqa: F401
# TODO: Make this test compatibile with obsstore enabled.
sh % "setconfig 'experimental.evolution='"
# Test a rebase that doesn't create a commit:
sh % "enable amend rebase"
sh % "setconfig 'rebase.singletransaction=True'"
sh % "setconfig 'experimental.copytrace=off'"
sh % "setconfig 'rebase.experimental.inmemory=1'"
sh % "setconfig 'rebase.experimental.inmemory.nomergedriver=False'"
sh % "setconfig 'rebase.experimental.inmemorywarning=rebasing in-memory!'"
sh % "newrepo"
# Create a commit with a move + content change:
sh % "newrepo"
sh % "echo 'original content'" > "file"
sh % "hg add -q"
sh % "hg commit -q -m base"
sh % "echo 'new content'" > "file"
sh % "hg mv file file_new"
sh % "hg commit -m a"
sh % "hg book -r . a"
# Recreate the same commit:
sh % "hg up -q '.~1'"
sh % "echo 'new content'" > "file"
sh % "hg mv file file_new"
sh % "hg commit -m b"
sh % "hg book -r . b"
sh % "cp -R . ../without_imm"
# Rebase one version onto the other, confirm it gets rebased out:
sh % "hg rebase -r b -d a" == r"""
rebasing in-memory!
rebasing 2:811ec875201f "b" (b tip)
note: rebase of 2:811ec875201f created no changes to commit
saved backup bundle to $TESTTMP/repo2/.hg/strip-backup/811ec875201f-889e3ef7-rebase.hg"""
# Without IMM, this behavior is semi-broken: the commit is not rebased out and the
# created commit is empty. (D8676355)
sh % "cd ../without_imm"
sh % "setconfig 'rebase.experimental.inmemory=0'"
sh % "hg rebase -r b -d a" == r"""
rebasing 2:811ec875201f "b" (b tip)
warning: can't find ancestor for 'file_new' copied from 'file'!
saved backup bundle to $TESTTMP/without_imm/.hg/strip-backup/811ec875201f-889e3ef7-rebase.hg"""
sh % "hg export tip" == r"""
# HG changeset patch
# User test
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
# Node ID 7552e6b0bc4ab4ac16175ced4f08a54c31faf706
# Parent 24483d5afe6cb1a13b3642b4d8622e91f4d1bec1
b"""