Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge

This commit is contained in:
zotlabs 2017-03-15 16:02:45 -07:00
commit 472a824a1e
15 changed files with 772 additions and 248 deletions

3
.gitignore vendored
View File

@ -44,7 +44,8 @@ doc/html/
.zotshrc .zotshrc
# external repositories for themes/addons # external repositories for themes/addons
extend/ extend/
# files generated by phpunit
tests/results/
## exclude IDE files ## exclude IDE files
# config files and folders from Eclipse # config files and folders from Eclipse

View File

@ -1,44 +1,156 @@
#
# Travis-CI configuration file for Hubzilla
#
## configure things
#
# see http://about.travis-ci.org/docs/user/languages/php/ for more hints # see http://about.travis-ci.org/docs/user/languages/php/ for more hints
language: php language: php
# list any PHP version you want to test against # use newer 'trusty' based distro, old one is 'precise'
dist: trusty
# use docker based containers
sudo: false
# Git branches whitelist to build on Travis CI
branches:
only:
- master
- dev
# whitelist our tags for release deployments e.g. 2.2
- /^\d+\.\d+(\.\d+)?(-\S*)?$/
# Install additional software
addons:
# Install dependencies for generating API documentation with doxygen
apt:
packages:
- doxygen
- doxygen-latex
- graphviz
- ttf-liberation
# enable and start databases on a per job basis
#services:
# - mariadb
# - postgresql
# any PHP version we want to test against, current stable phpunit requires PHP >= 7.0
php: php:
# using major version aliases - '7.0'
- '7.1'
# HHVM does not fulfil PHPUnit platform requirements as being compatible with PHP7 yet
#- 'hhvm'
# aliased to a recent 5.6.x version # list of environments to test
- 5.6 env:
# aliased to a recent 7.x version global:
- 7.0 # used for doxygen deployment script
# aliased to a recent hhvm version - DOXYFILE: $TRAVIS_BUILD_DIR/util/Doxyfile
- hhvm # Uncomment if a newer/specific version of Doxygen should be used
#- DOXY_VER: 1.8.12
# Code Coverage is slow, no need to have it in every build
- PHPUCOV: "--no-coverage"
# use matrix only for PHP and MySQL, all other combinations added through includes
matrix:
# trusty default MySQL 5.6
- DB=mysql MYSQL_VERSION=5.6
# optionally specify a list of environments, for example to test different RDBMS # Matrix configuration details
#env:
# - DB=mysql
# - DB=pgsql
# optionally set up exclutions and allowed failures in the matrix
matrix: matrix:
fast_finish: true
# Additional check combinations
include:
# PHP7.1, mariadb 10.1
- php: '7.1'
env: DB=mariadb MARIADB_VERSION=10.1 CODECOV=1
# use mariadb instead of MySQL
addons:
mariadb: '10.1'
# PHP7.1, PostgreSQL 9.6
- php: '7.1'
env: DB=pgsql POSTGRESQL_VERSION=9.6
# Use newer postgres than 9.2 default
addons:
postgresql: '9.6'
services:
- postgresql
# PHP7.1, old precise distribution with MySQL 5.5
- php: '7.1'
env: DB=mysql MYSQL_VERSION=5.5
dist: precise
services:
- mysql
# Excludes from default matrix combinations
# exclude: # exclude:
# - php: hhvm # - php: hhvm
# env: DB=pgsql # PDO driver for pgsql is unsupported by HHVM (3rd party install for support) # env: DB=pgsql # PDO driver for pgsql is unsupported by HHVM (3rd party install for support)
allow_failures:
- php: hhvm # cache composer downloads between runs
cache:
directories:
- $HOME/.composer/cache
#- $HOME/doxygen/doxygen-$DOXY_VER/bin
#
## execute things
#
before_install:
- travis_retry composer self-update
# Install composer dev libs
install:
- travis_retry composer install --optimize-autoloader
# execute any number of scripts before the test run, custom env's are available as variables # execute any number of scripts before the test run, custom env's are available as variables
#before_script: before_script:
# - if [[ "$DB" == "pgsql" ]]; then psql -c "DROP DATABASE IF EXISTS hello_world_test;" -U postgres; fi # Use code coverage config for phpunit
# - if [[ "$DB" == "pgsql" ]]; then psql -c "create database hello_world_test;" -U postgres; fi - if [[ ! -z $CODECOV ]]; then export PHPUCOV=""; fi
# - if [[ "$DB" == "mysql" ]]; then mysql -e "create database IF NOT EXISTS hello_world_test;" -uroot; fi # Some preparation tasks of environment
- ./tests/travis/prepare.sh
install: # DB specific prepare scripts
- composer install --optimize-autoloader - if [[ "$DB" == "mysql" ]]; then ./tests/travis/prepare_mysql.sh; fi
- if [[ "$DB" == "mariadb" ]]; then ./tests/travis/prepare_mysql.sh; fi
- if [[ "$DB" == "pgsql" ]]; then ./tests/travis/prepare_pgsql.sh; fi
# omitting "script:" will default to phpunit # omitting "script:" will default to phpunit
# use the $DB env variable to determine the phpunit.xml to use script: ./vendor/bin/phpunit $PHPUCOV -c tests/phpunit-$DB.xml
script: vendor/bin/phpunit tests/unit/
after_success:
# Generate API documentation and deploy it to gh-pages
- ./tests/travis/gen_apidocs.sh
#after_failure:
# Deploying release and API documentation to GitHub
#before_deploy:
deploy:
- provider: pages
skip_cleanup: true
local_dir: $TRAVIS_BUILD_DIR/doc/html
github_token: $GH_TOKEN
on:
repo: redmatrix/hubzilla
branch: master
condition: '(-n "$GH_TOKEN") && ("$TRAVIS_JOB_NUMBER" == "${TRAVIS_BUILD_NUMBER}.1")'
# add API documentation to release, could also be used to provide full packages if we want to drop vendor from our repo
- provider: releases
skip_cleanup: true
api_key: $GH_TOKEN
file: 'doc/hubzilla-api-documentation.zip'
on:
repo: redmatrix/hubzilla
tags: true
condition: '(-n "$GH_TOKEN") && ("$TRAVIS_JOB_NUMBER" == "${TRAVIS_BUILD_NUMBER}.1")'
#after_deploy:
#after_script:
# configure notifications (email, IRC, campfire etc) # configure notifications (email, IRC, campfire etc)
notifications: #notifications:
# irc: "irc.freenode.org#yourfavouriteroomfortravis" # irc: "irc.freenode.org#yourfavouriteroomfortravis"
# a plugin/script to post to a hubzilla channel would be neat here # a plugin/script to post to a hubzilla channel would be neat here

View File

@ -33,11 +33,12 @@
"pixel418/markdownify": "^2.2" "pixel418/markdownify": "^2.2"
}, },
"require-dev" : { "require-dev" : {
"php" : ">=5.6", "php" : ">=7.0",
"phpunit/phpunit" : "^5.6", "phpunit/phpunit" : "^6.0",
"behat/behat" : "@stable", "behat/behat" : "@stable",
"behat/mink-extension": "@stable", "behat/mink-extension": "@stable",
"behat/mink-goutte-driver": "@stable" "behat/mink-goutte-driver": "@stable",
"php-mock/php-mock-phpunit": "^2.0"
}, },
"autoload" : { "autoload" : {
"psr-4" : { "psr-4" : {

424
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "c0cafbf9fd702be588f6b392b9742cb6", "content-hash": "0b382a501597bf5f59a5f22e85954cbe",
"packages": [ "packages": [
{ {
"name": "michelf/php-markdown", "name": "michelf/php-markdown",
@ -1113,21 +1113,21 @@
}, },
{ {
"name": "guzzlehttp/guzzle", "name": "guzzlehttp/guzzle",
"version": "6.2.2", "version": "6.2.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/guzzle/guzzle.git", "url": "https://github.com/guzzle/guzzle.git",
"reference": "ebf29dee597f02f09f4d5bbecc68230ea9b08f60" "reference": "8d6c6cc55186db87b7dc5009827429ba4e9dc006"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/ebf29dee597f02f09f4d5bbecc68230ea9b08f60", "url": "https://api.github.com/repos/guzzle/guzzle/zipball/8d6c6cc55186db87b7dc5009827429ba4e9dc006",
"reference": "ebf29dee597f02f09f4d5bbecc68230ea9b08f60", "reference": "8d6c6cc55186db87b7dc5009827429ba4e9dc006",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"guzzlehttp/promises": "^1.0", "guzzlehttp/promises": "^1.0",
"guzzlehttp/psr7": "^1.3.1", "guzzlehttp/psr7": "^1.4",
"php": ">=5.5" "php": ">=5.5"
}, },
"require-dev": { "require-dev": {
@ -1171,7 +1171,7 @@
"rest", "rest",
"web service" "web service"
], ],
"time": "2016-10-08T15:01:37+00:00" "time": "2017-02-28T22:50:30+00:00"
}, },
{ {
"name": "guzzlehttp/promises", "name": "guzzlehttp/promises",
@ -1226,16 +1226,16 @@
}, },
{ {
"name": "guzzlehttp/psr7", "name": "guzzlehttp/psr7",
"version": "1.4.0", "version": "1.4.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/guzzle/psr7.git", "url": "https://github.com/guzzle/psr7.git",
"reference": "04a6d1a00ea5da0727ee94309a9f0d3dbaecb569" "reference": "0d6c7ca039329247e4f0f8f8f6506810e8248855"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/04a6d1a00ea5da0727ee94309a9f0d3dbaecb569", "url": "https://api.github.com/repos/guzzle/psr7/zipball/0d6c7ca039329247e4f0f8f8f6506810e8248855",
"reference": "04a6d1a00ea5da0727ee94309a9f0d3dbaecb569", "reference": "0d6c7ca039329247e4f0f8f8f6506810e8248855",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1287,7 +1287,7 @@
"uri", "uri",
"url" "url"
], ],
"time": "2017-02-21T01:20:32+00:00" "time": "2017-02-27T10:51:17+00:00"
}, },
{ {
"name": "myclabs/deep-copy", "name": "myclabs/deep-copy",
@ -1331,6 +1331,171 @@
], ],
"time": "2017-01-26T22:05:40+00:00" "time": "2017-01-26T22:05:40+00:00"
}, },
{
"name": "php-mock/php-mock",
"version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-mock/php-mock.git",
"reference": "22d297231118e6fd5b9db087fbe1ef866c2b95d2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-mock/php-mock/zipball/22d297231118e6fd5b9db087fbe1ef866c2b95d2",
"reference": "22d297231118e6fd5b9db087fbe1ef866c2b95d2",
"shasum": ""
},
"require": {
"php": ">=5.6",
"phpunit/php-text-template": "^1"
},
"replace": {
"malkusch/php-mock": "*"
},
"require-dev": {
"phpunit/phpunit": "^5.7"
},
"suggest": {
"php-mock/php-mock-phpunit": "Allows integration into PHPUnit testcase with the trait PHPMock."
},
"type": "library",
"autoload": {
"psr-4": {
"phpmock\\": [
"classes/",
"tests/"
]
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"WTFPL"
],
"authors": [
{
"name": "Markus Malkusch",
"email": "markus@malkusch.de",
"homepage": "http://markus.malkusch.de",
"role": "Developer"
}
],
"description": "PHP-Mock can mock built-in PHP functions (e.g. time()). PHP-Mock relies on PHP's namespace fallback policy. No further extension is needed.",
"homepage": "https://github.com/php-mock/php-mock",
"keywords": [
"BDD",
"TDD",
"function",
"mock",
"stub",
"test",
"test double"
],
"time": "2017-02-17T20:52:52+00:00"
},
{
"name": "php-mock/php-mock-integration",
"version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-mock/php-mock-integration.git",
"reference": "5a0d7d7755f823bc2a230cfa45058b40f9013bc4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-mock/php-mock-integration/zipball/5a0d7d7755f823bc2a230cfa45058b40f9013bc4",
"reference": "5a0d7d7755f823bc2a230cfa45058b40f9013bc4",
"shasum": ""
},
"require": {
"php": ">=5.6",
"php-mock/php-mock": "^2",
"phpunit/php-text-template": "^1"
},
"require-dev": {
"phpunit/phpunit": "^4|^5"
},
"type": "library",
"autoload": {
"psr-4": {
"phpmock\\integration\\": "classes/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"WTFPL"
],
"authors": [
{
"name": "Markus Malkusch",
"email": "markus@malkusch.de",
"homepage": "http://markus.malkusch.de",
"role": "Developer"
}
],
"description": "Integration package for PHP-Mock",
"homepage": "https://github.com/php-mock/php-mock-integration",
"keywords": [
"BDD",
"TDD",
"function",
"mock",
"stub",
"test",
"test double"
],
"time": "2017-02-17T21:31:34+00:00"
},
{
"name": "php-mock/php-mock-phpunit",
"version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-mock/php-mock-phpunit.git",
"reference": "173781abdc632c59200253e12e2b991ae6a4574f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-mock/php-mock-phpunit/zipball/173781abdc632c59200253e12e2b991ae6a4574f",
"reference": "173781abdc632c59200253e12e2b991ae6a4574f",
"shasum": ""
},
"require": {
"php": ">=7",
"php-mock/php-mock-integration": "^2",
"phpunit/phpunit": "^6"
},
"type": "library",
"autoload": {
"psr-4": {
"phpmock\\phpunit\\": "classes/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"WTFPL"
],
"authors": [
{
"name": "Markus Malkusch",
"email": "markus@malkusch.de",
"homepage": "http://markus.malkusch.de",
"role": "Developer"
}
],
"description": "Mock built-in PHP functions (e.g. time()) with PHPUnit. This package relies on PHP's namespace fallback policy. No further extension is needed.",
"homepage": "https://github.com/php-mock/php-mock-phpunit",
"keywords": [
"BDD",
"TDD",
"function",
"mock",
"phpunit",
"stub",
"test",
"test double"
],
"time": "2017-02-17T22:44:38+00:00"
},
{ {
"name": "phpdocumentor/reflection-common", "name": "phpdocumentor/reflection-common",
"version": "1.0", "version": "1.0",
@ -1479,27 +1644,27 @@
}, },
{ {
"name": "phpspec/prophecy", "name": "phpspec/prophecy",
"version": "v1.6.2", "version": "v1.7.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/phpspec/prophecy.git", "url": "https://github.com/phpspec/prophecy.git",
"reference": "6c52c2722f8460122f96f86346600e1077ce22cb" "reference": "93d39f1f7f9326d746203c7c056f300f7f126073"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/6c52c2722f8460122f96f86346600e1077ce22cb", "url": "https://api.github.com/repos/phpspec/prophecy/zipball/93d39f1f7f9326d746203c7c056f300f7f126073",
"reference": "6c52c2722f8460122f96f86346600e1077ce22cb", "reference": "93d39f1f7f9326d746203c7c056f300f7f126073",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"doctrine/instantiator": "^1.0.2", "doctrine/instantiator": "^1.0.2",
"php": "^5.3|^7.0", "php": "^5.3|^7.0",
"phpdocumentor/reflection-docblock": "^2.0|^3.0.2", "phpdocumentor/reflection-docblock": "^2.0|^3.0.2",
"sebastian/comparator": "^1.1", "sebastian/comparator": "^1.1|^2.0",
"sebastian/recursion-context": "^1.0|^2.0" "sebastian/recursion-context": "^1.0|^2.0|^3.0"
}, },
"require-dev": { "require-dev": {
"phpspec/phpspec": "^2.0", "phpspec/phpspec": "^2.5|^3.2",
"phpunit/phpunit": "^4.8 || ^5.6.5" "phpunit/phpunit": "^4.8 || ^5.6.5"
}, },
"type": "library", "type": "library",
@ -1538,44 +1703,44 @@
"spy", "spy",
"stub" "stub"
], ],
"time": "2016-11-21T14:58:47+00:00" "time": "2017-03-02T20:05:34+00:00"
}, },
{ {
"name": "phpunit/php-code-coverage", "name": "phpunit/php-code-coverage",
"version": "4.0.6", "version": "5.0.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
"reference": "ca060f645beeddebedb1885c97bf163e93264c35" "reference": "531553c4795a1df54114342d68ca337d5d81c8a0"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ca060f645beeddebedb1885c97bf163e93264c35", "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/531553c4795a1df54114342d68ca337d5d81c8a0",
"reference": "ca060f645beeddebedb1885c97bf163e93264c35", "reference": "531553c4795a1df54114342d68ca337d5d81c8a0",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": "^5.6 || ^7.0", "ext-dom": "*",
"phpunit/php-file-iterator": "~1.3", "ext-xmlwriter": "*",
"phpunit/php-text-template": "~1.2", "php": "^7.0",
"phpunit/php-token-stream": "^1.4.2 || ^2.0", "phpunit/php-file-iterator": "^1.3",
"sebastian/code-unit-reverse-lookup": "~1.0", "phpunit/php-text-template": "^1.2",
"sebastian/environment": "^1.3.2 || ^2.0", "phpunit/php-token-stream": "^1.4.11 || ^2.0",
"sebastian/version": "~1.0|~2.0" "sebastian/code-unit-reverse-lookup": "^1.0",
"sebastian/environment": "^2.0",
"sebastian/version": "^2.0"
}, },
"require-dev": { "require-dev": {
"ext-xdebug": ">=2.1.4", "ext-xdebug": "^2.5",
"phpunit/phpunit": "^5.4" "phpunit/phpunit": "^6.0"
}, },
"suggest": { "suggest": {
"ext-dom": "*", "ext-xdebug": "^2.5.1"
"ext-xdebug": ">=2.4.0",
"ext-xmlwriter": "*"
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "4.0.x-dev" "dev-master": "5.0.x-dev"
} }
}, },
"autoload": { "autoload": {
@ -1601,7 +1766,7 @@
"testing", "testing",
"xunit" "xunit"
], ],
"time": "2017-02-23T07:38:02+00:00" "time": "2017-03-01T09:14:18+00:00"
}, },
{ {
"name": "phpunit/php-file-iterator", "name": "phpunit/php-file-iterator",
@ -1693,25 +1858,30 @@
}, },
{ {
"name": "phpunit/php-timer", "name": "phpunit/php-timer",
"version": "1.0.8", "version": "1.0.9",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/php-timer.git", "url": "https://github.com/sebastianbergmann/php-timer.git",
"reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260" "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/38e9124049cf1a164f1e4537caf19c99bf1eb260", "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
"reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260", "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=5.3.3" "php": "^5.3.3 || ^7.0"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "~4|~5" "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
}, },
"type": "library", "type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0-dev"
}
},
"autoload": { "autoload": {
"classmap": [ "classmap": [
"src/" "src/"
@ -1733,20 +1903,20 @@
"keywords": [ "keywords": [
"timer" "timer"
], ],
"time": "2016-05-12T18:03:57+00:00" "time": "2017-02-26T11:10:40+00:00"
}, },
{ {
"name": "phpunit/php-token-stream", "name": "phpunit/php-token-stream",
"version": "1.4.10", "version": "1.4.11",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/php-token-stream.git", "url": "https://github.com/sebastianbergmann/php-token-stream.git",
"reference": "284fb0679dd25fb5ffb56dad92c72860c0a22f1b" "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/284fb0679dd25fb5ffb56dad92c72860c0a22f1b", "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e03f8f67534427a787e21a385a67ec3ca6978ea7",
"reference": "284fb0679dd25fb5ffb56dad92c72860c0a22f1b", "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1782,20 +1952,20 @@
"keywords": [ "keywords": [
"tokenizer" "tokenizer"
], ],
"time": "2017-02-23T06:14:45+00:00" "time": "2017-02-27T10:12:30+00:00"
}, },
{ {
"name": "phpunit/phpunit", "name": "phpunit/phpunit",
"version": "5.7.14", "version": "6.0.8",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git", "url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "4906b8faf23e42612182fd212eb6f4c0f2954b57" "reference": "47ee3fa1bca5c50f1d25105201eb20df777bd7b6"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4906b8faf23e42612182fd212eb6f4c0f2954b57", "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/47ee3fa1bca5c50f1d25105201eb20df777bd7b6",
"reference": "4906b8faf23e42612182fd212eb6f4c0f2954b57", "reference": "47ee3fa1bca5c50f1d25105201eb20df777bd7b6",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1804,33 +1974,33 @@
"ext-libxml": "*", "ext-libxml": "*",
"ext-mbstring": "*", "ext-mbstring": "*",
"ext-xml": "*", "ext-xml": "*",
"myclabs/deep-copy": "~1.3", "myclabs/deep-copy": "^1.3",
"php": "^5.6 || ^7.0", "php": "^7.0",
"phpspec/prophecy": "^1.6.2", "phpspec/prophecy": "^1.6.2",
"phpunit/php-code-coverage": "^4.0.4", "phpunit/php-code-coverage": "^5.0",
"phpunit/php-file-iterator": "~1.4", "phpunit/php-file-iterator": "^1.4",
"phpunit/php-text-template": "~1.2", "phpunit/php-text-template": "^1.2",
"phpunit/php-timer": "^1.0.6", "phpunit/php-timer": "^1.0.6",
"phpunit/phpunit-mock-objects": "^3.2", "phpunit/phpunit-mock-objects": "^4.0",
"sebastian/comparator": "^1.2.4", "sebastian/comparator": "^1.2.4 || ^2.0",
"sebastian/diff": "~1.2", "sebastian/diff": "^1.2",
"sebastian/environment": "^1.3.4 || ^2.0", "sebastian/environment": "^2.0",
"sebastian/exporter": "~2.0", "sebastian/exporter": "^2.0 || ^3.0",
"sebastian/global-state": "^1.1", "sebastian/global-state": "^1.1 || ^2.0",
"sebastian/object-enumerator": "~2.0", "sebastian/object-enumerator": "^2.0 || ^3.0",
"sebastian/resource-operations": "~1.0", "sebastian/resource-operations": "^1.0",
"sebastian/version": "~1.0.3|~2.0", "sebastian/version": "^2.0"
"symfony/yaml": "~2.1|~3.0"
}, },
"conflict": { "conflict": {
"phpdocumentor/reflection-docblock": "3.0.2" "phpdocumentor/reflection-docblock": "3.0.2",
"phpunit/dbunit": "<3.0"
}, },
"require-dev": { "require-dev": {
"ext-pdo": "*" "ext-pdo": "*"
}, },
"suggest": { "suggest": {
"ext-xdebug": "*", "ext-xdebug": "*",
"phpunit/php-invoker": "~1.1" "phpunit/php-invoker": "^1.1"
}, },
"bin": [ "bin": [
"phpunit" "phpunit"
@ -1838,7 +2008,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "5.7.x-dev" "dev-master": "6.0.x-dev"
} }
}, },
"autoload": { "autoload": {
@ -1864,33 +2034,33 @@
"testing", "testing",
"xunit" "xunit"
], ],
"time": "2017-02-19T07:22:16+00:00" "time": "2017-03-02T15:24:03+00:00"
}, },
{ {
"name": "phpunit/phpunit-mock-objects", "name": "phpunit/phpunit-mock-objects",
"version": "3.4.3", "version": "4.0.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
"reference": "3ab72b65b39b491e0c011e2e09bb2206c2aa8e24" "reference": "eabce450df194817a7d7e27e19013569a903a2bf"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/3ab72b65b39b491e0c011e2e09bb2206c2aa8e24", "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/eabce450df194817a7d7e27e19013569a903a2bf",
"reference": "3ab72b65b39b491e0c011e2e09bb2206c2aa8e24", "reference": "eabce450df194817a7d7e27e19013569a903a2bf",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"doctrine/instantiator": "^1.0.2", "doctrine/instantiator": "^1.0.2",
"php": "^5.6 || ^7.0", "php": "^7.0",
"phpunit/php-text-template": "^1.2", "phpunit/php-text-template": "^1.2",
"sebastian/exporter": "^1.2 || ^2.0" "sebastian/exporter": "^3.0"
}, },
"conflict": { "conflict": {
"phpunit/phpunit": "<5.4.0" "phpunit/phpunit": "<6.0"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^5.4" "phpunit/phpunit": "^6.0"
}, },
"suggest": { "suggest": {
"ext-soap": "*" "ext-soap": "*"
@ -1898,7 +2068,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "3.2.x-dev" "dev-master": "4.0.x-dev"
} }
}, },
"autoload": { "autoload": {
@ -1923,7 +2093,7 @@
"mock", "mock",
"xunit" "xunit"
], ],
"time": "2016-12-08T20:27:08+00:00" "time": "2017-03-03T06:30:20+00:00"
}, },
{ {
"name": "psr/container", "name": "psr/container",
@ -2026,23 +2196,23 @@
}, },
{ {
"name": "sebastian/code-unit-reverse-lookup", "name": "sebastian/code-unit-reverse-lookup",
"version": "1.0.0", "version": "1.0.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
"reference": "c36f5e7cfce482fde5bf8d10d41a53591e0198fe" "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/c36f5e7cfce482fde5bf8d10d41a53591e0198fe", "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
"reference": "c36f5e7cfce482fde5bf8d10d41a53591e0198fe", "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=5.6" "php": "^5.6 || ^7.0"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "~5" "phpunit/phpunit": "^5.7 || ^6.0"
}, },
"type": "library", "type": "library",
"extra": { "extra": {
@ -2067,34 +2237,34 @@
], ],
"description": "Looks up which function or method a line of code belongs to", "description": "Looks up which function or method a line of code belongs to",
"homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
"time": "2016-02-13T06:45:14+00:00" "time": "2017-03-04T06:30:41+00:00"
}, },
{ {
"name": "sebastian/comparator", "name": "sebastian/comparator",
"version": "1.2.4", "version": "2.0.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git", "url": "https://github.com/sebastianbergmann/comparator.git",
"reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" "reference": "20f84f468cb67efee293246e6a09619b891f55f0"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/20f84f468cb67efee293246e6a09619b891f55f0",
"reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", "reference": "20f84f468cb67efee293246e6a09619b891f55f0",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=5.3.3", "php": "^7.0",
"sebastian/diff": "~1.2", "sebastian/diff": "^1.2",
"sebastian/exporter": "~1.2 || ~2.0" "sebastian/exporter": "^3.0"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "~4.4" "phpunit/phpunit": "^6.0"
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "1.2.x-dev" "dev-master": "2.0.x-dev"
} }
}, },
"autoload": { "autoload": {
@ -2131,7 +2301,7 @@
"compare", "compare",
"equality" "equality"
], ],
"time": "2017-01-29T09:50:25+00:00" "time": "2017-03-03T06:26:08+00:00"
}, },
{ {
"name": "sebastian/diff", "name": "sebastian/diff",
@ -2237,30 +2407,30 @@
}, },
{ {
"name": "sebastian/exporter", "name": "sebastian/exporter",
"version": "2.0.0", "version": "3.0.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git", "url": "https://github.com/sebastianbergmann/exporter.git",
"reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" "reference": "b82d077cb3459e393abcf4867ae8f7230dcb51f6"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/b82d077cb3459e393abcf4867ae8f7230dcb51f6",
"reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", "reference": "b82d077cb3459e393abcf4867ae8f7230dcb51f6",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=5.3.3", "php": "^7.0",
"sebastian/recursion-context": "~2.0" "sebastian/recursion-context": "^3.0"
}, },
"require-dev": { "require-dev": {
"ext-mbstring": "*", "ext-mbstring": "*",
"phpunit/phpunit": "~4.4" "phpunit/phpunit": "^6.0"
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "2.0.x-dev" "dev-master": "3.0.x-dev"
} }
}, },
"autoload": { "autoload": {
@ -2300,7 +2470,7 @@
"export", "export",
"exporter" "exporter"
], ],
"time": "2016-11-19T08:54:04+00:00" "time": "2017-03-03T06:25:06+00:00"
}, },
{ {
"name": "sebastian/global-state", "name": "sebastian/global-state",
@ -2355,29 +2525,29 @@
}, },
{ {
"name": "sebastian/object-enumerator", "name": "sebastian/object-enumerator",
"version": "2.0.1", "version": "3.0.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/object-enumerator.git", "url": "https://github.com/sebastianbergmann/object-enumerator.git",
"reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7" "reference": "de6e32f7192dfea2e4bedc892434f4830b5c5794"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7", "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/de6e32f7192dfea2e4bedc892434f4830b5c5794",
"reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7", "reference": "de6e32f7192dfea2e4bedc892434f4830b5c5794",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=5.6", "php": "^7.0",
"sebastian/recursion-context": "~2.0" "sebastian/recursion-context": "^3.0"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "~5" "phpunit/phpunit": "^6.0"
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "2.0.x-dev" "dev-master": "3.0.x-dev"
} }
}, },
"autoload": { "autoload": {
@ -2397,32 +2567,32 @@
], ],
"description": "Traverses array structures and object graphs to enumerate all referenced objects", "description": "Traverses array structures and object graphs to enumerate all referenced objects",
"homepage": "https://github.com/sebastianbergmann/object-enumerator/", "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
"time": "2017-02-18T15:18:39+00:00" "time": "2017-03-03T06:21:01+00:00"
}, },
{ {
"name": "sebastian/recursion-context", "name": "sebastian/recursion-context",
"version": "2.0.0", "version": "3.0.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/recursion-context.git", "url": "https://github.com/sebastianbergmann/recursion-context.git",
"reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
"reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=5.3.3" "php": "^7.0"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "~4.4" "phpunit/phpunit": "^6.0"
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "2.0.x-dev" "dev-master": "3.0.x-dev"
} }
}, },
"autoload": { "autoload": {
@ -2450,7 +2620,7 @@
], ],
"description": "Provides functionality to recursively process PHP variables", "description": "Provides functionality to recursively process PHP variables",
"homepage": "http://www.github.com/sebastianbergmann/recursion-context", "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
"time": "2016-11-19T07:33:16+00:00" "time": "2017-03-03T06:23:57+00:00"
}, },
{ {
"name": "sebastian/resource-operations", "name": "sebastian/resource-operations",
@ -3354,6 +3524,6 @@
"ext-openssl": "*" "ext-openssl": "*"
}, },
"platform-dev": { "platform-dev": {
"php": ">=5.6" "php": ">=7.0"
} }
} }

1
tests/phpunit-mariadb.xml Symbolic link
View File

@ -0,0 +1 @@
phpunit-mysql.xml

37
tests/phpunit-mysql.xml Normal file
View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/6.0/phpunit.xsd"
bootstrap="../boot.php"
forceCoversAnnotation="false"
beStrictAboutCoversAnnotation="true"
beStrictAboutOutputDuringTests="true"
beStrictAboutTodoAnnotatedTests="true"
verbose="true">
<testsuite name="Hubzilla default Test Suite">
<directory suffix="Test.php">./unit/</directory>
</testsuite>
<testsuite name="API Test Suite">
<directory suffix="Test.php" prefix="API">./unit/</directory>
</testsuite>
<testsuite name="Ex-/Import Test Suite">
<directory suffix="Test.php">./unit/eximport/</directory>
</testsuite>
<groups>
<exclude>
<group>postgresql</group>
</exclude>
</groups>
<!--cover reporting-->
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">../Zotlabs/</directory>
<directory suffix=".php">../include/</directory>
</whitelist>
</filter>
<logging>
<log type="junit" target="./results/junit.xml" logIncompleteSkipped="false"/>
<log type="coverage-clover" target="./results/coverage-clover.xml"/>
<log type="coverage-html" target="./results/coverage-report/" lowUpperBound="35"
highLowerBound="70"/>
</logging>
</phpunit>

34
tests/phpunit-pgsql.xml Normal file
View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/6.0/phpunit.xsd"
bootstrap="../boot.php"
forceCoversAnnotation="false"
beStrictAboutCoversAnnotation="true"
beStrictAboutOutputDuringTests="true"
beStrictAboutTodoAnnotatedTests="true"
verbose="true">
<testsuite name="Hubzilla default Test Suite">
<directory suffix="Test.php">./unit/</directory>
</testsuite>
<testsuite name="API Test Suite">
<directory suffix="Test.php" prefix="API">./unit/</directory>
</testsuite>
<groups>
<exclude>
<group>mysql</group>
</exclude>
</groups>
<!--cover reporting-->
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">../Zotlabs/</directory>
<directory suffix=".php">../include/</directory>
</whitelist>
</filter>
<logging>
<log type="junit" target="./results/junit.xml" logIncompleteSkipped="false"/>
<log type="coverage-clover" target="./results/coverage-clover.xml"/>
<log type="coverage-html" target="./results/coverage-report/" lowUpperBound="35"
highLowerBound="70"/>
</logging>
</phpunit>

69
tests/travis/gen_apidocs.sh Executable file
View File

@ -0,0 +1,69 @@
#!/usr/bin/env bash
#
# Copyright (c) 2016 Hubzilla
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
# Exit if anything fails
set -e
# Only create and deploy API documentation once, on first build job.
# Waiting for upcoming 'Build Stages' Q1/Q2 2017 to make this cleaner.
# https://github.com/travis-ci/travis-ci/issues/929
if [[ "$TRAVIS_JOB_NUMBER" != "${TRAVIS_BUILD_NUMBER}.1" ]]; then
echo "Not the first build job. Creating API documentation only once is enough."
echo "We are finished ..."
exit
fi
echo "Doxygen version >= 1.8 is required"
doxygen --version
# Check if newer version of Doxygen should be used
if [ ! -z "$DOXY_VER" ]; then
export DOXY_BINPATH=$HOME/doxygen/doxygen-$DOXY_VER/bin
if [ ! -e "$DOXY_BINPATH/doxygen" ]; then
echo "Installing newer Doxygen $DOXY_VER ..."
mkdir -p $HOME/doxygen && cd $HOME/doxygen
wget -O - http://ftp.stack.nl/pub/users/dimitri/doxygen-$DOXY_VER.linux.bin.tar.gz | tar xz
export PATH=$DOXY_BINPATH:$PATH
fi
echo "Doxygen version"
doxygen --version
fi
echo "Generating Doxygen API documentation ..."
cd $TRAVIS_BUILD_DIR
mkdir -p ./doc/html
# Redirect stderr and stdout to log file and console to be able to review documentation errors
doxygen $DOXYFILE 2>&1 | tee ./doc/html/doxygen.log
# Check if Doxygen successfully created the documentation
if [ -d "doc/html" ] && [ -f "doc/html/index.html" ]; then
echo "API documentation generated"
if [ -n "${TRAVIS_TAG}" ]; then
echo "Generate API documentation archive for release deployment ..."
zip -9 -r -q doc/hubzilla-api-documentation.zip doc/html/
fi
else
echo "No API documentation files have been found" >&2
exit 1
fi

35
tests/travis/prepare.sh Executable file
View File

@ -0,0 +1,35 @@
#!/usr/bin/env bash
#
# Copyright (c) 2016 Hubzilla
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
# Exit if anything fails
set -e
# gd is required, show some info about the used one
php -r "var_dump(gd_info());"
echo "Creating required folders for Hubzilla ..."
mkdir -p ./store/\[data\]/smarty3
echo "TODO: create .htconfig"

39
tests/travis/prepare_mysql.sh Executable file
View File

@ -0,0 +1,39 @@
#!/usr/bin/env bash
#
# Copyright (c) 2016 Hubzilla
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
# Exit if anything fails
set -e
echo "Preparing for MySQL ..."
# Print out some MySQL information
mysql --version
mysql -e "SELECT VERSION();"
mysql -e "SHOW VARIABLES LIKE 'max_allowed_packet';"
mysql -e "SHOW VARIABLES LIKE 'collation_%';"
mysql -e "SHOW VARIABLES LIKE 'character_set%';"
mysql -e "SELECT @@sql_mode;"
# Create Hubzilla database
mysql -e "CREATE DATABASE IF NOT EXISTS hubzilla;" -uroot;

37
tests/travis/prepare_pgsql.sh Executable file
View File

@ -0,0 +1,37 @@
#!/usr/bin/env bash
#
# Copyright (c) 2016 Hubzilla
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
# Exit if anything fails
set -e
echo "Preparing for PostgreSQL ..."
# Print out some PostgreSQL information
psql --version
# Why does this hang further execution of the job?
psql -c "SELECT VERSION();" -U postgres
# Create Hubzilla database
psql -c "DROP DATABASE IF EXISTS hubzilla;" -U postgres
psql -c "CREATE DATABASE hubzilla;" -U postgres

View File

@ -1,6 +1,6 @@
<?php <?php
/* /*
* Copyright (c) 2016 Hubzilla * Copyright (c) 2016-2017 Hubzilla
* *
* Permission is hereby granted, free of charge, to any person obtaining a copy * Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal * of this software and associated documentation files (the "Software"), to deal
@ -21,52 +21,18 @@
* SOFTWARE. * SOFTWARE.
*/ */
// Global namespace for fully qualified \App class. namespace Zotlabs\Tests\Unit\Lib;
namespace {
// General channel permissions in boot.php
// 0 = Only you
define ( 'PERMS_PUBLIC' , 0x0001 ); // anybody
define ( 'PERMS_NETWORK' , 0x0002 ); // anybody in this network
define ( 'PERMS_SITE' , 0x0004 ); // anybody on this site
define ( 'PERMS_CONTACTS' , 0x0008 ); // any of my connections
define ( 'PERMS_SPECIFIC' , 0x0080 ); // only specific connections
define ( 'PERMS_AUTHED' , 0x0100 ); // anybody authenticated (could include visitors from other networks)
define ( 'PERMS_PENDING' , 0x0200 ); // any connections including those who haven't yet been approved
// log levels in boot.php
define ( 'LOGGER_DEBUG', 2 );
// Stub global fully qualified \App class for static function calls use phpmock\phpunit\PHPMock;
class App { use Zotlabs\Tests\Unit\UnitTestCase;
// Stub get_hostname() use Zotlabs\Lib\PermissionDescription;
public static function get_hostname() {
return 'phpunit';
}
}
}
// Stub global functions used in PermissionDescription with the help of /**
// PHP's namespace resolution rules. * @brief Unit Test case for PermissionDescription class.
namespace Zotlabs\Lib {
// Stub global translate function t()
function t($s) {
return $s;
}
// Stub global log function logger()
function logger($msg, $level = LOGGER_NORMAL, $priority = LOG_INFO) {
// doesn't matter
}
}
// regular namespace for this unit test
namespace Zotlabs\Tests\Unit\Lib {
use Zotlabs\Tests\Unit\UnitTestCase;
use Zotlabs\Lib\PermissionDescription;
/**
* @brief Unit Test case for ConnectionPool class.
*/ */
class PermissionDescriptionTest extends UnitTestCase { class PermissionDescriptionTest extends UnitTestCase {
use PHPMock;
public function testFromDescription() { public function testFromDescription() {
$permDesc = PermissionDescription::fromDescription('test'); $permDesc = PermissionDescription::fromDescription('test');
@ -78,6 +44,16 @@ namespace Zotlabs\Tests\Unit\Lib {
} }
public function testFromStandalonePermission() { public function testFromStandalonePermission() {
// Create a stub for global function t()
$t = $this->getFunctionMock('Zotlabs\Lib', 't');
$t->expects($this->atLeastOnce())->willReturnCallback(
function ($string) {
return $string;
}
);
// Create a mock for global function logger()
$this->getFunctionMock('Zotlabs\Lib', 'logger');
$permDescUnknown = PermissionDescription::fromStandalonePermission(-1); $permDescUnknown = PermissionDescription::fromStandalonePermission(-1);
$permDescSelf = PermissionDescription::fromStandalonePermission(0); $permDescSelf = PermissionDescription::fromStandalonePermission(0);
@ -89,22 +65,31 @@ namespace Zotlabs\Tests\Unit\Lib {
//$permDesc = PermissionDescription::fromGlobalPermission('view_profile'); //$permDesc = PermissionDescription::fromGlobalPermission('view_profile');
$this->markTestIncomplete( $this->markTestIncomplete(
'For this test we need more stubs...' 'The method fromGlobalPermission() is not yet testable ...'
); );
} }
public function testGetPermissionDescription() { public function testGetPermissionDescription() {
// Create a stub for global function t()
// fromStandalonePermission uses get_permission_description(), so that will not help $t = $this->getFunctionMock('Zotlabs\Lib', 't');
//$permDescSelf = PermissionDescription::fromStandalonePermission(0); $t->expects($this->atLeastOnce())->willReturnCallback(
//$permDescPublic = PermissionDescription::fromStandalonePermission(PERMS_PUBLIC); function ($string) {
return $string;
$this->markTestIncomplete(
'For this test we need a mock of PermissionDescription...'
);
//$permDescSelf =
//$this->assertEquals($permDescSelf->, 'Only me');
//$this->assertEquals($permDescPublic, 'Public');
} }
);
// Create a mock for global function logger()
$this->getFunctionMock('Zotlabs\Lib', 'logger');
// Create a stub for the PermissionDescription class
$stub = $this->createMock(PermissionDescription::class);
$stub->method('get_permission_description')
->will($this->returnArgument(0));
$permDescSelf = PermissionDescription::fromStandalonePermission(0);
$this->assertInstanceOf(PermissionDescription::class, $permDescSelf);
$this->assertEquals($permDescSelf->get_permission_description(), 'Only me');
$permDescPublic = PermissionDescription::fromStandalonePermission(PERMS_PUBLIC);
$this->assertEquals($permDescPublic->get_permission_description(), 'Public');
} }
} }

View File

@ -23,3 +23,12 @@ ALIASES += "TODO=\todo"
ALIASES += "BUG=\bug" ALIASES += "BUG=\bug"
ALIASES += "hooks=\xrefitem hooks \"Hooks\" \"Hooks List\"" ALIASES += "hooks=\xrefitem hooks \"Hooks\" \"Hooks List\""
ALIASES += "HOOKS=\hooks" ALIASES += "HOOKS=\hooks"
# Output
QUIET = YES
WARNINGS = YES
# Dot tool config
HAVE_DOT = YES
DOT_IMAGE_FORMAT = svg
INTERACTIVE_SVG = YES
CLASS_GRAPH = YES
COLLABORATION_GRAPH = NO

View File

@ -361,9 +361,6 @@ return array(
'Sabre\\Xml\\Writer' => $vendorDir . '/sabre/xml/lib/Writer.php', 'Sabre\\Xml\\Writer' => $vendorDir . '/sabre/xml/lib/Writer.php',
'Sabre\\Xml\\XmlDeserializable' => $vendorDir . '/sabre/xml/lib/XmlDeserializable.php', 'Sabre\\Xml\\XmlDeserializable' => $vendorDir . '/sabre/xml/lib/XmlDeserializable.php',
'Sabre\\Xml\\XmlSerializable' => $vendorDir . '/sabre/xml/lib/XmlSerializable.php', 'Sabre\\Xml\\XmlSerializable' => $vendorDir . '/sabre/xml/lib/XmlSerializable.php',
'Test\\Markdownify\\ConverterExtraTest' => $vendorDir . '/pixel418/markdownify/test/ConverterExtraTest.php',
'Test\\Markdownify\\ConverterTest' => $vendorDir . '/pixel418/markdownify/test/ConverterTest.php',
'Test\\Markdownify\\ConverterTestCase' => $vendorDir . '/pixel418/markdownify/test/ConverterTestCase.php',
'Zotlabs\\Access\\AccessList' => $baseDir . '/Zotlabs/Access/AccessList.php', 'Zotlabs\\Access\\AccessList' => $baseDir . '/Zotlabs/Access/AccessList.php',
'Zotlabs\\Access\\PermissionLimits' => $baseDir . '/Zotlabs/Access/PermissionLimits.php', 'Zotlabs\\Access\\PermissionLimits' => $baseDir . '/Zotlabs/Access/PermissionLimits.php',
'Zotlabs\\Access\\PermissionRoles' => $baseDir . '/Zotlabs/Access/PermissionRoles.php', 'Zotlabs\\Access\\PermissionRoles' => $baseDir . '/Zotlabs/Access/PermissionRoles.php',

View File

@ -476,9 +476,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Sabre\\Xml\\Writer' => __DIR__ . '/..' . '/sabre/xml/lib/Writer.php', 'Sabre\\Xml\\Writer' => __DIR__ . '/..' . '/sabre/xml/lib/Writer.php',
'Sabre\\Xml\\XmlDeserializable' => __DIR__ . '/..' . '/sabre/xml/lib/XmlDeserializable.php', 'Sabre\\Xml\\XmlDeserializable' => __DIR__ . '/..' . '/sabre/xml/lib/XmlDeserializable.php',
'Sabre\\Xml\\XmlSerializable' => __DIR__ . '/..' . '/sabre/xml/lib/XmlSerializable.php', 'Sabre\\Xml\\XmlSerializable' => __DIR__ . '/..' . '/sabre/xml/lib/XmlSerializable.php',
'Test\\Markdownify\\ConverterExtraTest' => __DIR__ . '/..' . '/pixel418/markdownify/test/ConverterExtraTest.php',
'Test\\Markdownify\\ConverterTest' => __DIR__ . '/..' . '/pixel418/markdownify/test/ConverterTest.php',
'Test\\Markdownify\\ConverterTestCase' => __DIR__ . '/..' . '/pixel418/markdownify/test/ConverterTestCase.php',
'Zotlabs\\Access\\AccessList' => __DIR__ . '/../..' . '/Zotlabs/Access/AccessList.php', 'Zotlabs\\Access\\AccessList' => __DIR__ . '/../..' . '/Zotlabs/Access/AccessList.php',
'Zotlabs\\Access\\PermissionLimits' => __DIR__ . '/../..' . '/Zotlabs/Access/PermissionLimits.php', 'Zotlabs\\Access\\PermissionLimits' => __DIR__ . '/../..' . '/Zotlabs/Access/PermissionLimits.php',
'Zotlabs\\Access\\PermissionRoles' => __DIR__ . '/../..' . '/Zotlabs/Access/PermissionRoles.php', 'Zotlabs\\Access\\PermissionRoles' => __DIR__ . '/../..' . '/Zotlabs/Access/PermissionRoles.php',