Attention : Dieser Code erfordert Administratorrechte.
Das Skript initialisiert ein Arbeitsverzeichnis und klont das Repository `https://github.com/sasjs/core` hinein. Anschließend führt es eine Reihe von Dateivorgängen aus: Erstellung einer neuen Datei (`somefile.txt`), Änderung des Inhalts einer vorhandenen Datei (`readme.md`) und Löschen einer anderen (`package.json`). Nach diesen Änderungen wird das Makro `mp_gitstatus` verwendet, um zu überprüfen, ob drei Dateien 'unstaged' sind. Anschließend wird das Makro `mp_gitadd` verwendet, um diese Änderungen zu 'stagen', und schließlich wird der Git-Status erneut überprüft, um sicherzustellen, dass die drei Dateien jetzt 'staged' sind, wobei Assertions (`mp_assert`) verwendet werden, um jeden Schritt des Prozesses zu validieren.
Datenanalyse
Type : MIXTE
Das Skript interagiert mit einer externen Quelle, indem es das Git-Repository `https://github.com/sasjs/core` klont. Es erstellt auch temporäre interne Datensätze (`work.gitstatus`, `work.gitstatus2`), um die Ergebnisse der Git-Befehle zu speichern, und `work.test_results` für die Assertions der Unit-Tests.
1 Codeblock
MACRO CALL / SYSCALL
Erklärung : Dieser Block initialisiert die Makrovariable `dir` mit dem Pfad eines Unterverzeichnisses 'core', das im SAS-Arbeitsverzeichnis erstellt wird. Anschließend wird die Funktion `GITFN_CLONE` verwendet, um das Git-Repository `https://github.com/sasjs/core` in das durch `&dir` angegebene Verzeichnis zu klonen. Dieser Vorgang ist eine direkte Interaktion mit dem Dateisystem und einem externen Git-Dienst.
Kopiert!
%let dir = %sysfunc(pathname(work))/core;
%put source clone rc=%sysfunc(GITFN_CLONE(https://github.com/sasjs/core,&dir));
Erklärung : Diese SASJS-Makroaufrufe simulieren Änderungen im geklonten Repository: `mf_writefile` wird verwendet, um eine neue Datei (`somefile.txt`) mit Inhalt zu erstellen und den Inhalt einer vorhandenen Datei (`readme.md`) zu ändern. Das Makro `mf_deletefile` löscht eine vorhandene Datei (`package.json`). Diese Aktionen sind direkte Dateisystemmanipulationen, um die zu testenden Änderungen mit Git-Befehlen vorzubereiten.
Erklärung : Dieser Block verwendet das Makro `mp_gitstatus`, um den aktuellen Status der Dateien im Git-Repository (`&dir`) abzurufen und die Ergebnisse im temporären Datensatz `work.gitstatus` zu speichern. Eine `PROC SQL` zählt anschließend die Anzahl der nicht 'staged' Dateien (wobei die Spalte 'staged' 'FALSE' ist) und speichert das Ergebnis in der Makrovariable `test1`. Schließlich wird das Makro `mp_assert` verwendet, um zu überprüfen, ob diese Anzahl 3 beträgt, wodurch bestätigt wird, dass die vorherigen Änderungen von Git korrekt als nicht 'staged' erkannt werden.
Kopiert!
%mp_gitstatus(&dir,outds=work.gitstatus)
%let test1=0;
proc sql noprint;
select count(*) into: test1 from work.gitstatus where staged='FALSE';
%mp_assert(
iftrue=(&test1=3),
desc=3 changes are ready to add,
outds=work.test_results
)
1
%mp_gitstatus(&dir,outds=work.gitstatus)
2
3
%let test1=0;
4
PROC SQL noprint;
5
select count(*) into: test1 from work.gitstatus where staged='FALSE';
6
7
%mp_assert(
8
iftrue=(&test1=3),
9
desc=3 changes are ready to add,
10
outds=work.test_results
11
)
4 Codeblock
MACRO CALL
Erklärung : Das Makro `mp_gitadd` wird aufgerufen, um die geänderten Dateien (identifiziert durch den Datensatz `work.gitstatus`) zum Staging-Bereich von Git in dem durch `&dir` angegebenen Repository hinzuzufügen. Der Parameter `mdebug=&sasjs_mdebug` aktiviert möglicherweise den Debug-Modus für das Makro.
Erklärung : Nach dem Hinzufügevorgang ruft dieser Block `mp_gitstatus` erneut auf, um den neuen Status der Dateien im Repository (`&dir`) abzurufen und die Ergebnisse im temporären Datensatz `work.gitstatus2` zu speichern. Eine zweite `PROC SQL` zählt die Dateien, deren Spalte 'staged' 'TRUE' ist (d.h. die 'staged' Dateien) und speichert das Ergebnis in `test2`. Das Makro `mp_assert` wird verwendet, um zu bestätigen, dass 3 Dateien nun 'staged' sind, wodurch der Erfolg des `mp_gitadd`-Vorgangs validiert wird.
Kopiert!
%mp_gitstatus(&dir,outds=work.gitstatus2)
%let test2=0;
proc sql noprint;
select count(*) into: test2 from work.gitstatus2 where staged='TRUE';
%mp_assert(
iftrue=(&test2=3),
desc=3 changes were added,
outds=work.test_results
)
1
%mp_gitstatus(&dir,outds=work.gitstatus2)
2
%let test2=0;
3
PROC SQL noprint;
4
select count(*) into: test2 from work.gitstatus2 where staged='TRUE';
5
6
%mp_assert(
7
iftrue=(&test2=3),
8
desc=3 changes were added,
9
outds=work.test_results
10
)
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.