summaryrefslogtreecommitdiff
path: root/vendor/oojs/oojs-ui/bin/generate-JSPHP-for-karma.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/oojs/oojs-ui/bin/generate-JSPHP-for-karma.php')
-rw-r--r--vendor/oojs/oojs-ui/bin/generate-JSPHP-for-karma.php50
1 files changed, 50 insertions, 0 deletions
diff --git a/vendor/oojs/oojs-ui/bin/generate-JSPHP-for-karma.php b/vendor/oojs/oojs-ui/bin/generate-JSPHP-for-karma.php
new file mode 100644
index 00000000..445da65c
--- /dev/null
+++ b/vendor/oojs/oojs-ui/bin/generate-JSPHP-for-karma.php
@@ -0,0 +1,50 @@
+<?php
+
+// Quick and dirty autoloader to make it possible to run without Composer.
+spl_autoload_register( function ( $class ) {
+ $class = preg_replace( '/^OOUI\\\\/', '', $class );
+ foreach ( array( 'elements', 'layouts', 'themes', 'widgets', '.' ) as $dir ) {
+ $path = "../php/$dir/$class.php";
+ if ( file_exists( $path ) ) {
+ require_once $path;
+ return;
+ }
+ }
+} );
+
+$testSuiteJSON = file_get_contents( 'JSPHP-suite.json' );
+$testSuite = json_decode( $testSuiteJSON, true );
+$testSuiteOutput = array();
+
+function new_OOUI( $class, $config = array() ) {
+ $class = "OOUI\\" . $class;
+ return new $class( $config );
+}
+function unstub( &$value ) {
+ if ( is_string( $value ) && substr( $value, 0, 13 ) === '_placeholder_' ) {
+ $value = json_decode( substr( $value, 13 ), true );
+ array_walk_recursive( $value['config'], 'unstub' );
+ $value = new_OOUI( $value['class'], $value['config'] );
+ }
+}
+// Keep synchronized with tests/index.php
+$themes = array( 'ApexTheme', 'MediaWikiTheme' );
+foreach ( $themes as $theme ) {
+ OOUI\Theme::setSingleton( new_OOUI( $theme ) );
+ foreach ( $testSuite as $className => $tests ) {
+ foreach ( $tests as $test ) {
+ // Unstub placeholders
+ $config = $test['config'];
+ array_walk_recursive( $config, 'unstub' );
+ $config['infusable'] = true;
+ $instance = new_OOUI( $test['class'], $config );
+ $testSuiteOutput[$theme][$className][] = "$instance";
+ }
+ }
+}
+
+$testSuiteOutputJSON = json_encode( $testSuiteOutput, JSON_PRETTY_PRINT );
+
+echo "var testSuiteConfigs = $testSuiteJSON;\n\n";
+echo "var testSuitePHPOutput = $testSuiteOutputJSON;\n\n";
+echo file_get_contents( 'JSPHP.test.karma.js' );