This commit is contained in:
Ines Montani 2018-11-26 18:54:27 +01:00
parent ec5ee9e616
commit c62d06ea5c
2 changed files with 49 additions and 1 deletions

View File

@ -5,6 +5,7 @@ import sys
import ujson
import itertools
import locale
import os
from thinc.neural.util import copy_array
@ -84,7 +85,7 @@ def getattr_(obj, name, *default):
def symlink_to(orig, dest):
if is_python2 and is_windows:
if is_windows:
import subprocess
subprocess.call(["mklink", "/d", path2str(orig), path2str(dest)], shell=True)
@ -92,6 +93,15 @@ def symlink_to(orig, dest):
orig.symlink_to(dest)
def symlink_remove(link):
# https://stackoverflow.com/q/26554135/6400719
if os.path.isdir(path2str(link)) and is_windows:
# this should only be on Py2.7 and windows
os.rmdir(path2str(link))
else:
os.unlink(path2str(link))
def is_config(python2=None, python3=None, windows=None, linux=None, osx=None):
return (
python2 in (None, is_python2)

38
spacy/tests/test_cli.py Normal file
View File

@ -0,0 +1,38 @@
# coding: utf-8
from __future__ import unicode_literals
import pytest
import os
from pathlib import Path
from spacy.compat import symlink_to, symlink_remove, path2str
@pytest.fixture
def target_local_path():
return Path("./foo-target")
@pytest.fixture
def link_local_path():
return Path("./foo-symlink")
@pytest.fixture(scope="function")
def setup_target(request, target_local_path, link_local_path):
if not target_local_path.exists():
os.mkdir(path2str(target_local_path))
# yield -- need to cleanup even if assertion fails
# https://github.com/pytest-dev/pytest/issues/2508#issuecomment-309934240
def cleanup():
symlink_remove(link_local_path)
os.rmdir(path2str(target_local_path))
request.addfinalizer(cleanup)
def test_create_symlink_windows(setup_target, target_local_path, link_local_path):
assert target_local_path.exists()
symlink_to(link_local_path, target_local_path)
assert link_local_path.exists()