##// END OF EJS Templates
posix: always seek to EOF when opening a file in append mode...
posix: always seek to EOF when opening a file in append mode Python 3 already does this, so skip it there. Consider the program: #include <stdio.h> int main() { FILE *f = fopen("narf", "w"); fprintf(f, "narf\n"); fclose(f); f = fopen("narf", "a"); printf("%ld\n", ftell(f)); fprintf(f, "troz\n"); printf("%ld\n", ftell(f)); return 0; } on macOS, FreeBSD, and Linux with glibc, this program prints 5 10 but on musl libc (Alpine Linux and probably others) this prints 0 10 By my reading of https://pubs.opengroup.org/onlinepubs/009695399/functions/fopen.html this is technically correct, specifically: > Opening a file with append mode (a as the first character in the > mode argument) shall cause all subsequent writes to the file to be > forced to the then current end-of-file, regardless of intervening > calls to fseek(). in other words, the file position doesn't really matter in append-mode files, and we can't depend on it being at all meaningful unless we perform a seek() before tell() after open(..., 'a'). Experimentally after a .write() we can do a .tell() and it'll always be reasonable, but I'm unclear from reading the specification if that's a smart thing to rely on. This matches what we do on Windows and what Python 3 does for free, so let's just be consistent. Thanks to Yuya for the idea.

File last commit:

r41573:f695726b default
r42778:97ada9b8 5.0.2 stable
Show More
test-merge10.t
55 lines | 1.5 KiB | text/troff | Tads3Lexer
Pradeepkumar Gayam
tests: unify test-merge10
r11983 Test for changeset 9fe267f77f56ff127cf7e65dc15dd9de71ce8ceb
(merge correctly when all the files in a directory are moved
but then local changes are added in the same directory)
$ hg init a
$ cd a
$ mkdir -p testdir
$ echo a > testdir/a
$ hg add testdir/a
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg commit -m a
Pradeepkumar Gayam
tests: unify test-merge10
r11983 $ cd ..
$ hg clone a b
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd a
$ echo alpha > testdir/a
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg commit -m remote-change
Pradeepkumar Gayam
tests: unify test-merge10
r11983 $ cd ..
$ cd b
$ mkdir testdir/subdir
$ hg mv testdir/a testdir/subdir/a
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg commit -m move
Pradeepkumar Gayam
tests: unify test-merge10
r11983 $ mkdir newdir
$ echo beta > newdir/beta
$ hg add newdir/beta
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg commit -m local-addition
Pradeepkumar Gayam
tests: unify test-merge10
r11983 $ hg pull ../a
pulling from ../a
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets cc7000b01af9
Pradeepkumar Gayam
tests: unify test-merge10
r11983 (run 'hg heads' to see heads, 'hg merge' to merge)
$ hg up -C 2
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
Martin von Zweigbergk
merge: respect ui.relative-paths...
r41651 Abuse this test for also testing that merge respects ui.relative-paths
$ hg --cwd testdir merge --config ui.relative-paths=yes
merging subdir/a and a to subdir/a
Pradeepkumar Gayam
tests: unify test-merge10
r11983 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg stat
M testdir/subdir/a
$ hg diff --nodates
Martin Geisler
tests: remove unneeded -d flags...
r12156 diff -r bc21c9773bfa testdir/subdir/a
Pradeepkumar Gayam
tests: unify test-merge10
r11983 --- a/testdir/subdir/a
+++ b/testdir/subdir/a
@@ -1,1 +1,1 @@
-a
+alpha
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913
$ cd ..