Mercurial > hgsubversion
annotate tests/test_fetch_exec.py @ 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 | 449c61eeace7 |
children |
rev | line source |
---|---|
643
d2ef7220a079
tests: import test_util as the first module in all relevant tests
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
158
diff
changeset
|
1 import test_util |
d2ef7220a079
tests: import test_util as the first module in all relevant tests
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
158
diff
changeset
|
2 |
125
c35f59aa200e
Move and complete execute bit conversion tests into test_fetch_exec.py
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
3 import unittest |
c35f59aa200e
Move and complete execute bit conversion tests into test_fetch_exec.py
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
4 |
c35f59aa200e
Move and complete execute bit conversion tests into test_fetch_exec.py
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
5 from mercurial import node |
c35f59aa200e
Move and complete execute bit conversion tests into test_fetch_exec.py
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
6 |
c35f59aa200e
Move and complete execute bit conversion tests into test_fetch_exec.py
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
7 class TestFetchExec(test_util.TestBase): |
1063
449c61eeace7
test_fetch_exec: use metaclass stupid mode tests
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1044
diff
changeset
|
8 stupid_mode_tests = True |
449c61eeace7
test_fetch_exec: use metaclass stupid mode tests
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1044
diff
changeset
|
9 |
125
c35f59aa200e
Move and complete execute bit conversion tests into test_fetch_exec.py
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
10 def assertexec(self, ctx, files, isexec=True): |
c35f59aa200e
Move and complete execute bit conversion tests into test_fetch_exec.py
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
11 for f in files: |
c35f59aa200e
Move and complete execute bit conversion tests into test_fetch_exec.py
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
12 self.assertEqual(isexec, 'x' in ctx[f].flags()) |
c35f59aa200e
Move and complete execute bit conversion tests into test_fetch_exec.py
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
13 |
1063
449c61eeace7
test_fetch_exec: use metaclass stupid mode tests
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1044
diff
changeset
|
14 def test_exec(self): |
449c61eeace7
test_fetch_exec: use metaclass stupid mode tests
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1044
diff
changeset
|
15 repo = self._load_fixture_and_fetch('executebit.svndump') |
125
c35f59aa200e
Move and complete execute bit conversion tests into test_fetch_exec.py
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
16 self.assertexec(repo[0], ['text1', 'binary1', 'empty1'], True) |
c35f59aa200e
Move and complete execute bit conversion tests into test_fetch_exec.py
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
17 self.assertexec(repo[0], ['text2', 'binary2', 'empty2'], False) |
c35f59aa200e
Move and complete execute bit conversion tests into test_fetch_exec.py
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
18 self.assertexec(repo[1], ['text1', 'binary1', 'empty1'], False) |
c35f59aa200e
Move and complete execute bit conversion tests into test_fetch_exec.py
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
19 self.assertexec(repo[1], ['text2', 'binary2', 'empty2'], True) |
c35f59aa200e
Move and complete execute bit conversion tests into test_fetch_exec.py
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
20 |
1063
449c61eeace7
test_fetch_exec: use metaclass stupid mode tests
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1044
diff
changeset
|
21 def test_empty_prop_val_executable(self): |
449c61eeace7
test_fetch_exec: use metaclass stupid mode tests
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1044
diff
changeset
|
22 repo = self._load_fixture_and_fetch('executable_file_empty_prop.svndump') |
125
c35f59aa200e
Move and complete execute bit conversion tests into test_fetch_exec.py
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
23 self.assertEqual(node.hex(repo['tip'].node()), |
154
6fa97cfbf62f
fetch: Refactor extra creation to be shared by real and diff replay.
Augie Fackler <durin42@gmail.com>
parents:
125
diff
changeset
|
24 '08e6b380bf291b361a418203a1cb9427213cd1fd') |
125
c35f59aa200e
Move and complete execute bit conversion tests into test_fetch_exec.py
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
25 self.assertEqual(repo['tip']['foo'].flags(), 'x') |