]> git.wh0rd.org - tt-rss.git/commitdiff
add initial gitlab-ci and selenium stuff
authorAndrew Dolgov <noreply@fakecake.org>
Tue, 25 Apr 2017 10:44:41 +0000 (13:44 +0300)
committerAndrew Dolgov <noreply@fakecake.org>
Tue, 25 Apr 2017 10:44:41 +0000 (13:44 +0300)
.gitlab-ci.yml [new file with mode: 0644]
tests/functional/basic.php [new file with mode: 0644]
utils/gitlab-ci/check-schema.sh [new file with mode: 0644]
utils/gitlab-ci/config-template.php [new file with mode: 0644]
utils/gitlab-ci/nginx-default [new file with mode: 0644]
utils/gitlab-ci/php-lint.sh [new file with mode: 0644]

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644 (file)
index 0000000..ed7c32d
--- /dev/null
@@ -0,0 +1,26 @@
+image: fox/selenium-ci\r
+\r
+before_script:\r
+  - pwd\r
+  - ln -s `pwd` ../../tt-rss\r
+  - cp utils/gitlab-ci/nginx-default /etc/nginx/sites-enabled/default\r
+  - /etc/init.d/postgresql start\r
+  - /etc/init.d/nginx start\r
+  - /etc/init.d/php5-fpm start\r
+  - /usr/local/sbin/init-database.sh\r
+  - cp utils/gitlab-ci/config-template.php config.php\r
+  - chmod -R 777 cache lock feed-icons\r
+  - /usr/local/sbin/init-selenium.sh\r
+\r
+stages:\r
+  - test\r
+\r
+jobs:\r
+  only:\r
+    - triggers\r
+  stage: test\r
+  script:\r
+    - sh ./utils/gitlab-ci/php-lint.sh \r
+    - sh ./utils/gitlab-ci/check-schema.sh\r
+    - su -s /bin/bash -m www-data -c "php ./update.php --debug-feed 1"\r
+    - phpunit ./tests/functional/*.php\r
diff --git a/tests/functional/basic.php b/tests/functional/basic.php
new file mode 100644 (file)
index 0000000..38c2577
--- /dev/null
@@ -0,0 +1,25 @@
+<?php
+class BasicTest extends PHPUnit_Extensions_Selenium2TestCase {
+
+       public function setUp() {
+               $this->setHost('localhost');
+               $this->setPort(4444);
+               $this->setBrowserUrl('http://localhost/tt-rss/');
+               $this->setBrowser('firefox');
+       }
+
+       public function setUpPage() {
+               $this->timeouts()->implicitWait(10000);
+       }
+
+       public function testLogin() {
+               $this->url('/index.php');
+
+               $this->byName("login")->value('admin');
+               $this->byName("password")->value('password');
+               $this->byCssSelector('#dijit_form_Button_0_label')->click();
+
+               $this->byCssSelector('#feedTree')->displayed();
+       }
+
+}
diff --git a/utils/gitlab-ci/check-schema.sh b/utils/gitlab-ci/check-schema.sh
new file mode 100644 (file)
index 0000000..a7e63ae
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+export PGPASSWORD=test
+
+psql -h localhost -q -U test test < schema/ttrss_schema_pgsql.sql
diff --git a/utils/gitlab-ci/config-template.php b/utils/gitlab-ci/config-template.php
new file mode 100644 (file)
index 0000000..abe3444
--- /dev/null
@@ -0,0 +1,207 @@
+<?php
+       // *******************************************
+       // *** Database configuration (important!) ***
+       // *******************************************
+
+       define('DB_TYPE', "pgsql"); // or mysql
+       define('DB_HOST', "localhost");
+       define('DB_USER', "test");
+       define('DB_NAME', "test");
+       define('DB_PASS', "test");
+       define('DB_PORT', ''); // usually 5432 for PostgreSQL, 3306 for MySQL
+
+       define('MYSQL_CHARSET', 'UTF8');
+       // Connection charset for MySQL. If you have a legacy database and/or experience
+       // garbage unicode characters with this option, try setting it to a blank string.
+
+       // ***********************************
+       // *** Basic settings (important!) ***
+       // ***********************************
+
+       define('SELF_URL_PATH', 'http://localhost/tt-rss/');
+       // Full URL of your tt-rss installation. This should be set to the
+       // location of tt-rss directory, e.g. http://example.org/tt-rss/
+       // You need to set this option correctly otherwise several features
+       // including PUSH, bookmarklets and browser integration will not work properly.
+
+       define('FEED_CRYPT_KEY', '');
+       // WARNING: mcrypt is deprecated in php 7.1. This directive exists for backwards
+       // compatibility with existing installs, new passwords are NOT going to be encrypted.
+       // Use update.php --decrypt-feeds to decrypt existing passwords in the database while
+       // mcrypt is still available.
+
+       // Key used for encryption of passwords for password-protected feeds
+       // in the database. A string of 24 random characters. If left blank, encryption
+       // is not used. Requires mcrypt functions.
+       // Warning: changing this key will make your stored feed passwords impossible
+       // to decrypt.
+
+       define('SINGLE_USER_MODE', false);
+       // Operate in single user mode, disables all functionality related to
+       // multiple users and authentication. Enabling this assumes you have
+       // your tt-rss directory protected by other means (e.g. http auth).
+
+       define('SIMPLE_UPDATE_MODE', false);
+       // Enables fallback update mode where tt-rss tries to update feeds in
+       // background while tt-rss is open in your browser.
+       // If you don't have a lot of feeds and don't want to or can't run
+       // background processes while not running tt-rss, this method is generally
+       // viable to keep your feeds up to date.
+       // Still, there are more robust (and recommended) updating methods
+       // available, you can read about them here: http://tt-rss.org/wiki/UpdatingFeeds
+
+       // *****************************
+       // *** Files and directories ***
+       // *****************************
+
+       define('PHP_EXECUTABLE', '/usr/bin/php');
+       // Path to PHP *COMMAND LINE* executable, used for various command-line tt-rss
+       // programs and update daemon. Do not try to use CGI binary here, it won't work.
+       // If you see HTTP headers being displayed while running tt-rss scripts,
+       // then most probably you are using the CGI binary. If you are unsure what to
+       // put in here, ask your hosting provider.
+
+       define('LOCK_DIRECTORY', 'lock');
+       // Directory for lockfiles, must be writable to the user you run
+       // daemon process or cronjobs under.
+
+       define('CACHE_DIR', 'cache');
+       // Local cache directory for RSS feed content.
+
+       define('ICONS_DIR', "feed-icons");
+       define('ICONS_URL', "feed-icons");
+       // Local and URL path to the directory, where feed favicons are stored.
+       // Unless you really know what you're doing, please keep those relative
+       // to tt-rss main directory.
+
+       // **********************
+       // *** Authentication ***
+       // **********************
+
+       // Please see PLUGINS below to configure various authentication modules.
+
+       define('AUTH_AUTO_CREATE', true);
+       // Allow authentication modules to auto-create users in tt-rss internal
+       // database when authenticated successfully.
+
+       define('AUTH_AUTO_LOGIN', true);
+       // Automatically login user on remote or other kind of externally supplied
+       // authentication, otherwise redirect to login form as normal.
+       // If set to true, users won't be able to set application language
+       // and settings profile.
+
+       // *********************
+       // *** Feed settings ***
+       // *********************
+
+       define('FORCE_ARTICLE_PURGE', 0);
+       // When this option is not 0, users ability to control feed purging
+       // intervals is disabled and all articles (which are not starred)
+       // older than this amount of days are purged.
+
+       // *** PubSubHubbub settings ***
+
+       define('PUBSUBHUBBUB_HUB', '');
+       // URL to a PubSubHubbub-compatible hub server. If defined, "Published
+       // articles" generated feed would automatically become PUSH-enabled.
+
+       define('PUBSUBHUBBUB_ENABLED', false);
+       // Enable client PubSubHubbub support in tt-rss. When disabled, tt-rss
+       // won't try to subscribe to PUSH feed updates.
+
+       // ****************************
+       // *** Sphinx search plugin ***
+       // ****************************
+
+       define('SPHINX_SERVER', 'localhost:9312');
+       // Hostname:port combination for the Sphinx server.
+
+       define('SPHINX_INDEX', 'ttrss, delta');
+       // Index name in Sphinx configuration. You can specify multiple indexes
+       // as a comma-separated string.
+       // Example configuration files are available on tt-rss wiki.
+
+       // ***********************************
+       // *** Self-registrations by users ***
+       // ***********************************
+
+       define('ENABLE_REGISTRATION', false);
+       // Allow users to register themselves. Please be aware that allowing
+       // random people to access your tt-rss installation is a security risk
+       // and potentially might lead to data loss or server exploit. Disabled
+       // by default.
+
+       define('REG_NOTIFY_ADDRESS', 'user@your.domain.dom');
+       // Email address to send new user notifications to.
+
+       define('REG_MAX_USERS', 10);
+       // Maximum amount of users which will be allowed to register on this
+       // system. 0 - no limit.
+
+       // **********************************
+       // *** Cookies and login sessions ***
+       // **********************************
+
+       define('SESSION_COOKIE_LIFETIME', 86400);
+       // Default lifetime of a session (e.g. login) cookie. In seconds,
+       // 0 means cookie will be deleted when browser closes.
+
+       // *********************************
+       // *** Email and digest settings ***
+       // *********************************
+
+       define('SMTP_FROM_NAME', 'Tiny Tiny RSS');
+       define('SMTP_FROM_ADDRESS', 'noreply@your.domain.dom');
+       // Name, address and subject for sending outgoing mail. This applies
+       // to password reset notifications, digest emails and any other mail.
+
+       define('DIGEST_SUBJECT', '[tt-rss] New headlines for last 24 hours');
+       // Subject line for email digests
+
+       define('SMTP_SERVER', '');
+       // Hostname:port combination to send outgoing mail (i.e. localhost:25).
+       // Blank - use system MTA.
+
+       define('SMTP_LOGIN', '');
+       define('SMTP_PASSWORD', '');
+       // These two options enable SMTP authentication when sending
+       // outgoing mail. Only used with SMTP_SERVER.
+
+       define('SMTP_SECURE', '');
+       // Used to select a secure SMTP connection. Allowed values: ssl, tls,
+       // or empty.
+
+       // ***************************************
+       // *** Other settings (less important) ***
+       // ***************************************
+
+       define('CHECK_FOR_UPDATES', true);
+       // Check for updates automatically if running Git version
+
+       define('ENABLE_GZIP_OUTPUT', false);
+       // Selectively gzip output to improve wire performance. This requires
+       // PHP Zlib extension on the server.
+       // Enabling this can break tt-rss in several httpd/php configurations,
+       // if you experience weird errors and tt-rss failing to start, blank pages
+       // after login, or content encoding errors, disable it.
+
+       define('PLUGINS', 'auth_internal, note');
+       // Comma-separated list of plugins to load automatically for all users.
+       // System plugins have to be specified here. Please enable at least one
+       // authentication plugin here (auth_*).
+       // Users may enable other user plugins from Preferences/Plugins but may not
+       // disable plugins specified in this list.
+       // Disabling auth_internal in this list would automatically disable
+       // reset password link on the login form.
+
+       define('LOG_DESTINATION', 'sql');
+       // Log destination to use. Possible values: sql (uses internal logging
+       // you can read in Preferences -> System), syslog - logs to system log.
+       // Setting this to blank uses PHP logging (usually to http server
+       // error.log).
+
+       define('CONFIG_VERSION', 26);
+       // Expected config version. Please update this option in config.php
+       // if necessary (after migrating all new options from this file).
+
+       // vim:ft=php
diff --git a/utils/gitlab-ci/nginx-default b/utils/gitlab-ci/nginx-default
new file mode 100644 (file)
index 0000000..f64e93a
--- /dev/null
@@ -0,0 +1,81 @@
+##\r
+# You should look at the following URL's in order to grasp a solid understanding\r
+# of Nginx configuration files in order to fully unleash the power of Nginx.\r
+# http://wiki.nginx.org/Pitfalls\r
+# http://wiki.nginx.org/QuickStart\r
+# http://wiki.nginx.org/Configuration\r
+#\r
+# Generally, you will want to move this file somewhere, and start with a clean\r
+# file but keep this around for reference. Or just disable in sites-enabled.\r
+#\r
+# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.\r
+##\r
+\r
+# Default server configuration\r
+#\r
+server {\r
+       listen 80 default_server;\r
+       listen [::]:80 default_server;\r
+\r
+       # SSL configuration\r
+       #\r
+       # listen 443 ssl default_server;\r
+       # listen [::]:443 ssl default_server;\r
+       #\r
+       # Self signed certs generated by the ssl-cert package\r
+       # Don't use them in a production server!\r
+       #\r
+       # include snippets/snakeoil.conf;\r
+\r
+       root /builds/;\r
+\r
+       # Add index.php to the list if you are using PHP\r
+       index index.php index.html index.htm index.nginx-debian.html;\r
+\r
+       server_name _;\r
+\r
+       location / {\r
+               # First attempt to serve request as file, then\r
+               # as directory, then fall back to displaying a 404.\r
+               try_files $uri $uri/ =404;\r
+               autoindex on;\r
+       }\r
+\r
+       # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000\r
+       #\r
+       location ~ \.php$ {\r
+               include snippets/fastcgi-php.conf;\r
+       \r
+               # With php5-cgi alone:\r
+               #fastcgi_pass 127.0.0.1:9000;\r
+               # With php5-fpm:\r
+               fastcgi_pass unix:/var/run/php5-fpm.sock;\r
+       }\r
+\r
+       # deny access to .htaccess files, if Apache's document root\r
+       # concurs with nginx's one\r
+       #\r
+       #location ~ /\.ht {\r
+       #       deny all;\r
+       #}\r
+}\r
+\r
+\r
+# Virtual Host configuration for example.com\r
+#\r
+# You can move that to a different file under sites-available/ and symlink that\r
+# to sites-enabled/ to enable it.\r
+#\r
+#server {\r
+#      listen 80;\r
+#      listen [::]:80;\r
+#\r
+#      server_name example.com;\r
+#\r
+#      root /var/www/example.com;\r
+#      index index.html;\r
+#\r
+#      location / {\r
+#              try_files $uri $uri/ =404;\r
+#      }\r
+#}\r
diff --git a/utils/gitlab-ci/php-lint.sh b/utils/gitlab-ci/php-lint.sh
new file mode 100644 (file)
index 0000000..ceaee14
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh -e
+
+exec find . -name "*.php" -print0 | xargs -0 -n1 php -q -l