Skip to content

Commit 21b5173

Browse files
authored
CI: Switch to Github Actions (#4)
1 parent c4dba69 commit 21b5173

11 files changed

Lines changed: 141 additions & 83 deletions

.github/workflows/ci-workflow.yml

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
name: CI Workflow
2+
3+
on:
4+
push:
5+
branches: [ master ]
6+
pull_request:
7+
branches: [ master ]
8+
9+
jobs:
10+
code-style:
11+
name: Code Style & Static Analysis
12+
runs-on: ubuntu-20.04
13+
steps:
14+
- name: Checkout
15+
uses: actions/checkout@v2
16+
17+
- name: Setup PHP
18+
uses: shivammathur/setup-php@v2
19+
with:
20+
php-version: 7.1
21+
extensions: mbstring, pcntl
22+
23+
- name: Validate composer.json and composer.lock
24+
run: composer validate
25+
26+
- name: Install dependencies
27+
run: composer install --prefer-dist --no-progress
28+
29+
- name: Check code style
30+
run: vendor/bin/phpcs --standard=psr2 -n src/
31+
32+
33+
tests:
34+
name: Test Suite
35+
runs-on: ubuntu-20.04
36+
strategy:
37+
max-parallel: 10
38+
matrix:
39+
php:
40+
- 7.1
41+
- 7.2
42+
- 7.3
43+
- 7.4
44+
- 8.0
45+
- 8.1
46+
47+
steps:
48+
- name: Checkout
49+
uses: actions/checkout@v2
50+
51+
- name: Setup PHP
52+
uses: shivammathur/setup-php@v2
53+
with:
54+
php-version: ${{ matrix.php }}
55+
extensions: mbstring, curl, zip
56+
coverage: xdebug
57+
58+
- name: Install dependencies
59+
run: composer install --prefer-dist --no-progress
60+
61+
- name: Run tests
62+
run: vendor/bin/phpunit --coverage-clover=coverage.xml
63+
64+
- name: Upload coverage to Codecov
65+
uses: codecov/codecov-action@v1
66+
with:
67+
token: ${{ secrets.CODECOV_TOKEN }}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
name: Security Check
2+
3+
on:
4+
push:
5+
branches: [ main ]
6+
pull_request:
7+
branches: [ main ]
8+
schedule:
9+
- cron: "0 0 1 * *"
10+
11+
jobs:
12+
security-check:
13+
runs-on: ubuntu-20.04
14+
steps:
15+
- uses: actions/checkout@v2
16+
- uses: actions/cache@v2
17+
id: cache-db
18+
with:
19+
path: ~/.symfony/cache
20+
key: db
21+
- uses: symfonycorp/security-checker-action@v2

.travis.yml

Lines changed: 0 additions & 21 deletions
This file was deleted.

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
[![Latest Stable Version](https://poser.pugx.org/bentools/querystring/v/stable)](https://packagist.org/packages/bentools/querystring)
22
[![License](https://poser.pugx.org/bentools/querystring/license)](https://packagist.org/packages/bentools/querystring)
3-
[![Build Status](https://img.shields.io/travis/bpolaszek/querystring/master.svg?style=flat-square)](https://travis-ci.org/bpolaszek/querystring)
4-
[![Coverage Status](https://coveralls.io/repos/github/bpolaszek/querystring/badge.svg?branch=master)](https://coveralls.io/github/bpolaszek/querystring?branch=master)
3+
[![CI Workflow](https://github.com/bpolaszek/querystring/actions/workflows/ci-workflow.yml/badge.svg)](https://github.com/bpolaszek/querystring/actions/workflows/ci-workflow.yml)
4+
[![Coverage](https://codecov.io/gh/bpolaszek/querystring/branch/master/graph/badge.svg?token=9AXQUHY1R7)](https://codecov.io/gh/bpolaszek/querystring)
55
[![Quality Score](https://img.shields.io/scrutinizer/g/bpolaszek/querystring.svg?style=flat-square)](https://scrutinizer-ci.com/g/bpolaszek/querystring)
66
[![Total Downloads](https://poser.pugx.org/bentools/querystring/downloads)](https://packagist.org/packages/bentools/querystring)
77

88
# QueryString
99

10-
A PSR-7 compliant query string manipulator, with **no dependency**. Not even PSR-7, actually.
10+
A lightweight, object-oriented, Query String manipulation library.
1111

1212
## Why?
1313

@@ -76,4 +76,4 @@ MIT
7676

7777
[bentools/string-combinations](https://github.com/bpolaszek/string-combinations) - A string combinations generator.
7878

79-
[bentools/flatten-iterator](https://github.com/bpolaszek/flatten-iterator) - An iterator that flattens multiple iterators or arrays.
79+
[bentools/flatten-iterator](https://github.com/bpolaszek/flatten-iterator) - An iterator that flattens multiple iterators or arrays.

composer.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,9 @@
1717
},
1818
"require-dev": {
1919
"league/uri": "^5.0",
20-
"php-coveralls/php-coveralls": "^2.4",
21-
"phpunit/phpunit": "^5.0|^6.0|^7.0",
20+
"phpunit/phpunit": "^7.5|^8.0|^9.0",
2221
"squizlabs/php_codesniffer": "^3.0",
23-
"symfony/var-dumper": "^3.3"
22+
"symfony/var-dumper": "@stable"
2423
},
2524
"autoload": {
2625
"psr-4": {

tests/ArrayValuesNormalizerRendererTest.php

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class ArrayValuesNormalizerRendererTest extends TestCase
1313

1414
private $defaultSeparator;
1515

16-
public function testRenderer()
16+
public function testRenderer(): void
1717
{
1818
$data = [
1919
'foo' => 'bar',
@@ -41,7 +41,7 @@ public function testRenderer()
4141
$this->assertEquals('foo=bar&sort[bar]=desc&sort[foo]=asc&filters[foo][]=bar&filters[foo][]=baz&filters[bar][]=foo bar', urldecode($qs->withRenderer($renderer->withEncoding(PHP_QUERY_RFC1738))));
4242
}
4343

44-
public function testRendererOnlyAffectsKeys()
44+
public function testRendererOnlyAffectsKeys(): void
4545
{
4646
$data = [
4747
'foo' => [
@@ -52,7 +52,7 @@ public function testRendererOnlyAffectsKeys()
5252
$this->assertEquals('foo%5B%5D=bar%20baz%5B0%5D', (string) $qs->withRenderer(withoutNumericIndices()));
5353
}
5454

55-
public function testChangeEncoding()
55+
public function testChangeEncoding(): void
5656
{
5757
$renderer = ArrayValuesNormalizerRenderer::factory();
5858
$this->assertNotSame($renderer->withEncoding($renderer->getEncoding()), $renderer);
@@ -62,7 +62,7 @@ public function testChangeEncoding()
6262
$this->assertEquals(PHP_QUERY_RFC1738, $renderer->getEncoding());
6363
}
6464

65-
public function testChangeSeparator()
65+
public function testChangeSeparator(): void
6666
{
6767

6868
ini_set('arg_separator.output', '~');
@@ -83,23 +83,21 @@ public function testChangeSeparator()
8383
ini_set('arg_separator.output', $this->defaultSeparator);
8484
}
8585

86-
/**
87-
* @expectedException \RuntimeException
88-
*/
89-
public function testBlankSeparator()
86+
public function testBlankSeparator(): void
9087
{
88+
$this->expectException(\RuntimeException::class);
9189
$qs = query_string(['foo' => 'bar', 'bar' => 'baz']);
9290
$renderer = ArrayValuesNormalizerRenderer::factory();
9391
$renderer = $renderer->withSeparator(''); // Blank separator
9492
$renderer->render($qs);
9593
}
9694

97-
public function setUp()
95+
public function setUp(): void
9896
{
9997
$this->defaultSeparator = ini_get('arg_separator.output');
10098
}
10199

102-
public function tearDown()
100+
public function tearDown(): void
103101
{
104102
ini_set('arg_separator.output', $this->defaultSeparator);
105103
}

tests/FlatRendererTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
class FlatRendererTest extends TestCase
1010
{
11-
public function testRenderer()
11+
public function testRenderer(): void
1212
{
1313
$data = [
1414
'foo' => 'bar',

tests/NativeParserTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
class NativeParserTest extends TestCase
99
{
1010

11-
public function testParser()
11+
public function testParser(): void
1212
{
1313
$parser = new NativeParser();
1414
$this->assertEquals(['foo' => 'bar', 'baz' => 'bat'], $parser->parse('foo=bar&baz=bat'));

tests/NativeRendererTest.php

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class NativeRendererTest extends TestCase
1111
{
1212
private $defaultSeparator;
1313

14-
public function testRenderer()
14+
public function testRenderer(): void
1515
{
1616
$data = [
1717
'foo' => 'bar',
@@ -40,24 +40,20 @@ public function testRenderer()
4040
$this->assertEquals('foo=bar&sort[bar]=desc&sort[foo]=asc&filters[foo][0]=bar&filters[foo][1]=baz&filters[bar][0]=foo bar', urldecode($qs->withRenderer($renderer->withEncoding(PHP_QUERY_RFC1738))));
4141
}
4242

43-
/**
44-
* @expectedException \InvalidArgumentException
45-
*/
46-
public function testFactoryFails()
43+
public function testFactoryFails(): void
4744
{
45+
$this->expectException(\InvalidArgumentException::class);
4846
NativeRenderer::factory(1000);
4947
}
5048

51-
/**
52-
* @expectedException \InvalidArgumentException
53-
*/
54-
public function testChangeEncodingFails()
49+
public function testChangeEncodingFails(): void
5550
{
51+
$this->expectException(\InvalidArgumentException::class);
5652
$renderer = NativeRenderer::factory();
5753
$renderer->withEncoding(1000);
5854
}
5955

60-
public function testChangeEncoding()
56+
public function testChangeEncoding(): void
6157
{
6258
$renderer = NativeRenderer::factory();
6359
$this->assertNotSame($renderer->withEncoding($renderer->getEncoding()), $renderer);
@@ -67,7 +63,7 @@ public function testChangeEncoding()
6763
$this->assertEquals(PHP_QUERY_RFC1738, $renderer->getEncoding());
6864
}
6965

70-
public function testChangeSeparator()
66+
public function testChangeSeparator(): void
7167
{
7268

7369
ini_set('arg_separator.output', '~');
@@ -91,12 +87,12 @@ public function testChangeSeparator()
9187
ini_set('arg_separator.output', $this->defaultSeparator);
9288
}
9389

94-
public function setUp()
90+
public function setUp(): void
9591
{
9692
$this->defaultSeparator = ini_get('arg_separator.output');
9793
}
9894

99-
public function tearDown()
95+
public function tearDown(): void
10096
{
10197
ini_set('arg_separator.output', $this->defaultSeparator);
10298
}

tests/PairsTest.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
class PairsTest extends TestCase
1111
{
1212

13-
public function testPairsWithoutDecoding()
13+
public function testPairsWithoutDecoding(): void
1414
{
1515
$qs = (string) query_string('foo[bar]=baz bat');
1616
$pairs = new IteratorIterator(new Pairs($qs));
@@ -19,7 +19,7 @@ public function testPairsWithoutDecoding()
1919
$this->assertEquals('baz%20bat', $pairs->current());
2020
}
2121

22-
public function testPairsWithKeyDecoding()
22+
public function testPairsWithKeyDecoding(): void
2323
{
2424
$qs = (string) query_string('foo[bar]=baz bat');
2525
$pairs = new IteratorIterator(new Pairs($qs, true));
@@ -34,7 +34,7 @@ public function testPairsWithKeyDecoding()
3434
$this->assertEquals('baz%20bat', $pairs->current());
3535
}
3636

37-
public function testPairsWithValueDecoding()
37+
public function testPairsWithValueDecoding(): void
3838
{
3939
$qs = (string) query_string('foo[bar]=baz bat');
4040
$pairs = new IteratorIterator(new Pairs($qs, false, true));
@@ -49,21 +49,21 @@ public function testPairsWithValueDecoding()
4949
$this->assertEquals('baz bat', $pairs->current());
5050
}
5151

52-
public function testPairsWithDifferentSeparator()
52+
public function testPairsWithDifferentSeparator(): void
5353
{
5454
$qs = 'foo=bar;baz=bat';
5555
$this->assertEquals(['foo' => 'bar', 'baz' => 'bat'], iterator_to_array(new Pairs($qs, false, false, ';')));
5656
$qs = 'foo=bar;baz=bat';
5757
$this->assertEquals(['foo' => 'bar', 'baz' => 'bat'], iterator_to_array((new Pairs($qs))->withSeparator(';')));
5858
}
5959

60-
public function testPairsWithMissingValues()
60+
public function testPairsWithMissingValues(): void
6161
{
6262
$qs = 'foo=&baz';
6363
$this->assertEquals(['foo' => '', 'baz' => null], iterator_to_array(new Pairs($qs, false, false)));
6464
}
6565

66-
public function testPairsOnEmptyQueryString()
66+
public function testPairsOnEmptyQueryString(): void
6767
{
6868
$qs = ' ';
6969
$this->assertEquals([], iterator_to_array(new Pairs($qs)));

0 commit comments

Comments
 (0)