You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
202 lines
7.2 KiB
202 lines
7.2 KiB
import os
|
|
import subprocess
|
|
import pytest
|
|
|
|
@pytest.mark.parametrize("world, model_download_source, model_store, interactive, overwrite, dryrun",[
|
|
# Default directory already exists
|
|
("default", "https://github.com/PX4/PX4-gazebo-models/archive/refs/heads/main.zip", "~/.simulation-gazebo", False, False, True),
|
|
("default", "https://github.com/PX4/PX4-gazebo-models/archive/refs/heads/main.zip", "~/.simulation-gazebo", False, True, True),
|
|
("default", "https://github.com/PX4/PX4-gazebo-models/archive/refs/heads/main.zip", "~/.simulation-gazebo", True, False, True),
|
|
("default", "https://github.com/PX4/PX4-gazebo-models/archive/refs/heads/main.zip", "~/.simulation-gazebo", True, True, True)
|
|
|
|
])
|
|
def test_model_exist_default(world, interactive, model_download_source, model_store, overwrite, dryrun):
|
|
"""
|
|
Test model generation
|
|
"""
|
|
# Ensure directory exists and has mockfile in it
|
|
model_store = os.path.expanduser(model_store)
|
|
if not os.path.exists(model_store):
|
|
os.makedirs(model_store)
|
|
|
|
mock_file_path = os.path.join(model_store, "mock_file.txt")
|
|
with open(mock_file_path, "w") as f:
|
|
f.write("This is a mock file")
|
|
|
|
output_directory = f"{model_store}/models/x500"
|
|
|
|
command = (
|
|
f"python simulation-gazebo "
|
|
f"--world {world} "
|
|
f"--model_download_source {model_download_source} "
|
|
f"--model_store {model_store} "
|
|
)
|
|
|
|
if interactive:
|
|
command += "--interactive "
|
|
if overwrite:
|
|
command += "--overwrite "
|
|
if dryrun:
|
|
command += "--dryrun "
|
|
|
|
subprocess.run(command, shell=True, check=True)
|
|
try:
|
|
assert os.path.exists(output_directory)
|
|
except AssertionError:
|
|
print(f"Output directory not generated correctly: {model_download_source}")
|
|
|
|
finally:
|
|
#Clean up
|
|
parent_dir = "~/.simulation-gazebo"
|
|
parent_dir = os.path.expanduser(parent_dir)
|
|
os.system(f"rm -r {parent_dir}")
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize("world, model_download_source, model_store, interactive, overwrite, dryrun",[
|
|
|
|
# Default directory does not exist
|
|
("default", "https://github.com/PX4/PX4-gazebo-models/archive/refs/heads/main.zip", "~/.simulation-gazebo", False, False, True),
|
|
("default", "https://github.com/PX4/PX4-gazebo-models/archive/refs/heads/main.zip", "~/.simulation-gazebo", False, True, True),
|
|
("default", "https://github.com/PX4/PX4-gazebo-models/archive/refs/heads/main.zip", "~/.simulation-gazebo", True, False, True),
|
|
("default", "https://github.com/PX4/PX4-gazebo-models/archive/refs/heads/main.zip", "~/.simulation-gazebo", True, True, True)
|
|
|
|
])
|
|
def test_model_not_exist_default(world, interactive, model_download_source, model_store, overwrite, dryrun):
|
|
"""
|
|
Test model generation
|
|
"""
|
|
model_store = os.path.expanduser(model_store)
|
|
|
|
parent_dir = "~/.simulation-gazebo"
|
|
parent_dir = os.path.expanduser(parent_dir)
|
|
try:
|
|
os.system(f"rm -r {parent_dir}")
|
|
except:
|
|
pass
|
|
|
|
output_directory = f"{model_store}/models/x500"
|
|
|
|
command = (
|
|
f"python simulation-gazebo "
|
|
f"--world {world} "
|
|
f"--model_download_source {model_download_source} "
|
|
f"--model_store {model_store} "
|
|
)
|
|
|
|
if interactive:
|
|
command += "--interactive "
|
|
if overwrite:
|
|
command += "--overwrite "
|
|
if dryrun:
|
|
command += "--dryrun "
|
|
|
|
subprocess.run(command, shell=True, check=True)
|
|
try:
|
|
assert os.path.exists(output_directory)
|
|
except AssertionError:
|
|
print(f"Output directory not generated correctly: {model_download_source}")
|
|
|
|
finally:
|
|
##Clean up
|
|
os.system(f"rm -r {parent_dir}")
|
|
|
|
|
|
|
|
@pytest.mark.parametrize("world, model_download_source, model_store, interactive, overwrite, dryrun",[
|
|
# Custom directory already exists
|
|
("default", "https://github.com/PX4/PX4-gazebo-models/archive/refs/heads/main.zip", "~/simulation-gz-custom-test", False, False, True),
|
|
("default", "https://github.com/PX4/PX4-gazebo-models/archive/refs/heads/main.zip", "~/simulation-gz-custom-test", False, True, True),
|
|
("default", "https://github.com/PX4/PX4-gazebo-models/archive/refs/heads/main.zip", "~/simulation-gz-custom-test", True, False, True),
|
|
("default", "https://github.com/PX4/PX4-gazebo-models/archive/refs/heads/main.zip", "~/simulation-gz-custom-test", True, True, True)
|
|
])
|
|
def test_model_exist_custom(world, interactive, model_download_source, model_store, overwrite, dryrun):
|
|
"""
|
|
Test model generation
|
|
"""
|
|
# Ensure directory exists and has mockfile in it
|
|
model_store = os.path.expanduser(model_store)
|
|
if not os.path.exists(model_store):
|
|
os.makedirs(model_store)
|
|
|
|
mock_file_path = os.path.join(model_store, "mock_file.txt")
|
|
with open(mock_file_path, "w") as f:
|
|
f.write("This is a mock file")
|
|
|
|
output_directory = f"{model_store}/models/x500"
|
|
|
|
command = (
|
|
f"python simulation-gazebo "
|
|
f"--world {world} "
|
|
f"--model_download_source {model_download_source} "
|
|
f"--model_store {model_store} "
|
|
)
|
|
|
|
if interactive:
|
|
command += "--interactive "
|
|
if overwrite:
|
|
command += "--overwrite "
|
|
if dryrun:
|
|
command += "--dryrun "
|
|
|
|
subprocess.run(command, shell=True, check=True)
|
|
try:
|
|
assert os.path.exists(output_directory)
|
|
except AssertionError:
|
|
print(f"Output directory not generated correctly: {model_download_source}")
|
|
|
|
finally:
|
|
#Clean up
|
|
parent_dir = "~/simulation-gz-custom-test"
|
|
parent_dir = os.path.expanduser(parent_dir)
|
|
os.system(f"rm -r {parent_dir}")
|
|
|
|
|
|
|
|
@pytest.mark.parametrize("world, model_download_source, model_store, interactive, overwrite, dryrun",[
|
|
# Custom directory does not exist
|
|
("default", "https://github.com/PX4/PX4-gazebo-models/archive/refs/heads/main.zip", "~/simulation-gz-custom-test", False, False, True),
|
|
("default", "https://github.com/PX4/PX4-gazebo-models/archive/refs/heads/main.zip", "~/simulation-gz-custom-test", False, True, True),
|
|
("default", "https://github.com/PX4/PX4-gazebo-models/archive/refs/heads/main.zip", "~/simulation-gz-custom-test", True, False, True),
|
|
("default", "https://github.com/PX4/PX4-gazebo-models/archive/refs/heads/main.zip", "~/simulation-gz-custom-test", True, True, True)
|
|
])
|
|
def test_model_not_exist_custom(world, interactive, model_download_source, model_store, overwrite, dryrun):
|
|
"""
|
|
Test model generation
|
|
"""
|
|
model_store = os.path.expanduser(model_store)
|
|
|
|
parent_dir = "~/simulation-gz-custom-test"
|
|
parent_dir = os.path.expanduser(parent_dir)
|
|
try:
|
|
os.system(f"rm -r {parent_dir}")
|
|
except:
|
|
pass
|
|
|
|
|
|
output_directory = f"{model_store}/models/x500"
|
|
|
|
command = (
|
|
f"python simulation-gazebo "
|
|
f"--world {world} "
|
|
f"--model_download_source {model_download_source} "
|
|
f"--model_store {model_store} "
|
|
)
|
|
|
|
if interactive:
|
|
command += "--interactive "
|
|
if overwrite:
|
|
command += "--overwrite "
|
|
if dryrun:
|
|
command += "--dryrun "
|
|
|
|
subprocess.run(command, shell=True, check=True)
|
|
try:
|
|
assert os.path.exists(output_directory)
|
|
except AssertionError:
|
|
print(f"Output directory not generated correctly: {model_download_source}")
|
|
|
|
finally:
|
|
#Clean up
|
|
os.system(f"rm -r {parent_dir}")
|
|
|