1
0
mirror of https://github.com/GNS3/gns3-server synced 2025-01-11 08:30:57 +00:00

Fix test on Windows

Sadly python crash on my Windows and I can't run the full test
suite.

Fix #377
This commit is contained in:
Julien Duponchelle 2015-12-14 16:06:51 +01:00
parent ad4501838b
commit 480ca037cd
3 changed files with 16 additions and 9 deletions

View File

@ -426,6 +426,8 @@ class BaseManager:
# For non local server we disallow using absolute path outside image directory
if Config.instance().get_section_config("Server").get("local", False) is False:
img_directory = self.config.get_section_config("Server").get("images_path", os.path.expanduser("~/GNS3/images"))
img_directory = force_unix_path(img_directory)
path = force_unix_path(path)
if len(os.path.commonprefix([img_directory, path])) < len(img_directory):
raise VMError("{} is not allowed on this remote server. Please use only a filename in {}.".format(path, img_directory))
@ -443,8 +445,8 @@ class BaseManager:
if not path:
return ""
img_directory = self.get_images_directory()
path = self.get_abs_image_path(path)
img_directory = force_unix_path(self.get_images_directory())
path = force_unix_path(self.get_abs_image_path(path))
if os.path.commonprefix([img_directory, path]) == img_directory:
return os.path.relpath(path, img_directory)
return path

View File

@ -17,6 +17,7 @@
import pytest
import os
import sys
import stat
from tests.utils import asyncio_patch
from unittest.mock import patch
@ -26,7 +27,10 @@ from gns3server.config import Config
@pytest.fixture
def fake_qemu_bin():
bin_path = os.path.join(os.environ["PATH"], "qemu-system-x86_64")
if sys.platform.startswith("win"):
bin_path = os.path.join(os.environ["PATH"], "qemu-system-x86_64w.exe")
else:
bin_path = os.path.join(os.environ["PATH"], "qemu-system-x86_64")
with open(bin_path, "w+") as f:
f.write("1")
os.chmod(bin_path, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR)

View File

@ -24,6 +24,7 @@ from unittest.mock import patch
from gns3server.modules.vpcs import VPCS
from gns3server.modules.qemu import Qemu
from gns3server.modules.vm_error import VMError
from gns3server.utils import force_unix_path
@pytest.fixture(scope="function")
@ -89,10 +90,10 @@ def test_create_vm_old_topology(loop, project, tmpdir, vpcs):
def test_get_abs_image_path(qemu, tmpdir):
os.makedirs(str(tmpdir / "QEMU"))
path1 = str(tmpdir / "test1.bin")
path1 = force_unix_path(str(tmpdir / "test1.bin"))
open(path1, 'w+').close()
path2 = str(tmpdir / "QEMU" / "test2.bin")
path2 = force_unix_path(str(tmpdir / "QEMU" / "test2.bin"))
open(path2, 'w+').close()
with patch("gns3server.config.Config.get_section_config", return_value={"images_path": str(tmpdir)}):
@ -106,11 +107,11 @@ def test_get_abs_image_path(qemu, tmpdir):
def test_get_abs_image_path_non_local(qemu, tmpdir):
path1 = tmpdir / "images" / "QEMU" / "test1.bin"
path1.write("1", ensure=True)
path1 = str(path1)
path1 = force_unix_path(str(path1))
path2 = tmpdir / "private" / "QEMU" / "test2.bin"
path2.write("1", ensure=True)
path2 = str(path2)
path2 = force_unix_path(str(path2))
# If non local we can't use path outside images directory
with patch("gns3server.config.Config.get_section_config", return_value={"images_path": str(tmpdir / "images"), "local": False}):
@ -126,10 +127,10 @@ def test_get_abs_image_path_non_local(qemu, tmpdir):
def test_get_relative_image_path(qemu, tmpdir):
os.makedirs(str(tmpdir / "QEMU"))
path1 = str(tmpdir / "test1.bin")
path1 = force_unix_path(str(tmpdir / "test1.bin"))
open(path1, 'w+').close()
path2 = str(tmpdir / "QEMU" / "test2.bin")
path2 = force_unix_path(str(tmpdir / "QEMU" / "test2.bin"))
open(path2, 'w+').close()
with patch("gns3server.config.Config.get_section_config", return_value={"images_path": str(tmpdir)}):