kopia lustrzana https://github.com/nextcloud/social
				
				
				
			Add basic test skeleton
Signed-off-by: Julius Härtl <jus@bitgrid.net>pull/454/head
							rodzic
							
								
									90779e4e6c
								
							
						
					
					
						commit
						3383843670
					
				
							
								
								
									
										46
									
								
								.drone.yml
								
								
								
								
							
							
						
						
									
										46
									
								
								.drone.yml
								
								
								
								
							| 
						 | 
				
			
			@ -69,6 +69,20 @@ pipeline:
 | 
			
		|||
    when:
 | 
			
		||||
      matrix:
 | 
			
		||||
        TESTS: syntax-php7.3
 | 
			
		||||
  php7.1:
 | 
			
		||||
    image: nextcloudci/php7.1:php7.1-16
 | 
			
		||||
    environment:
 | 
			
		||||
      - APP_NAME=social
 | 
			
		||||
      - CORE_BRANCH=stable15
 | 
			
		||||
    commands:
 | 
			
		||||
      - bash ./tests/drone-server-setup.sh $APP_NAME $CORE_BRANCH ${DB}
 | 
			
		||||
      - cd ../server/apps/$APP_NAME
 | 
			
		||||
      - composer install
 | 
			
		||||
      - phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml
 | 
			
		||||
    when:
 | 
			
		||||
      matrix:
 | 
			
		||||
        TESTS: php7.1
 | 
			
		||||
 | 
			
		||||
  eslint:
 | 
			
		||||
    image: node:lts-alpine
 | 
			
		||||
    commands:
 | 
			
		||||
| 
						 | 
				
			
			@ -85,6 +99,32 @@ pipeline:
 | 
			
		|||
    when:
 | 
			
		||||
      matrix:
 | 
			
		||||
        TESTS: vue-build
 | 
			
		||||
services:
 | 
			
		||||
  mysql:
 | 
			
		||||
    image: mysql:5.7.22
 | 
			
		||||
    environment:
 | 
			
		||||
      - MYSQL_ROOT_PASSWORD=owncloud
 | 
			
		||||
      - MYSQL_USER=oc_autotest
 | 
			
		||||
      - MYSQL_PASSWORD=owncloud
 | 
			
		||||
      - MYSQL_DATABASE=oc_autotest
 | 
			
		||||
    command: [ "--innodb_large_prefix=true", "--innodb_file_format=barracuda", "--innodb_file_per_table=true" ]
 | 
			
		||||
    tmpfs:
 | 
			
		||||
      - /var/lib/mysql
 | 
			
		||||
    when:
 | 
			
		||||
      matrix:
 | 
			
		||||
        DB: mysql
 | 
			
		||||
  postgres:
 | 
			
		||||
    image: postgres:10
 | 
			
		||||
    environment:
 | 
			
		||||
      - POSTGRES_USER=oc_autotest
 | 
			
		||||
      # This is required as nextcloud will create a separte user since the oc_autotest user can create roles
 | 
			
		||||
      - POSTGRES_DB=oc_autotest_dummy
 | 
			
		||||
      - POSTGRES_PASSWORD=owncloud
 | 
			
		||||
    tmpfs:
 | 
			
		||||
      - /var/lib/postgresql/data
 | 
			
		||||
    when:
 | 
			
		||||
      matrix:
 | 
			
		||||
        DB: postgres
 | 
			
		||||
 | 
			
		||||
matrix:
 | 
			
		||||
  include:
 | 
			
		||||
| 
						 | 
				
			
			@ -93,6 +133,12 @@ matrix:
 | 
			
		|||
    - TESTS: syntax-php7.1
 | 
			
		||||
    - TESTS: syntax-php7.2
 | 
			
		||||
    - TESTS: syntax-php7.3
 | 
			
		||||
    - TESTS: php7.1
 | 
			
		||||
      DB: sqlite
 | 
			
		||||
    - TESTS: php7.1
 | 
			
		||||
      DB: mysql
 | 
			
		||||
    - TESTS: php7.1
 | 
			
		||||
      DB: postgres
 | 
			
		||||
    - TESTS: eslint
 | 
			
		||||
    - TESTS: vue-build
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,12 +9,18 @@
 | 
			
		|||
      "email": "maxence@artificial-owl.com"
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "config": {
 | 
			
		||||
    "platform": {
 | 
			
		||||
      "php": "7.0.0"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "require": {
 | 
			
		||||
    "daita/my-small-php-tools": "dev-master",
 | 
			
		||||
    "friendica/json-ld": "^1.0"
 | 
			
		||||
  },
 | 
			
		||||
  "require-dev": {
 | 
			
		||||
    "jakub-onderka/php-parallel-lint": "^1.0"
 | 
			
		||||
    "jakub-onderka/php-parallel-lint": "^1.0",
 | 
			
		||||
    "phpunit/phpunit": "^6.4"
 | 
			
		||||
  },
 | 
			
		||||
  "repositories": [
 | 
			
		||||
    {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
										
											
												Plik diff jest za duży
												Load Diff
											
										
									
								
							| 
						 | 
				
			
			@ -0,0 +1,27 @@
 | 
			
		|||
<?php
 | 
			
		||||
namespace OCA\Social\Tests;
 | 
			
		||||
 | 
			
		||||
use OCA\Social\Controller\NavigationController;
 | 
			
		||||
use OCA\Social\Controller\SocialPubController;
 | 
			
		||||
use OCA\Social\Service\CacheActorService;
 | 
			
		||||
use OCP\IL10N;
 | 
			
		||||
use OCP\IRequest;
 | 
			
		||||
 | 
			
		||||
class SocialTest extends \PHPUnit\Framework\TestCase {
 | 
			
		||||
 | 
			
		||||
	public function testDummy() {
 | 
			
		||||
		/**
 | 
			
		||||
		 * Dummy test to check if phpunit is working properly
 | 
			
		||||
		 */
 | 
			
		||||
		$socialPub = new SocialPubController(
 | 
			
		||||
			'admin',
 | 
			
		||||
			$this->createMock(IRequest::class),
 | 
			
		||||
			$this->createMock(IL10N::class),
 | 
			
		||||
			$this->createMock(CacheActorService::class),
 | 
			
		||||
			$this->createMock(NavigationController::class)
 | 
			
		||||
		);
 | 
			
		||||
		$socialPub->actor('123');
 | 
			
		||||
		$this->assertTrue(true);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,7 @@
 | 
			
		|||
<?php
 | 
			
		||||
 | 
			
		||||
require_once __DIR__ . '/../../../tests/bootstrap.php';
 | 
			
		||||
require_once __DIR__.'/../vendor/autoload.php';
 | 
			
		||||
 | 
			
		||||
\OC_App::loadApp('social');
 | 
			
		||||
OC_Hook::clear();
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,138 @@
 | 
			
		|||
#!/bin/bash
 | 
			
		||||
# TODO: move this out of the repo to make it usable in other apps
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
DATABASENAME=oc_autotest
 | 
			
		||||
DATABASEUSER=oc_autotest
 | 
			
		||||
[ -z "$DATABASEHOST" ] && DATABASEHOST="localhost"
 | 
			
		||||
ADMINLOGIN=admin
 | 
			
		||||
BASEDIR=$PWD
 | 
			
		||||
 | 
			
		||||
DBCONFIGS="sqlite mysql pgsql oracle"
 | 
			
		||||
PHPUNIT=$(which phpunit)
 | 
			
		||||
 | 
			
		||||
if [ $1 ]; then
 | 
			
		||||
	FOUND=0
 | 
			
		||||
	for DBCONFIG in $DBCONFIGS; do
 | 
			
		||||
		if [ $1 = $DBCONFIG ]; then
 | 
			
		||||
			FOUND=1
 | 
			
		||||
			break
 | 
			
		||||
		fi
 | 
			
		||||
	done
 | 
			
		||||
	if [ $FOUND = 0 ]; then
 | 
			
		||||
		echo -e "Unknown database config name \"$1\"\n" >&2
 | 
			
		||||
		print_syntax
 | 
			
		||||
		exit 2
 | 
			
		||||
	fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# use tmpfs for datadir - should speedup unit test execution
 | 
			
		||||
DATADIR=$BASEDIR/data-autotest
 | 
			
		||||
 | 
			
		||||
echo "Using $1 database $DATABASENAME"
 | 
			
		||||
 | 
			
		||||
# create autoconfig for sqlite, mysql and postgresql
 | 
			
		||||
cat > ./tests/autoconfig-sqlite.php <<DELIM
 | 
			
		||||
<?php
 | 
			
		||||
\$AUTOCONFIG = array (
 | 
			
		||||
  'installed' => false,
 | 
			
		||||
  'dbtype' => 'sqlite',
 | 
			
		||||
  'dbtableprefix' => 'oc_',
 | 
			
		||||
  'adminlogin' => '$ADMINLOGIN',
 | 
			
		||||
  'adminpass' => 'admin',
 | 
			
		||||
  'directory' => '$DATADIR',
 | 
			
		||||
);
 | 
			
		||||
DELIM
 | 
			
		||||
 | 
			
		||||
cat > ./tests/autoconfig-mysql.php <<DELIM
 | 
			
		||||
<?php
 | 
			
		||||
\$AUTOCONFIG = array (
 | 
			
		||||
  'installed' => false,
 | 
			
		||||
  'dbtype' => 'mysql',
 | 
			
		||||
  'dbtableprefix' => 'oc_',
 | 
			
		||||
  'adminlogin' => '$ADMINLOGIN',
 | 
			
		||||
  'adminpass' => 'admin',
 | 
			
		||||
  'directory' => '$DATADIR',
 | 
			
		||||
  'dbuser' => '$DATABASEUSER',
 | 
			
		||||
  'dbname' => '$DATABASENAME',
 | 
			
		||||
  'dbhost' => '$DATABASEHOST',
 | 
			
		||||
  'dbpass' => 'owncloud',
 | 
			
		||||
);
 | 
			
		||||
DELIM
 | 
			
		||||
 | 
			
		||||
cat > ./tests/autoconfig-pgsql.php <<DELIM
 | 
			
		||||
<?php
 | 
			
		||||
\$AUTOCONFIG = array (
 | 
			
		||||
  'installed' => false,
 | 
			
		||||
  'dbtype' => 'pgsql',
 | 
			
		||||
  'dbtableprefix' => 'oc_',
 | 
			
		||||
  'adminlogin' => '$ADMINLOGIN',
 | 
			
		||||
  'adminpass' => 'admin',
 | 
			
		||||
  'directory' => '$DATADIR',
 | 
			
		||||
  'dbuser' => '$DATABASEUSER',
 | 
			
		||||
  'dbname' => '$DATABASENAME',
 | 
			
		||||
  'dbhost' => '$DATABASEHOST',
 | 
			
		||||
  'dbpass' => 'owncloud',
 | 
			
		||||
);
 | 
			
		||||
DELIM
 | 
			
		||||
 | 
			
		||||
cat > ./tests/autoconfig-oracle.php <<DELIM
 | 
			
		||||
<?php
 | 
			
		||||
\$AUTOCONFIG = array (
 | 
			
		||||
  'installed' => false,
 | 
			
		||||
  'dbtype' => 'oci',
 | 
			
		||||
  'dbtableprefix' => 'oc_',
 | 
			
		||||
  'adminlogin' => '$ADMINLOGIN',
 | 
			
		||||
  'adminpass' => 'admin',
 | 
			
		||||
  'directory' => '$DATADIR',
 | 
			
		||||
  'dbuser' => 'autotest',
 | 
			
		||||
  'dbname' => 'XE',
 | 
			
		||||
  'dbhost' =>'$DATABASEHOST',
 | 
			
		||||
  'dbpass' => 'owncloud',
 | 
			
		||||
  'loglevel' => 0,
 | 
			
		||||
);
 | 
			
		||||
DELIM
 | 
			
		||||
 | 
			
		||||
function run_install {
 | 
			
		||||
	echo "Setup environment for $1 testing ..."
 | 
			
		||||
	# back to root folder
 | 
			
		||||
	cd $BASEDIR
 | 
			
		||||
 | 
			
		||||
	# revert changes to tests/data
 | 
			
		||||
	git checkout tests/data/*
 | 
			
		||||
 | 
			
		||||
	# reset data directory
 | 
			
		||||
	rm -rf $DATADIR
 | 
			
		||||
	mkdir $DATADIR
 | 
			
		||||
	touch $DATADIR/nextcloud.log
 | 
			
		||||
 | 
			
		||||
	cp tests/preseed-config.php config/config.php
 | 
			
		||||
 | 
			
		||||
	# copy autoconfig
 | 
			
		||||
	cp $BASEDIR/tests/autoconfig-$1.php $BASEDIR/config/autoconfig.php
 | 
			
		||||
 | 
			
		||||
	# trigger installation
 | 
			
		||||
	echo "INDEX"
 | 
			
		||||
	php -f index.php
 | 
			
		||||
	echo "END INDEX"
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function print_config {
 | 
			
		||||
 | 
			
		||||
    echo "nextcloud configuration:"
 | 
			
		||||
    cat $BASEDIR/config/config.php
 | 
			
		||||
 | 
			
		||||
    echo "data directory:"
 | 
			
		||||
    ls -ll $DATADIR
 | 
			
		||||
 | 
			
		||||
    echo "nextcloud.log:"
 | 
			
		||||
    [[ -f "$DATADIR/nextcloud.log" ]] && cat $DATADIR/nextcloud.log
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
run_install $1
 | 
			
		||||
print_config
 | 
			
		||||
 | 
			
		||||
cd $BASEDIR
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,65 @@
 | 
			
		|||
#!/bin/bash
 | 
			
		||||
#
 | 
			
		||||
# ownCloud
 | 
			
		||||
#
 | 
			
		||||
# @author Thomas Müller
 | 
			
		||||
# @copyright 2014 Thomas Müller thomas.mueller@tmit.eu
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
# TODO: move this out of the repo to make it usable in other apps
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
WORKDIR=$PWD
 | 
			
		||||
APP_NAME=$1
 | 
			
		||||
CORE_BRANCH=$2
 | 
			
		||||
DB=$3
 | 
			
		||||
echo "Work directory: $WORKDIR"
 | 
			
		||||
echo "Database: $DB"
 | 
			
		||||
 | 
			
		||||
# Cloning server
 | 
			
		||||
cd ..
 | 
			
		||||
git clone --depth 1 -b $CORE_BRANCH https://github.com/nextcloud/server
 | 
			
		||||
cd server
 | 
			
		||||
git submodule update --init
 | 
			
		||||
 | 
			
		||||
# Move app into apps folder
 | 
			
		||||
cd apps
 | 
			
		||||
cp -R $WORKDIR/ $APP_NAME
 | 
			
		||||
cd $WORKDIR
 | 
			
		||||
 | 
			
		||||
[[ -z "$DATABASEHOST" ]] && DATABASEHOST="$DB"
 | 
			
		||||
 | 
			
		||||
if [[ "$DB" == "mysql" ]] ; then
 | 
			
		||||
    echo "Waiting for MySQL initialisation ..."
 | 
			
		||||
    if ! ../server/apps/files_external/tests/env/wait-for-connection $DATABASEHOST 3306 600; then
 | 
			
		||||
      echo "[ERROR] Waited 600 seconds, no response" >&2
 | 
			
		||||
      exit 1
 | 
			
		||||
    fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [[ "$DB" == "postgres" ]] ; then
 | 
			
		||||
    echo "Waiting for Postgres to be available ..."
 | 
			
		||||
    if ! ../server/apps/files_external/tests/env/wait-for-connection $DATABASEHOST 5432 60; then
 | 
			
		||||
      echo "[ERROR] Waited 60 seconds for $DATABASEHOST, no response" >&2
 | 
			
		||||
      exit 1
 | 
			
		||||
    fi
 | 
			
		||||
    echo "Give it 10 additional seconds ..."
 | 
			
		||||
    sleep 10
 | 
			
		||||
    # Temporary fix since core_install uses pgsql
 | 
			
		||||
    DB="pgsql"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# TODO: oracle
 | 
			
		||||
export DATABASEHOST="$DATABASEHOST"
 | 
			
		||||
 | 
			
		||||
echo "Installing server"
 | 
			
		||||
cd ../server
 | 
			
		||||
bash $WORKDIR/tests/drone-server-install.sh $DB
 | 
			
		||||
 | 
			
		||||
echo "Installing app: $APP_NAME"
 | 
			
		||||
php occ app:enable $APP_NAME
 | 
			
		||||
 | 
			
		||||
cd apps/$APP_NAME
 | 
			
		||||
pwd
 | 
			
		||||
ls /drone/src
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,23 @@
 | 
			
		|||
<?xml version="1.0" encoding="utf-8" ?>
 | 
			
		||||
<phpunit bootstrap="bootstrap.php"
 | 
			
		||||
		 verbose="true"
 | 
			
		||||
		 timeoutForSmallTests="900"
 | 
			
		||||
		 timeoutForMediumTests="900"
 | 
			
		||||
		 timeoutForLargeTests="900"
 | 
			
		||||
		>
 | 
			
		||||
	<testsuite name='Social App Tests'>
 | 
			
		||||
		<directory suffix='Test.php'>.</directory>
 | 
			
		||||
	</testsuite>
 | 
			
		||||
	<!-- filters for code coverage -->
 | 
			
		||||
	<filter>
 | 
			
		||||
		<whitelist>
 | 
			
		||||
			<directory suffix=".php">../appinfo</directory>
 | 
			
		||||
			<directory suffix=".php">../lib</directory>
 | 
			
		||||
		</whitelist>
 | 
			
		||||
	</filter>
 | 
			
		||||
	<logging>
 | 
			
		||||
		<!-- and this is where your report will be written -->
 | 
			
		||||
		<log type="coverage-clover" target="./clover.xml"/>
 | 
			
		||||
	</logging>
 | 
			
		||||
</phpunit>
 | 
			
		||||
 | 
			
		||||
		Ładowanie…
	
		Reference in New Issue