Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

chatcops test: calls-tool and no-tool-call assertions

Fermée
#412 2 commentaires 0 réactions 1 personne assignée Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@bhushan4work y travaille déjà.

Depuis le 28/10/2026.

  • #446 par @bhushan4work — fusionnée

Évaluation

Cette issue n'a pas encore été évaluée.

Description

enhancement good first issue hacktoberfest testing

Lets an eval check that the bot called the right tool with the right input, or that it called none.

How assertions work
chatcops test (#394, with replays from #395 and the judge from #400) checks each turn's reply with the assertions in the eval file. They're registered by name in ASSERTIONS (packages/cli/src/test/assertions/index.ts:11). Each one is an AssertionCheck (packages/cli/src/test/types.ts): it gets the value from the YAML, the turn's TurnResult (text, toolCalls, sources, leads, usage, costUsd, latencyMs), the conversation so far, and a context with the eval file's path, and returns { pass, reason }. Throw for a bad value (see asStrings in assertions/values.ts), and the runner turns it into a failure with your message. The not- prefix works for every name without extra code.

contains in assertions/text.ts is the reference: one file per kind of assertion, added to the map. Write reasons a person can act on, such as the reply doesn't contain "$19".

What to add (new assertions/tools.ts)

  • calls-tool: a tool name (calls-tool: lookup_order), or { name, args }. args is a partial deep match against the call's input: every key in args has to be there with an equal value, and extra keys in the input are fine. Nested objects match the same way, and arrays have to be equal.
  • no-tool-call: true means the turn called no tool at all. A tool name means it didn't call that one.

The calls are in turn.toolCalls as { name, input }. The reason for a failure should list the calls that did happen, so people see what went wrong.

Acceptance criteria

  • Unit tests: name only, partial args, nested args, a mismatch that lists the actual calls, no-tool-call both ways, bad values
  • An end to end test with a tool mock (see "answers tools from mocks" in test-command.test.ts)
  • Documented in website/src/content/docs/core/testing.mdx, with a changeset for @chatcops/cli (minor)
  • pnpm test:coverage and pnpm lint pass
Langage dominant
TypeScript
Étoiles
13
Forks
7
Merge moyen
3 h 28 min
PR mergées (30 j)
296

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de codercops/chatcops

Toutes les issues de codercops/chatcops

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.