Skip to content

Commit bf61dd5

Browse files
abnkasteph
authored andcommitted
tests: cleanup cache and http usage
- ensure tests rely on temporary cache directory - remove external http call requirement for lock --no-update Relates-to: #1645
1 parent 6ddd58f commit bf61dd5

File tree

10 files changed

+90
-193
lines changed

10 files changed

+90
-193
lines changed

Diff for: tests/config/test_config.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ def test_config_get_default_value(config, name, value):
1010
assert config.get(name) is value
1111

1212

13-
def test_config_get_processes_depended_on_values(config):
14-
assert os.path.join("/foo", "virtualenvs") == config.get("virtualenvs.path")
13+
def test_config_get_processes_depended_on_values(config, config_cache_dir):
14+
assert str(config_cache_dir / "virtualenvs") == config.get("virtualenvs.path")
1515

1616

1717
@pytest.mark.parametrize(

Diff for: tests/conftest.py

+19-2
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,21 @@ def all(self): # type: () -> Dict[str, Any]
5454

5555

5656
@pytest.fixture
57-
def config_source():
57+
def config_cache_dir(tmp_dir):
58+
path = Path(tmp_dir) / ".cache" / "pypoetry"
59+
path.mkdir(parents=True)
60+
return path
61+
62+
63+
@pytest.fixture
64+
def config_virtualenvs_path(config_cache_dir):
65+
return config_cache_dir / "virtualenvs"
66+
67+
68+
@pytest.fixture
69+
def config_source(config_cache_dir):
5870
source = DictConfigSource()
59-
source.add_property("cache-dir", "/foo")
71+
source.add_property("cache-dir", str(config_cache_dir))
6072

6173
return source
6274

@@ -226,6 +238,7 @@ def _factory(
226238
dependencies=None,
227239
dev_dependencies=None,
228240
pyproject_content=None,
241+
poetry_lock_content=None,
229242
install_deps=True,
230243
):
231244
project_dir = workspace / "poetry-fixture-{}".format(name)
@@ -249,6 +262,10 @@ def _factory(
249262
dev_dependencies=dev_dependencies,
250263
).create(project_dir, with_tests=False)
251264

265+
if poetry_lock_content:
266+
lock_file = project_dir / "poetry.lock"
267+
lock_file.write_text(data=poetry_lock_content, encoding="utf-8")
268+
252269
poetry = Factory().create_poetry(project_dir)
253270

254271
locker = TestLocker(

Diff for: tests/console/commands/test_config.py

+18-12
Original file line numberDiff line numberDiff line change
@@ -25,37 +25,41 @@ def test_show_config_with_local_config_file_empty(tester, mocker):
2525
assert "" == tester.io.fetch_output()
2626

2727

28-
def test_list_displays_default_value_if_not_set(tester, config):
28+
def test_list_displays_default_value_if_not_set(tester, config, config_cache_dir):
2929
tester.execute("--list")
3030

31-
expected = """cache-dir = "/foo"
31+
expected = """cache-dir = {cache}
3232
experimental.new-installer = true
3333
installer.parallel = true
3434
virtualenvs.create = true
3535
virtualenvs.in-project = null
3636
virtualenvs.options.always-copy = false
37-
virtualenvs.path = {path} # /foo{sep}virtualenvs
37+
virtualenvs.path = {path} # {virtualenvs}
3838
""".format(
39-
path=json.dumps(os.path.join("{cache-dir}", "virtualenvs")), sep=os.path.sep
39+
cache=json.dumps(str(config_cache_dir)),
40+
path=json.dumps(os.path.join("{cache-dir}", "virtualenvs")),
41+
virtualenvs=str(config_cache_dir / "virtualenvs"),
4042
)
4143

4244
assert expected == tester.io.fetch_output()
4345

4446

45-
def test_list_displays_set_get_setting(tester, config):
47+
def test_list_displays_set_get_setting(tester, config, config_cache_dir):
4648
tester.execute("virtualenvs.create false")
4749

4850
tester.execute("--list")
4951

50-
expected = """cache-dir = "/foo"
52+
expected = """cache-dir = {cache}
5153
experimental.new-installer = true
5254
installer.parallel = true
5355
virtualenvs.create = false
5456
virtualenvs.in-project = null
5557
virtualenvs.options.always-copy = false
56-
virtualenvs.path = {path} # /foo{sep}virtualenvs
58+
virtualenvs.path = {path} # {virtualenvs}
5759
""".format(
58-
path=json.dumps(os.path.join("{cache-dir}", "virtualenvs")), sep=os.path.sep
60+
cache=json.dumps(str(config_cache_dir)),
61+
path=json.dumps(os.path.join("{cache-dir}", "virtualenvs")),
62+
virtualenvs=str(config_cache_dir / "virtualenvs"),
5963
)
6064

6165
assert 0 == config.set_config_source.call_count
@@ -83,20 +87,22 @@ def test_display_single_local_setting(command_tester_factory, fixture_dir):
8387
assert expected == tester.io.fetch_output()
8488

8589

86-
def test_list_displays_set_get_local_setting(tester, config):
90+
def test_list_displays_set_get_local_setting(tester, config, config_cache_dir):
8791
tester.execute("virtualenvs.create false --local")
8892

8993
tester.execute("--list")
9094

91-
expected = """cache-dir = "/foo"
95+
expected = """cache-dir = {cache}
9296
experimental.new-installer = true
9397
installer.parallel = true
9498
virtualenvs.create = false
9599
virtualenvs.in-project = null
96100
virtualenvs.options.always-copy = false
97-
virtualenvs.path = {path} # /foo{sep}virtualenvs
101+
virtualenvs.path = {path} # {virtualenvs}
98102
""".format(
99-
path=json.dumps(os.path.join("{cache-dir}", "virtualenvs")), sep=os.path.sep
103+
cache=json.dumps(str(config_cache_dir)),
104+
path=json.dumps(os.path.join("{cache-dir}", "virtualenvs")),
105+
virtualenvs=str(config_cache_dir / "virtualenvs"),
100106
)
101107

102108
assert 1 == config.set_config_source.call_count

Diff for: tests/console/commands/test_lock.py

+19-10
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
1-
import shutil
2-
31
import pytest
42

5-
from poetry.factory import Factory
63
from poetry.packages import Locker
74
from poetry.utils._compat import Path
5+
from tests.helpers import get_package
86

97

108
@pytest.fixture
@@ -18,15 +16,26 @@ def tester(command_tester_factory):
1816

1917

2018
@pytest.fixture
21-
def poetry_with_old_lockfile(fixture_dir, source_dir):
22-
project_dir = source_dir / "project"
23-
shutil.copytree(str(fixture_dir("old_lock")), str(project_dir))
24-
poetry = Factory().create_poetry(cwd=project_dir)
25-
return poetry
19+
def poetry_with_old_lockfile(project_factory, fixture_dir, source_dir):
20+
source = fixture_dir("old_lock")
21+
pyproject_content = (source / "pyproject.toml").read_text(encoding="utf-8")
22+
poetry_lock_content = (source / "poetry.lock").read_text(encoding="utf-8")
23+
return project_factory(
24+
name="foobar",
25+
pyproject_content=pyproject_content,
26+
poetry_lock_content=poetry_lock_content,
27+
)
28+
2629

30+
def test_lock_no_update(command_tester_factory, poetry_with_old_lockfile, repo):
31+
repo.add_package(get_package("sampleproject", "1.3.1"))
32+
repo.add_package(get_package("sampleproject", "2.0.0"))
2733

28-
def test_lock_no_update(command_tester_factory, poetry_with_old_lockfile, http):
29-
http.disable()
34+
locker = Locker(
35+
lock=poetry_with_old_lockfile.pyproject.file.path.parent / "poetry.lock",
36+
local_config=poetry_with_old_lockfile.locker._local_config,
37+
)
38+
poetry_with_old_lockfile.set_locker(locker)
3039

3140
locked_repository = poetry_with_old_lockfile.locker.locked_repository(
3241
with_dev_reqs=True

Diff for: tests/fixtures/old_lock/poetry.lock

+8-142
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: tests/fixtures/old_lock/pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ authors = ["Poetry Developer <[email protected]>"]
66

77
[tool.poetry.dependencies]
88
python = "^3.8"
9-
docker = "^4.3.1"
9+
sampleproject = ">=1.3.1"
1010

1111
[tool.poetry.dev-dependencies]
1212

Diff for: tests/installation/test_chef.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ def test_get_cached_archives_for_link(config, mocker):
6060
}
6161

6262

63-
def test_get_cache_directory_for_link(config):
63+
def test_get_cache_directory_for_link(config, config_cache_dir):
6464
chef = Chef(
6565
config,
6666
MockEnv(
@@ -71,8 +71,11 @@ def test_get_cache_directory_for_link(config):
7171
directory = chef.get_cache_directory_for_link(
7272
Link("https://files.python-poetry.org/poetry-1.1.0.tar.gz")
7373
)
74+
7475
expected = Path(
75-
"/foo/artifacts/ba/63/13/283a3b3b7f95f05e9e6f84182d276f7bb0951d5b0cc24422b33f7a4648"
76+
"{}/artifacts/ba/63/13/283a3b3b7f95f05e9e6f84182d276f7bb0951d5b0cc24422b33f7a4648".format(
77+
config_cache_dir.as_posix()
78+
)
7679
)
7780

7881
assert expected == directory

Diff for: tests/installation/test_executor.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -126,9 +126,11 @@ def test_execute_executes_a_batch_of_operations(
126126
assert 5 == len(env.executed)
127127

128128

129-
def test_execute_shows_skipped_operations_if_verbose(config, pool, io):
129+
def test_execute_shows_skipped_operations_if_verbose(
130+
config, pool, io, config_cache_dir
131+
):
130132
config = Config()
131-
config.merge({"cache-dir": "/foo"})
133+
config.merge({"cache-dir": config_cache_dir.as_posix()})
132134

133135
env = MockEnv()
134136
executor = Executor(env, pool, config, io)

0 commit comments

Comments
 (0)