@@ -1,64 +0,0 @@ | |||||
sudo: false | |||||
dist: trusty | |||||
language: php | |||||
php: | |||||
- 5.6 | |||||
- 7 | |||||
- 7.1 | |||||
env: | |||||
global: | |||||
- CORE_BRANCH=stable14 | |||||
matrix: | |||||
- DB=pgsql | |||||
matrix: | |||||
allow_failures: | |||||
- env: DB=pgsql CORE_BRANCH=master | |||||
include: | |||||
- php: 5.6 | |||||
env: DB=sqlite | |||||
- php: 5.6 | |||||
env: DB=mysql | |||||
- php: 5.6 | |||||
env: DB=pgsql CORE_BRANCH=master | |||||
fast_finish: true | |||||
before_install: | |||||
# enable a display for running JavaScript tests | |||||
- export DISPLAY=:99.0 | |||||
- sh -e /etc/init.d/xvfb start | |||||
- nvm install 8 | |||||
- npm install -g npm@latest | |||||
- make | |||||
- make appstore | |||||
# install core | |||||
- cd ../ | |||||
- git clone https://github.com/nextcloud/server.git --recursive --depth 1 -b $CORE_BRANCH nextcloud | |||||
- mv "$TRAVIS_BUILD_DIR" nextcloud/apps/raw | |||||
before_script: | |||||
- if [[ "$DB" == 'pgsql' ]]; then createuser -U travis -s oc_autotest; fi | |||||
- if [[ "$DB" == 'mysql' ]]; then mysql -u root -e 'create database oc_autotest;'; fi | |||||
- if [[ "$DB" == 'mysql' ]]; then mysql -u root -e "CREATE USER 'oc_autotest'@'localhost' IDENTIFIED BY '';"; fi | |||||
- if [[ "$DB" == 'mysql' ]]; then mysql -u root -e "grant all on oc_autotest.* to 'oc_autotest'@'localhost';"; fi | |||||
- cd nextcloud | |||||
- mkdir data | |||||
- ./occ maintenance:install --database-name oc_autotest --database-user oc_autotest --admin-user admin --admin-pass admin --database $DB --database-pass='' | |||||
- ./occ app:enable raw | |||||
- php -S localhost:8080 & | |||||
- cd apps/raw | |||||
script: | |||||
- make test | |||||
after_failure: | |||||
- cat ../../data/nextcloud.log | |||||
addons: | |||||
firefox: 'latest' | |||||
mariadb: '10.1' | |||||
services: | |||||
- postgresql | |||||
- mariadb |
@@ -1,157 +0,0 @@ | |||||
# This file is licensed under the Affero General Public License version 3 or | |||||
# later. See the COPYING file. | |||||
# @author Bernhard Posselt <dev@bernhard-posselt.com> | |||||
# @copyright Bernhard Posselt 2016 | |||||
# Generic Makefile for building and packaging a Nextcloud app which uses npm and | |||||
# Composer. | |||||
# | |||||
# Dependencies: | |||||
# * make | |||||
# * which | |||||
# * curl: used if phpunit and composer are not installed to fetch them from the web | |||||
# * tar: for building the archive | |||||
# * npm: for building and testing everything JS | |||||
# | |||||
# If no composer.json is in the app root directory, the Composer step | |||||
# will be skipped. The same goes for the package.json which can be located in | |||||
# the app root or the js/ directory. | |||||
# | |||||
# The npm command by launches the npm build script: | |||||
# | |||||
# npm run build | |||||
# | |||||
# The npm test command launches the npm test script: | |||||
# | |||||
# npm run test | |||||
# | |||||
# The idea behind this is to be completely testing and build tool agnostic. All | |||||
# build tools and additional package managers should be installed locally in | |||||
# your project, since this won't pollute people's global namespace. | |||||
# | |||||
# The following npm scripts in your package.json install and update the bower | |||||
# and npm dependencies and use gulp as build system (notice how everything is | |||||
# run from the node_modules folder): | |||||
# | |||||
# "scripts": { | |||||
# "test": "node node_modules/gulp-cli/bin/gulp.js karma", | |||||
# "prebuild": "npm install && node_modules/bower/bin/bower install && node_modules/bower/bin/bower update", | |||||
# "build": "node node_modules/gulp-cli/bin/gulp.js" | |||||
# }, | |||||
app_name=$(notdir $(CURDIR)) | |||||
build_tools_directory=$(CURDIR)/build/tools | |||||
source_build_directory=$(CURDIR)/build/artifacts/source | |||||
source_package_name=$(source_build_directory)/$(app_name) | |||||
appstore_build_directory=$(CURDIR)/build/artifacts/appstore | |||||
appstore_package_name=$(appstore_build_directory)/$(app_name) | |||||
npm=$(shell which npm 2> /dev/null) | |||||
composer=$(shell which composer 2> /dev/null) | |||||
all: build | |||||
# Fetches the PHP and JS dependencies and compiles the JS. If no composer.json | |||||
# is present, the composer step is skipped, if no package.json or js/package.json | |||||
# is present, the npm step is skipped | |||||
.PHONY: build | |||||
build: | |||||
ifneq (,$(wildcard $(CURDIR)/composer.json)) | |||||
make composer | |||||
endif | |||||
ifneq (,$(wildcard $(CURDIR)/package.json)) | |||||
make npm | |||||
endif | |||||
ifneq (,$(wildcard $(CURDIR)/js/package.json)) | |||||
make npm | |||||
endif | |||||
# Installs and updates the composer dependencies. If composer is not installed | |||||
# a copy is fetched from the web | |||||
.PHONY: composer | |||||
composer: | |||||
ifeq (, $(composer)) | |||||
@echo "No composer command available, downloading a copy from the web" | |||||
mkdir -p $(build_tools_directory) | |||||
curl -sS https://getcomposer.org/installer | php | |||||
mv composer.phar $(build_tools_directory) | |||||
php $(build_tools_directory)/composer.phar install --prefer-dist | |||||
php $(build_tools_directory)/composer.phar update --prefer-dist | |||||
else | |||||
composer install --prefer-dist | |||||
composer update --prefer-dist | |||||
endif | |||||
# Installs npm dependencies | |||||
.PHONY: npm | |||||
npm: | |||||
ifeq (,$(wildcard $(CURDIR)/package.json)) | |||||
cd js && $(npm) run build | |||||
else | |||||
npm run build | |||||
endif | |||||
# Removes the appstore build | |||||
.PHONY: clean | |||||
clean: | |||||
rm -rf ./build | |||||
# Same as clean but also removes dependencies installed by composer, bower and | |||||
# npm | |||||
.PHONY: distclean | |||||
distclean: clean | |||||
rm -rf vendor | |||||
rm -rf node_modules | |||||
rm -rf js/vendor | |||||
rm -rf js/node_modules | |||||
# Builds the source and appstore package | |||||
.PHONY: dist | |||||
dist: | |||||
make source | |||||
make appstore | |||||
# Builds the source package | |||||
.PHONY: source | |||||
source: | |||||
rm -rf $(source_build_directory) | |||||
mkdir -p $(source_build_directory) | |||||
tar cvzf $(source_package_name).tar.gz ../$(app_name) \ | |||||
--exclude-vcs \ | |||||
--exclude="../$(app_name)/build" \ | |||||
--exclude="../$(app_name)/js/node_modules" \ | |||||
--exclude="../$(app_name)/node_modules" \ | |||||
--exclude="../$(app_name)/*.log" \ | |||||
--exclude="../$(app_name)/js/*.log" \ | |||||
# Builds the source package for the app store, ignores php and js tests | |||||
.PHONY: appstore | |||||
appstore: | |||||
rm -rf $(appstore_build_directory) | |||||
mkdir -p $(appstore_build_directory) | |||||
tar cvzf $(appstore_package_name).tar.gz ../$(app_name) \ | |||||
--exclude-vcs \ | |||||
--exclude="../$(app_name)/build" \ | |||||
--exclude="../$(app_name)/tests" \ | |||||
--exclude="../$(app_name)/Makefile" \ | |||||
--exclude="../$(app_name)/*.log" \ | |||||
--exclude="../$(app_name)/phpunit*xml" \ | |||||
--exclude="../$(app_name)/composer.*" \ | |||||
--exclude="../$(app_name)/js/node_modules" \ | |||||
--exclude="../$(app_name)/js/tests" \ | |||||
--exclude="../$(app_name)/js/test" \ | |||||
--exclude="../$(app_name)/js/*.log" \ | |||||
--exclude="../$(app_name)/js/package.json" \ | |||||
--exclude="../$(app_name)/js/bower.json" \ | |||||
--exclude="../$(app_name)/js/karma.*" \ | |||||
--exclude="../$(app_name)/js/protractor.*" \ | |||||
--exclude="../$(app_name)/package.json" \ | |||||
--exclude="../$(app_name)/bower.json" \ | |||||
--exclude="../$(app_name)/karma.*" \ | |||||
--exclude="../$(app_name)/protractor\.*" \ | |||||
--exclude="../$(app_name)/.*" \ | |||||
--exclude="../$(app_name)/js/.*" \ | |||||
.PHONY: test | |||||
test: composer | |||||
$(CURDIR)/vendor/phpunit/phpunit/phpunit -c phpunit.xml | |||||
$(CURDIR)/vendor/phpunit/phpunit/phpunit -c phpunit.integration.xml |
@@ -1,52 +0,0 @@ | |||||
# Raw | |||||
Place this app in **nextcloud/apps/** | |||||
## Building the app | |||||
The app can be built by using the provided Makefile by running: | |||||
make | |||||
This requires the following things to be present: | |||||
* make | |||||
* which | |||||
* tar: for building the archive | |||||
* curl: used if phpunit and composer are not installed to fetch them from the web | |||||
* npm: for building and testing everything JS, only required if a package.json is placed inside the **js/** folder | |||||
The make command will install or update Composer dependencies if a composer.json is present and also **npm run build** if a package.json is present in the **js/** folder. The npm **build** script should use local paths for build systems and package managers, so people that simply want to build the app won't need to install npm libraries globally, e.g.: | |||||
**package.json**: | |||||
```json | |||||
"scripts": { | |||||
"test": "node node_modules/gulp-cli/bin/gulp.js karma", | |||||
"prebuild": "npm install && node_modules/bower/bin/bower install && node_modules/bower/bin/bower update", | |||||
"build": "node node_modules/gulp-cli/bin/gulp.js" | |||||
} | |||||
``` | |||||
## Publish to App Store | |||||
First get an account for the [App Store](http://apps.nextcloud.com/) then run: | |||||
make && make appstore | |||||
The archive is located in build/artifacts/appstore and can then be uploaded to the App Store. | |||||
## Running tests | |||||
You can use the provided Makefile to run all tests by using: | |||||
make test | |||||
This will run the PHP unit and integration tests and if a package.json is present in the **js/** folder will execute **npm run test** | |||||
Of course you can also install [PHPUnit](http://phpunit.de/getting-started.html) and use the configurations directly: | |||||
phpunit -c phpunit.xml | |||||
or: | |||||
phpunit -c phpunit.integration.xml | |||||
for integration tests |
@@ -1,15 +0,0 @@ | |||||
{ | |||||
"name": "Raw", | |||||
"description": "a", | |||||
"type": "project", | |||||
"license": "AGPL", | |||||
"authors": [ | |||||
{ | |||||
"name": "a" | |||||
} | |||||
], | |||||
"require": {}, | |||||
"require-dev": { | |||||
"phpunit/phpunit": "^5.4" | |||||
} | |||||
} |
@@ -1,3 +0,0 @@ | |||||
#hello { | |||||
color: red; | |||||
} |
@@ -1,56 +0,0 @@ | |||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||||
<svg | |||||
xmlns:dc="http://purl.org/dc/elements/1.1/" | |||||
xmlns:cc="http://creativecommons.org/ns#" | |||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||||
xmlns:svg="http://www.w3.org/2000/svg" | |||||
xmlns="http://www.w3.org/2000/svg" | |||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||||
height="32" | |||||
width="32" | |||||
version="1" | |||||
viewBox="0 0 32 32" | |||||
id="svg4" | |||||
sodipodi:docname="app.svg" | |||||
inkscape:version="0.92.1 r"> | |||||
<metadata | |||||
id="metadata10"> | |||||
<rdf:RDF> | |||||
<cc:Work | |||||
rdf:about=""> | |||||
<dc:format>image/svg+xml</dc:format> | |||||
<dc:type | |||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||||
</cc:Work> | |||||
</rdf:RDF> | |||||
</metadata> | |||||
<defs | |||||
id="defs8" /> | |||||
<sodipodi:namedview | |||||
pagecolor="#ffffff" | |||||
bordercolor="#666666" | |||||
borderopacity="1" | |||||
objecttolerance="10" | |||||
gridtolerance="10" | |||||
guidetolerance="10" | |||||
inkscape:pageopacity="0" | |||||
inkscape:pageshadow="2" | |||||
inkscape:window-width="789" | |||||
inkscape:window-height="480" | |||||
id="namedview6" | |||||
showgrid="false" | |||||
inkscape:zoom="7.375" | |||||
inkscape:cx="-8.3389831" | |||||
inkscape:cy="16" | |||||
inkscape:window-x="0" | |||||
inkscape:window-y="27" | |||||
inkscape:window-maximized="0" | |||||
inkscape:current-layer="svg4" /> | |||||
<path | |||||
d="M13.733 0a.915.915 0 0 0-.933.934V3.6c-1.182.304-2.243.794-3.267 1.4L7.6 3.068a.93.93 0 0 0-1.334 0l-3.2 3.2a.93.93 0 0 0 0 1.334L5 9.535c-.607 1.024-1.097 2.085-1.4 3.267H.933a.915.915 0 0 0-.933.934v4.533c0 .53.403.934.933.934H3.6c.303 1.182.793 2.243 1.4 3.267l-1.934 1.935a.93.93 0 0 0 0 1.333l3.2 3.2a.93.93 0 0 0 1.333 0L9.532 27c1.024.61 2.085 1.097 3.266 1.4v2.667c0 .53.402.933.932.933h4.534c.53 0 .933-.403.933-.935V28.4c1.18-.305 2.24-.795 3.265-1.4L24.4 28.93a.93.93 0 0 0 1.332 0l3.2-3.2a.93.93 0 0 0 0-1.333L27 22.465c.607-1.024 1.096-2.085 1.4-3.266h2.665a.915.915 0 0 0 .935-.933v-4.534a.915.915 0 0 0-.934-.933H28.4c-.304-1.182-.792-2.243-1.4-3.267L28.932 7.6a.93.93 0 0 0 0-1.334l-3.2-3.2a.93.93 0 0 0-1.333 0L22.465 5c-1.024-.607-2.084-1.097-3.266-1.4V.933A.915.915 0 0 0 18.267 0zM16 8.87A7.134 7.134 0 0 1 23.13 16 7.134 7.134 0 0 1 16 23.133c-3.936 0-7.13-3.196-7.13-7.132S12.063 8.87 16 8.87z" | |||||
display="block" | |||||
fill="#fff" | |||||
id="path2" | |||||
style="fill:#ffffff" /> | |||||
</svg> |
@@ -1,7 +0,0 @@ | |||||
<phpunit bootstrap="tests/bootstrap.php" colors="true"> | |||||
<testsuites> | |||||
<testsuite name="integration"> | |||||
<directory>./tests/Integration</directory> | |||||
</testsuite> | |||||
</testsuites> | |||||
</phpunit> |
@@ -1,7 +0,0 @@ | |||||
<phpunit bootstrap="tests/bootstrap.php" colors="true"> | |||||
<testsuites> | |||||
<testsuite name="unit"> | |||||
<directory>./tests/Unit</directory> | |||||
</testsuite> | |||||
</testsuites> | |||||
</phpunit> |
@@ -1 +0,0 @@ | |||||
<h1>Hello world</h1> |
@@ -1,18 +0,0 @@ | |||||
<?php | |||||
script('raw', 'script'); | |||||
style('raw', 'style'); | |||||
?> | |||||
<div id="app"> | |||||
<div id="app-navigation"> | |||||
<?php print_unescaped($this->inc('navigation/index')); ?> | |||||
<?php print_unescaped($this->inc('settings/index')); ?> | |||||
</div> | |||||
<div id="app-content"> | |||||
<div id="app-content-wrapper"> | |||||
<?php print_unescaped($this->inc('content/index')); ?> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
@@ -1,10 +0,0 @@ | |||||
<ul> | |||||
<li><a href="#">First level entry</a></li> | |||||
<li> | |||||
<a href="#">First level container</a> | |||||
<ul> | |||||
<li><a href="#">Second level entry</a></li> | |||||
<li><a href="#">Second level entry</a></li> | |||||
</ul> | |||||
</li> | |||||
</ul> |
@@ -1,10 +0,0 @@ | |||||
<div id="app-settings"> | |||||
<div id="app-settings-header"> | |||||
<button class="settings-button" | |||||
data-apps-slide-toggle="#app-settings-content" | |||||
></button> | |||||
</div> | |||||
<div id="app-settings-content"> | |||||
<!-- Your settings in here --> | |||||
</div> | |||||
</div> |
@@ -1,29 +0,0 @@ | |||||
<?php | |||||
namespace OCA\Raw\Tests\Integration\Controller; | |||||
use OCP\AppFramework\App; | |||||
use Test\TestCase; | |||||
/** | |||||
* This test shows how to make a small Integration Test. Query your class | |||||
* directly from the container, only pass in mocks if needed and run your tests | |||||
* against the database | |||||
*/ | |||||
class AppTest extends TestCase { | |||||
private $container; | |||||
public function setUp() { | |||||
parent::setUp(); | |||||
$app = new App('raw'); | |||||
$this->container = $app->getContainer(); | |||||
} | |||||
public function testAppInstalled() { | |||||
$appManager = $this->container->query('OCP\App\IAppManager'); | |||||
$this->assertTrue($appManager->isInstalled('raw')); | |||||
} | |||||
} |
@@ -1,31 +0,0 @@ | |||||
<?php | |||||
namespace OCA\Raw\Tests\Unit\Controller; | |||||
use PHPUnit_Framework_TestCase; | |||||
use OCP\AppFramework\Http\TemplateResponse; | |||||
use OCA\Raw\Controller\PageController; | |||||
class PageControllerTest extends PHPUnit_Framework_TestCase { | |||||
private $controller; | |||||
private $userId = 'john'; | |||||
public function setUp() { | |||||
$request = $this->getMockBuilder('OCP\IRequest')->getMock(); | |||||
$this->controller = new PageController( | |||||
'raw', $request, $this->userId | |||||
); | |||||
} | |||||
public function testIndex() { | |||||
$result = $this->controller->index(); | |||||
$this->assertEquals('index', $result->getTemplateName()); | |||||
$this->assertTrue($result instanceof TemplateResponse); | |||||
} | |||||
} |
@@ -1,19 +0,0 @@ | |||||
<?php | |||||
if (!defined('PHPUNIT_RUN')) { | |||||
define('PHPUNIT_RUN', 1); | |||||
} | |||||
require_once __DIR__.'/../../../lib/base.php'; | |||||
// Fix for "Autoload path not allowed: .../tests/lib/testcase.php" | |||||
\OC::$loader->addValidRoot(OC::$SERVERROOT . '/tests'); | |||||
// Fix for "Autoload path not allowed: .../raw/tests/testcase.php" | |||||
\OC_App::loadApp('raw'); | |||||
if(!class_exists('PHPUnit_Framework_TestCase')) { | |||||
require_once('PHPUnit/Autoload.php'); | |||||
} | |||||
OC_Hook::clear(); |