← Back to issue list

Platform names should not be allowed to contain `/` characters

View original Github issue

Metadata

Project
craft-application
Number
#941
Type
issue
State
closed
Author
lengau
Labels
Status: Triaged Type: Bug
Created
Updated
Closed

Current evaluation

Platform names containing '/' are now rejected during model validation, preventing packing failures. Resolved by canonical/craft-application#947 in commit f7f3b1ff.

Resolution: closed resolved

Reason: PR #947 was merged with commit f7f3b1ff, adding validation that rejects platform names containing '/' before packaging can fail.

Evaluated by: mr-cal-bot

No scores available.

Issue body

### Bug Description Currently we allow `/` characters in platform names, but then packing the file fails. We should just ban them. ### To Reproduce Pack the file below with testcraft ### part yaml ```shell name: testerton version: "0.1" base: ubuntu@25.10 platforms: "a/b/c": build-on: [amd64, arm64, ppc64el, s390x, riscv64] build-for: [all] parts: my-test: plugin: nil ``` ### Relevant log output ```shell 2025-10-15 14:52:47.973 Updating project model with {'version': '0.1'}. 2025-10-15 14:52:47.974 Packing... 2025-10-15 14:52:47.983 testcraft internal error: FileNotFoundError(2, 'No such file or directory') 2025-10-15 14:52:47.984 Traceback (most recent call last): 2025-10-15 14:52:47.984 File "/home/lengau/Work/Code/craft-application/craft_application/application.py", line 669, in run 2025-10-15 14:52:47.985 return_code = self._run_inner() 2025-10-15 14:52:47.985 ^^^^^^^^^^^^^^^^^ 2025-10-15 14:52:47.985 File "/home/lengau/Work/Code/craft-application/craft_application/application.py", line 646, in _run_inner 2025-10-15 14:52:47.985 return_code = dispatcher.run() or os.EX_OK 2025-10-15 14:52:47.985 ^^^^^^^^^^^^^^^^ 2025-10-15 14:52:47.985 File "/home/lengau/Work/Code/craft-application/.venv/lib/python3.12/site-packages/craft_cli/dispatcher.py", line 564, in run 2025-10-15 14:52:47.985 return self._loaded_command.run(self._parsed_command_args) 2025-10-15 14:52:47.985 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-10-15 14:52:47.985 File "/home/lengau/Work/Code/craft-application/craft_application/commands/base.py", line 222, in run 2025-10-15 14:52:47.985 result = self._run(parsed_args, **kwargs) or result 2025-10-15 14:52:47.985 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-10-15 14:52:47.985 File "/home/lengau/Work/Code/craft-application/craft_application/commands/lifecycle.py", line 620, in _run 2025-10-15 14:52:47.985 return self._run_real(parsed_args=parsed_args, step_name=step_name) 2025-10-15 14:52:47.985 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-10-15 14:52:47.985 File "/home/lengau/Work/Code/craft-application/craft_application/commands/lifecycle.py", line 460, in _run_real 2025-10-15 14:52:47.985 packages = self._services.package.pack( 2025-10-15 14:52:47.985 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-10-15 14:52:47.985 File "/home/lengau/Work/Code/craft-application/testcraft/services/package.py", line 46, in pack 2025-10-15 14:52:47.985 with tarfile.open(dest / tarball_name, mode="w:xz") as tar: 2025-10-15 14:52:47.985 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-10-15 14:52:47.985 File "/home/lengau/.local/share/uv/python/cpython-3.12.11-linux-x86_64-gnu/lib/python3.12/tarfile.py", line 1872, in open 2025-10-15 14:52:47.985 return func(name, filemode, fileobj, **kwargs) 2025-10-15 14:52:47.985 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-10-15 14:52:47.985 File "/home/lengau/.local/share/uv/python/cpython-3.12.11-linux-x86_64-gnu/lib/python3.12/tarfile.py", line 1980, in xzopen 2025-10-15 14:52:47.985 fileobj = LZMAFile(fileobj or name, mode, preset=preset) 2025-10-15 14:52:47.985 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-10-15 14:52:47.985 File "/home/lengau/.local/share/uv/python/cpython-3.12.11-linux-x86_64-gnu/lib/python3.12/lzma.py", line 120, in __init__ 2025-10-15 14:52:47.985 self._fp = builtins.open(filename, mode) 2025-10-15 14:52:47.985 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-10-15 14:52:47.986 FileNotFoundError: [Errno 2] No such file or directory: 'testerton-0.1-a/b/c.testcraft' 2025-10-15 14:52:47.986 Full execution log: '/home/lengau/.local/state/testcraft/log/testcraft-20251015-145247.799819.log' ```

Evaluation history

Date Model Scores Action Summary
stealth/space-bunny-alpha — closed resolved Platform names containing '/' are now rejected during model validation, preventing packing failures. Resolved by canonical/craft-application#947 in commit f7f3b1ff.
stealth/space-bunny-alpha — closed resolved Platform-name slash validation merged in canonical/craft-application#947 (f7f3b1ff), resolving #941 by rejecting platform names containing "/".
stealth/space-bunny-alpha — closed resolved Fixed in craft-application by merged PR #947 (commit f7f3b1ff), preventing platform names containing '/'.
qwen/qwen3.6-35b-a3b — — Closed without a direct fix. The platform name slash character bug causing packing failures was tracked externally via Jira ticket CRAFT-4876. No pull requests or code changes were merged to resolve the issue.
qwen/qwen3.6-35b-a3b — — Fixed by adding validation to ban forward slashes in platform names, preventing the FileNotFoundError during packing. The bug was triaged and closed after the maintainer reported the issue.
qwen/qwen3.6-35b-a3b — — Closed without a visible fix or merge. The issue was tracked externally via Jira ticket CRAFT-4876 to address packing failures caused by slash characters in platform names.

Update history

No update history recorded yet.

Related work

Related issues

Issue Project State Summary Similarity
#947 feat!(platforms): prevent use of '/' in platform names craft-application merged Merged PR #947 as commit f7f3b1ff, adding validation that rejects platform names containing "/" and fixing #941 (CRAFT-4876).
75%