1+ name : Tests del Plugin FacturaScripts
2+
3+ on :
4+ push :
5+ branches :
6+ - master
7+ pull_request :
8+ branches :
9+ - master
10+
11+ jobs :
12+ tests :
13+ name : Tests en ${{ matrix.database }} con PHP ${{ matrix.php-version }}
14+ runs-on : ubuntu-latest
15+
16+ strategy :
17+ fail-fast : false
18+ matrix :
19+ php-version : ['8.0', '8.1', '8.2', '8.3', '8.4']
20+ database : ['mysql', 'postgresql']
21+
22+ env :
23+ NOMBRE_PLUGIN : " SamplePlugin"
24+
25+ services :
26+ mysql :
27+ image : mariadb:11
28+ ports :
29+ - 3306:3306
30+ env :
31+ MARIADB_ROOT_PASSWORD : toor
32+ MARIADB_DATABASE : facturascripts_tests
33+ options : >-
34+ --health-cmd="mariadb-admin ping"
35+ --health-interval=10s
36+ --health-timeout=5s
37+ --health-retries=3
38+
39+ postgres :
40+ image : postgres:13
41+ ports :
42+ - 5432:5432
43+ env :
44+ POSTGRES_PASSWORD : toor
45+ POSTGRES_DB : facturascripts_tests
46+ options : >-
47+ --health-cmd=pg_isready
48+ --health-interval=10s
49+ --health-timeout=5s
50+ --health-retries=5
51+
52+ steps :
53+ - name : Instalar PHP y extensiones
54+ uses : shivammathur/setup-php@v2
55+ with :
56+ php-version : ${{ matrix.php-version }}
57+ extensions : json, fileinfo, simplexml, zip, dom, pdo, pdo_mysql, mysql, mysqli, pgsql, pdo_pgsql, bcmath, gd, curl, soap
58+ tools : composer
59+ coverage : none
60+
61+ - name : Clonar FacturaScripts
62+ uses : actions/checkout@v4
63+ with :
64+ fetch-depth : 0
65+ repository : ' NeoRazorX/facturascripts'
66+
67+ - name : Clonar Plugin ${{ env.NOMBRE_PLUGIN }}
68+ uses : actions/checkout@v4
69+ with :
70+ fetch-depth : 0
71+ path : Plugins/${{ env.NOMBRE_PLUGIN }}
72+
73+ - name : Cache de dependencias de Composer
74+ uses : actions/cache@v3
75+ with :
76+ path : ~/.composer/cache/files
77+ key : composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.lock') }}
78+ restore-keys : |
79+ composer-${{ runner.os }}-${{ matrix.php-version }}-
80+ composer-${{ runner.os }}-
81+
82+ - name : Instalar dependencias de FacturaScripts
83+ run : |
84+ mkdir -p MyFiles
85+ touch MyFiles/plugins.json
86+ composer install --prefer-dist --no-interaction --no-progress --optimize-autoloader
87+
88+ - name : Crear archivo de configuración
89+ run : |
90+ cat > config.php << 'EOF'
91+ <?php
92+
93+ define('FS_COOKIES_EXPIRE', 604800);
94+ define('FS_LANG', 'es_ES');
95+ define('FS_TIMEZONE', 'Europe/Madrid');
96+ define('FS_ROUTE', '');
97+
98+ ${{ matrix.database == 'mysql' && format('
99+ define(''FS_DB_TYPE'', ''mysql'');
100+ define(''FS_DB_HOST'', ''127.0.0.1'');
101+ define(''FS_DB_PORT'', ''3306'');
102+ define(''FS_DB_USER'', ''root'');
103+ ') || format('
104+ define(''FS_DB_TYPE'', ''postgresql'');
105+ define(''FS_DB_HOST'', ''localhost'');
106+ define(''FS_DB_PORT'', ''5432'');
107+ define(''FS_DB_USER'', ''postgres'');
108+ ') }}
109+ define('FS_DB_NAME', 'facturascripts_tests');
110+ define('FS_DB_PASS', 'toor');
111+ define('FS_DB_FOREIGN_KEYS', true);
112+ define('FS_DB_TYPE_CHECK', true);
113+ define('FS_MYSQL_CHARSET', 'utf8');
114+ define('FS_MYSQL_COLLATE', 'utf8_bin');
115+
116+ define('FS_HIDDEN_PLUGINS', '');
117+ define('FS_DEBUG', false);
118+ define('FS_DISABLE_ADD_PLUGINS', false);
119+ define('FS_DISABLE_RM_PLUGINS', false);
120+ define('FS_NF0', 2);
121+ EOF
122+
123+ - name : Copiar archivos de tests del Plugin
124+ run : |
125+ if [ -d "Plugins/${{ env.NOMBRE_PLUGIN }}/Test/main" ]; then
126+ cp -r Plugins/${{ env.NOMBRE_PLUGIN }}/Test/main Test/Plugins
127+ else
128+ echo "No se encontraron tests para el plugin"
129+ exit 1
130+ fi
131+
132+ - name : Instalar el Plugin ${{ env.NOMBRE_PLUGIN }}
133+ run : php Test/install-plugins.php
134+
135+ - name : Ejecutar tests en ${{ matrix.database }}
136+ run : vendor/bin/phpunit -c phpunit-plugins.xml --verbose
137+
138+ - name : Mostrar logs en caso de fallo
139+ if : failure()
140+ run : |
141+ echo "=== Logs de la base de datos ==="
142+ if [ "${{ matrix.database }}" = "mysql" ]; then
143+ docker logs $(docker ps -q --filter ancestor=mariadb:11) || true
144+ else
145+ docker logs $(docker ps -q --filter ancestor=postgres:13) || true
146+ fi
0 commit comments