feat: Mod - Adding test harness to Mod Api to make it easier to write tests and have agent verify mod works
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 35/100
- Tipo de issue
- Funcionalidade
- Clareza
- Precisa de esclarecimento
- Status de atividade
- Pouca atividade
- Stack de tecnologia
- node.js, typescript
- Domínio
- cli, developer-experience, testing
Direção de pesquisa
Comece revisando a Mod API e a skill th-mod-builder e, em seguida, compare os comandos Node de exemplo na issue com o workflow atual do mod. Defina o que o harness deve abranger, como ele deve ser executado manualmente ou por meio do agente e como devem ser o carregamento bem-sucedido do módulo e as verificações da saída; nenhum arquivo de implementação ou teste específico foi identificado.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Summary
When writing and iterating on a mod, I find the the model will write a temp script which imports some of the mod functions to test the output and if it works properly, for example:
xecute Shell Command
Command Code needs to execute node --experimental-strip-types --no-warnings -e "
Promise.all([
import('./.commandcode/mods/erd.ts'),
import('./.commandcode/mods/erd/markdown.ts'),
import('./.commandcode/mods/erd/renderer.ts'),
import('./.commandcode/mods/erd/commands.ts'),
import('./.commandcode/mods/erd/tools.ts'),
]).then(() => { console.log('ALL MODULES LOAD OK'); }).catch(e => { console.error('FAIL', e); process.exit(1); });
" 2>&1 | head -20.
Press [ctrl+e] to explain this command
❯ 1. Yes
Some are more involved and check output not just if load.
Execute Shell Command
Command Code needs to execute node --experimental-strip-types --no-warnings -e "
const fs = require('fs');
Promise.all([
import('./.commandcode/mods/erd/parser.ts'),
import('./.commandcode/mods/erd/queries.ts'),
import('./.commandcode/mods/erd/markdown.ts'),
]).then(([p, q, md]) => {
const sql = fs.readFileSync('schema/schema.sql', 'utf8');
const schema = p.parseSchema(sql, 'sqlite');
console.log('listTables →', md.renderMarkdown(q.listTables(schema)).length, 'lines');
console.log('listIndexes →', md.renderMarkdown(q.listIndexes(schema)).length, 'lines');
console.log('listForeignKeys →', md.renderMarkdown(q.listForeignKeys(schema)).length, 'lines');
console.log('findColumn →', md.renderMarkdown(q.findColumn(schema, 'id')).length, 'lines');
console.log('schemaSummary →', md.renderMarkdown(q.schemaSummary(schema, 'sqlite')).length, 'lines');
console.log('describeTable →', md.renderMarkdown(q.describeTable(schema, 'users', 'sqlite')).length, 'lines');
console.log('ALL QUERY FUNCTIONS RENDER CLEANLY');
}).catch(e => { console.error('FAIL', e); process.exit(1); });
" 2>&1 | head -20.
Press [ctrl+e] to explain this command
❯ 1. Yes
2. Yes, don't ask again for this exact command in this project
3. No, tell Command Code what to do differently
Expected Behavior
Would be useful as mods get more complex an refactor to have a proper test harness or suite like vitest that can be run easily manually or within agent as part of th mod-builder skill.
Actual Behavior
Mode has to cobble together one off scripts and runs that have to be permitted each Tim since the command is unique often per run so hard to write permissions to allow.
Can see from example above the shell command on-line a script and not sure I'd want to permit blanket node --experimental-strip-types --no-warnings -e allow permissions here.
Steps to reproduce the issue
- build mod
- try to test it
Command Code Version
1.7.0
Operating System
macOS
Terminal/IDE
ghostty
Shell
zsh
Additional context
No response
- Linguagem predominante
- Sem dados de linguagem
- Estrelas
- 4k
- Forks
- 350
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Guia de contribuição
Nenhum guia de contribuição indexado para este repositório
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de CommandCodeAI/command-code
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
CommandCodeAI/command-code#855 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
CommandCodeAI/command-code#841 · 1 comentário ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
CommandCodeAI/command-code#655 · 1 comentário ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
CommandCodeAI/command-code#608 ·
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 70/100
CommandCodeAI/command-code#893 ·
Todas as issues de CommandCodeAI/command-code
Issues semelhantes
-
Accept -c in more positions Abertaarea: compat bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
-
area: dogs bug priority: P3 silent failure test-code
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
phoenixframework/phoenix#6847 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
hust-open-atom-club/hustmirror-cli#52 · 1 comentário ·