Maison > développement back-end > Golang > syntaxe golang testscript .txtar pour le texte contenu dans stderr ou stdout

syntaxe golang testscript .txtar pour le texte contenu dans stderr ou stdout

王林
Libérer: 2024-02-12 16:15:05
avant
552 Les gens l'ont consulté

golang testscript .txtar 语法,用于 stderr 或 stdout 中包含的文本

Contenu de la question

J'apprends à utiliser le module https://github.com/rogpeppe/go-internal testscript pour tester les programmes cli.

Quand j'utilise cette ligne dans le fichier .txtar :

stderr /No help topic/gm
Copier après la connexion

...La sortie d'erreur réelle est :

No help topic for 'totalfoobar'
Copier après la connexion

Je reçois une erreur usage: stderr [-count=N] 'pattern'.

J'ai regardé la documentation ici et pour être honnête, c'est difficile à comprendre. Je ne vois aucune explication sur ce que signifie -count=N.

J'ai essayé toutes les variantes ci-dessous :

stderr -count=1 No help topic for 'totalfoobar'
stderr No help topic for 'totalfoobar'
stderr *No help topic*
Copier après la connexion

Quelle que soit la chaîne, l'assertion échoue toujours avec la même erreur.

Q : Comment puis-je obtenir une substring de la sortie totale stderr/stdout pour des tests plus flexibles ?

Solution de contournement

Citer le modèle avec des guillemets simples :

// parse parses a single line as a list of space-separated arguments
// subject to environment variable expansion (but not resplitting).
// Single quotes around text disable splitting and expansion.
// To embed a single quote, double it: 'Don”t communicate by sharing memory.'
func (ts *TestScript) parse(line string) []string
Copier après la connexion

Le résultat est finalement transmis en tant que paramètre args à scriptMatch. L'implémentation de scriptMatch montre qu'elle ne nécessite que args 参数传递给 scriptMatch 最后。 scriptMatch 的实现表明,除了可选的 -count 标志之外,它只需要 1 参数。如果 No help topic1 paramètres en plus de l'indicateur facultatif -count. Si Aucun sujet d'aide n'est cité, il sera analysé en 3

paramètres, ce qui n'est pas comme prévu :

extraUsage := ""
want := 1
// [code truncated]
if len(args) != want {
    ts.Fatalf("usage: %s [-count=N] 'pattern'%s", name, extraUsage)
}
Copier après la connexion

Au fait, le modèle avec lequel il compile est le suivant :

re, err := regexp.Compile(`(?m)` + pattern)
Copier après la connexion
N'oubliez pas que vous devez écrire des expressions régulières en utilisant la syntaxe Go. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal