Skip to content

Commit ae3a56b

Browse files
wip: testing things
1 parent b8824a6 commit ae3a56b

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

gitlab/cli.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import argparse
22
import functools
33
import os
4+
import pathlib
45
import re
56
import sys
67
import textwrap
@@ -299,11 +300,15 @@ def _parse_value(v: Any) -> Any:
299300
if isinstance(v, str) and v.startswith("@"):
300301
# If the user-provided value starts with @, we try to read the file
301302
# path provided after @ as the real value. Exit on any error.
303+
filepath = pathlib.Path(v[1:]).expanduser().resolve()
302304
try:
303-
with open(v[1:], encoding="utf-8") as f:
305+
with open(filepath, encoding="utf-8") as f:
304306
return f.read()
305-
except Exception as e:
306-
sys.stderr.write(f"{e}\n")
307+
except UnicodeDecodeError:
308+
with open(filepath, "rb") as f:
309+
return f.read()
310+
except (FileNotFoundError, PermissionError) as exc:
311+
sys.stderr.write(f"{exc}\n")
307312
sys.exit(1)
308313

309314
return v

tests/functional/cli/test_cli_v4.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -540,12 +540,15 @@ def test_update_application_settings(gitlab_cli):
540540
assert ret.success
541541

542542

543-
def test_create_project_with_values_from_file(gitlab_cli, tmpdir):
543+
def test_create_project_with_values_from_file(gitlab_cli, fixture_dir, tmpdir):
544544
name = "gitlab-project-from-file"
545545
description = "Multiline\n\nData\n"
546546
from_file = tmpdir.join(name)
547547
from_file.write(description)
548548
from_file_path = f"@{str(from_file)}"
549+
avatar_file = fixture_dir / "avatar.png"
550+
assert avatar_file.exists()
551+
avatar_file_path = f"@{avatar_file}"
549552

550553
cmd = [
551554
"-v",
@@ -555,6 +558,8 @@ def test_create_project_with_values_from_file(gitlab_cli, tmpdir):
555558
name,
556559
"--description",
557560
from_file_path,
561+
"--avatar",
562+
avatar_file_path,
558563
]
559564
ret = gitlab_cli(cmd)
560565

0 commit comments

Comments
 (0)