Mercurial > hg
view tests/test-remove @ 11988:8380ed691df8
util: add an interpolate() function to for replacing multiple values
util.interpolate can be used to replace multiple items in a string all at once
(and optionally apply a function to the replacement), without worrying about
recursing:
>>> import util
>>> s = '$foo, $spam'
>>> util.interpolate(r'\$', { 'foo': 'bar', 'spam': 'eggs' }, s)
'bar, eggs'
>>> util.interpolate(r'\$', { 'foo': 'spam', 'spam': 'foo' }, s)
'spam, foo'
>>> util.interpolate(r'\$', { 'foo': 'spam', 'spam': 'foo' }, s, lambda s: s.upper())
'SPAM, FOO'
The patch also changes filemerge.py to use this new function.
author | Steve Losh <steve@stevelosh.com> |
---|---|
date | Wed, 18 Aug 2010 18:18:26 -0400 |
parents | 1f665246dab3 |
children | 07ac2a560fce |
line wrap: on
line source
#!/bin/sh remove() { hg rm $@ hg st # do not use ls -R, which recurses in .hg subdirs on Mac OS X 10.5 find . -name .hg -prune -o -type f -print | sort hg up -C } hg init a cd a echo a > foo echo % file not managed remove foo hg add foo hg commit -m1 # the table cases echo % 00 state added, options none echo b > bar hg add bar remove bar echo % 01 state clean, options none remove foo echo % 02 state modified, options none echo b >> foo remove foo echo % 03 state missing, options none rm foo remove foo echo % 10 state added, options -f echo b > bar hg add bar remove -f bar rm bar echo % 11 state clean, options -f remove -f foo echo % 12 state modified, options -f echo b >> foo remove -f foo echo % 13 state missing, options -f rm foo remove -f foo echo % 20 state added, options -A echo b > bar hg add bar remove -A bar echo % 21 state clean, options -A remove -A foo echo % 22 state modified, options -A echo b >> foo remove -A foo echo % 23 state missing, options -A rm foo remove -A foo echo % 30 state added, options -Af echo b > bar hg add bar remove -Af bar rm bar echo % 31 state clean, options -Af remove -Af foo echo % 32 state modified, options -Af echo b >> foo remove -Af foo echo % 33 state missing, options -Af rm foo remove -Af foo # test some directory stuff mkdir test echo a > test/foo echo b > test/bar hg ci -Am2 echo % dir, options none rm test/bar remove test echo % dir, options -f rm test/bar remove -f test echo % dir, options -A rm test/bar remove -A test echo % dir, options -Af rm test/bar remove -Af test echo 'test remove dropping empty trees (issue1861)' mkdir -p issue1861/b/c echo x > issue1861/x echo y > issue1861/b/c/y hg ci -Am add hg rm issue1861/b hg ci -m remove ls issue1861