aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2019-12-29 13:55:45 +0100
committerGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2019-12-29 13:55:45 +0100
commit6bc963569beb58d0799df4f747a2dcf1bcf8bf7b (patch)
treedf68b961134d8907e98a9970eee249951b156231
parent518672fd279e97afeee0756ea812cd7f89c2f778 (diff)
tec: Add a test target to Makefile (#2725)
* tec: Add a test target to Makefile Minor edit put php7-phar on third line I try to keep on the third line the Alpine-specific PHP extensions (i.e. that are not by default in Ubuntu), and in alphabetic order Co-Authored-By: Alexandre Alapetite <alexandre@alapetite.fr> * Allow to run make test without Docker
-rw-r--r--.gitignore1
-rw-r--r--Docker/Dockerfile-Alpine2
-rw-r--r--Makefile24
-rw-r--r--docs/en/developers/03_Running_tests.md25
-rw-r--r--docs/fr/developers/03_Running_tests.md35
-rw-r--r--docs/i18n/freshrss.fr.po89
-rw-r--r--docs/i18n/templates/freshrss.pot80
-rw-r--r--docs/po4a.conf1
8 files changed, 252 insertions, 5 deletions
diff --git a/.gitignore b/.gitignore
index 62b1bcbdf..2fd0ee2c5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
+/bin
constants.local.php
# Temp files
diff --git a/Docker/Dockerfile-Alpine b/Docker/Dockerfile-Alpine
index 7d7fbee99..c538c48df 100644
--- a/Docker/Dockerfile-Alpine
+++ b/Docker/Dockerfile-Alpine
@@ -5,7 +5,7 @@ SHELL ["/bin/ash", "-eo", "pipefail", "-c"]
RUN apk add --no-cache \
apache2 php7-apache2 \
php7 php7-curl php7-gmp php7-intl php7-mbstring php7-xml php7-zip \
- php7-ctype php7-dom php7-fileinfo php7-iconv php7-json php7-opcache php7-session php7-simplexml php7-xmlreader php7-zlib \
+ php7-ctype php7-dom php7-fileinfo php7-iconv php7-json php7-opcache php7-phar php7-session php7-simplexml php7-xmlreader php7-zlib \
php7-pdo_sqlite php7-pdo_mysql php7-pdo_pgsql
RUN mkdir -p /var/www/FreshRSS /run/apache2/
diff --git a/Makefile b/Makefile
index dcb547c7d..87b8898e9 100644
--- a/Makefile
+++ b/Makefile
@@ -7,6 +7,18 @@ endif
PORT ?= 8080
PHP := $(shell sh -c 'which php')
+ifdef NO_DOCKER
+ PHP = php
+else
+ PHP = docker run \
+ --rm \
+ --volume $(shell pwd):/var/www/FreshRSS:z \
+ --env FRESHRSS_ENV=development \
+ --name freshrss-php-cli \
+ freshrss/freshrss:$(TAG) \
+ php
+endif
+
ifeq ($(findstring alpine,$(TAG)),alpine)
DOCKERFILE=Dockerfile-Alpine
else ifeq ($(findstring arm,$(TAG)),arm)
@@ -39,6 +51,18 @@ start: ## Start the development environment (use Docker)
stop: ## Stop FreshRSS container if any
docker stop freshrss-dev
+###########
+## Tests ##
+###########
+bin/phpunit: ## Install PHPUnit for test purposes
+ mkdir -p bin/
+ wget -O bin/phpunit https://phar.phpunit.de/phpunit-7.5.9.phar
+ echo '5404288061420c3921e53dd3a756bf044be546c825c5e3556dea4c51aa330f69 bin/phpunit' | sha256sum -c - || rm bin/phpunit
+
+.PHONY: test
+test: bin/phpunit ## Run the test suite
+ $(PHP) ./bin/phpunit --bootstrap ./tests/bootstrap.php ./tests
+
##########
## I18N ##
##########
diff --git a/docs/en/developers/03_Running_tests.md b/docs/en/developers/03_Running_tests.md
new file mode 100644
index 000000000..ce061cc5b
--- /dev/null
+++ b/docs/en/developers/03_Running_tests.md
@@ -0,0 +1,25 @@
+# Running tests
+
+FreshRSS is tested with [PHPUnit](https://phpunit.de/). No code should be merged in `master` if the tests don't pass.
+
+## Locally
+
+As a developer, you can run the test suite on your PC easily with `make` commands. You can run the test suite with:
+
+```console
+$ make test
+```
+
+This command downloads the PHPUnit binary and verifies its checksum. If the verification fails, the file is deleted. In this case, you should [open an issue on GitHub](https://github.com/FreshRSS/FreshRSS/issues/new) to let maintainers know about the problem.
+
+Then, it executes PHPUnit in a Docker container. If you don't use Docker, you can run the command directly with:
+
+```console
+$ NO_DOCKER=true make test
+```
+
+## Travis
+
+Tests are automatically run when you open a pull request on GitHub. It is done with [Travis CI](https://travis-ci.org/FreshRSS/FreshRSS/). This is done to ensure there is no regressions in your code. We cannot merge a PR if the tests fail so we'll ask you to fix bugs before to review your code.
+
+If you're interested in, you can take a look at [the configuration file](https://github.com/FreshRSS/FreshRSS/blob/master/.travis.yml).
diff --git a/docs/fr/developers/03_Running_tests.md b/docs/fr/developers/03_Running_tests.md
new file mode 100644
index 000000000..70aafc02a
--- /dev/null
+++ b/docs/fr/developers/03_Running_tests.md
@@ -0,0 +1,35 @@
+# Running tests
+
+FreshRSS is tested with [PHPUnit](https://phpunit.de/). No code should be
+merged in `master` if the tests don't pass.
+
+## Locally
+
+As a developer, you can run the test suite on your PC easily with `make`
+commands. You can run the test suite with:
+
+```console
+$ make test
+```
+
+This command downloads the PHPUnit binary and verifies its checksum. If the
+verification fails, the file is deleted. In this case, you should [open an
+issue on GitHub](https://github.com/FreshRSS/FreshRSS/issues/new) to let
+maintainers know about the problem.
+
+Then, it executes PHPUnit in a Docker container. If you don't use Docker,
+you can run the command directly with:
+
+```console
+$ NO_DOCKER=true make test
+```
+
+## Travis
+
+Tests are automatically run when you open a pull request on GitHub. It is
+done with [Travis CI](https://travis-ci.org/FreshRSS/FreshRSS/). This is
+done to ensure there is no regressions in your code. We cannot merge a PR if
+the tests fail so we'll ask you to fix bugs before to review your code.
+
+If you're interested in, you can take a look at [the configuration
+file](https://github.com/FreshRSS/FreshRSS/blob/master/.travis.yml).
diff --git a/docs/i18n/freshrss.fr.po b/docs/i18n/freshrss.fr.po
index 7a5d8d00e..a5d536670 100644
--- a/docs/i18n/freshrss.fr.po
+++ b/docs/i18n/freshrss.fr.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: FreshRSS\n"
"Report-Msgid-Bugs-To: https://github.com/FreshRSS/FreshRSS/issues\n"
-"POT-Creation-Date: 2019-12-07 10:49+0100\n"
+"POT-Creation-Date: 2019-12-29 11:00+0100\n"
"PO-Revision-Date: 2019-12-07 10:50+0100\n"
"Last-Translator: Marien Fressinaud <dev@marienfressinaud.fr>\n"
"Language-Team: French <>\n"
@@ -378,7 +378,8 @@ msgstr ""
#. type: Code fence info string
#: en/./developers/01_First_steps.md:15 en/./developers/01_First_steps.md:24
#: en/./developers/01_First_steps.md:34 en/./developers/01_First_steps.md:42
-#: en/./developers/01_First_steps.md:50
+#: en/./developers/01_First_steps.md:50 en/./developers/03_Running_tests.md:9
+#: en/./developers/03_Running_tests.md:17
#, no-wrap
msgid "console"
msgstr "console"
@@ -2984,6 +2985,90 @@ msgid ""
msgstr ""
#. type: Title #
+#: en/./developers/03_Running_tests.md:1
+#, no-wrap
+msgid "Running tests"
+msgstr ""
+
+#. type: Plain text
+#: en/./developers/03_Running_tests.md:4
+msgid ""
+"FreshRSS is tested with [PHPUnit](https://phpunit.de/). No code should be "
+"merged in `master` if the tests don't pass."
+msgstr ""
+
+#. type: Title ##
+#: en/./developers/03_Running_tests.md:5
+#, no-wrap
+msgid "Locally"
+msgstr ""
+
+#. type: Plain text
+#: en/./developers/03_Running_tests.md:8
+msgid ""
+"As a developer, you can run the test suite on your PC easily with `make` "
+"commands. You can run the test suite with:"
+msgstr ""
+
+#. type: Plain text
+#: en/./developers/03_Running_tests.md:9
+#, fuzzy, no-wrap
+#| msgid "$ make stop\n"
+msgid "$ make test\n"
+msgstr "$ make stop\n"
+
+#. type: Plain text
+#: en/./developers/03_Running_tests.md:14
+msgid ""
+"This command downloads the PHPUnit binary and verifies its checksum. If the "
+"verification fails, the file is deleted. In this case, you should [open an "
+"issue on GitHub](https://github.com/FreshRSS/FreshRSS/issues/new) to let "
+"maintainers know about the problem."
+msgstr ""
+
+#. type: Plain text
+#: en/./developers/03_Running_tests.md:16
+msgid ""
+"Then, it executes PHPUnit in a Docker container. If you don't use Docker, "
+"you can run the command directly with:"
+msgstr ""
+
+#. type: Plain text
+#: en/./developers/03_Running_tests.md:17
+#, fuzzy, no-wrap
+#| msgid "$ make stop\n"
+msgid "$ NO_DOCKER=true make test\n"
+msgstr "$ make stop\n"
+
+#. type: Title ##
+#: en/./developers/03_Running_tests.md:21
+#, no-wrap
+msgid "Travis"
+msgstr ""
+
+#. type: Plain text
+#: en/./developers/03_Running_tests.md:24
+msgid ""
+"Tests are automatically run when you open a pull request on GitHub. It is "
+"done with [Travis CI](https://travis-ci.org/FreshRSS/FreshRSS/). This is "
+"done to ensure there is no regressions in your code. We cannot merge a PR if "
+"the tests fail so we'll ask you to fix bugs before to review your code."
+msgstr ""
+
+#. type: Plain text
+#: en/./developers/03_Running_tests.md:25
+#, fuzzy
+#| msgid ""
+#| "If your request is new, [open a new bug ticket](https://github.com/"
+#| "FreshRSS/FreshRSS/issues/new)"
+msgid ""
+"If you're interested in, you can take a look at [the configuration file]"
+"(https://github.com/FreshRSS/FreshRSS/blob/master/.travis.yml)."
+msgstr ""
+"Si votre demande est nouvelle, [ouvrez un nouveau ticket de bug](https://"
+"github.com/FreshRSS/FreshRSS/issues/new)"
+
+#. type: Title #
#: en/./developers/04_Frontend/01_View_files.md:1
#, no-wrap
msgid "The .phtml files"
diff --git a/docs/i18n/templates/freshrss.pot b/docs/i18n/templates/freshrss.pot
index 2dbd80cb6..bdeff8328 100644
--- a/docs/i18n/templates/freshrss.pot
+++ b/docs/i18n/templates/freshrss.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: https://github.com/FreshRSS/FreshRSS/issues\n"
-"POT-Creation-Date: 2019-12-07 10:49+0100\n"
+"POT-Creation-Date: 2019-12-29 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -301,7 +301,7 @@ msgid "Once you're done, clone the repository with:"
msgstr ""
#. type: Code fence info string
-#: en/./developers/01_First_steps.md:15 en/./developers/01_First_steps.md:24 en/./developers/01_First_steps.md:34 en/./developers/01_First_steps.md:42 en/./developers/01_First_steps.md:50
+#: en/./developers/01_First_steps.md:15 en/./developers/01_First_steps.md:24 en/./developers/01_First_steps.md:34 en/./developers/01_First_steps.md:42 en/./developers/01_First_steps.md:50 en/./developers/03_Running_tests.md:9 en/./developers/03_Running_tests.md:17
#, no-wrap
msgid "console"
msgstr ""
@@ -2382,6 +2382,82 @@ msgid ""
msgstr ""
#. type: Title #
+#: en/./developers/03_Running_tests.md:1
+#, no-wrap
+msgid "Running tests"
+msgstr ""
+
+#. type: Plain text
+#: en/./developers/03_Running_tests.md:4
+msgid ""
+"FreshRSS is tested with [PHPUnit](https://phpunit.de/). No code should be "
+"merged in `master` if the tests don't pass."
+msgstr ""
+
+#. type: Title ##
+#: en/./developers/03_Running_tests.md:5
+#, no-wrap
+msgid "Locally"
+msgstr ""
+
+#. type: Plain text
+#: en/./developers/03_Running_tests.md:8
+msgid ""
+"As a developer, you can run the test suite on your PC easily with `make` "
+"commands. You can run the test suite with:"
+msgstr ""
+
+#. type: Plain text
+#: en/./developers/03_Running_tests.md:9
+#, no-wrap
+msgid "$ make test\n"
+msgstr ""
+
+#. type: Plain text
+#: en/./developers/03_Running_tests.md:14
+msgid ""
+"This command downloads the PHPUnit binary and verifies its checksum. If the "
+"verification fails, the file is deleted. In this case, you should [open an "
+"issue on GitHub](https://github.com/FreshRSS/FreshRSS/issues/new) to let "
+"maintainers know about the problem."
+msgstr ""
+
+#. type: Plain text
+#: en/./developers/03_Running_tests.md:16
+msgid ""
+"Then, it executes PHPUnit in a Docker container. If you don't use Docker, "
+"you can run the command directly with:"
+msgstr ""
+
+#. type: Plain text
+#: en/./developers/03_Running_tests.md:17
+#, no-wrap
+msgid "$ NO_DOCKER=true make test\n"
+msgstr ""
+
+#. type: Title ##
+#: en/./developers/03_Running_tests.md:21
+#, no-wrap
+msgid "Travis"
+msgstr ""
+
+#. type: Plain text
+#: en/./developers/03_Running_tests.md:24
+msgid ""
+"Tests are automatically run when you open a pull request on GitHub. It is "
+"done with [Travis CI](https://travis-ci.org/FreshRSS/FreshRSS/). This is "
+"done to ensure there is no regressions in your code. We cannot merge a PR if "
+"the tests fail so we'll ask you to fix bugs before to review your code."
+msgstr ""
+
+#. type: Plain text
+#: en/./developers/03_Running_tests.md:25
+msgid ""
+"If you're interested in, you can take a look at [the configuration "
+"file](https://github.com/FreshRSS/FreshRSS/blob/master/.travis.yml)."
+msgstr ""
+
+#. type: Title #
#: en/./developers/04_Frontend/01_View_files.md:1
#, no-wrap
msgid "The .phtml files"
diff --git a/docs/po4a.conf b/docs/po4a.conf
index 68055bb2c..98baff2c7 100644
--- a/docs/po4a.conf
+++ b/docs/po4a.conf
@@ -10,6 +10,7 @@
[type: text] en/./developers/03_Backend/03_External_libraries.md $lang:$lang/./developers/03_Backend/03_External_libraries.md opt:"-o markdown" opt:"-M utf-8"
[type: text] en/./developers/03_Backend/04_Changing_source_code.md $lang:$lang/./developers/03_Backend/04_Changing_source_code.md opt:"-o markdown" opt:"-M utf-8"
[type: text] en/./developers/03_Backend/05_Extensions.md $lang:$lang/./developers/03_Backend/05_Extensions.md opt:"-o markdown" opt:"-M utf-8"
+[type: text] en/./developers/03_Running_tests.md $lang:$lang/./developers/03_Running_tests.md opt:"-o markdown" opt:"-M utf-8"
[type: text] en/./developers/04_Frontend/01_View_files.md $lang:$lang/./developers/04_Frontend/01_View_files.md opt:"-o markdown" opt:"-M utf-8"
[type: text] en/./developers/04_Frontend/02_Design.md $lang:$lang/./developers/04_Frontend/02_Design.md opt:"-o markdown" opt:"-M utf-8"
[type: text] en/./developers/05_Release_new_version.md $lang:$lang/./developers/05_Release_new_version.md opt:"-o markdown" opt:"-M utf-8"