Browse Source

Merge pull request #206 from nextcloud/ci-mysql

Add mysql job to CI
Morris Jobke 7 years ago
parent
commit
3acdc1339d
4 changed files with 33 additions and 7 deletions
  1. 14 0
      .drone.yml
  2. 1 1
      3rdparty
  3. 10 6
      autotest.sh
  4. 8 0
      tests/lib/Files/Cache/CacheTest.php

+ 14 - 0
.drone.yml

@@ -17,6 +17,13 @@ build:
       - git submodule update --init
       - ./occ maintenance:install --database-name oc_autotest --database-user oc_autotest --admin-user admin --admin-pass admin --database sqlite --database-pass=''
       - ./autotest.sh sqlite
+  mysql:
+    image: morrisjobke/nextcloud-ci-php7:1.0.4
+    commands:
+      - sleep 15 # gives the database enough time to initialize
+      - rm -rf data/* config/config.php # TODO: remove this - temporary fix for CI issues
+      - git submodule update --init
+      - ./autotest.sh mysql
   postgres:
     image: morrisjobke/nextcloud-ci-php7:1.0
     commands:
@@ -33,3 +40,10 @@ compose:
     environment:
       - POSTGRES_USER=oc_autotest
       - POSTGRES_PASSWORD=oc_autotest
+  mysql:
+    image: mysql
+    environment:
+      - MYSQL_ROOT_PASSWORD=owncloud
+      - MYSQL_USER=oc_autotest
+      - MYSQL_PASSWORD=owncloud
+      - MYSQL_DATABASE=oc_autotest

+ 1 - 1
3rdparty

@@ -1 +1 @@
-Subproject commit 509385e674563e48a977bf8285c826963835528e
+Subproject commit 46668812ff12d320ba207f120bd50acffa6e7748

+ 10 - 6
autotest.sh

@@ -200,12 +200,16 @@ function execute_tests {
 			echo "MySQL is up."
 
 		else
-			if [ "mysql" != "$(mysql --version | grep -o mysql)" ] ; then
-				echo "Your mysql binary is not provided by mysql"
-				echo "To use the docker container set the USEDOCKER environment variable"
-				exit -1
-			fi
-			mysql -u "$DATABASEUSER" -powncloud -e "DROP DATABASE IF EXISTS $DATABASENAME" -h $DATABASEHOST || true
+			if [ -z "$DRONE" ] ; then # no need to drop the DB when we are on CI
+                if [ "mysql" != "$(mysql --version | grep -o mysql)" ] ; then
+                    echo "Your mysql binary is not provided by mysql"
+                    echo "To use the docker container set the USEDOCKER environment variable"
+                    exit -1
+                fi
+                mysql -u "$DATABASEUSER" -powncloud -e "DROP DATABASE IF EXISTS $DATABASENAME" -h $DATABASEHOST || true
+            else
+                DATABASEHOST=127.0.0.1
+            fi
 		fi
 	fi
 	if [ "$DB" == "mariadb" ] ; then

+ 8 - 0
tests/lib/Files/Cache/CacheTest.php

@@ -9,6 +9,8 @@
 namespace Test\Files\Cache;
 
 
+use Doctrine\DBAL\Platforms\MySqlPlatform;
+
 class LongId extends \OC\Files\Storage\Temporary {
 	public function getId() {
 		return 'long:' . str_repeat('foo', 50) . parent::getId();
@@ -108,6 +110,12 @@ class CacheTest extends \Test\TestCase {
 	 * @dataProvider folderDataProvider
 	 */
 	public function testFolder($folder) {
+		if(strpos($folder, 'F09F9890')) {
+			// 4 byte UTF doesn't work on mysql
+			if(\OC::$server->getDatabaseConnection()->getDatabasePlatform() instanceof MySqlPlatform) {
+				$this->markTestSkipped('MySQL doesn\'t support 4 byte UTF-8');
+			}
+		}
 		$file2 = $folder.'/bar';
 		$file3 = $folder.'/foo';
 		$data1 = array('size' => 100, 'mtime' => 50, 'mimetype' => 'httpd/unix-directory');