1
0
mirror of https://github.com/ovh/php-ovh.git synced 2023-11-05 03:20:26 +01:00

Merge pull request #42 from shulard/feature/phing

Use a PHP build tool, Phing instead of Grunt.
This commit is contained in:
Vincent Cassé 2016-04-19 12:56:57 +02:00
commit aac96e68c1
8 changed files with 133 additions and 111 deletions

2
.gitignore vendored
View File

@ -3,3 +3,5 @@ vendor
composer.lock composer.lock
composer.phar composer.phar
/phpunit.xml /phpunit.xml
/build.properties
/docs

View File

@ -6,7 +6,7 @@ addons:
language: php language: php
php: php:
- hhvm - hhvm
- 7.0 - 7.0
- 5.6 - 5.6
- 5.5 - 5.5
- 7.0 - 7.0
@ -15,4 +15,4 @@ before_script:
- composer self-update - composer self-update
- composer install - composer install
script: phpunit tests/ApiTest.php script: vendor/bin/phing test -Donly.units=true

View File

@ -1,77 +0,0 @@
/**
* Gruntfile.js
*/
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
php: {
dist: {
options: {
port: 8080,
base: 'web',
open: true,
keepalive: true
}
}
},
phpcs: {
application: {
dir: ['src/']
},
options: {
bin: 'vendor/bin/phpcs',
standard: 'PSR2'
}
},
phplint: {
options: {
swapPath: '/tmp'
},
all: ['src/*.php']
},
phpdocumentor: {
dist: {
options: {
directory: './src/',
bin: 'vendor/bin/phpdoc.php',
target: 'docs/'
}
}
},
clean: {
phpdocumentor: 'docs/'
},
phpunit: {
unit: {
dir: 'tests'
},
options: {
bin: 'vendor/bin/phpunit',
colors: true,
testdox: true
}
},
watch: {
scripts: {
files: ['src/*.php', 'src/**/*.php', 'tests/*.php', 'tests/**/*.php'],
tasks: ['precommit'],
},
},
});
grunt.loadNpmTasks('grunt-phpcs');
grunt.loadNpmTasks('grunt-php');
grunt.loadNpmTasks('grunt-phplint');
grunt.loadNpmTasks('grunt-phpunit');
grunt.loadNpmTasks('grunt-phpdocumentor');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.registerTask('phpdocs', [
'clean:phpdocumentor',
'phpdocumentor'
]);
grunt.registerTask('precommit', ['phplint:all', 'phpcs', 'phpunit:unit']);
grunt.registerTask('default', ['phplint:all', 'phpcs', 'phpunit:unit', 'phpdocs']);
grunt.registerTask('server', ['php']);
};

View File

@ -27,7 +27,7 @@ Quickstart
To download this wrapper and integrate it inside your PHP application, you can use [Composer](https://getcomposer.org). To download this wrapper and integrate it inside your PHP application, you can use [Composer](https://getcomposer.org).
Add the repository in your **composer.json** file or, if you don't already have Add the repository in your **composer.json** file or, if you don't already have
this file, create it at the root of your project with this content: this file, create it at the root of your project with this content:
```json ```json
@ -58,7 +58,7 @@ How to login as a user?
To communicate with APIs, the SDK uses a token on each request to identify the To communicate with APIs, the SDK uses a token on each request to identify the
user. This token is called *Consumer Key*. To have a validated *Consumer Key*, user. This token is called *Consumer Key*. To have a validated *Consumer Key*,
you need to redirect your user on specific authentication page. Once the user has you need to redirect your user on specific authentication page. Once the user has
logged in, the token is validated and user will be redirected on __$redirection__ url. logged in, the token is validated and user will be redirected on __$redirection__ url.
```php ```php
@ -173,11 +173,10 @@ you can install local npm project in a clone a project
git clone https://github.com/ovh/php-ovh.git git clone https://github.com/ovh/php-ovh.git
cd php-ovh cd php-ovh
php composer.phar install php composer.phar install
npm install
To generate documentation, it's possible to use directly: To generate documentation, it's possible to use directly:
grunt default vendor/bin/phing phpdocs
Documentation is available in docs/ directory. Documentation is available in docs/ directory.
@ -190,12 +189,15 @@ local npm project in a clone a project
git https://github.com/ovh/php-ovh.git git https://github.com/ovh/php-ovh.git
cd php-ovh cd php-ovh
php composer.phar install php composer.phar install
npm install
Edit **phpunit.xml** file with your credentials to pass functionals tests. Then, Edit **phpunit.xml** file with your credentials to pass functionals tests. Then,
you can run directly unit and functionals tests with grunt. you can run directly unit and functionals tests with [phing](http://www.phing.info/).
grunt vendor/bin/phing test
To skip functionals and run unit tests only, you can use the `only.units` option :
vendor/bin/phing test -Donly.units=true
Supported APIs Supported APIs
-------------- --------------

114
build.xml Normal file
View File

@ -0,0 +1,114 @@
<?xml version="1.0"?>
<project name="ovh/ovh" default="all">
<property name="base" value="${project.basedir}/" />
<property environment="env" />
<if>
<available file="${base}build.properties" property="" />
<then>
<property file="${base}build.properties" override="true" />
</then>
</if>
<!--##########################################################################################################-->
<target name="help">
<echo message="${phing.project.name} on [${git.branch}]" />
<echo message=" Available commands are:" />
<echo message=" test -> Run unit tests" />
<echo message=" clean -> Clean current environment" />
<echo message=" server -> Launch PHP built-in server" />
<echo message=" watch -> Run precommit task on every file changed" />
<echo message=" precommit -> Source code validation before commit" />
<echo message=" Specific tools tasks:" />
<echo message=" phpcs -> Run PHP Code Sniffer" />
<echo message=" phplint -> Run PHP Lint" />
<echo message=" phpdocs -> Run PHP Documentor" />
<echo message=" phpunit -> Run PHPUnit" />
</target>
<!--##########################################################################################################-->
<target name="test" description="Run unit tests">
<phingcall target="phpunit" />
</target>
<target name="clean" description="Clean current environment">
<delete dir="docs" includeemptydirs="true" verbose="true" failonerror="true" />
</target>
<target name="precommit" description="Source code validation before commit">
<phingcall target="phplint" />
<phingcall target="phpcs" />
<phingcall target="phpunit" />
</target>
<target name="all" description="Make a full integration check">
<phingcall target="phplint" />
<phingcall target="phpcs" />
<phingcall target="phpunit" />
<phingcall target="phpdocs" />
</target>
<!--##########################################################################################################-->
<target name="phpcs" description="Run PHP Code Sniffer">
<phpcodesniffer
standard="PSR2"
format="summary"
>
<fileset dir=".">
<include name="src/**/*.php"/>
<include name="test/**/*.php"/>
</fileset>
</phpcodesniffer>
</target>
<target name="phpcbf" description="Run PHP Code Sniffer">
<exec command="vendor/bin/phpcbf --standard=PSR2 src" logoutput="true" />
</target>
<target name="phplint" description="Run PHP Lint">
<phplint deprecatedAsError="true">
<fileset dir=".">
<include name="src/**/*.php"/>
<include name="test/**/*.php"/>
</fileset>
</phplint>
</target>
<target name="phpdocs" description="Run PHP Documentor" depends="clean">
<if>
<not><available file="docs" /></not>
<then>
<mkdir dir="docs" />
</then>
</if>
<phpdoc2 destdir="docs">
<fileset dir="src">
<include name="**/*.php" />
</fileset>
</phpdoc2>
</target>
<target name="phpunit" description="Run PHPUnit">
<if>
<and>
<isset property="only.units" />
<equals arg1="${only.units}" arg2="true" />
</and>
<then>
<fileset dir="tests" id="tests">
<include name="ApiTest.php"/>
</fileset>
</then>
<else>
<fileset dir="tests" id="tests">
<include name="**/*.php"/>
</fileset>
</else>
</if>
<phpunit
haltonfailure="true"
haltonerror="true"
bootstrap="tests/bootstrap.php"
printsummary="true"
>
<formatter type="plain" usefile="false"/>
<batchtest>
<fileset refid="tests" />
</batchtest>
</phpunit>
</target>
<!--##########################################################################################################-->
</project>

View File

@ -11,6 +11,7 @@
"require-dev": { "require-dev": {
"phpunit/phpunit": "4.*", "phpunit/phpunit": "4.*",
"phpdocumentor/phpdocumentor": "2.*", "phpdocumentor/phpdocumentor": "2.*",
"squizlabs/php_codesniffer": "1.*" "squizlabs/php_codesniffer": "2.*",
"phing/phing": "^2.14"
} }
} }

View File

@ -1,15 +0,0 @@
{
"name": "ovh-ovh",
"version": "1.1.0",
"project": "Ovh",
"dependencies": {
"grunt": "~0.4.1",
"grunt-contrib-clean": "~0.5.0",
"grunt-phpcs": "~0.2.2",
"grunt-php": "~0.3.2",
"grunt-phplint": "~0.0.5",
"grunt-phpunit": "~0.3.3",
"grunt-phpdocumentor": "~0.4.1",
"grunt-contrib-watch ": "~0.6.1"
}
}

View File

@ -228,13 +228,12 @@ class Api
$url = $this->endpoint . $path; $url = $this->endpoint . $path;
$request = new Request($method, $url); $request = new Request($method, $url);
if (isset($content) && $method == 'GET') { if (isset($content) && $method == 'GET') {
$query_string = $request->getUri()->getQuery(); $query_string = $request->getUri()->getQuery();
$query = array(); $query = array();
if (!empty($query_string)) { if (!empty($query_string)) {
$queries = explode('&', $query_string); $queries = explode('&', $query_string);
foreach($queries as $element) { foreach ($queries as $element) {
$key_value_query = explode('=', $element, 2); $key_value_query = explode('=', $element, 2);
$query[$key_value_query[0]] = $key_value_query[1]; $query[$key_value_query[0]] = $key_value_query[1];
} }
@ -243,14 +242,10 @@ class Api
$query = array_merge($query, (array)$content); $query = array_merge($query, (array)$content);
// rewrite query args to properly dump true/false parameters // rewrite query args to properly dump true/false parameters
foreach($query as $key => $value) foreach ($query as $key => $value) {
{ if ($value === false) {
if ($value === false)
{
$query[$key] = "false"; $query[$key] = "false";
} } elseif ($value === true) {
elseif ($value === true)
{
$query[$key] = "true"; $query[$key] = "true";
} }
} }