Publié le :

Test d'ajout de fichiers Git (mp_gitadd)

Ce code est également disponible en : Deutsch English Español
En attente de validation
Attention : Ce code nécessite des droits administrateur.
Le script initialise un répertoire de travail, clone le dépôt `https://github.com/sasjs/core` dedans. Il effectue ensuite une série d'opérations sur les fichiers : création d'un nouveau fichier (`somefile.txt`), modification du contenu d'un fichier existant (`readme.md`), et suppression d'un autre (`package.json`). Après ces modifications, il utilise la macro `mp_gitstatus` pour vérifier que trois fichiers sont 'unstaged'. Il utilise ensuite la macro `mp_gitadd` pour stager ces changements, et enfin, il vérifie à nouveau le statut Git pour s'assurer que les trois fichiers sont maintenant 'staged', utilisant des assertions (`mp_assert`) pour valider chaque étape du processus.
Analyse des données

Type : MIXTE


Le script interagit avec une source externe en clonant le dépôt Git `https://github.com/sasjs/core`. Il crée également des jeux de données internes temporaires (`work.gitstatus`, `work.gitstatus2`) pour stocker les résultats des commandes Git et `work.test_results` pour les assertions des tests unitaires.

1 Bloc de code
MACRO CALL / SYSCALL
Explication :
Ce bloc initialise la macro-variable `dir` avec le chemin d'un sous-répertoire 'core' créé dans le répertoire de travail SAS. Il utilise ensuite la fonction `GITFN_CLONE` pour cloner le dépôt Git `https://github.com/sasjs/core` dans ce répertoire spécifié par `&dir`. Cette opération est une interaction directe avec le système de fichiers et un service externe Git.
Copié !
1%let dir = %sysfunc(pathname(work))/core;
2%put
3SOURCE clone rc=%sysfunc(GITFN_CLONE(https://github.com/sasjs/core,&dir));
4 
2 Bloc de code
MACRO CALL Data
Explication :
Ces appels de macro SASJS simulent des modifications dans le dépôt cloné : `mf_writefile` est utilisée pour créer un nouveau fichier (`somefile.txt`) avec du contenu et pour modifier le contenu d'un fichier existant (`readme.md`). La macro `mf_deletefile` supprime un fichier existant (`package.json`). Ces actions sont des manipulations directes du système de fichiers pour préparer les changements à tester avec les commandes Git.
Copié !
1%mf_writefile(&dir/somefile.txt,l1=some content)
2%mf_writefile(&dir/readme.md,l1=new readme)
3%mf_deletefile(&dir/package.json)
3 Bloc de code
MACRO CALL / PROC SQL Data
Explication :
Ce bloc utilise la macro `mp_gitstatus` pour obtenir le statut actuel des fichiers dans le dépôt Git (`&dir`) et stocke les résultats dans le jeu de données temporaire `work.gitstatus`. Une `PROC SQL` compte ensuite le nombre de fichiers non stagés (où la colonne 'staged' est 'FALSE') et stocke le résultat dans la macro-variable `test1`. Enfin, la macro `mp_assert` est utilisée pour vérifier que ce nombre est bien de 3, confirmant que les modifications précédentes sont correctement détectées comme non stagées par Git.
Copié !
1%mp_gitstatus(&dir,outds=work.gitstatus)
2 
3%let test1=0;
4PROC SQL noprint;
5select 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 Bloc de code
MACRO CALL
Explication :
La macro `mp_gitadd` est appelée pour ajouter les fichiers modifiés (identifiés par le jeu de données `work.gitstatus`) au staging area de Git dans le dépôt spécifié par `&dir`. Le paramètre `mdebug=&sasjs_mdebug` active potentiellement le mode débogage pour la macro.
Copié !
1%mp_gitadd(&dir,inds=work.gitstatus,mdebug=&sasjs_mdebug)
5 Bloc de code
MACRO CALL / PROC SQL Data
Explication :
Après l'opération d'ajout, ce bloc appelle à nouveau `mp_gitstatus` pour obtenir le nouveau statut des fichiers dans le dépôt (`&dir`), stockant les résultats dans le jeu de données temporaire `work.gitstatus2`. Une seconde `PROC SQL` compte les fichiers dont la colonne 'staged' est 'TRUE' (c'est-à-dire les fichiers stagés) et stocke le résultat dans `test2`. La macro `mp_assert` est utilisée pour confirmer que 3 fichiers sont maintenant 'staged', validant ainsi le succès de l'opération `mp_gitadd`.
Copié !
1%mp_gitstatus(&dir,outds=work.gitstatus2)
2%let test2=0;
3PROC SQL noprint;
4select 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)
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.