--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/fakepatchtime.py Wed Jul 08 17:01:09 2015 +0900
@@ -0,0 +1,26 @@
+# extension to emulate invoking 'patch.internalpatch()' at the time
+# specified by '[fakepatchtime] fakenow'
+
+from mercurial import extensions, patch as patchmod, util
+
+def internalpatch(orig, ui, repo, patchobj, strip,
+ prefix='', files=None,
+ eolmode='strict', similarity=0):
+ if files is None:
+ files = set()
+ r = orig(ui, repo, patchobj, strip,
+ prefix=prefix, files=files,
+ eolmode=eolmode, similarity=similarity)
+
+ fakenow = ui.config('fakepatchtime', 'fakenow')
+ if fakenow:
+ # parsing 'fakenow' in YYYYmmddHHMM format makes comparison between
+ # 'fakenow' value and 'touch -t YYYYmmddHHMM' argument easy
+ fakenow = util.parsedate(fakenow, ['%Y%m%d%H%M'])[0]
+ for f in files:
+ repo.wvfs.utime(f, (fakenow, fakenow))
+
+ return r
+
+def extsetup(ui):
+ extensions.wrapfunction(patchmod, 'internalpatch', internalpatch)