Projet

Général

Profil

Development #47687

Tox râle chez moi (localement) sur les tests de duplication

Ajouté par Nicolas Roche il y a plus de 3 ans. Mis à jour il y a plus de 3 ans.

Statut:
Fermé
Priorité:
Bas
Assigné à:
-
Catégorie:
-
Version cible:
-
Début:
14 octobre 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

J'ai des tests qui ne passent pas localement, et je ne comprend pas ce qui me manque comparé à Jenkins (j'ai réinstallé les dépendances d'authentic et relancé l'installation via publik-devinst).

$ tox -e authentic-py3-dj111-drf39 -- tests/test_api.py::test_find_duplicates --pdb
E              django.db.utils.ProgrammingError: ERREUR:  la fonction immutable_unaccent(text) n'existe pas
E               LINE 1: ...etion_alert", "custom_user_user"."deleted", LOWER(immutable_...
E                                                                            ^
E               HINT:  Aucune fonction ne correspond au nom donné et aux types d'arguments.
E               Vous devez ajouter des conversions explicites de type.

À priori les tests ne sont pas liés à mon installation mais je me suis assuré d'avoir la migration #47339 d'appliquée et je l'ai aussi jouée à la main (#47328).
(je n'ai pas trouvé comment corriger)

Historique

#1

Mis à jour par Valentin Deniaud il y a plus de 3 ans

Le truc c'est que la migration s'applique toujours sans erreurs, même quand elle ne marche pas...

Le problème c'est certainement que ton utilisateur postgres n'est pas superuser. Donne lui les droits, rejoue la migration et ça va marcher.

#2

Mis à jour par Nicolas Roche il y a plus de 3 ans

Bof, à priori l'utilisateur postgres a les droits.

$ id
posgresql
$ psql
> \c authentic_multitenant;
> set search_path="authentic_dev_publik_love";
> CREATE EXTENSION pg_trgm SCHEMA public;
> CREATE EXTENSION unaccent SCHEMA public;
> CREATE OR REPLACE FUNCTION public.immutable_unaccent(text) RETURNS varchar AS $$ SELECT public.unaccent('public.unaccent',$1::text); $$ LANGUAGE 'sql' IMMUTABLE;
> CREATE INDEX custom_user_name_gist_idx ON custom_user_user USING gist (LOWER(public.immutable_unaccent(first_name || ' ' || last_name)) public.gist_trgm_ops);

#3

Mis à jour par Valentin Deniaud il y a plus de 3 ans

Mais ce n'est pas l'utilisateur de tox, perso j'ai un utilisateur vdeniaud qui est utilisé par les tests et les applis.

#4

Mis à jour par Thomas Noël il y a plus de 3 ans

Idem chez moi (créé avec « createuser -sdr thomas »)

#5

Mis à jour par Benjamin Dauvergne il y a plus de 3 ans

Quand j'ai dit que c'était une mauvaise idée...

#6

Mis à jour par Frédéric Péters il y a plus de 3 ans

Versus un ticket "Tox râle chez moi (localement) lors de l'exécution des migrations" ? qui aurait été vachement mieux ?

#7

Mis à jour par Nicolas Roche il y a plus de 3 ans

  • Statut changé de Nouveau à Fermé

Merci, c'était bien ça

# alter user nroche with superuser;

#8

Mis à jour par Benjamin Dauvergne il y a plus de 3 ans

Frédéric Péters a écrit :

Versus un ticket "Tox râle chez moi (localement) lors de l'exécution des migrations" ? qui aurait été vachement mieux ?

J'ai déjà dit qu'on pouvait faire pareil avec --fake pour les quelques machines concernées. Sachant que c'est moi qui me suis tapé les migrations manuelles ensuite mon avis a un intérêt.

#9

Mis à jour par Frédéric Péters il y a plus de 3 ans

Je ne vois pas comment ça retirerait le ticket "Tox râle chez moi (localement) lors de l'exécution des migrations".

#10

Mis à jour par Benjamin Dauvergne il y a plus de 3 ans

Ça remplace une erreur que personne ne peut comprendre :

$ tox -e authentic-py3-dj111-drf39 -- tests/test_api.py::test_find_duplicates --pdb
E              django.db.utils.ProgrammingError: ERREUR:  la fonction immutable_unaccent(text) n'existe pas
E               LINE 1: ...etion_alert", "custom_user_user"."deleted", LOWER(immutable_...
E                                                                            ^
E               HINT:  Aucune fonction ne correspond au nom donné et aux types d'arguments.
E               Vous devez ajouter des conversions explicites de type.

par une erreur que tout le monde comprend et qui correspond vraiment au problème :

E               django.db.utils.ProgrammingError: ERREUR:  droit refusé pour créer l'extension « unaccent »
E               HINT:  Doit être super-utilisateur pour créer cette extension.

/tmp/tox-bdauvergne/authentic/authentic-py3-dj111-drf39/lib/python3.8/site-packages/django/db/backends/utils.py:62: ProgrammingError

et ainsi le ticket n'aurait pas été ouvert. Au niveau documentation de publik-devinst ou de de Publik en général c'est plus simple de faire une FAQ des soucis qui arrivent à l'installation que des soucis bizarres n'importe quand.

Formats disponibles : Atom PDF