From 844e7b03b43c1eddd739143c4f174d70d4749420 Mon Sep 17 00:00:00 2001
From: Morris Jobke <hey@morrisjobke.de>
Date: Wed, 12 Jul 2017 11:52:42 +0200
Subject: [PATCH] Add test to check if new files are added to the root of the
 repository

Signed-off-by: Morris Jobke <hey@morrisjobke.de>
---
 autotest-checkers.sh    |   3 ++
 build/files-checker.php | 109 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 112 insertions(+)
 create mode 100644 build/files-checker.php

diff --git a/autotest-checkers.sh b/autotest-checkers.sh
index 35c945a17e9..96525655fe1 100755
--- a/autotest-checkers.sh
+++ b/autotest-checkers.sh
@@ -37,6 +37,9 @@ for app in $(find "apps/" -mindepth 1 -maxdepth 1 -type d -exec basename {} \;);
     RESULT=$(($RESULT+$?))
 done;
 
+php ./build/files-checker.php
+RESULT=$(($RESULT+$?))
+
 php ./build/signed-off-checker.php
 RESULT=$(($RESULT+$?))
 
diff --git a/build/files-checker.php b/build/files-checker.php
new file mode 100644
index 00000000000..4d4e64e3614
--- /dev/null
+++ b/build/files-checker.php
@@ -0,0 +1,109 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Morris Jobke <hey@morrisjobke.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+$expectedFiles = [
+	'.',
+	'..',
+	'.bowerrc',
+	'.codecov.yml',
+	'.drone.yml',
+	'.git',
+	'.github',
+	'.gitignore',
+	'.gitmodules',
+	'.htaccess',
+	'.idea',
+	'.jshintrc',
+	'.lgtm',
+	'.mailmap',
+	'.scrutinizer.yml',
+	'.tag',
+	'.user.ini',
+	'3rdparty',
+	'apps',
+	'AUTHORS',
+	'autotest-checkers.sh',
+	'autotest-external.sh',
+	'autotest-hhvm.sh',
+	'autotest-js.sh',
+	'autotest.sh',
+	'bower.json',
+	'build',
+	'buildjsdocs.sh',
+	'CHANGELOG.md',
+	'composer.json',
+	'config',
+	'console.php',
+	'contribute',
+	'CONTRIBUTING.md',
+	'COPYING',
+	'COPYING-README',
+	'core',
+	'cron.php',
+	'db_structure.xml',
+	'index.html',
+	'index.php',
+	'issue_template.md',
+	'l10n',
+	'lib',
+	'occ',
+	'ocs',
+	'ocs-provider',
+	'public.php',
+	'README.md',
+	'remote.php',
+	'resources',
+	'robots.txt',
+	'settings',
+	'status.php',
+	'tests',
+	'themes',
+	'version.php',
+];
+$actualFiles = [];
+
+$files = new \DirectoryIterator(__DIR__ . '/..');
+foreach ($files as $file) {
+	$actualFiles[] = $file->getFilename();
+}
+
+$additionalFiles = array_diff($actualFiles, $expectedFiles);
+$missingFiles = array_diff($expectedFiles, $actualFiles);
+
+$failed = false;
+if (count($additionalFiles) > 0) {
+	echo sprintf('ERROR: There were %d additional files:', count($additionalFiles)) . PHP_EOL;
+	echo implode(PHP_EOL, $additionalFiles) . PHP_EOL;
+	$failed = true;
+}
+if (count($missingFiles) > 0) {
+	echo sprintf('ERROR: There were %d missing files:', count($missingFiles)) . PHP_EOL;
+	echo implode(PHP_EOL, $missingFiles) . PHP_EOL;
+	$failed = true;
+}
+
+if ($failed) {
+	echo 'ERROR: Please remove or add those files again or inform the release team about those now files to be included or excluded from the release tar ball.' . PHP_EOL;
+	exit(1);
+}
+
+echo 'OK: all expected files are present and no additional files are there.' . PHP_EOL;
+exit(0);
-- 
GitLab