summaryrefslogtreecommitdiff
path: root/testing
diff options
context:
space:
mode:
Diffstat (limited to 'testing')
-rw-r--r--testing/conftest.py17
-rw-r--r--testing/test_file_finder.py68
-rw-r--r--testing/test_git.py31
-rw-r--r--testing/test_mercurial.py18
4 files changed, 75 insertions, 59 deletions
diff --git a/testing/conftest.py b/testing/conftest.py
index 0d34731..5cb65f6 100644
--- a/testing/conftest.py
+++ b/testing/conftest.py
@@ -1,6 +1,7 @@
import os
import itertools
import pytest
+import six
os.environ["SETUPTOOLS_SCM_DEBUG"] = "1"
VERSION_PKGS = ["setuptools", "setuptools_scm"]
@@ -21,6 +22,9 @@ class Wd(object):
commit_command = None
add_command = None
+ def __repr__(self):
+ return "<WD {cwd}>".format(cwd=self.cwd)
+
def __init__(self, cwd):
self.cwd = cwd
self.__counter = itertools.count()
@@ -33,10 +37,13 @@ class Wd(object):
return do(cmd, self.cwd)
def write(self, name, value, **kw):
- filename = self.cwd.join(name)
+ filename = self.cwd / name
if kw:
value = value.format(**kw)
- filename.write(value)
+ if isinstance(value, six.text_type):
+ filename.write_text(value)
+ else:
+ filename.write_bytes(value)
return filename
def _reason(self, given_reason):
@@ -83,5 +90,7 @@ def debug_mode():
@pytest.fixture
-def wd(tmpdir):
- return Wd(tmpdir.ensure("wd", dir=True))
+def wd(tmp_path):
+ target_wd = tmp_path.resolve() / "wd"
+ target_wd.mkdir()
+ return Wd(target_wd)
diff --git a/testing/test_file_finder.py b/testing/test_file_finder.py
index 825f1c3..c9409c4 100644
--- a/testing/test_file_finder.py
+++ b/testing/test_file_finder.py
@@ -7,7 +7,7 @@ from setuptools_scm.integration import find_files
@pytest.fixture(params=["git", "hg"])
-def inwd(request, wd):
+def inwd(request, wd, monkeypatch):
if request.param == "git":
wd("git init")
wd("git config user.email test@example.com")
@@ -18,14 +18,16 @@ def inwd(request, wd):
wd("hg init")
wd.add_command = "hg add ."
wd.commit_command = 'hg commit -m test-{reason} -u test -d "0 0"'
- (wd.cwd / "file1").ensure(file=True)
- adir = (wd.cwd / "adir").ensure(dir=True)
- (adir / "filea").ensure(file=True)
- bdir = (wd.cwd / "bdir").ensure(dir=True)
- (bdir / "fileb").ensure(file=True)
+ (wd.cwd / "file1").touch()
+ adir = wd.cwd / "adir"
+ adir.mkdir()
+ (adir / "filea").touch()
+ bdir = wd.cwd / "bdir"
+ bdir.mkdir()
+ (bdir / "fileb").touch()
wd.add_and_commit()
- with wd.cwd.as_cwd():
- yield wd
+ monkeypatch.chdir(wd.cwd)
+ yield wd
def _sep(paths):
@@ -39,14 +41,14 @@ def test_basic(inwd):
def test_whitespace(inwd):
- (inwd.cwd / "adir" / "space file").ensure(file=True)
+ (inwd.cwd / "adir" / "space file").touch()
inwd.add_and_commit()
assert set(find_files("adir")) == _sep({"adir/space file", "adir/filea"})
def test_case(inwd):
- (inwd.cwd / "CamelFile").ensure(file=True)
- (inwd.cwd / "file2").ensure(file=True)
+ (inwd.cwd / "CamelFile").touch()
+ (inwd.cwd / "file2").touch()
inwd.add_and_commit()
assert set(find_files()) == _sep(
{"CamelFile", "file2", "file1", "adir/filea", "bdir/fileb"}
@@ -55,14 +57,14 @@ def test_case(inwd):
@pytest.mark.skipif(sys.platform == "win32", reason="symlinks to dir not supported")
def test_symlink_dir(inwd):
- (inwd.cwd / "adir" / "bdirlink").mksymlinkto("../bdir")
+ (inwd.cwd / "adir" / "bdirlink").symlink_to("../bdir")
inwd.add_and_commit()
assert set(find_files("adir")) == _sep({"adir/filea", "adir/bdirlink/fileb"})
@pytest.mark.skipif(sys.platform == "win32", reason="symlinks to dir not supported")
def test_symlink_dir_source_not_in_scm(inwd):
- (inwd.cwd / "adir" / "bdirlink").mksymlinkto("../bdir")
+ (inwd.cwd / "adir" / "bdirlink").symlink_to("../bdir")
assert set(find_files("adir")) == _sep({"adir/filea"})
@@ -70,7 +72,7 @@ def test_symlink_dir_source_not_in_scm(inwd):
sys.platform == "win32", reason="symlinks to files not supported on windows"
)
def test_symlink_file(inwd):
- (inwd.cwd / "adir" / "file1link").mksymlinkto("../file1")
+ (inwd.cwd / "adir" / "file1link").symlink_to("../file1")
inwd.add_and_commit()
assert set(find_files("adir")) == _sep(
{"adir/filea", "adir/file1link"}
@@ -81,28 +83,28 @@ def test_symlink_file(inwd):
sys.platform == "win32", reason="symlinks to files not supported on windows"
)
def test_symlink_file_source_not_in_scm(inwd):
- (inwd.cwd / "adir" / "file1link").mksymlinkto("../file1")
+ (inwd.cwd / "adir" / "file1link").symlink_to("../file1")
assert set(find_files("adir")) == _sep({"adir/filea"})
@pytest.mark.skipif(sys.platform == "win32", reason="symlinks to dir not supported")
def test_symlink_loop(inwd):
- (inwd.cwd / "adir" / "loop").mksymlinkto("../adir")
+ (inwd.cwd / "adir" / "loop").symlink_to("../adir")
inwd.add_and_commit()
assert set(find_files("adir")) == _sep({"adir/filea", "adir/loop"}) # -> ../adir
@pytest.mark.skipif(sys.platform == "win32", reason="symlinks to dir not supported")
def test_symlink_loop_outside_path(inwd):
- (inwd.cwd / "bdir" / "loop").mksymlinkto("../bdir")
- (inwd.cwd / "adir" / "bdirlink").mksymlinkto("../bdir")
+ (inwd.cwd / "bdir" / "loop").symlink_to("../bdir")
+ (inwd.cwd / "adir" / "bdirlink").symlink_to("../bdir")
inwd.add_and_commit()
assert set(find_files("adir")) == _sep({"adir/filea", "adir/bdirlink/fileb"})
@pytest.mark.skipif(sys.platform == "win32", reason="symlinks to dir not supported")
def test_symlink_dir_out_of_git(inwd):
- (inwd.cwd / "adir" / "outsidedirlink").mksymlinkto(os.path.join(__file__, ".."))
+ (inwd.cwd / "adir" / "outsidedirlink").symlink_to(os.path.join(__file__, ".."))
inwd.add_and_commit()
assert set(find_files("adir")) == _sep({"adir/filea"})
@@ -111,23 +113,23 @@ def test_symlink_dir_out_of_git(inwd):
sys.platform == "win32", reason="symlinks to files not supported on windows"
)
def test_symlink_file_out_of_git(inwd):
- (inwd.cwd / "adir" / "outsidefilelink").mksymlinkto(__file__)
+ (inwd.cwd / "adir" / "outsidefilelink").symlink_to(__file__)
inwd.add_and_commit()
assert set(find_files("adir")) == _sep({"adir/filea"})
def test_empty_root(inwd):
subdir = inwd.cwd / "cdir" / "subdir"
- subdir.ensure(dir=True)
- (subdir / "filec").ensure(file=True)
+ subdir.mkdir(parents=True)
+ (subdir / "filec").touch()
inwd.add_and_commit()
assert set(find_files("cdir")) == _sep({"cdir/subdir/filec"})
def test_empty_subdir(inwd):
subdir = inwd.cwd / "adir" / "emptysubdir" / "subdir"
- subdir.ensure(dir=True)
- (subdir / "xfile").ensure(file=True)
+ subdir.mkdir(parents=True)
+ (subdir / "xfile").touch()
inwd.add_and_commit()
assert set(find_files("adir")) == _sep(
{"adir/filea", "adir/emptysubdir/subdir/xfile"}
@@ -136,10 +138,10 @@ def test_empty_subdir(inwd):
@pytest.mark.skipif(sys.platform == "win32", reason="symlinks not supported on windows")
def test_double_include_through_symlink(inwd):
- (inwd.cwd / "data").ensure(dir=True)
- (inwd.cwd / "data" / "datafile").ensure(file=True)
- (inwd.cwd / "adir" / "datalink").mksymlinkto("../data")
- (inwd.cwd / "adir" / "filealink").mksymlinkto("filea")
+ (inwd.cwd / "data").mkdir()
+ (inwd.cwd / "data" / "datafile").touch()
+ (inwd.cwd / "adir" / "datalink").symlink_to("../data")
+ (inwd.cwd / "adir" / "filealink").symlink_to("filea")
inwd.add_and_commit()
assert set(find_files()) == _sep(
{
@@ -155,17 +157,17 @@ def test_double_include_through_symlink(inwd):
@pytest.mark.skipif(sys.platform == "win32", reason="symlinks not supported on windows")
def test_symlink_not_in_scm_while_target_is(inwd):
- (inwd.cwd / "data").ensure(dir=True)
- (inwd.cwd / "data" / "datafile").ensure(file=True)
+ (inwd.cwd / "data").mkdir()
+ (inwd.cwd / "data" / "datafile").touch()
inwd.add_and_commit()
- (inwd.cwd / "adir" / "datalink").mksymlinkto("../data")
- (inwd.cwd / "adir" / "filealink").mksymlinkto("filea")
+ (inwd.cwd / "adir" / "datalink").symlink_to("../data")
+ (inwd.cwd / "adir" / "filealink").symlink_to("filea")
assert set(find_files()) == _sep(
{
"file1",
"adir/filea",
# adir/datalink and adir/afilelink not included
- # because the symlink themselves are not in scm
+ # because the symlink_to themselves are not in scm
"bdir/fileb",
"data/datafile",
}
diff --git a/testing/test_git.py b/testing/test_git.py
index 8416571..ac45b5b 100644
--- a/testing/test_git.py
+++ b/testing/test_git.py
@@ -34,9 +34,10 @@ def test_parse_describe_output(given, tag, number, node, dirty):
def test_root_relative_to(tmpdir, wd, monkeypatch):
monkeypatch.delenv("SETUPTOOLS_SCM_DEBUG")
- p = wd.cwd.ensure("sub/package", dir=1)
- p.join("setup.py").write(
- """from setuptools import setup
+ p = wd.cwd.joinpath("sub/package")
+ p.mkdir(parents=True)
+ p.joinpath("setup.py").write_text(
+ u"""from setuptools import setup
setup(use_scm_version={"root": "../..",
"relative_to": __file__})
"""
@@ -159,8 +160,10 @@ def test_git_shallow_autocorrect(shallow_wd, recwarn):
def test_find_files_stop_at_root_git(wd):
wd.commit_testfile()
- wd.cwd.ensure("project/setup.cfg")
- assert integration.find_files(str(wd.cwd / "project")) == []
+ project = wd.cwd / "project"
+ project.mkdir()
+ project.joinpath("setup.cfg").touch()
+ assert integration.find_files(str(project)) == []
@pytest.mark.issue(128)
@@ -175,7 +178,7 @@ def test_alphanumeric_tags_match(wd):
assert wd.version.startswith("0.1.dev1+g")
-def test_git_archive_export_ignore(wd):
+def test_git_archive_export_ignore(wd, monkeypatch):
wd.write("test1.txt", "test")
wd.write("test2.txt", "test")
wd.write(
@@ -186,28 +189,28 @@ def test_git_archive_export_ignore(wd):
)
wd("git add test1.txt test2.txt")
wd.commit()
- with wd.cwd.as_cwd():
- assert integration.find_files(".") == [opj(".", "test1.txt")]
+ monkeypatch.chdir(wd.cwd)
+ assert integration.find_files(".") == [opj(".", "test1.txt")]
@pytest.mark.issue(228)
-def test_git_archive_subdirectory(wd):
+def test_git_archive_subdirectory(wd, monkeypatch):
wd("mkdir foobar")
wd.write("foobar/test1.txt", "test")
wd("git add foobar")
wd.commit()
- with wd.cwd.as_cwd():
- assert integration.find_files(".") == [opj(".", "foobar", "test1.txt")]
+ monkeypatch.chdir(wd.cwd)
+ assert integration.find_files(".") == [opj(".", "foobar", "test1.txt")]
@pytest.mark.issue(251)
-def test_git_archive_run_from_subdirectory(wd):
+def test_git_archive_run_from_subdirectory(wd, monkeypatch):
wd("mkdir foobar")
wd.write("foobar/test1.txt", "test")
wd("git add foobar")
wd.commit()
- with (wd.cwd / "foobar").as_cwd():
- assert integration.find_files(".") == [opj(".", "test1.txt")]
+ monkeypatch.chdir(wd.cwd / "foobar")
+ assert integration.find_files(".") == [opj(".", "test1.txt")]
def test_git_feature_branch_increments_major(wd):
diff --git a/testing/test_mercurial.py b/testing/test_mercurial.py
index 40f9409..c20c2fd 100644
--- a/testing/test_mercurial.py
+++ b/testing/test_mercurial.py
@@ -38,15 +38,17 @@ def test_archival_to_version(expected, data):
)
-def test_find_files_stop_at_root_hg(wd):
+def test_find_files_stop_at_root_hg(wd, monkeypatch):
wd.commit_testfile()
- wd.cwd.ensure("project/setup.cfg")
+ project = wd.cwd / "project"
+ project.mkdir()
+ project.joinpath("setup.cfg").touch()
# setup.cfg has not been committed
- assert integration.find_files(str(wd.cwd / "project")) == []
+ assert integration.find_files(str(project)) == []
# issue 251
wd.add_and_commit()
- with (wd.cwd / "project").as_cwd():
- assert integration.find_files() == ["setup.cfg"]
+ monkeypatch.chdir(project)
+ assert integration.find_files() == ["setup.cfg"]
# XXX: better tests for tag prefixes
@@ -81,7 +83,7 @@ def test_version_from_hg_id(wd):
def test_version_from_archival(wd):
# entrypoints are unordered,
# cleaning the wd ensure this test wont break randomly
- wd.cwd.join(".hg").remove()
+ wd.cwd.joinpath(".hg").rename(wd.cwd / ".nothg")
wd.write(".hg_archival.txt", "node: 000000000000\n" "tag: 0.1\n")
assert wd.version == "0.1"
@@ -144,8 +146,8 @@ def test_version_bump_from_merge_commit(wd):
def test_version_bump_from_commit_including_hgtag_mods(wd):
""" Test the case where a commit includes changes to .hgtags and other files
"""
- with wd.cwd.join(".hgtags").open("a") as tagfile:
- tagfile.write("0 0\n")
+ with wd.cwd.joinpath(".hgtags").open("ab") as tagfile:
+ tagfile.write(b"0 0\n")
wd.write("branchfile", "branchtext")
wd(wd.add_command)
assert wd.version.startswith("1.0.1.dev1+") # bump from dirty version