Programmation

14 articles

Première utilisation de Laravel Dusk? Voici quelques erreurs et gaffes et leur solution

Manipulant pour la première fois Laravel Dusk, il me fallait tout d'abord installer son paquet :

$ composer require --dev laravel/dusk

Error: Your requirements could not be resolved to an installable set of packages.

J'utilisais toujours Laravel 5.6 mais la version actuelle de dusk est en version 5, qui requiert Laravel 5.7+. J'ai été voir sur Packagist après une version antérieure. Dans mon cas, c'était :

$ composer require --dev laravel/dusk:4.0.5

Chouette, maintenant je peux commencer à rédiger de fantastiques tests ! Heu... Non, pas si vite !

PHP Fatal error:  Class 'Tests\DuskTestCase' not found

Parce que j'ai RTFM trop vite et homis :

$ php artisan dusk:install                                                               
Dusk scaffolding installed successfully.

Keep calm and RTFM

Chouette, maintenant je peux vraiment commencer à rédiger de fantastiques tests !

...

Facebook\WebDriver\Exception\SessionNotCreatedException: session not created: Chrome version must be between 70 and 73   
  (Driver info: chromedriver=2.45.615279 (12b89733300bd268cff3b78fc76cb8f3a7cc44e5),platform=Linux 4.4.0-101-generic x86_6
4)

Alors peut-être…

$ sudo apt-get update
$ sudo apt-get install chromium-browser
[…]
404  Not Found [IP: ...]
E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/universe/c/chromium-browser/chromium-browser...

Dans ce cas, mettez d'abord Homestead à jour. Quittez la machine virtuelle, exécutez $ vagrant box update et enfin installez chromium.

$ php artisan dusk

Dusk - échecs PHPUnit

OUI ! Jamais été aussi content de voir de bons vieux échecs de tests PHPUnit !

Comment créer des liens symboliques via FTP

Révélation: on ne peut pas !

Afin de pouvoir utiliser le File Storage de Laravel, il me fallait créer un lien symbolique dans le dossier public, pointant vers un sous-dossier situé dans le dossier storage. Une opération simple et rapide lorsque vous bénéficiez d'un accès ssh vers votre serveur de production. Mais c'est une toute autre histoire quand vous n'avez qu'un accès FTP !

La solution était donc de laisser PHP se charger du travail pour moi, en utilisant la commode fonction symlink :

if (!file_exists('./storage')) {
    symlink("../storage/app/public", "./storage");
}

[EN] Create symbolic links on server without SSH available?

Accédez à la base de données de votre application depuis Android Studio

Ouvrez le terminal (Alt + F12) ou :

Ouvrir la fenêtre de terminal

Ensuite listez vos appareils avec la commande adb. Celle-ci affiche les émulateurs en cours d'exécution ainsi que les appareils Android connectés à votre ordinateur :

$ adb devices
List of devices attached
emulator-5554   device

Utiliser le nom de l'appareil pour ouvrir une connexion :

$ adb -s emulator-5554 shell
generic_x86:/ $

Afin d'éviter une erreur Permission denied (permission refusée) en essayant d'accéder aux fichiers de votre application, utilisez la commande run-as :

generic_x86:/ $ run-as com.votre.nom-de-package.exemple sqlite3 databases/nom-de-votre-base.db

Accédez aux fichiers de votre application depuis Android Studio

En apprenant à jouer avec les bases de données SQLite sur Android, j'ai voulu vérifier la présence du fichier .db généré par mon code dans l'émulateur. Je ne parvenais pas à le trouver avec l'explorateur de fichier Files (Fichiers) installé par défaut, parce qu'il ne nous laisse pas voir les dossiers systèmes.

L'explorateur de fichiers installé par défaut dans Android

Heureusement, Android Studio v3+ vient avec le Device File Explorer (Explorateur de fichiers de l'appareil connecté ou émulé), qui nous permet de naviguer dans les fichiers systèmes et d'accéder au dossier data situé à la racine. Pour l'ouvrir, allez dans View > Tool Windows > Device File Explorer (Vue > Fenêtres outil > Explorateur de fichiers)1. Les données de mon application étaient stockées dans /data/data.

Comment afficher l'explorateur de fichiers de l'appareil connecté ou émulé


1 Ma version étant en anglais, je ne connais pas les termes exacts utilisés dans la version française.

[EN] How to see the data stored in sqlite in android studio using genymotion as emulator

Lister les fichiers qui ont été modifiés entre deux commits/tags

J'avais besoin de connaitre la liste exacte des fichiers qui avaient été modifiés entre mes deux derniers tags:

git diff --name-only v2.0.0 v2.0.1

On peut remplacer les tags par des commits:

git diff --name-only SHA1 SHA2
git diff --name-only HEAD~10 HEAD~5

[EN] How to list only the file names that changed between two commits?