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
500 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!

source:stackoverflow.com
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