{
 "number": 35834,
 "repo": "bitcoin/bitcoin",
 "url": "https://github.com/bitcoin/bitcoin/pull/35834",
 "title": "Test checkunparsable errors",
 "author": "Herb-ops",
 "author_association": "FIRST_TIME_CONTRIBUTOR",
 "created_at": "2026-07-29T12:44:22Z",
 "updated_at": "2026-09-09T11:38:32Z",
 "age_days": 50,
 "draft": false,
 "labels": [
  "Needs rebase"
 ],
 "milestone": null,
 "base": "master",
 "head_sha": "3e1d0ee5e3d1a73af49289a5715c81d8ad53f488",
 "head_ref": "test-checkunparsable-errors",
 "head_repo": "Herb-ops/bitcoin",
 "head_history": [],
 "additions": 18,
 "deletions": 12,
 "changed_files": 1,
 "commit_count": 2,
 "size_bucket": "S",
 "mergeable_state": "dirty",
 "bot": {
  "drahtbot": {
   "present": true,
   "reviews": {},
   "conflicts": [
    {
     "number": 35445,
     "title": "wallet, descriptor: Revert `StringType::COMPAT` for Miniscript expressions and drop the concept of a Descriptor ID that can be validated",
     "author": "achow101"
    }
   ]
  }
 },
 "acks_parsed": {},
 "acks_tally": {
  "ack": 0,
  "stale_ack": 0,
  "concept_ack": 0,
  "approach_ack": 0,
  "nack": 0,
  "concept_nack": 0,
  "approach_nack": 0
 },
 "reviews": {
  "approved": 0,
  "changes_requested": 0,
  "distinct_reviewers": []
 },
 "signals": {
  "needs_rebase": true,
  "ci_failed": false,
  "mergeable_state": "dirty",
  "last_author_activity": "2026-07-29T12:38:38Z",
  "last_reviewer_activity": null,
  "last_reviewer": null,
  "author_silent_days": 50,
  "waiting_on_author_days": 0,
  "days_since_update": 8
 },
 "refs": {
  "mentioned": [],
  "depends_on": [],
  "fixes": [],
  "linked_issues": [],
  "references": [],
  "conflicts": [
   35445
  ]
 },
 "stack": {
  "shares_commits_with": [],
  "based_on": [],
  "base_for": []
 },
 "review_paths": [],
 "body": "`CheckUnparsable` parses both a private-form descriptor and its corresponding public-form descriptor. The helper previously reused one error string for both parses.\n\nThe public parse therefore overwrote the private parse\u2019s error. Although the helper verified that both parses failed, its exact error assertion only checked the error produced by the public parse. An incorrect private-form error could consequently go undetected.\n\n## Changes\n\n- Store the private and public parse errors separately.\n- Check the exact private error when a private-form descriptor is provided.\n- Continue checking the exact public error.\n- Add an overload that accepts different expected private and public errors.\n- Preserve the existing three-argument interface for cases where both errors should match.\n- Update the affected test cases with their existing private-form errors.\n\nThis also corrects a raw descriptor test whose private input used `raw(...)` while its public input mistakenly used `sh(...)`. Both inputs now use `raw(...)`, with `Raw script is not hex` as the expected error.\n\nThis PR only changes test code and does not affect production descriptor parsing.",
 "commits": [
  {
   "sha": "f49f433352919865a42b851042fc376be1efc0b4",
   "date": "2026-07-29T12:38:38Z",
   "message": "test: Fix public descriptor in raw() unparsable test"
  },
  {
   "sha": "3e1d0ee5e3d1a73af49289a5715c81d8ad53f488",
   "date": "2026-07-29T12:38:38Z",
   "message": "test: Check private errors in CheckUnparsable"
  }
 ],
 "timeline": [],
 "labels_log": [
  {
   "t": "2026-08-05T22:56:54Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-08-17T11:08:29Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-09-09T11:38:31Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  }
 ],
 "state_log": [],
 "text_chars": 1280,
 "text_tokens_estimate": 320,
 "changed_paths": [
  "src/test/descriptor_tests.cpp"
 ],
 "files": [
  {
   "path": "src/test/descriptor_tests.cpp",
   "add": 18,
   "del": 12
  }
 ],
 "test_lines": 30,
 "git": {
  "head": "3e1d0ee5e3d1a73af49289a5715c81d8ad53f488",
  "head_matches_backup": true,
  "base": "fd7d4f29704cc8735d17870733e0dca261e4b579",
  "commits": [
   {
    "sha": "f49f433352",
    "subject": "test: Fix public descriptor in raw() unparsable test",
    "files": 1,
    "add": 1,
    "del": 1
   },
   {
    "sha": "3e1d0ee5e3",
    "subject": "test: Check private errors in CheckUnparsable",
    "files": 1,
    "add": 17,
    "del": 11
   }
  ],
  "patch_truncated": false
 },
 "input_hash": "2227cece66e14118",
 "extracted_at": "2026-09-17T16:15:31+00:00"
}