Derzeit mache ich einige Unit-Tests, die von Bash ausgeführt werden. Unit-Tests werden in einem Bash-Skript initialisiert, ausgeführt und bereinigt. Dieses Skript enthält normalerweise die Funktionen init(), execute() und cleanup(). Aber sie sind nicht zwingend erforderlich. Ich würde gerne testen, ob sie definiert sind oder nicht.
Ich habe dies bisher durch Greping und Seding des Quelltextes gemacht, aber es schien falsch zu sein. Gibt es einen eleganteren Weg, dies zu tun?
Edit: Das folgende Sniplet funktioniert wie ein Zauber:
fn_exists()
{
LC_ALL=C type $1 | grep -q 'shell function'
}
0 Stimmen
Danke. Ich habe dies verwendet, um beim Laden einer Shell-Bibliothek bedingte Stubbed-Out-Versionen von Funktionen zu definieren.
fn_exists foo || foo() { :; }
2 Stimmen
Sie können den Grep speichern, indem Sie
type -t
y==
.0 Stimmen
Funktioniert nicht, wenn das Gebietsschema nicht Englisch ist.
type test_function
sagttest_function on funktio.
bei Verwendung des finnischen Gebietsschemas undist eine Funktion
wenn Sie Deutsch verwenden.3 Stimmen
Für nicht-englische Sprachumgebungen
LC_ALL=C
zur Resque