[CI] Set up PHPUnit and first unit test

This commit is contained in:
ruan 2020-08-06 15:45:58 +02:00
parent 477ccd601a
commit 3d393e5719
4 changed files with 43 additions and 7 deletions

2
.gitignore vendored
View File

@ -1,2 +1,4 @@
.idea .idea
litebans-php.iml litebans-php.iml
inc/test/vendor
inc/test/composer.lock

View File

@ -1,10 +1,9 @@
# This file is a template, and might need editing before it works on your project.
# Select image from https://hub.docker.com/_/php/
image: php:latest image: php:latest
# Select what we should cache between builds # Select what we should cache between builds
cache: cache:
paths: paths:
- inc/test/vendor/
- vendor/ - vendor/
before_script: before_script:
@ -23,16 +22,18 @@ before_script:
- pecl install xdebug - pecl install xdebug
- docker-php-ext-enable xdebug - docker-php-ext-enable xdebug
# Install and run Composer # Install and run Composer
#- curl -sS https://getcomposer.org/installer | php - curl -sS https://getcomposer.org/installer | php
#- php composer.phar install - php composer.phar install
- php composer.phar require --dev phpunit/phpunit ^9
# Bring in any services we need http://docs.gitlab.com/ee/ci/docker/using_docker_images.html#what-is-a-service # Bring in any services we need http://docs.gitlab.com/ee/ci/docker/using_docker_images.html#what-is-a-service
# See http://docs.gitlab.com/ce/ci/services/README.html for examples. # See http://docs.gitlab.com/ce/ci/services/README.html for examples.
services: services: []
- mysql:5.7 # - mysql:5.7
# Set any variables we need # Set any variables we need
variables: variables:
COMPOSER: 'inc/test/composer.json'
# Configure mysql environment variables (https://hub.docker.com/r/_/mysql/) # Configure mysql environment variables (https://hub.docker.com/r/_/mysql/)
MYSQL_DATABASE: mysql_database MYSQL_DATABASE: mysql_database
MYSQL_ROOT_PASSWORD: mysql_strong_password MYSQL_ROOT_PASSWORD: mysql_strong_password
@ -41,4 +42,4 @@ variables:
# If Xdebug was installed you can generate a coverage report and see code coverage metrics. # If Xdebug was installed you can generate a coverage report and see code coverage metrics.
test: test:
script: script:
- vendor/bin/phpunit --configuration phpunit.xml --coverage-text --colors=never - ./vendor/bin/phpunit inc/test/php

10
inc/test/composer.json Normal file
View File

@ -0,0 +1,10 @@
{
"autoload": {
"classmap": [
"inc/"
]
},
"require-dev": {
"phpunit/phpunit": "^9"
}
}

23
inc/test/php/LangTest.php Normal file
View File

@ -0,0 +1,23 @@
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;
final class LangTest extends TestCase {
public function testLanguages(): void {
$langs = glob('./lang/*.php');
foreach ($langs as $lang) {
include_once $lang;
$lang_class = $lang;
$lang_class = substr($lang_class, 0, strpos($lang_class, ".")); // grab "lang/en_US" from "en_US.utf8.php"
$lang_class = substr($lang_class, strlen("lang/")); // grab "en_US" from "lang/en_US"
$instance = new $lang_class;
$this->assertTrue(is_array($instance->array));
$count = sizeof($instance->array);
$this->assertTrue($count > 0);
echo "Language $lang_class is valid. $count messages defined.";
}
}
}