Mercurial > hgsubversion
annotate Makefile @ 1101:4a92eb1484ba
layouts: fix crash when importing hgsubversion itself (issue #402)
Mercurial extensions are a bit weird: they aren't normally in
sys.path, so you can't assume that "import hgsubversion" works.
Luckily, Mercurial sneaks a little treat into sys.modules so that
"import hgext_hgsubversion" does work. In fact, to get things working
*as a Mercurial extension*, all that's needed is that trivial change
to two import lines, in layouts/detect.py and layouts/standard.py.
Unfortunately, hgsubversion is also imported as a Python module, in
its own test suite. In that context, there is no "hgext_" trick --
unless we do it in ourselves, which I've done in TestBase.setUp().
That would work fine ... except that test_util imports from
hgsubversion, which ends up importing hgsubversion.layouts.{detect,standard},
which want the "hgext_" trick to work. But it hasn't been done yet
when we're still importing; it doesn't happen until setUp() runs.
So make those two imports happen late, in the functions that need them.
Incidentally, this is only necessary to support Mercurial <= 2.7.
Mercurial got a bit smarter in 2.8:
http://selenic.com/repo/hg/rev/621a26eb3a99
author | Greg Ward <greg@gerg.ca> |
---|---|
date | Thu, 02 Jan 2014 21:53:39 -0500 |
parents | 055f9254d790 |
children |
rev | line source |
---|---|
683
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
1 # Makefile for testing hgsubversion |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
2 |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
3 PYTHON=python |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
4 |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
5 .PHONY: all check check-demandimport check-subvertpy check-swig |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
6 |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
7 all: |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
8 @echo "Use the following commands to build and install hgsubversion:" |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
9 @echo |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
10 @echo "$$ cd $(PWD)" |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
11 @echo "$$ $(PYTHON) ./setup.py install" |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
12 @echo |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
13 @exit 1 |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
14 |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
15 check: check-demandimport check-subvertpy check-swig |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
16 |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
17 check-demandimport: |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
18 # verify that hgsubversion loads properly without bindings, but fails |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
19 # when actually used |
879
055f9254d790
Makefile: set HGRCPATH to protects us from broken environments
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
683
diff
changeset
|
20 ! LC_ALL=C HGSUBVERSION_BINDINGS=none HGRCPATH=/dev/null \ |
683
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
21 hg --config extensions.hgsubversion=./hgsubversion \ |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
22 version 2>&1 \ |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
23 | egrep '(^abort:|failed to import extension)' |
879
055f9254d790
Makefile: set HGRCPATH to protects us from broken environments
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
683
diff
changeset
|
24 LC_ALL=C HGSUBVERSION_BINDINGS=none HGRCPATH=/dev/null \ |
683
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
25 hg --config extensions.hgsubversion=./hgsubversion \ |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
26 version --svn 2>&1 \ |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
27 | egrep '(^abort:|failed to import extension)' |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
28 |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
29 check-subvertpy: |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
30 $(PYTHON) tests/run.py --all --bindings=subvertpy |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
31 |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
32 check-swig: |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
33 $(PYTHON) tests/run.py --all --bindings=swig |