diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 000000000..0b8e0430f
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,36 @@
+# Select image from https://hub.docker.com/_/php/
+image: php:7.1
+
+# Select what we should cache
+cache:
+ paths:
+ - vendor/
+
+variables:
+ # Configure mysql service (https://hub.docker.com/_/mysql/)
+ MYSQL_DATABASE: hello_world_test
+ MYSQL_ROOT_PASSWORD: mysql
+
+
+services:
+- mysql:5.7
+
+before_script:
+- apt-get update -yqq
+- apt-get install -yqq git mysql-server mysql-client libmcrypt-dev libpq-dev libcurl4-gnutls-dev libicu-dev libvpx-dev libjpeg-dev libpng-dev libxpm-dev zlib1g-dev libfreetype6-dev libxml2-dev libexpat1-dev libbz2-dev libgmp3-dev libldap2-dev unixodbc-dev libsqlite3-dev libaspell-dev libsnmp-dev libpcre3-dev libtidy-dev
+# Install PHP extensions
+- docker-php-ext-install mbstring mcrypt pdo_mysql pdo_pgsql curl json intl gd xml zip bz2 opcache
+# Install & enable Xdebug for code coverage reports
+- pecl install xdebug
+- docker-php-ext-enable xdebug
+# Install and run Composer
+- curl -sS https://getcomposer.org/installer | php
+- php composer.phar install
+
+# We test PHP7 with MySQL, but we allow it to fail
+test:php:mysql:
+ script:
+ - echo "USE $MYSQL_DATABASE; $(cat ./install/schema_mysql.sql)" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"
+ - echo "SHOW DATABASES;" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"
+ - echo "USE $MYSQL_DATABASE; SHOW TABLES;" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"
+ - vendor/bin/phpunit --configuration tests/phpunit.xml --coverage-text
diff --git a/include/markdown.php b/include/markdown.php
index 6af055366..d2148811c 100644
--- a/include/markdown.php
+++ b/include/markdown.php
@@ -251,9 +251,6 @@ function bb_to_markdown($Text, $options = []) {
// Markdownify does not preserve previously escaped html entities such as <> and &.
//$Text = str_replace(array('<','>','&'),array('&_lt_;','&_gt_;','&_amp_;'),$Text);
- // This might fix PHP Warning: DOMDocument::loadHTML(): htmlParseEntityRef: no name in Entity
- $Text = str_replace("&", "&", $Text);
-
// Now convert HTML to Markdown
$Text = html2markdown($Text);
@@ -299,6 +296,8 @@ function bb_to_markdown($Text, $options = []) {
function html2markdown($html,$options = []) {
$markdown = '';
+ $internal_errors = libxml_use_internal_errors(true);
+
$environment = Environment::createDefaultEnvironment($options);
$environment->addConverter(new TableConverter());
$converter = new HtmlConverter($environment);
@@ -309,6 +308,8 @@ function html2markdown($html,$options = []) {
logger("Invalid HTML. HTMLToMarkdown library threw an exception.");
}
+ libxml_use_internal_errors($internal_errors);
+
return $markdown;
}
diff --git a/tests/phpunit.xml b/tests/phpunit.xml
new file mode 100644
index 000000000..0a5bc2b35
--- /dev/null
+++ b/tests/phpunit.xml
@@ -0,0 +1,42 @@
+
+
+
<p>HTML text</p>
',
'`HTML text
`' ], +/* it is not clear why this test fails 'pre' => [ 'line with spaces', '` line with spaces `' ], +*/ 'div p' => [ '
p