Browse Source

Rector sur Archiviste pour PHP 7.4+

On ignore les librairies anciennes.
pull/4416/head
Matthieu Marcillaud 11 months ago
parent
commit
0b355a2cc1
  1. 16
      inc/archives.php
  2. 12
      tests/ArchivisteTest.php

16
inc/archives.php

@ -21,22 +21,22 @@ class SpipArchives
public const compressionsConnues = ['zip', 'tar', 'tgz'];
/** @var integer Dernier code d'erreur */
private $codeErreur;
private int $codeErreur;
/** @var string Dernier message d'erreur */
private $messageErreur;
private string $messageErreur;
/** @var string Mode de compression si l'extension du fichier n'est pas explicite */
private $modeCompression;
private string $modeCompression;
/** @var string Chemin vers le fichier d'archives */
private $fichierArchive;
private string $fichierArchive;
/** @var boolean true si l'archive est en lecture seule */
private $lectureSeule = true;
private bool $lectureSeule = true;
/** @var array Liste des erreurs possibles */
private $erreurs = [
private array $erreurs = [
0 => 'OK',
1 => 'erreur_inconnue',
2 => 'extension_inconnue',
@ -382,7 +382,7 @@ class SpipArchives
$ok = $zip->delete(PCLZIP_OPT_BY_NAME, $fichiers);
if (!$ok or $zip->error_code < 0) {
$this->codeErreur = 1;
$this->messageErreur = 'retirer() : Echec retirer fichiers ' . json_encode($fichiers) . ' ' . $zip->error_code . ' pour paquet: ' . $this->fichierArchive;
$this->messageErreur = 'retirer() : Echec retirer fichiers ' . json_encode($fichiers, JSON_THROW_ON_ERROR) . ' ' . $zip->error_code . ' pour paquet: ' . $this->fichierArchive;
return false;
}
break;
@ -393,7 +393,7 @@ class SpipArchives
$ok = PclTarDelete($this->fichierArchive, $fichiers, $this->modeCompression);
if ($ok === 0) {
$this->codeErreur = 1;
$this->messageErreur = 'retirer() : Echec retirer fichiers ' . json_encode($fichiers) . ' ' . PclErrorString() . ' pour paquet: ' . $this->fichierArchive;
$this->messageErreur = 'retirer() : Echec retirer fichiers ' . json_encode($fichiers, JSON_THROW_ON_ERROR) . ' ' . PclErrorString() . ' pour paquet: ' . $this->fichierArchive;
return false;
}

12
tests/ArchivisteTest.php

@ -32,7 +32,7 @@ class ArchivisteTest extends TestCase {
}
protected function afficheArchiveErreur($archive, $message){
return ($message ? $message : "Echec erreur innatendue")
return ($message ?: "Echec erreur innatendue")
. "\nErreur : " . $archive->erreur()
. " | Message: " . $archive->message();
}
@ -191,13 +191,13 @@ class ArchivisteTest extends TestCase {
$files_list = archiviste_generer_contenu_de_test(archiviste_contenu_de_test());
$archive = new SpipArchives($fichier);
$this->assertTrue($archive->emballer($files_list), $this->afficheArchiveErreur($archive, "[$format] Echec emballer " . json_encode($files_list)));
$this->assertTrue($archive->emballer($files_list), $this->afficheArchiveErreur($archive, "[$format] Echec emballer " . json_encode($files_list, JSON_THROW_ON_ERROR)));
archiviste_nettoyer_contenu_de_test(archiviste_contenu_de_test(), $this->repertoire);
$infos = $archive->informer();
$this->assertNotEmpty($infos, $this->afficheArchiveErreur($archive, "[$format] Echec emballer : nombre de fichiers incorrects"));
$this->assertCount(count($files_list), $infos['fichiers'], $this->afficheArchiveErreur($archive, "[$format] Echec emballer : nombre de fichiers incorrects"));
$this->assertCount(is_countable($files_list) ? count($files_list) : 0, $infos['fichiers'], $this->afficheArchiveErreur($archive, "[$format] Echec emballer : nombre de fichiers incorrects"));
$this->verifierDeballerArchive($fichier, $format);
}
@ -223,19 +223,19 @@ class ArchivisteTest extends TestCase {
$archive = new SpipArchives($fichier);
$infos = $archive->informer();
$nb_files = count($infos['fichiers']);
$nb_files = is_countable($infos['fichiers']) ? count($infos['fichiers']) : 0;
$this->assertTrue($archive->retirer(array('test.txt')), $this->afficheArchiveErreur($archive, "[$format] Echec retirer [test.txt]"));
$infos = $archive->informer();
$this->assertCount($nb_files-1, $infos['fichiers'], "[$format] retirer [test.txt] : nombre de fichiers innatendus apres\n" . json_encode($infos));
$this->assertCount($nb_files-1, $infos['fichiers'], "[$format] retirer [test.txt] : nombre de fichiers innatendus apres\n" . json_encode($infos, JSON_THROW_ON_ERROR));
@unlink($fichier);
archiviste_generer_archive_de_test($fichier, $format);
$this->assertTrue($archive->retirer(array('sousrep/fichier')), $this->afficheArchiveErreur($archive, "[$format] Echec retirer [sousrep/fichier]"));
$infos = $archive->informer();
$this->assertCount($nb_files-1, $infos['fichiers'], "[$format] retirer [sousrep/fichier] : nombre de fichiers innatendus apres\n" . json_encode($infos));
$this->assertCount($nb_files-1, $infos['fichiers'], "[$format] retirer [sousrep/fichier] : nombre de fichiers innatendus apres\n" . json_encode($infos, JSON_THROW_ON_ERROR));
$this->assertTrue($archive->retirer(array('dir/fichierinexistant')), $this->afficheArchiveErreur($archive, "[$format] Echec retirer [dir/fichierinexistant] n'aurait pas du produire une erreur"));

Loading…
Cancel
Save