annotate tests/test-empty.t @ 30435:b86a448a2965

zstd: vendor python-zstandard 0.5.0 As the commit message for the previous changeset says, we wish for zstd to be a 1st class citizen in Mercurial. To make that happen, we need to enable Python to talk to the zstd C API. And that requires bindings. This commit vendors a copy of existing Python bindings. Why do we need to vendor? As the commit message of the previous commit says, relying on systems in the wild to have the bindings or zstd present is a losing proposition. By distributing the zstd and bindings with Mercurial, we significantly increase our chances that zstd will work. Since zstd will deliver a better end-user experience by achieving better performance, this benefits our users. Another reason is that the Python bindings still aren't stable and the API is somewhat fluid. While Mercurial could be coded to target multiple versions of the Python bindings, it is safer to bundle an explicit, known working version. The added Python bindings are mostly a fully-featured interface to the zstd C API. They allow one-shot operations, streaming, reading and writing from objects implements the file object protocol, dictionary compression, control over low-level compression parameters, and more. The Python bindings work on Python 2.6, 2.7, and 3.3+ and have been tested on Linux and Windows. There are CFFI bindings, but they are lacking compared to the C extension. Upstream work will be needed before we can support zstd with PyPy. But it will be possible. The files added in this commit come from Git commit e637c1b214d5f869cf8116c550dcae23ec13b677 from https://github.com/indygreg/python-zstandard and are added without modifications. Some files from the upstream repository have been omitted, namely files related to continuous integration. In the spirit of full disclosure, I'm the maintainer of the "python-zstandard" project and have authored 100% of the code added in this commit. Unfortunately, the Python bindings have not been formally code reviewed by anyone. While I've tested much of the code thoroughly (I even have tests that fuzz APIs), there's a good chance there are bugs, memory leaks, not well thought out APIs, etc. If someone wants to review the code and send feedback to the GitHub project, it would be greatly appreciated. Despite my involvement with both projects, my opinions of code style differ from Mercurial's. The code in this commit introduces numerous code style violations in Mercurial's linters. So, the code is excluded from most lints. However, some violations I agree with. These have been added to the known violations ignore list for now.
author Gregory Szorc <gregory.szorc@gmail.com>
date Thu, 10 Nov 2016 22:15:58 -0800
parents ab2362e1672e
children f1186c292d03
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11743
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
1 Create an empty repo:
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
2
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
3 $ hg init a
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
4 $ cd a
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
5
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
6 Try some commands:
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
7
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
8 $ hg log
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
9 $ hg grep wah
12316
4134686b83e1 tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents: 11743
diff changeset
10 [1]
11743
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
11 $ hg manifest
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
12 $ hg verify
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
13 checking changesets
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
14 checking manifests
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
15 crosschecking files in changesets and manifests
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
16 checking files
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
17 0 files, 0 changesets, 0 total revisions
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
18
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
19 Check the basic files created:
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
20
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
21 $ ls .hg
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
22 00changelog.i
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
23 requires
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
24 store
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
25
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
26 Should be empty:
1338
2b77ea66fe70 Add empty repo test
mpm@selenic.com
parents:
diff changeset
27
11743
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
28 $ ls .hg/store
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
29
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
30 Poke at a clone:
6944
7e5f3480c45b fix regression on empty repo cloning introduced by 0642d9d7ec80
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1338
diff changeset
31
11743
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
32 $ cd ..
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
33 $ hg clone a b
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
34 updating to branch default
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
35 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
36 $ cd b
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
37 $ hg verify
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
38 checking changesets
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
39 checking manifests
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
40 crosschecking files in changesets and manifests
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
41 checking files
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
42 0 files, 0 changesets, 0 total revisions
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
43 $ ls .hg
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
44 00changelog.i
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
45 hgrc
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
46 requires
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
47 store
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
48
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
49 Should be empty:
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
50
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
51 $ ls .hg/store
16913
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 12316
diff changeset
52
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 12316
diff changeset
53 $ cd ..