summaryrefslogtreecommitdiffstats
path: root/build
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2017-07-12 11:52:42 +0200
committerMorris Jobke <hey@morrisjobke.de>2017-07-12 11:52:42 +0200
commit844e7b03b43c1eddd739143c4f174d70d4749420 (patch)
tree45ca1f82a35fab8426dae7a470f92144345b373b /build
parent13295c2d1ddf3e4daf491a6c41303dbd1dc40b68 (diff)
downloadnextcloud-server-844e7b03b43c1eddd739143c4f174d70d4749420.tar.gz
nextcloud-server-844e7b03b43c1eddd739143c4f174d70d4749420.zip
Add test to check if new files are added to the root of the repository
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
Diffstat (limited to 'build')
-rw-r--r--build/files-checker.php109
1 files changed, 109 insertions, 0 deletions
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);