|
1
|
|
|
# -*- coding: utf-8 -*- |
|
2
|
|
|
from dvnv.dvnv import run_scripts |
|
3
|
|
|
|
|
4
|
|
|
SHEBANG = "#!/usr/bin/env bash" |
|
5
|
|
|
|
|
6
|
|
|
|
|
7
|
|
|
class TestRunScripts: |
|
8
|
|
|
"""Tests for run_scripts""" |
|
9
|
|
|
|
|
10
|
|
|
def test_non_executable(self, capsys, tmp_path): |
|
11
|
|
|
"""Assert that a non-executable file will be logged to stderr""" |
|
12
|
|
|
script_dir = tmp_path / "scripts" |
|
13
|
|
|
script_dir.mkdir(parents=True) |
|
14
|
|
|
nonexecutable = script_dir / "nonexecutable" |
|
15
|
|
|
with nonexecutable.open("w") as file: |
|
16
|
|
|
file.write(f"{SHEBANG}\necho 'hello'") |
|
17
|
|
|
assert run_scripts(script_dir, "python", "test") is True |
|
18
|
|
|
captured = capsys.readouterr() |
|
19
|
|
|
assert captured.err == "[WARN] 'nonexecutable' is not executable! Skipping.\n" |
|
20
|
|
|
|
|
21
|
|
|
def test_failure(self, tmp_path): |
|
22
|
|
|
"""Test case where a command in a script is not found""" |
|
23
|
|
|
script_dir = tmp_path / "scripts" |
|
24
|
|
|
script_dir.mkdir(parents=True) |
|
25
|
|
|
invalid_command = script_dir / "invalid_command" |
|
26
|
|
|
with invalid_command.open("w") as file: |
|
27
|
|
|
file.write(f"{SHEBANG}\nfake_command") |
|
28
|
|
|
invalid_command.chmod(0o111) |
|
29
|
|
|
assert run_scripts(script_dir, "python", "test") is False |
|
30
|
|
|
|
|
31
|
|
|
def test_success(self, capsys, tmp_path): |
|
32
|
|
|
"""Test case for success""" |
|
33
|
|
|
script_dir = tmp_path / "scripts" |
|
34
|
|
|
script_dir.mkdir(parents=True) |
|
35
|
|
|
valid_command = script_dir / "hello" |
|
36
|
|
|
with valid_command.open("w") as file: |
|
37
|
|
|
file.write(f"{SHEBANG}\necho 'hello!'") |
|
38
|
|
|
valid_command.chmod(0o777) |
|
39
|
|
|
assert run_scripts(script_dir, "python", "test") is True |
|
40
|
|
|
captured = capsys.readouterr() |
|
41
|
|
|
assert captured.out == "Running 'hello'...\n" |
|
42
|
|
|
|