Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Validate CI environment JSON objects before accessing their fields

Đang mở Phù hợp với người mới
#856 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
78/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
python
Lĩnh vực
ci-cd

Hướng nghiên cứu

Bắt đầu từ phần giải mã môi trường trong tools/ci/common.py quanh dòng 536, sau đó tìm các bài kiểm thử tập trung cho cấu hình CI và đầu vào không hợp lệ. Kiểm tra cách WAVE_RELEASE_INPUTS và WAVE_CI_MATRIX được giải mã, cũng như cách quy ước CI configuration error/mã thoát 2 hiện có được kiểm thử. Hoàn tất khi các kiểu đối tượng JSON không hợp lệ gây lỗi mà không có traceback hoặc lệnh runner/provisioning, còn các biến bị thiếu, {} và JSON sai định dạng vẫn giữ nguyên hành vi được chỉ định.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

bug good first issue

Problem

tools.ci.common.main parses WAVE_RELEASE_INPUTS and immediately calls .items() without checking its JSON type. A valid JSON array, string or null produces a Python traceback instead of a configuration error. WAVE_CI_MATRIX also coerces falsy non-objects to an empty object before its type check.

Starting point: environment decoding.

Reproduction

Executed at 7a8361d5c10ec3e66fc9fe4a5801622afb6bf631 on Linux amd64 with Python 3.14:

WAVE_RELEASE_INPUTS='[]' python3 -m tools.ci.test --target linux-amd64 --report-json /tmp/wave-invalid-config.json

Observed: exit 1 and AttributeError: 'list' object has no attribute 'items' at the inputs.items() expression. No build or provisioning stage ran.

Scope

Validate both environment values as JSON objects before runner/stage work. Reuse the existing CI configuration error/exit-2 convention. Keep omitted values and explicit empty objects supported. Difficulty: easy.

Completion criteria

  • Arrays, strings, numbers, booleans and null fail with an actionable configuration error, without a traceback.
  • Missing variables and {} remain valid; malformed JSON is still rejected.
  • Focused tests assert no commands/provisioning occur for invalid inputs, including falsy non-objects.
Ngôn ngữ chính
Rust
Star
56
Fork
21
Merge trung bình
4 giờ 19 phút
Pull request đã merge (30 ngày)
49

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của wavefnd/Wave

Tất cả issue của wavefnd/Wave

Issue tương tự

Thêm issue về Rust

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.