r50554 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r50553‎ | r50554 | r50555 >
Date:16:42, 13 May 2009
Author:kim
Status:deferred
Tags:
Comment:
trademarks
Modified paths:
  • /trunk/testing (added) (history)
  • /trunk/wikiation (deleted) (history)

Diff [purge]

Index: trunk/testing/wikiation_check_isolation/compare_db.sh
@@ -0,0 +1,25 @@
 2+#!/bin/bash
 3+# compare database description directories created by
 4+# dump_desc.sh, and write a report to current/
 5+
 6+# This software, copyright (C) 2008-2009 by Wikiation.
 7+# This software is developed by Kim Bruning.
 8+#
 9+# Distributed under the terms of the MIT license.
 10+
 11+
 12+
 13+if [[ $0 == '/'* ]]; then
 14+ ScriptLocation="`dirname $0`"
 15+else
 16+ ScriptLocation="`pwd`"/"`dirname $0`"
 17+fi
 18+
 19+data=$ScriptLocation/data
 20+current=$ScriptLocation/current
 21+
 22+mkdir -p $current
 23+
 24+$ScriptLocation/dump_desc.sh $current/current_db
 25+
 26+diff -rN $data/original_db $current/current_db > $current/dbdiff_report
Property changes on: trunk/testing/wikiation_check_isolation/compare_db.sh
___________________________________________________________________
Added: svn:eol-style
127 + native
Added: svn:executable
228 +
Index: trunk/testing/wikiation_check_isolation/create_data.sh
@@ -0,0 +1,20 @@
 2+#!/bin/bash
 3+# This software, copyright (C) 2008-2009 by Wikiation.
 4+# This software is developed by Kim Bruning.
 5+#
 6+# Distributed under the terms of the MIT license.
 7+
 8+
 9+
 10+if [[ $0 == '/'* ]]; then
 11+ ScriptLocation="`dirname $0`"
 12+else
 13+ ScriptLocation="`pwd`"/"`dirname $0`"
 14+fi
 15+
 16+data=$ScriptLocation/data
 17+source $ScriptLocation/settings
 18+
 19+mkdir -p $data
 20+cp -r $mediawiki_location $data
 21+$ScriptLocation/dump_desc.sh $data/original_db
Property changes on: trunk/testing/wikiation_check_isolation/create_data.sh
___________________________________________________________________
Added: svn:eol-style
122 + native
Added: svn:executable
223 +
Index: trunk/testing/wikiation_check_isolation/compare_all.sh
@@ -0,0 +1,45 @@
 2+#!/bin/bash
 3+
 4+# This software, copyright (C) 2008-2009 by Wikiation.
 5+# This software is developed by Kim Bruning.
 6+#
 7+# Distributed under the terms of the MIT license.
 8+
 9+
 10+
 11+RED='\e[0;31m'
 12+GREEN='\e[0;32m'
 13+NC='\e[0m' # No Color
 14+
 15+if [[ $0 == '/'* ]]; then
 16+ ScriptLocation="`dirname $0`"
 17+else
 18+ ScriptLocation="`pwd`"/"`dirname $0`"
 19+fi
 20+
 21+data=$ScriptLocation/data
 22+current=$ScriptLocation/current
 23+
 24+$ScriptLocation/compare_mw.sh $1 $2
 25+$ScriptLocation/compare_db.sh
 26+
 27+[ ! -s $current/mwdiff_report ] &&
 28+ echo -e "$GREEN * $NC After installation no difference found with the original MediaWiki core."
 29+
 30+[ ! -s $current/dbdiff_report ] &&
 31+ echo -e "$GREEN * $NC After installation no difference found with the structure of the original MediaWiki database."
 32+
 33+[ -s $current/mwdiff_report ] && {
 34+ echo
 35+ echo -e "$RED * $NC MediaWiki differences: "
 36+ cat $current/mwdiff_report
 37+}
 38+
 39+
 40+[ -s $current/dbdiff_report ] && {
 41+ echo
 42+ echo -e "$RED * $NC MediaWiki Database differences: "
 43+ cat $current/dbdiff_report
 44+}
 45+
 46+exit ! ( -s $current/mwdiff_report || -s $current/dbdiff_report )
Property changes on: trunk/testing/wikiation_check_isolation/compare_all.sh
___________________________________________________________________
Added: svn:eol-style
147 + native
Added: svn:executable
248 +
Index: trunk/testing/wikiation_check_isolation/dl_and_check.sh
@@ -0,0 +1,47 @@
 2+#!/bin/bash
 3+#load data on a particular revision
 4+# This software, copyright (C) 2008-2009 by Wikiation.
 5+# This software is developed by Kim Bruning.
 6+#
 7+# Distributed under the terms of the MIT license.
 8+
 9+
 10+
 11+if [[ $0 == '/'* ]]; then
 12+ ScriptLocation="`dirname $0`"
 13+else
 14+ ScriptLocation="`pwd`"/"`dirname $0`"
 15+fi
 16+
 17+target=$1
 18+
 19+if test -z $1; then
 20+ echo "syntax: check_isolation <revision name>"
 21+ exit 0
 22+fi
 23+
 24+
 25+if echo $1 | grep "/" ; then
 26+ target=`basename $1`
 27+ target_dir=`dirname $1`
 28+else
 29+ target=$1
 30+ target_dir="/var/www/revisions/$target";
 31+fi
 32+
 33+
 34+if test ! -e $target_dir; then
 35+ echo "$target not found"
 36+ exit 0
 37+fi
 38+
 39+
 40+p1=$2
 41+p2=$3
 42+
 43+export mediawiki=$target
 44+export mediawiki_location=$target_dir
 45+$ScriptLocation/load.sh $target &&
 46+echo "Running checks:" &&
 47+$ScriptLocation/compare_all.sh $p1 $p2
 48+exit $?
Property changes on: trunk/testing/wikiation_check_isolation/dl_and_check.sh
___________________________________________________________________
Added: svn:eol-style
149 + native
Added: svn:executable
250 +
Index: trunk/testing/wikiation_check_isolation/save.sh
@@ -0,0 +1,24 @@
 2+#!/bin/bash
 3+
 4+# This software, copyright (C) 2008-2009 by Wikiation.
 5+# This software is developed by Kim Bruning.
 6+#
 7+# Distributed under the terms of the MIT license.
 8+
 9+
 10+if [[ $0 == '/'* ]]; then
 11+ ScriptLocation="`dirname $0`"
 12+else
 13+ ScriptLocation="`pwd`"/"`dirname $0`"
 14+fi
 15+
 16+source ${ScriptLocation}/settings
 17+
 18+echo "-- Storing data."
 19+cd $ScriptLocation
 20+tarball=${mediawiki}.tar.gz
 21+tar czf $tarball data
 22+revisions=$ScriptLocation/revisions
 23+
 24+mkdir -p $revisions
 25+cp $tarball $revisions
Property changes on: trunk/testing/wikiation_check_isolation/save.sh
___________________________________________________________________
Added: svn:eol-style
126 + native
Added: svn:executable
227 +
Index: trunk/testing/wikiation_check_isolation/load.sh
@@ -0,0 +1,22 @@
 2+#!/bin/bash
 3+
 4+# This software, copyright (C) 2008-2009 by Wikiation.
 5+# This software is developed by Kim Bruning.
 6+#
 7+# Distributed under the terms of the MIT license.
 8+
 9+
 10+if [[ $0 == '/'* ]]; then
 11+ ScriptLocation="`dirname $0`"
 12+else
 13+ ScriptLocation="`pwd`"/"`dirname $0`"
 14+fi
 15+
 16+source $ScriptLocation/settings
 17+revisions=$ScriptLocation/revisions
 18+tarball=${mediawiki}.tar.gz
 19+echo "- Obtaining comparison data"
 20+cp $revisions/$tarball $ScriptLocation
 21+rm -rf $ScriptLocation/data
 22+cd $ScriptLocation
 23+tar xf $ScriptLocation/$tarball
Property changes on: trunk/testing/wikiation_check_isolation/load.sh
___________________________________________________________________
Added: svn:eol-style
124 + native
Added: svn:executable
225 +
Index: trunk/testing/wikiation_check_isolation/dump_desc.sh
@@ -0,0 +1,25 @@
 2+#!/bin/bash
 3+# create a directory describing wiki database (for easy diff-ing)
 4+
 5+# This software, copyright (C) 2008-2009 by Wikiation.
 6+# This software is developed by Kim Bruning.
 7+#
 8+# Distributed under the terms of the MIT license.
 9+
 10+
 11+
 12+set -u
 13+set -e
 14+
 15+target_dir=$1
 16+
 17+rm -rf $target_dir
 18+mkdir -p $target_dir
 19+
 20+echo "show tables" | mysql $mediawiki | grep -v Tables_in_$mediawiki > $target_dir/tables
 21+
 22+exec < $target_dir/tables
 23+while read table
 24+do
 25+ echo "desc $table" | mysql $mediawiki > $target_dir/$table
 26+done
Property changes on: trunk/testing/wikiation_check_isolation/dump_desc.sh
___________________________________________________________________
Added: svn:eol-style
127 + native
Added: svn:executable
228 +
Index: trunk/testing/wikiation_check_isolation/README
@@ -0,0 +1,47 @@
 2+# This software, copyright (C) 2008-2009 by Wikiation.
 3+# This software is developed by Kim Bruning.
 4+#
 5+# Distributed under the terms of the MIT license.
 6+
 7+
 8+dl_and_check.sh
 9+create_and_ul.sh
 10+
 11+settings
 12+
 13+Quick hack/ Test suite to check Mediawiki, sees which changes have been made to
 14+mediawiki code, or to the database. Written by Kim Bruning
 15+
 16+Currently handles 1 changeset only, this changeset is stored at the
 17+remote location specified in the settings file.
 18+
 19+==create_and_ul.sh==
 20+<Depreciated gwicke 08/2008: only pull supported>
 21+
 22+Creates a new changeset for the specified revision
 23+will be run from the installer (so you never need to use this!)
 24+
 25+
 26+==dl_and_check.sh [--detail|-d] [exclude]==
 27+Checks changeset against current mediawiki and database for your revision
 28+Will report any differences.
 29+
 30+If the detail flag is set, will give more detail on mediawiki code comparison
 31+ to wit:
 32+ diff -q (show only whether files differ) is turned off,
 33+ diff -N (assume missing files are empty) is turned on.
 34+
 35+Files and directories matching the optional exclude pattern will be ignored.
 36+
 37+== settings ==
 38+Deprecated
 39+
 40+== Use on 83.149.110.226 or other wikitestservers ==
 41+
 42+dl_and_check.sh can be called via CheckMWandDBdiff
 43+
 44+Should assumptions change, please contact the author.
 45+
 46+== Example ==
 47+
 48+Check
Property changes on: trunk/testing/wikiation_check_isolation/README
___________________________________________________________________
Added: svn:eol-style
149 + native
Index: trunk/testing/wikiation_check_isolation/create_and_ul.sh
@@ -0,0 +1,37 @@
 2+#!/bin/bash
 3+#save data on a particular revision
 4+
 5+# This software, copyright (C) 2008-2009 by Wikiation.
 6+# This software is developed by Kim Bruning.
 7+#
 8+# Distributed under the terms of the MIT license.
 9+
 10+
 11+if [[ $0 == '/'* ]]; then
 12+ ScriptLocation="`dirname $0`"
 13+else
 14+ ScriptLocation="`pwd`"/"`dirname $0`"
 15+fi
 16+
 17+
 18+
 19+if echo $1 | grep "/" ; then
 20+ target=`basename $1`
 21+ target_dir=`dirname $1`
 22+else
 23+ target=$1
 24+ target_dir="/var/www/revisions/$target";
 25+fi
 26+
 27+
 28+if test ! -e $target_dir; then
 29+ echo "$target not found"
 30+ exit 0
 31+fi
 32+
 33+echo "- Collecting data."
 34+export mediawiki=$target
 35+export mediawiki_location=$target_dir
 36+ $ScriptLocation/create_data.sh &&
 37+ $ScriptLocation/save.sh
 38+
Property changes on: trunk/testing/wikiation_check_isolation/create_and_ul.sh
___________________________________________________________________
Added: svn:eol-style
139 + native
Added: svn:executable
240 +
Index: trunk/testing/wikiation_check_isolation/settings
@@ -0,0 +1,4 @@
 2+# depreciated gwicke 08/2008
 3+# rest of file now currently unused. WOW!
 4+
 5+
Property changes on: trunk/testing/wikiation_check_isolation/settings
___________________________________________________________________
Added: svn:eol-style
16 + native
Index: trunk/testing/wikiation_check_isolation/LICENSE
@@ -0,0 +1,23 @@
 2+This software, copyright (C) 2008-2009 by Wikiation. This software is developed by Kim Bruning.
 3+Copyright (C) 2009 Kim Bruning
 4+
 5+
 6+Permission is hereby granted, free of charge, to any person obtaining a copy
 7+of this software and associated documentation files (the "Software"), to deal
 8+in the Software without restriction, including without limitation the rights to
 9+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
 10+of the Software, and to permit persons to whom the Software is furnished to do
 11+so, subject to the following conditions:
 12+
 13+The above copyright notice and this permission notice shall be included in all
 14+copies or substantial portions of the Software.
 15+
 16+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 17+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 18+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 19+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 20+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 21+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 22+SOFTWARE.
 23+
 24+
Property changes on: trunk/testing/wikiation_check_isolation/LICENSE
___________________________________________________________________
Added: svn:eol-style
125 + native
Index: trunk/testing/wikiation_check_isolation/compare_mw.sh
@@ -0,0 +1,35 @@
 2+#!/bin/bash
 3+#compare local mediawiki installation with our own copy
 4+
 5+# This software, copyright (C) 2008-2009 by Wikiation.
 6+# This software is developed by Kim Bruning.
 7+#
 8+# Distributed under the terms of the MIT license.
 9+
 10+
 11+
 12+if [[ $0 == '/'* ]]; then
 13+ ScriptLocation="`dirname $0`"
 14+else
 15+ ScriptLocation="`pwd`"/"`dirname $0`"
 16+fi
 17+
 18+source $ScriptLocation/settings
 19+data=$ScriptLocation/data
 20+current=$ScriptLocation/current
 21+
 22+mask=$1
 23+detail='-q'
 24+
 25+if [[ ( $mask = "--detail" ) || ( $mask = "-d" ) ]]; then
 26+ mask=$2
 27+ detail='-N'
 28+fi
 29+
 30+mkdir -p $current
 31+
 32+if [[ -n $mask ]] ; then
 33+ diff -r $detail -x $mask $mediawiki_location $data/$mediawiki >$current/mwdiff_report
 34+else
 35+ diff -r $detail $mediawiki_location $data/$mediawiki >$current/mwdiff_report
 36+fi
Property changes on: trunk/testing/wikiation_check_isolation/compare_mw.sh
___________________________________________________________________
Added: svn:eol-style
137 + native
Added: svn:executable
238 +
Index: trunk/testing/installer/LocalSettings.php
@@ -0,0 +1,143 @@
 2+<?php
 3+
 4+# This file was automatically generated by the MediaWiki installer.
 5+# If you make manual changes, please keep track in case you need to
 6+# recreate them later.
 7+#
 8+# See includes/DefaultSettings.php for all configurable settings
 9+# and their default values, but don't forget to make changes in _this_
 10+# file, not there.
 11+
 12+error_reporting( E_ALL | E_STRICT);
 13+
 14+# If you customize your file layout, set $IP to the directory that contains
 15+# the other MediaWiki files. It will be used as a base to locate files.
 16+if( defined( 'MW_INSTALL_PATH' ) ) {
 17+ $IP = MW_INSTALL_PATH;
 18+} else {
 19+ $IP = dirname( __FILE__ );
 20+}
 21+
 22+$path = array( $IP, "$IP/includes", "$IP/languages" );
 23+set_include_path( implode( PATH_SEPARATOR, $path ) . PATH_SEPARATOR . get_include_path() );
 24+
 25+require_once( "$IP/includes/DefaultSettings.php" );
 26+
 27+# If PHP's memory limit is very low, some operations may fail.
 28+# ini_set( 'memory_limit', '20M' );
 29+
 30+if ( $wgCommandLineMode ) {
 31+ if ( isset( $_SERVER ) && array_key_exists( 'REQUEST_METHOD', $_SERVER ) ) {
 32+ die( "This script must be run from the command line\n" );
 33+ }
 34+}
 35+## Uncomment this to disable output compression
 36+# $wgDisableOutputCompression = true;
 37+
 38+require_once ("$IP/InstallerUniqueSettings.php");
 39+
 40+## The URL base path to the directory containing the wiki;
 41+## defaults for all runtime URL paths are based off of this.
 42+$wgScriptExtension = ".php";
 43+
 44+
 45+## For more information on customizing the URLs please see:
 46+## http://www.mediawiki.org/wiki/Manual:Short_URL
 47+
 48+$wgEnableEmail = true;
 49+$wgEnableUserEmail = true;
 50+
 51+$wgEmergencyContact = "webmaster@localhost";
 52+$wgPasswordSender = "webmaster@localhost";
 53+
 54+## For a detailed description of the following switches see
 55+## http://www.mediawiki.org/wiki/Extension:Email_notification
 56+## and http://www.mediawiki.org/wiki/Extension:Email_notification
 57+## There are many more options for fine tuning available see
 58+## /includes/DefaultSettings.php
 59+## UPO means: this is also a user preference option
 60+$wgEnotifUserTalk = true; # UPO
 61+$wgEnotifWatchlist = true; # UPO
 62+$wgEmailAuthentication = true;
 63+
 64+$wgDBtype = "mysql";
 65+$wgDBserver = "localhost";
 66+$wgDBuser = "root";
 67+$wgDBpassword = "";
 68+
 69+# MySQL specific settings
 70+$wgDBprefix = "";
 71+
 72+# MySQL table options to use during installation or update
 73+$wgDBTableOptions = "TYPE=InnoDB";
 74+
 75+# Experimental charset support for MySQL 4.1/5.0.
 76+$wgDBmysql5 = false;
 77+
 78+# Postgres specific settings
 79+$wgDBport = "5432";
 80+$wgDBmwschema = "mediawiki";
 81+$wgDBts2schema = "public";
 82+
 83+## Shared memory settings
 84+$wgMainCacheType = CACHE_ACCEL;
 85+$wgMemCachedServers = array();
 86+
 87+## To enable image uploads, make sure the 'images' directory
 88+## is writable, then set this to true:
 89+$wgEnableUploads = false;
 90+# $wgUseImageMagick = true;
 91+# $wgImageMagickConvertCommand = "/usr/bin/convert";
 92+
 93+## If you want to use image uploads under safe mode,
 94+## create the directories images/archive, images/thumb and
 95+## images/temp, and make them all writable. Then uncomment
 96+## this, if it's not already uncommented:
 97+# $wgHashedUploadDirectory = false;
 98+
 99+## If you have the appropriate support software installed
 100+## you can enable inline LaTeX equations:
 101+$wgUseTeX = false;
 102+
 103+$wgLocalInterwiki = $wgSitename;
 104+
 105+$wgLanguageCode = "en";
 106+
 107+$wgProxyKey = "eeedfbcf7f4e6238a2db7959e50e5e19d0e0c1a6500dbfaa5d38f6dabe801c76";
 108+
 109+## Default skin: you can change the default skin. Use the internal symbolic
 110+## names, ie 'standard', 'nostalgia', 'cologneblue', 'monobook':
 111+$wgDefaultSkin = 'monobook';
 112+
 113+## For attaching licensing metadata to pages, and displaying an
 114+## appropriate copyright notice / icon. GNU Free Documentation
 115+## License and Creative Commons licenses are supported so far.
 116+# $wgEnableCreativeCommonsRdf = true;
 117+$wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright
 118+$wgRightsUrl = "";
 119+$wgRightsText = "";
 120+$wgRightsIcon = "";
 121+# $wgRightsCode = ""; # Not yet used
 122+
 123+$wgDiff3 = "/usr/bin/diff3";
 124+
 125+# When you make changes to this configuration file, this will make
 126+# sure that cached pages are cleared.
 127+$wgCacheEpoch = max( $wgCacheEpoch, gmdate( 'YmdHis', @filemtime( __FILE__ ) ) );
 128+
 129+$wgGroupPermissions['*' ]['read'] = true;
 130+$wgGroupPermissions['*' ]['write'] = false;
 131+
 132+
 133+# No wiki is complete without a logo.
 134+$wgLogo="$wgScriptPath/Logo.png";
 135+
 136+# load Localsettings specific to particular modules
 137+
 138+$additional_settings=glob("$IP/LocalSettings/*.php");
 139+foreach ($additional_settings as $file) {
 140+ require_once($file);
 141+}
 142+
 143+
 144+?>
Index: trunk/testing/installer/extension_installer2.py
@@ -0,0 +1,20 @@
 2+# This software, copyright (C) 2008-2009 by Wikiation.
 3+# This software is developed by Kim Bruning.
 4+#
 5+# Distributed under the terms of the MIT license.
 6+
 7+from combined_installer import Combined_Installer
 8+from scripted_installer import Scripted_Installer
 9+from naive_installer import Naive_Installer
 10+
 11+
 12+def extension_installer2():
 13+ """factory: returns a combined installer that installs extensions from either scripted or naive
 14+
 15+ technical detail:
 16+ For use with installers.get_system(system_name)
 17+ we exploit the fact that instantiation has the same semantics as a function call"""
 18+ scripted=Scripted_Installer()
 19+ naive=Naive_Installer()
 20+ combined=Combined_Installer([scripted,naive])
 21+ return combined
Index: trunk/testing/installer/naive_installer.py
@@ -0,0 +1,41 @@
 2+# This software, copyright (C) 2008-2009 by Wikiation.
 3+# This software is developed by Kim Bruning.
 4+#
 5+# Distributed under the terms of the MIT license.
 6+
 7+import settings_handler as settings
 8+import os, os.path, shutil
 9+import subprocess
 10+
 11+from installation_system import Installation_System
 12+from extension_installer import Extension_Installer_Exception
 13+from download_installer import Download_Installer, Download_Installer_Exception
 14+
 15+class Naive_Installer_Exception(Download_Installer_Exception):
 16+ pass
 17+
 18+class Unsupported_Exception(Exception):
 19+ pass
 20+
 21+class Naive_Installer(Download_Installer):
 22+ """download an extension, and try to naively just require_once() it in
 23+ LocalSettings, this SHOULD work 60-80% of the time. (famous last words)"""
 24+ system_name='naive'
 25+ destination_dir=None
 26+
 27+ def install_settings(self,installer_name):
 28+
 29+ settings=file(self._settings_filepath(installer_name),"w")
 30+
 31+ n=installer_name
 32+ settings.write('<?PHP\n')
 33+ settings.write('require_once("$IP/extensions/'+n+'/'+n+'.php");\n');
 34+ settings.write('?>\n')
 35+ settings.close()
 36+
 37+ def uninstall_settings(self,installer_name):
 38+ # rm -f (fail silently)
 39+ try:
 40+ os.unlink(self._settings_filepath(installer_name))
 41+ except OSError:
 42+ pass
Property changes on: trunk/testing/installer/naive_installer.py
___________________________________________________________________
Added: svn:eol-style
143 + native
Index: trunk/testing/installer/mediawiki_installer.py
@@ -0,0 +1,344 @@
 2+# This software is developed by Kim Bruning.
 3+#
 4+# Distributed under the terms of the MIT license.
 5+
 6+import settings_handler as settings
 7+import os, os.path, shutil, sys
 8+import subprocess
 9+
 10+from installation_system import Installation_System, Installer_Exception
 11+
 12+from installer_util import *
 13+from isolation import *
 14+
 15+# this still uses some legacy structured code, wrapped in a class so it can't do
 16+#too much harm outside this file. Will refactor later when I have more time.
 17+
 18+# already partially refactored while creating class.
 19+
 20+
 21+#constants
 22+
 23+#Things that are not mediawiki revisions (in the svn tags directory on mediawiki svn)
 24+filter_available=['extensions/']
 25+
 26+# a cache for mediawiki revisions. Just making a global in this namespace is easiest.
 27+revision_cache=[]
 28+
 29+class Mediawiki_Installer_Exception(Installer_Exception):
 30+ pass
 31+
 32+
 33+class Mediawiki_Installer(Installation_System):
 34+ """installer for mediawiki revisions"""
 35+ system_name='mediawiki'
 36+ # TODO: destination_dir isn't quite changable until we have finished refactoring everything (not today)
 37+ def __init__(self):
 38+ Installation_System.__init__(self)
 39+ self.destination_dir=settings.instancesdir
 40+
 41+ def get_installers(self):
 42+ """list available items"""
 43+
 44+ l=list(os.popen('svn ls '+settings.tagsdir))
 45+ stripped=[line.strip() for line in l]
 46+ #filter out things that are not mediawiki revisions
 47+ for item in filter_available:
 48+ if item in stripped:
 49+ stripped.remove(item)
 50+ return stripped
 51+
 52+ def get_tags(self,installer_name=None):
 53+ return self.get_installers()
 54+
 55+ #def exists: same as super
 56+
 57+ # Hmm: perhaps these should really belong in a separate mixin?
 58+ #installdir_name: unused, but leave for future expansion
 59+ #exec_task: unused, but leave for future expansion
 60+ #can_exec: unused, but leave for future expansion
 61+
 62+ def get_installed(self):
 63+ """list installed items"""
 64+ if not self.destination_dir:
 65+ raise Exception("Internal Error: Mediawiki_Installer: get_installed, self.destination_dir not set")
 66+ return os.listdir(self.destination_dir)
 67+
 68+ def is_installed(self, installer_name):
 69+ return installer_name in self.get_installed()
 70+
 71+ # super.get_info does something sane here, let's leave it in.
 72+ # (we can even provide info files for certain releases if we want)
 73+
 74+ def install(self, installer_name=None, as_alias=None):
 75+
 76+ if self.tag:
 77+ installer_name=self.tag
 78+
 79+ if self.revision:
 80+ installer_name="latest"
 81+
 82+ if not installer_name:
 83+ installer_name=self.instance
 84+
 85+ if not installer_name:
 86+ raise Mediawiki_Installer_Exception("Please specify which mediawiki tag or revision you would like to view")
 87+
 88+ name=as_alias or self.as_alias or installer_name
 89+
 90+ install(installer_name, name, self.revision)
 91+ return self.is_installed(name)
 92+
 93+ #download is unused, but leave for future expansion
 94+ #install_settings unused
 95+ #uninstall_settings
 96+
 97+ def uninstall(self,installer_name):
 98+ name=self.as_alias or installer_name
 99+ if not self.is_installed(name):
 100+ print name+" does not appear to be installed"
 101+ return
 102+
 103+ uninstall(name)
 104+ return not self.is_installed(name)
 105+
 106+ def get_revisions(self,installer=None):
 107+ """Get list of available revisions.
 108+ This list is cached in ram at first call to this function.
 109+ installer parameter is ignored (inherited from Installation_System)
 110+ """
 111+
 112+
 113+ global revision_cache
 114+ if revision_cache:
 115+ print "Using cached mediawiki revision list."
 116+ else:
 117+ print "Getting list of mediawiki revisions... One moment (takes 10-20 seconds)"
 118+ sys.stdout.flush()
 119+ revision_cache=self._get_revisions_generic("phase3")
 120+
 121+ return revision_cache
 122+
 123+ def get_svnbase(self):
 124+ return settings.trunkdir
 125+
 126+
 127+ def duplicate(self, src, dst):
 128+ """Duplicate an existing instance.
 129+ src is the instance to duplicate
 130+ dst is the name to copy to.
 131+ """
 132+ if not self.is_installed(src):
 133+ raise Mediawiki_Installer_Exception(src+" not found.")
 134+
 135+ if self.is_installed(dst):
 136+ raise Mediawiki_Installer_Exception(dst+" already exists.")
 137+
 138+ srcpath= os.path.join(settings.instancesdir,src)
 139+ dstpath= os.path.join(settings.instancesdir,dst)
 140+ dbtmp=os.path.join(dstpath,"installerdbtmp.sql")
 141+ print "Copying instance files..."
 142+ shutil.copytree(srcpath,dstpath,symlinks=True)
 143+ print "updating unique settings"
 144+ uniquesettings(dst)
 145+ print "Copying instance database..."
 146+ dumpdb(src,dbtmp)
 147+ dropdb(dst)
 148+ createdb(dst)
 149+ do_sql(dst,dbtmp)
 150+ print "cleanup"
 151+ os.unlink(dbtmp)
 152+ print "done."
 153+
 154+
 155+
 156+#TODO: use this method everywhere a database name is requested
 157+def dbname(installer_name):
 158+ """based on the name of the installer/instance, figure out what the name of the
 159+ database is. Right now we just use the name of the installer as the name of the database,
 160+ but that might not always work."""
 161+ return installer_name
 162+
 163+
 164+#duplicate of get_installed() TODO: Refactor
 165+def installed():
 166+ """list installed items"""
 167+ return os.listdir(settings.instancesdir)
 168+
 169+#duplicate of get_installers() TODO: Refactor
 170+def available():
 171+ """list available items"""
 172+
 173+ l=list(os.popen('svn ls '+settings.tagsdir))
 174+ stripped=[line.strip() for line in l]
 175+ for item in filter_available:
 176+ if item in stripped:
 177+ stripped.remove(item)
 178+ return stripped
 179+
 180+
 181+
 182+def install(target, option_as, revision):
 183+ """implement install command. Installs a mediawiki version"""
 184+ target=clean_target(target)
 185+
 186+ latest=False
 187+ if target=="latest":
 188+ latest=True
 189+
 190+ if option_as:
 191+ name=clean_target(option_as)
 192+ else:
 193+ name=target
 194+
 195+ if name in installed():
 196+ print name+" already installed."
 197+ return
 198+
 199+ # available targets all end in '/', very consistent, this :-P
 200+ if not latest and target+'/' not in available():
 201+ print target+" is not available or invalid.\n(try: ls available )"
 202+ return
 203+
 204+ #Everything checks out ok, so let's install.
 205+ os.chdir(settings.instancesdir)
 206+ print "Checking out code from subversion (please be patient)..."
 207+ if latest:
 208+ checkout_latest(name, revision)
 209+ else:
 210+ checkout(target+"/", name, revision)
 211+
 212+ print "Copying LocalSettings.php,creating unique settings..."
 213+ localsettings(name)
 214+ uniquesettings(name)
 215+ print "Copy logo..."
 216+ logo(name)
 217+ print "Setting up database..."
 218+ makedb(name)
 219+ if settings.run_automated_tests:
 220+ print "Storing comparison data for check_isolation"
 221+ difftests(name)
 222+ print "Done."
 223+
 224+
 225+def uninstall(target):
 226+ """implements uninstall command: uninstall mediawiki version"""
 227+
 228+ target=clean_target(target)
 229+
 230+ if target not in installed():
 231+ print target+": can't find an installed revision by that name"
 232+ return
 233+
 234+ #Ok, looks like our arguments are valid.
 235+ os.chdir(settings.instancesdir)
 236+ print "Dropping database..."
 237+ dropdb(target)
 238+ print "Deleting directory..."
 239+ delete(target)
 240+ print "Done."
 241+
 242+def checkout(target, name, revision):
 243+ """checkout the given target revision"""
 244+
 245+ command="svn checkout "
 246+ if revision:
 247+ command+="-r"+str(revision)+" "
 248+ command+=settings.tagsdir+"/"+target+"phase3"
 249+ _checkout(command,name)
 250+
 251+def checkout_latest(name, revision):
 252+ """checkout the latest trunk revision"""
 253+
 254+ command="svn checkout "
 255+ if revision:
 256+ command+="-r"+str(revision)+" "
 257+ command+=settings.trunkdir+"/phase3"
 258+ _checkout(command,name)
 259+
 260+def _checkout(command, name):
 261+ """perform the actual check out, and rename our checked out data to something more useful"""
 262+
 263+ os.system(command)
 264+ os.rename('phase3',name)
 265+
 266+
 267+def localsettings(target):
 268+ """Copy over our LocalSettings.php , and create InstallerUniqueSettings.php
 269+ (which contains settings unique to this instance), and create LocalSettings dir.
 270+ LocalSettings.php is the main configuration file for mediawiki."""
 271+
 272+ here=settings.installerdir+"/LocalSettings.php"
 273+ instancedir=settings.instancesdir+"/"+target
 274+ there=instancedir+"/LocalSettings.php"
 275+ shutil.copy2(here,there)
 276+ subdir=os.path.join(settings.revisionsdir,target,"LocalSettings")
 277+ os.mkdir(subdir)
 278+
 279+def uniquesettings(target):
 280+ uniquesettings=settings.instancesdir+"/"+target+"/InstallerUniqueSettings.php"
 281+ unique=file(uniquesettings,"w")
 282+ unique.write('<?php\n')
 283+ unique.write('$wgSitename = "'+target+'";\n')
 284+ unique.write('$wgScriptPath = "'+settings.base_scriptpath+target+'";\n')
 285+ unique.write('$wgDBname = "'+target+'";\n')
 286+ unique.write('?>\n')
 287+
 288+ unique.close()
 289+
 290+
 291+def logo(target):
 292+ """copy a nice logo"""
 293+
 294+ logo=settings.installerdir+"/Logo.png"
 295+ dest=settings.instancesdir+"/"+target+"/Logo.png"
 296+ shutil.copy(logo,dest)
 297+
 298+def makedb(target):
 299+ """make a mediawiki database for target mediawiki instance """
 300+
 301+ dropdb(target);
 302+ createdb(target);
 303+ make_tables(target)
 304+ make_admin(target)
 305+
 306+def make_tables(target):
 307+ """use the maintenance/tables.sql file provided by target mediawiki
 308+ instance to generate our tables"""
 309+
 310+ target_file=settings.instancesdir+"/"+target+"/maintenance/tables.sql"
 311+ do_sql(target, target_file)
 312+
 313+def make_admin(target):
 314+ """create an admin user using createAndPromote.php"""
 315+ #do_sql(target, settings.installerdir+"/user.sql")
 316+ phpfile=os.path.join(settings.instancesdir,target,"maintenance","createAndPromote.php")
 317+ command="php "+phpfile+" --bureaucrat "+settings.adminuser_name+" "+settings.adminuser_password
 318+ os.system(command)
 319+
 320+def dumpdb(target,outfile):
 321+ command=settings.mysqldump_command+" "+target+" > "+outfile
 322+ os.system(command)
 323+
 324+def do_sql(target, infile):
 325+ """execute an sql file, using mysql"""
 326+
 327+ command="< "+infile+" "+settings.mysql_command+" "+target
 328+ os.system(command)
 329+
 330+def createdb(target):
 331+ """create a database using mysql"""
 332+
 333+ command="echo 'CREATE DATABASE "+target+";' | "+settings.mysql_command
 334+ os.system(command)
 335+
 336+def dropdb(target):
 337+ """drop a database using mysql"""
 338+
 339+ command="echo 'DROP DATABASE IF EXISTS "+target+";' | "+settings.mysql_command
 340+ os.system(command)
 341+
 342+def delete(target):
 343+ """delete target mediawiki installation, assumes we are in the revisions directory"""
 344+ shutil.rmtree(target)
 345+
Property changes on: trunk/testing/installer/mediawiki_installer.py
___________________________________________________________________
Added: svn:eol-style
1346 + native
Index: trunk/testing/installer/installers.py
@@ -0,0 +1,453 @@
 2+# This software, copyright (C) 2008-2009 by Wikiation.
 3+# This software is developed by Kim Bruning.
 4+#
 5+# Distributed under the terms of the MIT license.
 6+
 7+# Back end code to deal with paths and to delegate
 8+#tasks to relevant installation systems
 9+
 10+
 11+import settings_handler as settings
 12+import os, os.path, shutil
 13+import subprocess
 14+import installer_util
 15+
 16+#from installation_system import Installation_System
 17+from toolkit_installer import Toolkit_Installer
 18+from scripted_installer import Scripted_Installer
 19+from mediawiki_installer import Mediawiki_Installer
 20+from naive_installer import Naive_Installer
 21+from installation_system import Installer_Exception
 22+from download_installer import Download_Installer
 23+from extension_installer2 import extension_installer2
 24+
 25+from tags import Tags, TagsException
 26+
 27+class Parse_Exception(Exception):
 28+ pass
 29+
 30+class Listing_Exception(Exception):
 31+ pass
 32+
 33+def ls(args):
 34+ if len(args)==0:
 35+ print "Internal error: args list too short"
 36+ return
 37+ if len(args)<=1:
 38+ args.append("")
 39+
 40+ ppath=None
 41+ try:
 42+ ppath=parse_path(" ".join(args[1:]))
 43+ except Parse_Exception,e:
 44+ print e.message
 45+ return
 46+
 47+ try:
 48+ if ppath['ai']=='available':
 49+ output=ls_available(ppath)
 50+ elif ppath['ai']=='revisions':
 51+ output=ls_revisions(ppath)
 52+ elif ppath['ai']=='tags':
 53+ output=ls_tags(ppath)
 54+ elif ppath['ai']=='installed' or ppath['ai']==None: # XXX hardcoded default
 55+ output=ls_installed(ppath)
 56+ except Listing_Exception,e:
 57+ print e.message
 58+ return
 59+
 60+ if output==None:
 61+ return
 62+
 63+ if ppath['limit']:
 64+ output=output[0:ppath['limit']]
 65+ print installer_util.pretty_list(output)
 66+
 67+def ls_available(ppath):
 68+ if ppath["system"]==None:
 69+ return ls_systems()
 70+ else:
 71+ return ls_available_in_system(ppath)
 72+
 73+def ls_installed(ppath):
 74+ if ppath["system"]==None:
 75+ if ppath["installer"]==None:
 76+ return ls_systems()
 77+ else:
 78+ ppath["system"]="mediawiki" # XXX hardcoded default
 79+
 80+ return ls_installed_in_system(ppath)
 81+
 82+def ls_systems():
 83+ return [item+':' for item in systems.keys()]
 84+
 85+
 86+def ls_available_in_system(ppath):
 87+ system=get_system(ppath["system"])
 88+ if not system:
 89+ return
 90+ return system.get_installers()
 91+
 92+def ls_installed_in_system(ppath):
 93+ system=get_system(ppath["system"])
 94+ if not system:
 95+ return
 96+
 97+ if ppath["in_installer"]:
 98+ system.set_instance(ppath["in_installer"])
 99+ installed=None
 100+ try:
 101+ installed=system.get_installed()
 102+ except Installer_Exception,e:
 103+ print e.message
 104+ return
 105+
 106+ return installed
 107+
 108+def ls_revisions(ppath):
 109+ if not ppath["system"]:
 110+ raise Listing_Exception("What system would you like me to list?")
 111+
 112+ system=get_system(ppath["system"])
 113+
 114+ revisions=None
 115+ try:
 116+ revisions=system.get_revisions(ppath["installer"])
 117+ except Installer_Exception, e:
 118+ raise Listing_Exception(e.message)
 119+
 120+ return revisions
 121+
 122+
 123+def ls_tags(ppath):
 124+
 125+ system=get_system(ppath["system"])
 126+ try:
 127+ tags=system.get_tags(ppath["installer"])
 128+ except TagsException, e:
 129+ raise Listing_Exception(e.message)
 130+
 131+ return tags
 132+
 133+def info(args):
 134+ if len(args)<1:
 135+ print "info: Internal error: expected more arguments"
 136+
 137+ ppath=None
 138+ try:
 139+ ppath=parse_path(" ".join(args[1:]),defaults={'ai':'available'})
 140+ except Parse_Exception,e:
 141+ print e.message
 142+ return
 143+
 144+ if not ppath["ai"]:
 145+ ppath["ai"]="available"
 146+
 147+ system=get_system(ppath["system"])
 148+ system.get_info(ppath["installer"])
 149+
 150+
 151+def duplicate(args):
 152+ mw=get_system("mediawiki")
 153+ try:
 154+ mw.duplicate(args[1],args[2])
 155+ except Mediawiki_Installer_Exception,e:
 156+ print e.message
 157+
 158+
 159+def install(args):
 160+ if len(args)<1:
 161+ print "install: Internal error: expected more arguments"
 162+
 163+ ppath=None
 164+ try:
 165+ ppath=parse_path(" ".join(args[1:]), defaults={'ai':'available','system':'mediawiki'})
 166+ except Parse_Exception,e:
 167+ print e.message
 168+ return
 169+
 170+ if ppath["ai"]=="installed":
 171+ print "Did you mean to install from available. ?"
 172+ return
 173+
 174+ system=get_system(ppath["system"])
 175+ if ppath["in_installer"]:
 176+ system.set_instance(ppath["in_installer"])
 177+ if ppath["as_alias"]:
 178+ system.as_alias=ppath["as_alias"]
 179+ if ppath["revision"]:
 180+ system.revision=ppath["revision"]
 181+ if ppath["tag"]:
 182+ system.tag=ppath["tag"]
 183+
 184+ try:
 185+ success=system.install(ppath["installer"])
 186+ if success:
 187+ print "Install successful."
 188+ else:
 189+ print "Install failed."
 190+
 191+ except Installer_Exception,e:
 192+ print e.message
 193+
 194+
 195+def uninstall(args):
 196+ if len(args)<1:
 197+ print "install: Internal error: expected more arguments"
 198+
 199+ ppath=None
 200+ try:
 201+ ppath=parse_path(" ".join(args[1:]),defaults={'ai':'installed','system':'mediawiki'})
 202+ except Parse_Exception,e:
 203+ print e.message
 204+ return
 205+
 206+ if ppath["ai"]=="available":
 207+ print "Did you mean to uninstall from installed. ?"
 208+ return
 209+
 210+ system=get_system(ppath["system"])
 211+ if ppath["in_installer"]:
 212+ system.set_instance(ppath["in_installer"])
 213+ if ppath["as_alias"]:
 214+ system.as_alias=ppath["as_alias"]
 215+ try:
 216+ success=system.uninstall(ppath["installer"])
 217+ if success:
 218+ print "Uninstall successful."
 219+ else:
 220+ print "Uninstall failed."
 221+ except Installer_Exception,e:
 222+ print e.message
 223+ return
 224+
 225+
 226+def _ppath_defaults(ppath,defaults):
 227+ """take a parse path, and fill in empty spots with
 228+ default values.
 229+ see: parse_path"""
 230+ for key in ppath.keys():
 231+ if key in defaults:
 232+ ppath[key]=ppath[key] or defaults[key]
 233+
 234+
 235+def _ppath_find(l,keyword):
 236+ """
 237+ refactor of parse_path. Take l=inpath.split(),
 238+ and see if the keyword exists in that list
 239+ if exists, return the value following the keyword
 240+ if not exists, nothing happens
 241+ if keyword exists but no value is provided, throw exception
 242+ see: parse_path"""
 243+ if keyword in l:
 244+ i=l.index(keyword)
 245+ try:
 246+ value=l[i+1]
 247+ except IndexError:
 248+ raise Parse_Exception("Syntax error. Nothing after '"+keyword+"'.")
 249+
 250+ return value
 251+
 252+def parse_path(path,defaults=None):
 253+ ai=None # available, installed (and now revisions and tags and test too)
 254+ system=None # installation system
 255+ installer=None # installer from that installation system
 256+ in_installer=None # in which instance should we install?
 257+ as_alias=None # if installing, as what name?
 258+ revision=None # revision number, if any
 259+ tag=None # tag, if any
 260+ limit=None # limit output from list commands to n lines.
 261+
 262+ #partial components
 263+ whence=None # eg. 'available.mediawiki:'
 264+ single_case=None # a single word or element, with insufficient context upfront to figure what it is
 265+ inpath=None # eg. 'ImageMap in REL1_13_2"
 266+
 267+ if ":" in path:
 268+ # installed.extension: in foo
 269+ #|-----whence--------|-inpath-|
 270+
 271+ try:
 272+ whence, inpath=path.split(':')
 273+ except ValueError:
 274+ raise Parse_Exception("You're doing something odd with ':'. I don't understand.")
 275+
 276+ elif "." in path:
 277+ #installed.extension
 278+ whence=path
 279+ else:
 280+ # ?
 281+ single_case=path
 282+
 283+ # left side (whence) __________:
 284+ if whence:
 285+ if "." in whence:
 286+ # installed.extension : ...
 287+ #|---ai----|-system--|
 288+ try:
 289+ ai,system=whence.split('.')
 290+ except ValueError:
 291+ raise Parse_Exception("You're doing something odd with '.'. I don't understand.")
 292+ else:
 293+ # ? : ...
 294+ single_case=whence
 295+
 296+ # Hmmm, not a fully-formed path(-section). Perhaps we can still make heads or tails of it?
 297+ if single_case:
 298+ if single_case in systems.keys() or single_case=="hailmary":
 299+ system=single_case
 300+ elif single_case in ["available","installed", "revisions","tags"]:
 301+ ai=single_case
 302+ elif single_case==path:
 303+ inpath=single_case
 304+ else:
 305+ raise Parse_Exception("I'm not sure what to do with '"+single_case+"' in this context.")
 306+
 307+ # right side (inpath) :_______________
 308+ if inpath:
 309+ l=inpath.split()
 310+ if l[0] not in ['in', 'as', 'revision', 'tag','limit']:
 311+ installer=l[0]
 312+
 313+ in_installer=_ppath_find(l,"in")
 314+ as_alias=_ppath_find(l,"as")
 315+ revision=_ppath_find(l,"revision")
 316+ tag=_ppath_find(l,'tag')
 317+ try:
 318+ limit=int(_ppath_find(l,'limit'))
 319+ except Exception:
 320+ pass
 321+
 322+ # Ok, we have our basic return value now
 323+ ppath={
 324+ "ai":ai, #available or installed
 325+ "system":system,
 326+ "installer":installer,
 327+ "in_installer":in_installer,
 328+ "as_alias":as_alias,
 329+ "revision":revision,
 330+ "tag":tag,
 331+ "limit":limit}
 332+
 333+ # maybe we can assume some useful defaults (saves typing)
 334+ if defaults:
 335+ _ppath_defaults(ppath,defaults)
 336+
 337+ # let's check to see if what we get is sane.
 338+
 339+ if ppath['ai'] not in ["available","installed","revisions","tags",None]:
 340+ raise Parse_Exception("By '"+ppath['ai']+"', did you mean available, installed, revisions, or tags?")
 341+
 342+ if ppath['system']=="hailmary": # easter egg
 343+ ppath['system']='naive' # the naive installer was originally pitched as a
 344+ # "hail mary" installer, as that's what it does, after all! ;-)
 345+
 346+ if ppath['system'] not in systems.keys() and not ppath['system']=="None":
 347+ system_names=", ".join(ls_systems())
 348+ raise Parse_Exception("Did you mean to specify any of "+system_names)
 349+
 350+ # we assume that the "in" directive always applies to a mediawiki instance
 351+ # NOTE:possibly this snippet of code should be in mediawiki_installer instead
 352+ if ppath['in_installer']:
 353+ mediawiki=get_system('mediawiki')
 354+ if not mediawiki.is_installed(ppath['in_installer']):
 355+ raise Parse_Exception(ppath['in_installer']+' is not currently installed')
 356+
 357+ return ppath
 358+
 359+
 360+
 361+def get_system(system_name):
 362+ """Factory method. Instantiates and returns the relevant installer for the given system_name"""
 363+ if system_name not in systems:
 364+ print "Cannot find '"+system_name+"' in the list of supported installation systems."
 365+ return None
 366+ else:
 367+ sYstem=systems[system_name]
 368+
 369+ return sYstem()
 370+
 371+# Constants
 372+
 373+systems={'toolkit':Toolkit_Installer,'scripted': Scripted_Installer, 'mediawiki':Mediawiki_Installer,'naive': Naive_Installer, 'download':Download_Installer, 'extension':extension_installer2}
 374+
 375+
 376+if __name__=="__main__":
 377+ print "testing installers.py module"
 378+ print "CTRL-C to abort. run installer.py to actually use the installer"
 379+ print
 380+# print "ls"
 381+# ls2(["ls"])
 382+# print
 383+# print "ls available"
 384+# ls2(["ls","available"])
 385+# print
 386+# print "ls available/toolkit"
 387+# ls2(["ls","available/toolkit"])
 388+# print
 389+# print "ls installed/toolkit"
 390+# ls2(["ls","installed/toolkit"])
 391+# print
 392+# print "get info"
 393+# system=get_system("toolkit")
 394+# system.get_info("pywikipedia")
 395+#
 396+# print "install"
 397+# print "pywiki",repr(system.install("pywikipedia"))
 398+# print "exttest", repr(system.install("exttest"))
 399+# print "isolation", repr(system.install("check_isolation"))
 400+# print "ls", os.listdir('..')
 401+#
 402+# print "uninstall"
 403+# print "pywiki", repr(system.uninstall("pywikipedia"))
 404+# print "exttest", repr(system.uninstall("exttest"))
 405+# print "isolation", repr(system.uninstall("check_isolation"))
 406+#
 407+# print "extension (assumes existing wiki)"
 408+# extension_installer=Scripted_Installer("REL1_13_3")
 409+#
 410+# print " \ uninstall " , repr (extension_installer.uninstall("ImageMap"))
 411+# print "ImageMap", repr (extension_installer.install("ImageMap"))
 412+#
 413+ #print "mediawiki installer"
 414+ #print "avail"
 415+ #ls2(["ls","available/mediawiki"])
 416+ #print "installed"
 417+ #ls2(["ls","installed/mediawiki"])
 418+#
 419+# print "try another wiki, say REL1_13_2"
 420+
 421+# mediawiki_installer=get_system("mediawiki")
 422+#
 423+# print "uninstl mediawiki 1_13_2", repr (mediawiki_installer.uninstall("REL1_13_2"))
 424+# print "install mediawiki 1_13_2", repr (mediawiki_installer.install("REL1_13_2"))
 425+#
 426+# print "extension (assumes existing wiki)"
 427+# extension_installer=Scripted_Installer("REL1_13_2")
 428+#
 429+# print " \ uninstall " , repr (extension_installer.uninstall("ImageMap"))
 430+# print "ImageMap", repr (extension_installer.install("ImageMap"))
 431+#
 432+# print "try some ls stuff"
 433+# def qls(mystr): # q for "quick"
 434+# print "ls", repr(mystr)
 435+# ls(['ls',mystr])
 436+#
 437+# qls('')
 438+# qls('available')
 439+# qls('installed')
 440+# qls('available:')
 441+# qls('installed:')
 442+# qls('murp.morp:')
 443+# qls('installed.mediawiki:')
 444+# qls('installed.extension:')
 445+# qls('installed.toolkit:')
 446+# qls('installed.mediawiki:in REL1_13_2')
 447+# qls('available.extension:')
 448+# qls('installed.extension:in REL1_13_2')
 449+# qls('installed.extension:in FOO')
 450+# qls('installed.mediawiki:in FOO')
 451+# qls('available.toolkit')
 452+# qls('available.toolkit:in BAR as BAZ')
 453+# qls('available.toolkit:in BOG as BOT')
 454+# qls('available.toolkit:in BOG as BOT murp morp bla bla bla')
Property changes on: trunk/testing/installer/installers.py
___________________________________________________________________
Added: svn:eol-style
1455 + native
Index: trunk/testing/installer/download_installer.py
@@ -0,0 +1,77 @@
 2+# This software, copyright (C) 2008-2009 by Wikiation.
 3+# This software is developed by Kim Bruning.
 4+#
 5+# Distributed under the terms of the MIT license.
 6+
 7+import settings_handler as settings
 8+import os, os.path, shutil
 9+import subprocess
 10+
 11+from extension_installer import Extension_Installer, Extension_Installer_Exception
 12+
 13+class Download_Installer_Exception(Extension_Installer_Exception):
 14+ pass
 15+
 16+class Unsupported_Exception(Exception):
 17+ pass
 18+
 19+class Download_Installer(Extension_Installer):
 20+ """download an extension, do nothing else"""
 21+ system_name='download'
 22+ destination_dir=None
 23+
 24+ def get_installers(self):
 25+ l=list(os.popen('svn ls '+settings.extensionsdir))
 26+ # tidy l in place
 27+ for i in range(len(l)):
 28+ l[i]=l[i].strip()
 29+ if l[i].endswith("/"):
 30+ l[i]=l[i][:-1]
 31+ return l
 32+ #exists() ok.
 33+
 34+ def installdir_name():
 35+ raise Unsupported_Exception("download installer does not use installdirs")
 36+
 37+ def exec_task():
 38+ raise Unsupported_Exception("download installer does not use installdirs, and therefore also does not exec scripts in installdirs")
 39+
 40+ def can_exec(self, installer_name, task):
 41+ return False # we don't have an installdir, so we
 42+ # can never exec a task.
 43+
 44+ # get_installed: works ok.
 45+
 46+ def is_installed(self, installer_name):
 47+ if self.instance==None:
 48+ raise Download_Installer_Exception("no instance specified ... did you try doing ... in <instance> ?")
 49+ path=os.path.join(self.destination_dir,installer_name)
 50+ return os.path.isdir(path)
 51+
 52+ # get info will cause an exception to be raised
 53+ # install: ok.
 54+
 55+ def _download (self, installer_name, destination_dir):
 56+ os.chdir(destination_dir)
 57+
 58+ r=''
 59+ if self.revision:
 60+ r="-r "+str(self.revision)
 61+ command="svn checkout "+\
 62+ r+" '"+\
 63+ self.get_extensionsdir()+"/"+\
 64+ installer_name+"'"
 65+ #print command
 66+ result=os.system(command)
 67+ if result!=0:
 68+ raise Installer_Exception("download failed, return value "+str(result>>8))
 69+
 70+ def _settings_filepath(self, installer_name):
 71+ settingsdir=os.path.join(self.destination_dir,"../LocalSettings")
 72+ filename=installer_name+".settings.php"
 73+ filepath=os.path.join(settingsdir,filename)
 74+ return filepath
 75+
 76+ def _uninstall(self, installer_name, destination_dir):
 77+ pathname=os.path.join(destination_dir, installer_name)
 78+ shutil.rmtree(pathname,ignore_errors=True)
Property changes on: trunk/testing/installer/download_installer.py
___________________________________________________________________
Added: svn:eol-style
179 + native
Index: trunk/testing/installer/user.sql
@@ -0,0 +1,3 @@
 2+INSERT INTO `user` VALUES (1,'Admin','',':B:29526fc8:111474e311dc91032803281b181d571b','',NULL,'','quickbar=1\nunderline=2\ncols=80\nrows=25\nsearchlimit=20\ncontextlines=5\ncontextchars=50\ndisablesuggest=0\nskin=\nmath=1\nusenewrc=0\nrcdays=7\nrclimit=50\nwllimit=250\nhideminor=0\nhighlightbroken=1\nstubthreshold=0\npreviewontop=1\npreviewonfirst=0\neditsection=1\neditsectiononrightclick=0\neditondblclick=0\neditwidth=0\nshowtoc=1\nshowtoolbar=1\nminordefault=0\ndate=default\nimagesize=2\nthumbsize=2\nrememberpassword=0\nenotifwatchlistpages=0\nenotifusertalkpages=1\nenotifminoredits=0\nenotifrevealaddr=0\nshownumberswatching=1\nfancysig=0\nexternaleditor=0\nexternaldiff=0\nshowjumplinks=1\nnumberheadings=0\nuselivepreview=0\nwatchlistdays=3\nextendwatchlist=0\nwatchlisthideminor=0\nwatchlisthidebots=0\nwatchlisthideown=0\nwatchcreations=0\nwatchdefault=0\nwatchmoves=0\nwatchdeletion=0\nnoconvertlink=0\nvariant=en\nlanguage=en\nsearchNs0=1','20081102094116','861f88b75764364721f25d7ffd44670e',NULL,'\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',NULL,'20081102094111',0);
 3+INSERT INTO `user_groups` VALUES(1,'sysop');
 4+INSERT INTO `user_groups` VALUES(1,'bureaucrat');
Property changes on: trunk/testing/installer/user.sql
___________________________________________________________________
Added: svn:eol-style
15 + native
Index: trunk/testing/installer/util/allnaive.py
@@ -0,0 +1,54 @@
 2+#!/usr/bin/env python
 3+import sys
 4+import os, os.path
 5+sys.path.append("..")
 6+sys.path.append("../..")
 7+from naive_installer import Naive_Installer
 8+
 9+
 10+from exttest import settings
 11+
 12+# settings
 13+target_wiki='test'
 14+resultfile=file("naive_results","w")
 15+
 16+def do_test():
 17+ try:
 18+ site=settings.target_login.login()
 19+ ver=site.live_version()
 20+ print isinstance(ver,list)
 21+ if isinstance(ver,list):
 22+ return True
 23+ else:
 24+ return False
 25+ except Exception, e:
 26+ return False
 27+ # or, if in doubt
 28+ return False # anyway
 29+
 30+def test_extension(extension_name):
 31+ installer=Naive_Installer()
 32+ installer.set_instance(target_wiki)
 33+ installer.install(extension_name)
 34+ result=do_test()
 35+ print "result=",result
 36+ installer.uninstall(extension_name)
 37+
 38+ return result
 39+
 40+if __name__=="__main__":
 41+ installer=Naive_Installer()
 42+ installer.set_instance(target_wiki)
 43+ naive_extensions=installer.get_installers()
 44+ for extension_name in naive_extensions:
 45+ print extension_name,
 46+ result=test_extension(extension_name)
 47+ print result
 48+ r="Unknown"
 49+ if result:
 50+ r="NAIVE_INSTALL_SEEMS_OK"
 51+ else:
 52+ r="NAIVE_INSTALL_BREAKS"
 53+ resultfile.write("* "+extension_name+" "+r+"\n")
 54+ resultfile.flush()
 55+ resultfile.close()
Property changes on: trunk/testing/installer/util/allnaive.py
___________________________________________________________________
Added: svn:executable
156 + *
Index: trunk/testing/installer/extension_installer.py
@@ -0,0 +1,24 @@
 2+import os
 3+import settings_handler as settings
 4+from installation_system import Installation_System, Installer_Exception
 5+
 6+class Extension_Installer_Exception(Installer_Exception):
 7+ pass
 8+
 9+
 10+class Extension_Installer(Installation_System):
 11+ system_name='extensions_generic'
 12+ destination_dir=None
 13+
 14+ def set_instance(self,instance):
 15+ self.destination_dir=os.path.join(settings.instancesdir,instance,"extensions")
 16+ Installation_System.set_instance(self,instance)
 17+
 18+ def is_installed(self, installer_name):
 19+ if self.instance==None:
 20+ raise Extension_Installer_Exception("no instance specified ... did you try doing ... in <instance> ?")
 21+ return Installation_System.is_installed(self, installer_name)
 22+
 23+
 24+ def get_svnbase(self):
 25+ return settings.extensionsdir
Property changes on: trunk/testing/installer/extension_installer.py
___________________________________________________________________
Added: svn:eol-style
126 + native
Index: trunk/testing/installer/scripted_installer.py
@@ -0,0 +1,55 @@
 2+# This software, copyright (C) 2008-2009 by Wikiation.
 3+# This software is developed by Kim Bruning.
 4+#
 5+# Distributed under the terms of the MIT license.
 6+
 7+import settings_handler as settings
 8+import os, os.path, shutil
 9+import subprocess
 10+
 11+from mediawiki_installer import dbname
 12+from extension_installer import Extension_Installer, Extension_Installer_Exception
 13+
 14+class Scripted_Installer_Exception (Extension_Installer_Exception):
 15+ pass
 16+
 17+
 18+class Scripted_Installer(Extension_Installer):
 19+
 20+ def __init__(self,instance=None):
 21+ Extension_Installer.__init__(self,instance)
 22+ self.subsystemdir=os.path.join(settings.installfiles,"extensions")
 23+
 24+ system_name="scripted"
 25+ def install_settings(self, installer_name):
 26+ installdir=self.installdir_name(installer_name)
 27+ settingsdir=os.path.join(self.destination_dir,"../LocalSettings")
 28+ dirlist=os.listdir(installdir)
 29+ for filename in dirlist:
 30+ filepath=os.path.join(installdir,filename)
 31+ if filename.endswith('.settings.php') and os.access(filepath, os.R_OK):
 32+ shutil.copy(filepath,settingsdir)
 33+
 34+ def uninstall_settings(self,installer_name):
 35+ settingsdir=os.path.join(self.destination_dir,"..","LocalSettings")
 36+ installdir=self.installdir_name(installer_name)
 37+ dirlist=os.listdir(installdir)
 38+ #compare which files were originally installed, then remove those
 39+ for filename in dirlist:
 40+ filepath=os.path.join(installdir,filename)
 41+ if filename.endswith('.settings.php') and os.access(filepath, os.R_OK):
 42+ destpath=os.path.join(settingsdir,filename)
 43+ if os.access(destpath, os.R_OK):
 44+ os.unlink(destpath)
 45+
 46+ def exec_task(self,installer_name,task,env=None):
 47+ if env==None:
 48+ env={}
 49+
 50+ env=dict(env)
 51+ env["EXTENSIONS_SVN"]=self.get_extensionsdir()
 52+ env["DATABASE_NAME"]=dbname(self.instance)
 53+ env["IN_INSTANCE"]=self.instance
 54+
 55+ return Extension_Installer.exec_task(self, installer_name,task,env)
 56+
Index: trunk/testing/installer/getch.py
@@ -0,0 +1,43 @@
 2+# getch, from http://code.activestate.com/recipes/134892/
 3+# Gets a single character from standard input. Does not echo to the
 4+# screen.
 5+
 6+class _Getch:
 7+ """Gets a single character from standard input. Does not echo to the
 8+screen."""
 9+ def __init__(self):
 10+ try:
 11+ self.impl = _GetchWindows()
 12+ except ImportError:
 13+ self.impl = _GetchUnix()
 14+
 15+ def __call__(self): return self.impl()
 16+
 17+
 18+class _GetchUnix:
 19+ def __init__(self):
 20+ import tty, sys
 21+
 22+ def __call__(self):
 23+ import sys, tty, termios
 24+ fd = sys.stdin.fileno()
 25+ old_settings = termios.tcgetattr(fd)
 26+ try:
 27+ tty.setraw(sys.stdin.fileno())
 28+ ch = sys.stdin.read(1)
 29+ finally:
 30+ termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
 31+ return ch
 32+
 33+
 34+class _GetchWindows:
 35+ def __init__(self):
 36+ import msvcrt
 37+
 38+ def __call__(self):
 39+ import msvcrt
 40+ return msvcrt.getch()
 41+
 42+
 43+getch = _Getch()
 44+
Index: trunk/testing/installer/installer_util.py
@@ -0,0 +1,199 @@
 2+# This software, copyright (C) 2008-2009 by Wikiation.
 3+# Copyright (C) 2009 Kim Bruning
 4+
 5+# Distributed under the terms of the MIT license.
 6+
 7+import sys, os
 8+import settings_handler as settings
 9+
 10+def replace_generic(replacements,infilename,outfilename):
 11+ """generic replace function, takes a dictionary of search/replace
 12+ strings (replacements), and applies them to the input file
 13+ specified by infilename, and saves the results to the
 14+ output file at outfilename"""
 15+
 16+ infile=file(infilename)
 17+ outfile=file(outfilename,"w")
 18+ for line in infile:
 19+ for search,replace in replacements.iteritems():
 20+ line=line.replace(search,replace)
 21+ outfile.write(line)
 22+ outfile.close()
 23+ infile.close()
 24+
 25+
 26+def help(args):
 27+ """implement help command: prints helpful messages"""
 28+
 29+ if len(args)>1 and args[1] in subhelp:
 30+ print
 31+ print subhelp[args[1]]
 32+ elif len(args)<=1:
 33+ print
 34+ print "installer, interactive mode"
 35+ print "help: get help"
 36+ print "quit, exit: quit"
 37+ print "ls <path>: list information on available versions "
 38+ print "install <path>: installs the version specified"
 39+ print "install <path> as <name>: installs the version specified under an alternate name"
 40+ print "uninstall <path>: uninstalls the version specified"
 41+ print "check_isolation <instance name>: shows all changes made to mediawiki or database since it was installed."
 42+ print "update_self: updates the installer and restarts in interactive mode"
 43+ print "update_tags: manually force an update of the tag cache (do this from time to time, if you're referring to things by tag)"
 44+ print "duplicate <source_instance> <destination_instance> make a duplicate mediawiki instance, with copies of configuration, database, and extensions"
 45+ print "TODO: Implement help path , for now, see documentation for info on how to specify <path>"
 46+ print
 47+ print "instead of interactive mode, you can also access commands directly from the shell:"
 48+ print "installer command [args]..."
 49+ else:
 50+ print 'no detailed help available'
 51+
 52+
 53+
 54+def revision():
 55+ """obtain revision number for installer itself"""
 56+
 57+ revision_string=None
 58+ os.chdir(settings.installerdir)
 59+ info=os.popen("svn info .")
 60+ for line in info:
 61+ if line.startswith("Revision:"):
 62+ revision_string=line.strip()
 63+ break
 64+ info.close()
 65+ if revision_string==None:
 66+ revision="unknown"
 67+ else:
 68+ revision=revision_string.replace("Revision:","")
 69+
 70+ return revision
 71+
 72+def intro():
 73+ """a nice banner/intro text for interactive mode"""
 74+
 75+ print "=== Installer (v. "+revision()+") ==="
 76+ print
 77+ print "(last known safe version: 48528)"
 78+ print "Interactive mode.",
 79+ print "Automated testing is",
 80+ if settings.run_automated_tests:
 81+ print "enabled."
 82+ else:
 83+ print "disabled."
 84+ print
 85+ print "Note: 'extension:' now means something else"
 86+ print "if you want the old functionality: use 'scripted:'"
 87+ print
 88+ print "please type a command and hit enter"
 89+ print "help<enter> for help"
 90+ print "^D, exit<enter> or quit<enter> to quit"
 91+ print
 92+
 93+def help_for(something):
 94+ """If the user types incorrect input, try to gently correct them"""
 95+
 96+ print "correct syntax:"
 97+ help(["help",something])
 98+
 99+def quit(args):
 100+ """Quits the program."""
 101+ sys.exit(0)
 102+
 103+def clean_target(target):
 104+ """tidy up a target string, return in canonical form"""
 105+
 106+ target=str(target)
 107+ target=target.strip()
 108+ if target.endswith('/'):
 109+ target=target[:-1]
 110+
 111+ return target
 112+
 113+def pretty_list(mylist,layout_width=None):
 114+ """format a list into columns that fit the terminal,
 115+ similar to gnu ls output."""
 116+
 117+ if not mylist:
 118+ return ""
 119+
 120+ if layout_width==None:
 121+ layout_width=getTerminalSize()[0]
 122+
 123+
 124+ if layout_width:
 125+ #first find the widest item
 126+ max_width=0
 127+ for item in mylist:
 128+ width=len(item)+1
 129+ if width>max_width:
 130+ max_width=width
 131+
 132+ #now calculate
 133+ columns=max( layout_width/max_width ,1)
 134+ column_width=layout_width/columns-1
 135+
 136+ #and let's go
 137+ text=""
 138+ column=0
 139+ for item in mylist:
 140+ text+=item
 141+ text+=" "*(column_width-len(item)+1)
 142+ column+=1
 143+ if column>=columns:
 144+ text+="\n"
 145+ column=0
 146+ else:
 147+ #naive alternative in case we can't get a clear
 148+ #idea of what terminal we're on.
 149+ text="\n".join(mylist)
 150+
 151+ return text
 152+
 153+
 154+def getTerminalSize():
 155+ """determine the size of the terminal we are running in (where available)"""
 156+ def ioctl_GWINSZ(fd):
 157+ try:
 158+ import fcntl, termios, struct, os
 159+ cr = struct.unpack('hh', fcntl.ioctl(fd, termios.TIOCGWINSZ,
 160+ '1234'))
 161+ except:
 162+ return None
 163+ return cr
 164+ cr = ioctl_GWINSZ(0) or ioctl_GWINSZ(1) or ioctl_GWINSZ(2)
 165+ if not cr:
 166+ try:
 167+ fd = os.open(os.ctermid(), os.O_RDONLY)
 168+ cr = ioctl_GWINSZ(fd)
 169+ os.close(fd)
 170+ except:
 171+ pass
 172+ if not cr:
 173+ try:
 174+ cr = (env['LINES'], env['COLUMNS'])
 175+ except:
 176+ cr = (25, 80)
 177+ return int(cr[1]), int(cr[0])
 178+
 179+def isanint(value):
 180+ """If value can be converted to int, return
 181+ true, else return false"""
 182+ try:
 183+ num=int(value)
 184+ except ValueError:
 185+ return False
 186+ return True
 187+
 188+if __name__=="__main__":
 189+ print "some tests for the utils module"
 190+
 191+ x=range(1000,200000,1512)
 192+ x=[str(i) for i in x]
 193+ print x
 194+ print pretty_list(x)
 195+
 196+ print "isanint(0)",isanint(0)
 197+ print "isanint('22')",isanint('22')
 198+ print "isanint('22.foo')",isanint('22.foo')
 199+ print "isanint('foo.22')",isanint('foo.22')
 200+ print "isanint('bar')",isanint('bar')
Property changes on: trunk/testing/installer/installer_util.py
___________________________________________________________________
Added: svn:eol-style
1201 + native
Index: trunk/testing/installer/LICENSE
@@ -0,0 +1,21 @@
 2+This software,
 3+Copyright (C) 2008-2009 by Wikiation. (Developed by Kim Bruning)
 4+Copyright (C) 2009 by Kim Bruning
 5+
 6+Permission is hereby granted, free of charge, to any person obtaining a copy
 7+of this software and associated documentation files (the "Software"), to deal
 8+in the Software without restriction, including without limitation the rights to
 9+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
 10+of the Software, and to permit persons to whom the Software is furnished to do
 11+so, subject to the following conditions:
 12+
 13+The above copyright notice and this permission notice shall be included in all
 14+copies or substantial portions of the Software.
 15+
 16+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 17+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 18+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 19+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 20+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 21+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 22+SOFTWARE.
Property changes on: trunk/testing/installer/LICENSE
___________________________________________________________________
Added: svn:eol-style
123 + native
Index: trunk/testing/installer/Logo.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/testing/installer/Logo.png
___________________________________________________________________
Added: svn:mime-type
224 + application/octet-stream
Index: trunk/testing/installer/combined_installer.py
@@ -0,0 +1,183 @@
 2+# This software, copyright (C) 2008-2009 by Wikiation.
 3+# This software is developed by Kim Bruning.
 4+#
 5+# Distributed under the terms of the MIT license.
 6+
 7+
 8+from installation_system import Installation_System, Installer_Exception
 9+
 10+class Combined_Installer_Exception(Installer_Exception):
 11+ pass
 12+
 13+class Combined_Installer(Installation_System):
 14+ """operate a whole list of installers at once.
 15+ attempts to perform an action with each installer
 16+ in list in turn, until one of them works"""
 17+ system_name="combined"
 18+ destination_dir=None
 19+ systemlist=None
 20+
 21+ def __init__(self, systemlist):
 22+ """initialize with a list of pre-initialized
 23+ installers
 24+ """
 25+ Installation_System.__init__(self)
 26+ self.systemlist=systemlist
 27+
 28+ def set_instance(self,instance):
 29+ """set instance on all items"""
 30+ for system in self.systemlist:
 31+ system.set_instance(instance)
 32+
 33+ def get_installers(self):
 34+ installers=set()
 35+ for system in self.systemlist:
 36+ try:
 37+ installers.update(system.get_installers())
 38+ except Exception:
 39+ pass
 40+
 41+ installers2=list(installers)
 42+ installers2.sort()
 43+ return installers2
 44+
 45+ def get_revisions(self,installer_name):
 46+ revisions=[]
 47+ for system in self.systemlist:
 48+ try:
 49+ revisions=system.get_revisions(installer_name)
 50+ except Exception:
 51+ pass
 52+
 53+ if revisions:
 54+ break
 55+
 56+ return revisions
 57+
 58+ def get_tags(self, installer_name):
 59+ tags=[]
 60+ for system in self.systemlist:
 61+ try:
 62+ tags=system.get_tags(installer_name)
 63+ except Exception:
 64+ pass
 65+
 66+ if tags:
 67+ break
 68+
 69+ return tags
 70+
 71+ def get_svnbase(self):
 72+ return None
 73+
 74+ # exists: ok
 75+ # installdir_name: unused
 76+
 77+ def exec_task(self, installer_name, task, env=None):
 78+ """try systems, if any system can_exec, we exec.
 79+ short circuits: Only first system with capability
 80+ will exec"""
 81+ for system in self.systemlist:
 82+ if system.can_exec(task):
 83+ system.exec_task(installer_name, task, env)
 84+ break
 85+
 86+
 87+ def can_exec(self, installer_name, task):
 88+ """reply if we can execute a task, (allows nested
 89+ combined_installers, fwiw. Short circuits (stops
 90+ trying once it finds one system that supports the task))"""
 91+ for system in self.systemlist:
 92+ if system.can_exec(self, installer_name, task):
 93+ return True
 94+
 95+ return False
 96+
 97+ def get_installed(self):
 98+ """return a list of installed items (items installed by all the installers)"""
 99+ installers=set()
 100+ for system in self.systemlist:
 101+ try:
 102+ installers.update(system.get_installed())
 103+ except Exception:
 104+ pass
 105+
 106+ installers2=list(installers)
 107+ installers2.sort()
 108+ return installers2
 109+
 110+ def is_installed(self,installer_name):
 111+ """return true if any of the installers finds that the particular item is already installed. (short circuits)"""
 112+ for system in self.systemlist:
 113+ if system.is_installed(installer_name):
 114+ return True
 115+
 116+ def get_info(self, installer_name):
 117+ """print out information about the target from the info file, short circuits"""
 118+ for system in self.systemlist:
 119+ ret=system.get_info()
 120+ if ret:
 121+ return ret
 122+ return None
 123+
 124+ def install(self, installer_name):
 125+ """actually install something. Short circuits (Will try each installer, until success"""
 126+ messages=[]
 127+ for system in self.systemlist:
 128+ try:
 129+ if system.install(installer_name):
 130+ return True
 131+ except Exception,e: #TODO sometimes an installer may recognise that something CAN NOT be installed, in that case, we should stop trying.
 132+ messages.append(system.system_name+": "+e.message)
 133+
 134+ if messages:
 135+ raise Combined_Installer_Exception ("\n".join(messages))
 136+
 137+ return False
 138+
 139+ def setup(self, installer_name, destination_dir=None):
 140+ raise Combined_Installer_Exception("Internal Error:Can't do setup from here")
 141+
 142+
 143+ def download (self, installer_name, destination_dir=None):
 144+ raise Combined_Installer_Exception("Internal Error:Can't do download from here")
 145+
 146+
 147+ def install_settings(self,installer_name):
 148+ raise Combined_Installer_Exception("Internal Error:Can't do download from here")
 149+
 150+
 151+ def uninstall_settings(self,installer_name):
 152+ raise Combined_Installer_Exception("Internal Error:Can't do download from here")
 153+
 154+ def uninstall(self, installer_name):
 155+ """actually uninstall something. Short circuits (Will try each installer, until success)"""
 156+
 157+ messages=[]
 158+ for system in self.systemlist:
 159+ try:
 160+ if system.uninstall(installer_name):
 161+ return True
 162+ except Exception,e: #TODO sometimes an installer may recognise that something CAN NOT be uninstalled, in that case, we should stop trying
 163+ messages.append(system.system_name+": "+e.message)
 164+
 165+ if messages:
 166+ raise Combined_Installer_Exception ("\n".join(messages))
 167+
 168+ return False
 169+
 170+
 171+
 172+ def get_extensionsdir(self):
 173+ raise Combined_Installer_Exception("Internal Error:Can't do download from here")
 174+
 175+
 176+ def __setattr__(self,name,value):
 177+ """also set any attributes for subsystems
 178+ we also set the same attribute locally.
 179+ Be careful when reading back!"""
 180+ self.__dict__[name]=value
 181+ if self.systemlist:
 182+ for system in self.systemlist:
 183+ system.__setattr__(name,value)
 184+
Index: trunk/testing/installer/installer.py
@@ -0,0 +1,181 @@
 2+#!/usr/bin/python
 3+
 4+# This software, copyright (C) 2008-2009 by Wikiation.
 5+# This software is developed by Kim Bruning.
 6+#
 7+# Distributed under the terms of the MIT license.
 8+
 9+# Automated Installation tool for mediawiki and extensions.
 10+# primarily inteded to be run in test environments,
 11+# where you quickly (and automatically) want to set up
 12+# and tear down mediawiki instances several times a minute
 13+
 14+# Ways to use:
 15+# * Interactive mode CLI to pick up how the system works
 16+# * Call from bash scripts
 17+# * import the relevant installer(s) directly in python, and use from there
 18+
 19+# This file:
 20+#* Main entry point for Interactive CLI mode, (call with no params)
 21+#* Main entry point for scriptable mode (call with relevant command as parameters)
 22+
 23+import sys,os, os.path
 24+import readline
 25+import re
 26+import shutil
 27+import settings_handler as settings
 28+
 29+import installers
 30+
 31+from installer_util import *
 32+from isolation import *
 33+from getch import getch
 34+from tags import Tags
 35+
 36+
 37+def command():
 38+ """handle the command line in interactive mode"""
 39+
 40+ try:
 41+ command=raw_input('installer > ').strip()
 42+ except EOFError:
 43+ print "quit"
 44+ sys.exit(0)
 45+
 46+ if command:
 47+ args=command.split()
 48+ do_command(args)
 49+
 50+ return True
 51+
 52+def do_command(all_args):
 53+ """execute a command. Command is expected as a list
 54+ (like we get from str.split(), or from sys.args).
 55+ all_args[0] is expected to be the command name.
 56+ """
 57+
 58+ if all_args[0] in commands:
 59+ commands[all_args[0]](all_args)
 60+ else:
 61+ print "I don't know how to '"+all_args[0]+"'."
 62+
 63+def ls(args):
 64+ """implement local ls command, lists things we can install"""
 65+ if len(args)<=1:
 66+ print \
 67+"""available.mediawiki: installed.mediawiki:
 68+available.toolkit: installed.toolkit:
 69+available.scripted: installed.scripted: }
 70+available.naive: installed.naive: } extensions
 71+available.download: installer.download: }
 72+"""
 73+ return
 74+ installers.ls(args)
 75+
 76+def info(args):
 77+ """provide information on modules, where available"""
 78+ installers.info(args)
 79+
 80+def install(args):
 81+ """install something"""
 82+ installers.install(args)
 83+
 84+def test(args):
 85+ """test something"""
 86+ installers.test(args)
 87+
 88+
 89+def duplicate(args):
 90+ """duplicate an instance"""
 91+ if len(args)!=3:
 92+ print "syntax:\n duplicate source_instance destination_instance"
 93+ installers.duplicate(args)
 94+
 95+def uninstall(args):
 96+ """uninstall something"""
 97+ installers.uninstall(args)
 98+
 99+def update_self(args):
 100+ """update self to newest revision, (and switch to interactive mode)"""
 101+
 102+ print "This could cause the installer to break. Are you sure? Y/N"
 103+ answer=getch()
 104+ if answer.upper()=="Y":
 105+ print "Continuing..."
 106+ else:
 107+ print "You did not answer Y. I won't update."
 108+ return
 109+
 110+ os.chdir(settings.installerdir)
 111+ if len(args)==1:
 112+ os.system("svn update")
 113+ elif len(args)>=2 and isanint(args[1]):
 114+ os.system("svn update -r"+args[1])
 115+ elif len(args)>=2:
 116+ print "I'm not sure what to do with "+ (" ".join(args[1:]))
 117+
 118+ print "\n\n"
 119+ print "installer update attempted/completed. Restarting"
 120+ print "----------------------------------------------------------"
 121+ print "\n\n"
 122+ os.execl("/usr/bin/python","/usr/bin/python",__file__)
 123+
 124+def update_tags(args):
 125+ """manually force update of the tag cache"""
 126+ Tags.update_cache_file()
 127+
 128+def main():
 129+ """main function. start of execution when run from shell"""
 130+
 131+ # if we have command line params, parse them and exit
 132+ if len(sys.argv)>1:
 133+ args=sys.argv[1:]
 134+ do_command(args)
 135+ exit()
 136+
 137+ #else we'll run our own interactive CLI
 138+
 139+ #readline
 140+ histfile=os.path.join(os.environ["HOME"], ".installerhist")
 141+ try:
 142+ readline.read_history_file(histfile)
 143+ except IOError:
 144+ pass
 145+ readline.parse_and_bind("tab: complete")
 146+
 147+ import atexit
 148+ atexit.register(readline.write_history_file, histfile)
 149+
 150+
 151+ intro()
 152+ # main loop.
 153+ while(command()):
 154+ pass
 155+#constants
 156+
 157+# bind commands to functions
 158+commands={
 159+ "help":help,
 160+ "quit":quit,
 161+ "exit":quit,
 162+ "ls":ls,
 163+ "install":install,
 164+ "uninstall":uninstall,
 165+ "info":info,
 166+ "check_isolation":check_isolation,
 167+ "update_self":update_self,
 168+ "update_tags":update_tags,
 169+ "duplicate":duplicate,
 170+ "test":test
 171+}
 172+
 173+# additional help texts for some commands.
 174+subhelp={
 175+ "ls":"""ls installed : list currently installed items
 176+ls available : list items available"""
 177+
 178+}
 179+
 180+if __name__ == "__main__":
 181+ main()
 182+
Property changes on: trunk/testing/installer/installer.py
___________________________________________________________________
Added: svn:eol-style
1183 + native
Added: svn:executable
2184 +
Index: trunk/testing/installer/settings_handler.py
@@ -0,0 +1,85 @@
 2+# This software, copyright (C) 2008-2009 by Wikiation.
 3+# This software is developed by Kim Bruning.
 4+#
 5+# Distributed under the terms of the MIT license.
 6+#
 7+# =============================================================
 8+# Default settings file. DO NOT EDIT (edit settings.py instead)
 9+# =============================================================
 10+
 11+# Provides sane defauls and backwards compatibility for
 12+# settings.py.
 13+
 14+import os
 15+
 16+# "You Are Here"
 17+installerdir=os.path.dirname(os.path.abspath(__file__))
 18+
 19+# where to find .install directories and the files contained therein
 20+installfiles=os.path.join(installerdir,'installfiles')
 21+testfiles=os.path.join(installerdir,'testfiles')
 22+
 23+# where do we store the _tagcache file
 24+tagcache=os.path.join(installerdir,"_tagcache")
 25+
 26+# where to find mediawiki tags and trunk on svn
 27+tagsdir="http://svn.wikimedia.org/svnroot/mediawiki/tags"
 28+trunkdir="http://svn.wikimedia.org/svnroot/mediawiki/trunk"
 29+# we could alternately/additionally take a tag version for extensions. (future)
 30+extensionssubdir="extensions"
 31+extensionsdir=trunkdir+"/"+extensionssubdir
 32+
 33+# where to install diverse revisions
 34+instancesdir='/var/www/revisions'
 35+
 36+
 37+# base scriptpath for every installation (ie, where to reach the above over the web)
 38+base_scriptpath="/revisions/"
 39+
 40+# where to install the toolkit
 41+toolkit_dir='/usr/local/testing'
 42+
 43+
 44+#where check_isolation can be found
 45+isolation_create=toolkit_dir+'/check_isolation/create_and_ul.sh'
 46+isolation_test=toolkit_dir+'/check_isolation/dl_and_check.sh'
 47+# run automated tests during installation
 48+# this is useful if you are in a testing environment.
 49+# If you are running production, you might want to leave
 50+# this set to False.
 51+run_automated_tests=False
 52+
 53+debug=False
 54+
 55+# initial user
 56+adminuser_name="admin"
 57+adminuser_password="admin1234"
 58+
 59+#mysql info
 60+mysql_user="root"
 61+mysql_pass=""
 62+
 63+# what mysql commands should be used. (Who us? Use horrible hacks?)
 64+
 65+userpart=""
 66+passpart=""
 67+if mysql_user:
 68+ userpart="-u"+mysql_user
 69+if mysql_pass:
 70+ passpart="-p"+mysql_pass
 71+
 72+mysql_arguments=" "+userpart+" "+passpart
 73+
 74+if not 'mysql_command' in globals():
 75+ mysql_command="mysql "+mysql_arguments
 76+
 77+if not 'mysqldump_command' in globals():
 78+ mysqldump_command="mysqldump "+mysql_arguments
 79+
 80+if os.path.exists(os.path.join(installerdir, 'settings.py')):
 81+ from settings import *
 82+
 83+#legacy support (rename old variables, etc)
 84+if 'revisionsdir' in globals():
 85+ instancesdir=revisionsdir
 86+
Index: trunk/testing/installer/tags.py
@@ -0,0 +1,103 @@
 2+import sys,os
 3+import os.path
 4+import settings_handler as settings
 5+import copy
 6+import cPickle as pickle
 7+import subprocess
 8+
 9+class TagsException(Exception):
 10+ pass
 11+
 12+class Tags:
 13+ """keep track of extension tags in svn.
 14+ the current repository is not optimised for the kinds
 15+ of queries the installer needs. We do the query once
 16+ and cache it."""
 17+
 18+ def __init__(self):
 19+ # try to load preexisting cache
 20+ self.cache=self.load_cache()
 21+ # No joy? Let's generate one.
 22+ if not self.cache:
 23+ self.cache=self.update_cache()
 24+ # Still no joy?
 25+ if not self.cache:
 26+ raise Exception("Internal error: cannot obtain a tag cache")
 27+
 28+ @classmethod
 29+ def load_cache(self):
 30+ """load tags from cache"""
 31+ if not os.path.isfile(settings.tagcache):
 32+ return None
 33+
 34+ cache=pickle.load(file(settings.tagcache))
 35+ return cache
 36+
 37+ @classmethod
 38+ def svnlist(self,dir):
 39+ """generic obtain data from svn ls
 40+ (TODO: refactor, overlaps with DownloadInstaller get_installers)"""
 41+
 42+ command=['svn','ls',dir]
 43+ process=subprocess.Popen(command,stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 44+ failp=process.stderr.read()
 45+ if failp:
 46+ return None
 47+ l=list(process.stdout)
 48+ # tidy l in place
 49+ for i in range(len(l)):
 50+ l[i]=l[i].strip()
 51+ if l[i].endswith("/"):
 52+ l[i]=l[i][:-1]
 53+ return l
 54+
 55+ def update_cache(self):
 56+ """update cache to disk and to memory"""
 57+ self.cache=self.update_cache_file()
 58+ return self.cache
 59+
 60+ @classmethod
 61+ def update_cache_file(self):
 62+ """update cache to disk. returns a cache. This is an expensive operation.
 63+ (cache format is {"extension name":["tag1", "tag2", "tag3", ...]}, ...)
 64+ """
 65+ print "Updating tags cache, this takes a minute or so."
 66+ print "(Items marked with '*' do not seem to contain extensions)"
 67+ cache={}
 68+ tags=self.svnlist(settings.tagsdir)
 69+ for tag in tags:
 70+ sys.stdout.write(tag)
 71+ sys.stdout.flush()
 72+
 73+ extensions=self.svnlist(settings.tagsdir+"/"+tag+"/"+settings.extensionssubdir)
 74+ if extensions==None:
 75+ extensions=[]
 76+ sys.stdout.write('*')
 77+ sys.stdout.flush()
 78+ for extension in extensions:
 79+ if extension not in cache:
 80+ cache[extension]=[]
 81+ cache[extension].append(tag)
 82+ sys.stdout.write('; ')
 83+ sys.stdout.flush()
 84+
 85+ #store cache to disk
 86+ pickle.dump(cache, file(settings.tagcache,"w"),pickle.HIGHEST_PROTOCOL)
 87+
 88+ #make empty line
 89+ print
 90+ print "completed."
 91+ return cache
 92+
 93+ def gettags(self,extension):
 94+ if extension not in self.cache:
 95+ raise TagsException("Could not find extension "+str(extension)+".")
 96+
 97+ tags=self.cache[extension]
 98+ return copy.copy(tags)
 99+
 100+if __name__=="__main__":
 101+ tags=Tags()
 102+ print "Imagemap: ",tags.gettags("ImageMap")
 103+ print "Cite: ", tags.gettags("Cite")
 104+
Index: trunk/testing/installer/__init__.py
Index: trunk/testing/installer/isolation.py
@@ -0,0 +1,45 @@
 2+# This software, copyright (C) 2008-2009 by Wikiation.
 3+# This software is developed by Kim Bruning.
 4+#
 5+# Distributed under the terms of the MIT license.
 6+
 7+import sys,os, os.path
 8+import settings_handler as settings
 9+
 10+#support for check_isolation
 11+
 12+def _check_isolation(args):
 13+ """check_isolation: check diffs now"""
 14+ difftest=settings.isolation_test
 15+ command=difftest+" "+" ".join(args)
 16+ exit_status=os.system(command)>>8
 17+ return exit_status==0
 18+
 19+def check_isolation(args):
 20+ """implement check_isolation command"""
 21+
 22+ if len(args) < 2 :
 23+ print "Must specify a target!\n(try: ls installed )"
 24+ return
 25+ target=args[1]
 26+ if target not in installed():
 27+ print target+' is not currently installed'
 28+ return
 29+
 30+ return _check_isolation(args[1:])
 31+
 32+
 33+def difftests(target):
 34+ """check_isolation: store diffs, ready for testing later"""
 35+
 36+ difftest=settings.isolation_create
 37+ command=difftest+" "+target
 38+ os.system(command)
 39+
 40+def installed():
 41+ """list installed items"""
 42+ # XXX COPIED from mediawiki_installer.py
 43+ #( Else we'd have a recursive import)
 44+ return os.listdir(settings.instancesdir)
 45+
 46+
Property changes on: trunk/testing/installer/isolation.py
___________________________________________________________________
Added: svn:eol-style
147 + native
Index: trunk/testing/installer/installfiles/toolkit/util.install/download.sh
@@ -0,0 +1,10 @@
 2+#!/bin/sh
 3+
 4+repository="http://svn.wikimedia.org/svnroot/mediawiki/trunk/testing/util/"
 5+
 6+cd $DESTINATION_DIR
 7+if test -n "$REVISION"; then
 8+ svn checkout -r $REVISION $repository
 9+else
 10+ svn checkout $repository
 11+fi
Property changes on: trunk/testing/installer/installfiles/toolkit/util.install/download.sh
___________________________________________________________________
Added: svn:executable
112 + *
Index: trunk/testing/installer/installfiles/toolkit/util.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR
 5+rm -rf util
Property changes on: trunk/testing/installer/installfiles/toolkit/util.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
16 + *
Index: trunk/testing/installer/installfiles/toolkit/util.install/is_installed.sh
@@ -0,0 +1,5 @@
 2+#!/bin/sh
 3+
 4+
 5+
 6+test -d $DESTINATION_DIR/util && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/toolkit/util.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
17 + *
Index: trunk/testing/installer/installfiles/toolkit/util.install/info
@@ -0,0 +1 @@
 2+diverse utility scripts
Index: trunk/testing/installer/installfiles/toolkit/check_isolation.install/info
@@ -0,0 +1,7 @@
 2+Required by the installer
 3+stores information about database and mediawiki files before installation or testing
 4+later diffs this information against the installed system to see if anything
 5+has changed. If something changes, you (might) have some interesting issues.
 6+
 7+
 8+
Property changes on: trunk/testing/installer/installfiles/toolkit/check_isolation.install/info
___________________________________________________________________
Added: svn:eol-style
19 + native
Index: trunk/testing/installer/installfiles/toolkit/check_isolation.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/check_isolation
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/toolkit/check_isolation.install/update.sh
___________________________________________________________________
Added: svn:eol-style
110 + native
Added: svn:executable
211 +
Index: trunk/testing/installer/installfiles/toolkit/check_isolation.install/download.sh
@@ -0,0 +1,10 @@
 2+#!/bin/sh
 3+
 4+repository="http://svn.wikimedia.org/svnroot/mediawiki/trunk/testing/check_isolation/"
 5+
 6+cd $DESTINATION_DIR
 7+if test -n "$REVISION"; then
 8+ svn checkout -r $REVISION $repository
 9+else
 10+ svn checkout $repository
 11+fi
Property changes on: trunk/testing/installer/installfiles/toolkit/check_isolation.install/download.sh
___________________________________________________________________
Added: svn:eol-style
112 + native
Added: svn:executable
213 +
Index: trunk/testing/installer/installfiles/toolkit/check_isolation.install/uninstall.sh
@@ -0,0 +1,5 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR
 5+rm -f test
 6+rm -rf check_isolation
Property changes on: trunk/testing/installer/installfiles/toolkit/check_isolation.install/uninstall.sh
___________________________________________________________________
Added: svn:eol-style
17 + native
Added: svn:executable
28 +
Index: trunk/testing/installer/installfiles/toolkit/check_isolation.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/check_isolation && echo "true"|| echo "false"
Property changes on: trunk/testing/installer/installfiles/toolkit/check_isolation.install/is_installed.sh
___________________________________________________________________
Added: svn:eol-style
15 + native
Added: svn:executable
26 +
Index: trunk/testing/installer/installfiles/toolkit/check_isolation.install/test.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+echo $hello_world
Property changes on: trunk/testing/installer/installfiles/toolkit/check_isolation.install/test.sh
___________________________________________________________________
Added: svn:eol-style
15 + native
Property changes on: trunk/testing/installer/installfiles/toolkit/check_isolation.install
___________________________________________________________________
Added: svn:mergeinfo
Index: trunk/testing/installer/installfiles/toolkit/pywikipedia.install/info
@@ -0,0 +1 @@
 2+A version of pywikipedia suitable for exttest environments
Property changes on: trunk/testing/installer/installfiles/toolkit/pywikipedia.install/info
___________________________________________________________________
Added: svn:eol-style
13 + native
Index: trunk/testing/installer/installfiles/toolkit/pywikipedia.install/download.sh
@@ -0,0 +1,5 @@
 2+#!/bin/sh
 3+
 4+
 5+cd $DESTINATION_DIR
 6+svn checkout 'http://svn.wikimedia.org/svnroot/pywikipedia/trunk/pywikipedia/'
Property changes on: trunk/testing/installer/installfiles/toolkit/pywikipedia.install/download.sh
___________________________________________________________________
Added: svn:eol-style
17 + native
Added: svn:executable
28 +
Index: trunk/testing/installer/installfiles/toolkit/pywikipedia.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR
 5+rm -rf pywikipedia
Property changes on: trunk/testing/installer/installfiles/toolkit/pywikipedia.install/uninstall.sh
___________________________________________________________________
Added: svn:eol-style
16 + native
Added: svn:executable
27 +
Index: trunk/testing/installer/installfiles/toolkit/pywikipedia.install/is_installed.sh
@@ -0,0 +1,5 @@
 2+#!/bin/sh
 3+
 4+
 5+
 6+test -d $DESTINATION_DIR/pywikipedia && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/toolkit/pywikipedia.install/is_installed.sh
___________________________________________________________________
Added: svn:eol-style
17 + native
Added: svn:executable
28 +
Index: trunk/testing/installer/installfiles/toolkit/exttest.install/info
@@ -0,0 +1,2 @@
 2+imagemap:
 3+http://www.mediawiki.org/wiki/Extension:ImageMap
Property changes on: trunk/testing/installer/installfiles/toolkit/exttest.install/info
___________________________________________________________________
Added: svn:eol-style
14 + native
Index: trunk/testing/installer/installfiles/toolkit/exttest.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/toolkit/exttest.install/update.sh
___________________________________________________________________
Added: svn:eol-style
110 + native
Added: svn:executable
211 +
Index: trunk/testing/installer/installfiles/toolkit/exttest.install/download.sh
@@ -0,0 +1,10 @@
 2+#!/bin/sh
 3+
 4+repository="http://svn.wikimedia.org/svnroot/mediawiki/trunk/testing/exttest/"
 5+
 6+cd $DESTINATION_DIR
 7+if test -n "$REVISION"; then
 8+ svn checkout -r $REVISION $repository
 9+else
 10+ svn checkout $repository
 11+fi
Property changes on: trunk/testing/installer/installfiles/toolkit/exttest.install/download.sh
___________________________________________________________________
Added: svn:eol-style
112 + native
Added: svn:executable
213 +
Index: trunk/testing/installer/installfiles/toolkit/exttest.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/toolkit/exttest.install/uninstall.sh
___________________________________________________________________
Added: svn:eol-style
16 + native
Added: svn:executable
27 +
Index: trunk/testing/installer/installfiles/toolkit/exttest.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/toolkit/exttest.install/is_installed.sh
___________________________________________________________________
Added: svn:eol-style
15 + native
Added: svn:executable
26 +
Index: trunk/testing/installer/installfiles/toolkit/exttest.install/ImageMap.settings.php
@@ -0,0 +1,6 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/ImageMap/ImageMap.php");
 5+
 6+
 7+?>
Property changes on: trunk/testing/installer/installfiles/toolkit/exttest.install/ImageMap.settings.php
___________________________________________________________________
Added: svn:eol-style
18 + native
Property changes on: trunk/testing/installer/installfiles/toolkit/exttest.install
___________________________________________________________________
Added: svn:mergeinfo
Property changes on: trunk/testing/installer/installfiles/toolkit
___________________________________________________________________
Added: svn:mergeinfo
Index: trunk/testing/installer/installfiles/extensions/LiquidThreads.install/download.sh
@@ -0,0 +1,11 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/$NAME"
 5+
 6+cd $DESTINATION_DIR
 7+if test -n "$REVISION"; then
 8+ svn checkout -r $REVISION $repository
 9+else
 10+ svn checkout $repository
 11+fi
 12+
Property changes on: trunk/testing/installer/installfiles/extensions/LiquidThreads.install/download.sh
___________________________________________________________________
Added: svn:executable
113 + *
Added: eol:native
214 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/LiquidThreads.install/uninstall.sh
@@ -0,0 +1,6 @@
 2+#!/bin/sh
 3+
 4+$MYSQL_COMMAND $DATABASE_NAME < $INSTALL_DIR/lqt-uninstall.sql
 5+
 6+cd $DESTINATION_DIR
 7+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/LiquidThreads.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
18 + *
Added: eol:native
29 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/LiquidThreads.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/LiquidThreads.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Added: eol:native
26 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/LiquidThreads.install/lqt-uninstall.sql
@@ -0,0 +1,3 @@
 2+DROP TABLE thread;
 3+DROP TABLE historical_thread;
 4+DROP TABLE user_message_state;
\ No newline at end of file
Property changes on: trunk/testing/installer/installfiles/extensions/LiquidThreads.install/lqt-uninstall.sql
___________________________________________________________________
Added: eol:native
15 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/LiquidThreads.install/LiquidThreads.settings.php
@@ -0,0 +1,2 @@
 2+<?php
 3+require_once("$IP/extensions/LiquidThreads/LiquidThreads.php");
Property changes on: trunk/testing/installer/installfiles/extensions/LiquidThreads.install/LiquidThreads.settings.php
___________________________________________________________________
Added: eol:native
14 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/LiquidThreads.install/setup.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+$MYSQL_COMMAND $DATABASE_NAME < $DESTINATION_DIR/$NAME/lqt.sql
Property changes on: trunk/testing/installer/installfiles/extensions/LiquidThreads.install/setup.sh
___________________________________________________________________
Added: svn:executable
15 + *
Index: trunk/testing/installer/installfiles/extensions/LiquidThreads.install/info
@@ -0,0 +1,2 @@
 2+liquidthreads:
 3+http://www.mediawiki.org/wiki/Extension:LiquidThreads
Property changes on: trunk/testing/installer/installfiles/extensions/LiquidThreads.install/info
___________________________________________________________________
Added: eol:native
14 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/LiquidThreads.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/LiquidThreads.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Added: eol:native
211 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/HeaderTabs.install/HeaderTabs.settings.php
@@ -0,0 +1,6 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/HeaderTabs/HeaderTabs.php");
 5+
 6+
 7+?>
Index: trunk/testing/installer/installfiles/extensions/HeaderTabs.install/info
@@ -0,0 +1,3 @@
 2+HeaderTabs
 3+==========
 4+http://www.mediawiki.org/wiki/Extension:HeaderTabs
Index: trunk/testing/installer/installfiles/extensions/HeaderTabs.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/HeaderTabs.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Index: trunk/testing/installer/installfiles/extensions/HeaderTabs.install/download.sh
@@ -0,0 +1,13 @@
 2+#!/bin/sh
 3+
 4+#repository="$EXTENSIONS_SVN/$NAME"
 5+
 6+cd $DESTINATION_DIR
 7+
 8+svn checkout http://mediawiki-header-tabs.googlecode.com/svn/trunk/ HeaderTabs
 9+
 10+#if test -n "$REVISION"; then
 11+# svn checkout -r $REVISION $repository
 12+#else
 13+# svn checkout $repository
 14+#fi
Property changes on: trunk/testing/installer/installfiles/extensions/HeaderTabs.install/download.sh
___________________________________________________________________
Added: svn:executable
115 + *
Index: trunk/testing/installer/installfiles/extensions/HeaderTabs.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/HeaderTabs.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
16 + *
Index: trunk/testing/installer/installfiles/extensions/HeaderTabs.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/HeaderTabs.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Index: trunk/testing/installer/installfiles/extensions/Makesysop/Makesysop.settings.php
@@ -0,0 +1,6 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/Makesysop/SpecialMakesysop.php");
 5+
 6+
 7+?>
Index: trunk/testing/installer/installfiles/extensions/Makesysop/download.sh
@@ -0,0 +1,10 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/$NAME"
 5+
 6+cd $DESTINATION_DIR
 7+if test -n "$REVISION"; then
 8+ svn checkout -r $REVISION $repository
 9+else
 10+ svn checkout $repository
 11+fi
Property changes on: trunk/testing/installer/installfiles/extensions/Makesysop/download.sh
___________________________________________________________________
Added: svn:executable
112 + *
Index: trunk/testing/installer/installfiles/extensions/Makesysop/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/Makesysop/uninstall.sh
___________________________________________________________________
Added: svn:executable
16 + *
Index: trunk/testing/installer/installfiles/extensions/Makesysop/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/Makesysop/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Index: trunk/testing/installer/installfiles/extensions/Makesysop/info
@@ -0,0 +1,3 @@
 2+Makesysop
 3+=========
 4+http://www.mediawiki.org/wiki/Extension:Makesysop
Index: trunk/testing/installer/installfiles/extensions/Makesysop/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/Makesysop/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Index: trunk/testing/installer/installfiles/extensions/AutoCreateCategoryPages.install/AutoCreateCategoryPages.settings.php
@@ -0,0 +1,6 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/uniwiki/AutoCreateCategoryPages/AutoCreateCategoryPages.php");
 5+
 6+
 7+?>
Property changes on: trunk/testing/installer/installfiles/extensions/AutoCreateCategoryPages.install/AutoCreateCategoryPages.settings.php
___________________________________________________________________
Added: eol:native
18 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/AutoCreateCategoryPages.install/download.sh
@@ -0,0 +1,18 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/uniwiki/$NAME"
 5+
 6+if [ -d "$DESTINATION_DIR/uniwiki" ]; then
 7+ echo "Directory exists"
 8+else
 9+ mkdir "$DESTINATION_DIR/uniwiki"
 10+ echo "Directory is created"
 11+fi
 12+
 13+
 14+cd $DESTINATION_DIR/uniwiki
 15+if test -n "$REVISION"; then
 16+ svn checkout -r $REVISION $repository
 17+else
 18+ svn checkout $repository
 19+fi
Property changes on: trunk/testing/installer/installfiles/extensions/AutoCreateCategoryPages.install/download.sh
___________________________________________________________________
Added: svn:executable
120 + *
Added: eol:native
221 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/AutoCreateCategoryPages.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/uniwiki/
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/AutoCreateCategoryPages.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
16 + *
Added: eol:native
27 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/AutoCreateCategoryPages.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/uniwiki/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/AutoCreateCategoryPages.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Added: eol:native
26 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/AutoCreateCategoryPages.install/info
@@ -0,0 +1,3 @@
 2+CssHooks:
 3+http://www.mediawiki.org/wiki/Extension:AutoCreateCategoryPages
 4+
Property changes on: trunk/testing/installer/installfiles/extensions/AutoCreateCategoryPages.install/info
___________________________________________________________________
Added: eol:native
15 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/AutoCreateCategoryPages.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/uniwiki/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/AutoCreateCategoryPages.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Added: eol:native
211 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticForms.install/info
@@ -0,0 +1,2 @@
 2+SemanticForms:
 3+http://semantic-mediawiki.org/wiki/Help:Semantic_Forms
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticForms.install/info
___________________________________________________________________
Added: eol:native
14 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticForms.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticForms.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Added: eol:native
211 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticForms.install/SemanticForms.settings.php
@@ -0,0 +1,8 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/SemanticMediaWiki/includes/SMW_Settings.php");
 5+
 6+require_once("$IP/extensions/SemanticForms/includes/SF_Settings.php");
 7+
 8+
 9+?>
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticForms.install/SemanticForms.settings.php
___________________________________________________________________
Added: eol:native
110 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticForms.install/download.sh
@@ -0,0 +1,10 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/$NAME"
 5+
 6+cd $DESTINATION_DIR
 7+if test -n "$REVISION"; then
 8+ svn checkout -r $REVISION $repository
 9+else
 10+ svn checkout $repository
 11+fi
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticForms.install/download.sh
___________________________________________________________________
Added: svn:executable
112 + *
Added: eol:native
213 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticForms.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticForms.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
16 + *
Added: eol:native
27 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticForms.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticForms.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Added: eol:native
26 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Oversight.install/setup.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+php maintenance/sql.php extensions/Oversight/hidden.sql
Property changes on: trunk/testing/installer/installfiles/extensions/Oversight.install/setup.sh
___________________________________________________________________
Added: svn:executable
15 + *
Index: trunk/testing/installer/installfiles/extensions/Oversight.install/info
@@ -0,0 +1,2 @@
 2+Oversight:
 3+http://www.mediawiki.org/wiki/Extension:Oversight
Index: trunk/testing/installer/installfiles/extensions/Oversight.install/update.sh
@@ -0,0 +1,9 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
 10+php maintenance/SMW_setup.php
Property changes on: trunk/testing/installer/installfiles/extensions/Oversight.install/update.sh
___________________________________________________________________
Added: svn:executable
111 + *
Index: trunk/testing/installer/installfiles/extensions/Oversight.install/Oversight.settings.php
@@ -0,0 +1,7 @@
 2+<?PHP
 3+
 4+include_once("$IP/extensions/Oversight/HideRevision.php");
 5+$wgGroupPermissions['oversight']['hiderevision'] = true;
 6+$wgGroupPermissions['oversight']['oversight'] = true;
 7+
 8+?>
Index: trunk/testing/installer/installfiles/extensions/Oversight.install/download.sh
@@ -0,0 +1,10 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/$NAME"
 5+
 6+cd $DESTINATION_DIR
 7+if test -n "$REVISION"; then
 8+ svn checkout -r $REVISION $repository
 9+else
 10+ svn checkout $repository
 11+fi
Property changes on: trunk/testing/installer/installfiles/extensions/Oversight.install/download.sh
___________________________________________________________________
Added: svn:executable
112 + *
Index: trunk/testing/installer/installfiles/extensions/Oversight.install/uninstall.sh
@@ -0,0 +1,5 @@
 2+#!/bin/sh
 3+
 4+php $DESTINATION_DIR/$NAME/maintenance/SMW_setup.php --delete
 5+cd $DESTINATION_DIR
 6+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/Oversight.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
17 + *
Index: trunk/testing/installer/installfiles/extensions/Oversight.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/Oversight.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Index: trunk/testing/installer/installfiles/extensions/OggHandler.install/download.sh
@@ -0,0 +1,10 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/$NAME"
 5+
 6+cd $DESTINATION_DIR
 7+if test -n "$REVISION"; then
 8+ svn checkout -r $REVISION $repository
 9+else
 10+ svn checkout $repository
 11+fi
Property changes on: trunk/testing/installer/installfiles/extensions/OggHandler.install/download.sh
___________________________________________________________________
Added: svn:executable
112 + *
Index: trunk/testing/installer/installfiles/extensions/OggHandler.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/OggHandler.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
16 + *
Index: trunk/testing/installer/installfiles/extensions/OggHandler.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/OggHandler.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Index: trunk/testing/installer/installfiles/extensions/OggHandler.install/info
@@ -0,0 +1,6 @@
 2+OggHandler
 3+==========
 4+http://www.mediawiki.org/wiki/Extension:OggHandler
 5+
 6+OggHandler is an extension which allows you to display Ogg audio and video files in wiki pages,
 7+using the same syntax as for image files. It also has limited support for metadata display on image description pages.
Index: trunk/testing/installer/installfiles/extensions/OggHandler.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/OggHandler.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Index: trunk/testing/installer/installfiles/extensions/OggHandler.install/OggHandler.settings.php
@@ -0,0 +1,6 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/OggHandler/OggHandler.php");
 5+$wgFFmpegLocation = '/usr/bin/ffmpeg';
 6+
 7+?>
Index: trunk/testing/installer/installfiles/extensions/CheckUser.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/CheckUser.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Index: trunk/testing/installer/installfiles/extensions/CheckUser.install/setup.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+php $DESTINATION_DIR/$NAME/install.php
 5+
Property changes on: trunk/testing/installer/installfiles/extensions/CheckUser.install/setup.sh
___________________________________________________________________
Added: svn:executable
16 + *
Index: trunk/testing/installer/installfiles/extensions/CheckUser.install/info
@@ -0,0 +1,2 @@
 2+CheckUser:
 3+http://www.mediawiki.org/wiki/Extension:CheckUser
Index: trunk/testing/installer/installfiles/extensions/CheckUser.install/update.sh
@@ -0,0 +1,9 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
 10+php maintenance/SMW_setup.php
Property changes on: trunk/testing/installer/installfiles/extensions/CheckUser.install/update.sh
___________________________________________________________________
Added: svn:executable
111 + *
Index: trunk/testing/installer/installfiles/extensions/CheckUser.install/download.sh
@@ -0,0 +1,13 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/$NAME"
 5+
 6+
 7+cd $DESTINATION_DIR
 8+if test -n "$REVISION"; then
 9+ svn checkout -r $REVISION $repository
 10+else
 11+ svn checkout $repository
 12+fi
 13+
 14+
Property changes on: trunk/testing/installer/installfiles/extensions/CheckUser.install/download.sh
___________________________________________________________________
Added: svn:executable
115 + *
Index: trunk/testing/installer/installfiles/extensions/CheckUser.install/CheckUser.settings.php
@@ -0,0 +1,5 @@
 2+<?PHP
 3+
 4+include_once("$IP/extensions/CheckUser/CheckUser.php");
 5+
 6+?>
Index: trunk/testing/installer/installfiles/extensions/CheckUser.install/uninstall.sh
@@ -0,0 +1,5 @@
 2+#!/bin/sh
 3+
 4+php $DESTINATION_DIR/$NAME/maintenance/SMW_setup.php --delete
 5+cd $DESTINATION_DIR
 6+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/CheckUser.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
17 + *
Index: trunk/testing/installer/installfiles/extensions/DataTransfer.install/info
@@ -0,0 +1,2 @@
 2+SemanticForms:
 3+http://mediawiki.org/wiki/Extension:Data_Transfer
Property changes on: trunk/testing/installer/installfiles/extensions/DataTransfer.install/info
___________________________________________________________________
Added: eol:native
14 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/DataTransfer.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/DataTransfer.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Added: eol:native
211 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/DataTransfer.install/download.sh
@@ -0,0 +1,10 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/$NAME"
 5+
 6+cd $DESTINATION_DIR
 7+if test -n "$REVISION"; then
 8+ svn checkout -r $REVISION $repository
 9+else
 10+ svn checkout $repository
 11+fi
Property changes on: trunk/testing/installer/installfiles/extensions/DataTransfer.install/download.sh
___________________________________________________________________
Added: svn:executable
112 + *
Added: eol:native
213 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/DataTransfer.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/DataTransfer.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
16 + *
Added: eol:native
27 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/DataTransfer.install/DataTransfer.settings.php
@@ -0,0 +1,6 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/DataTransfer/includes/DT_Settings.php");
 5+
 6+
 7+?>
Property changes on: trunk/testing/installer/installfiles/extensions/DataTransfer.install/DataTransfer.settings.php
___________________________________________________________________
Added: eol:native
18 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/DataTransfer.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/DataTransfer.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Added: eol:native
26 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Configure.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/Configure.install/uninstall.sh
___________________________________________________________________
Added: svn:eol-style
16 + native
Added: svn:executable
27 + *
Added: eol:native
38 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Configure.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/Configure.install/is_installed.sh
___________________________________________________________________
Added: svn:eol-style
15 + native
Added: svn:executable
26 + *
Added: eol:native
37 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Configure.install/Configure.settings.php
@@ -0,0 +1,4 @@
 2+<?php
 3+
 4+require_once $IP . '/extensions/Configure/Configure.php';
 5+efConfigureSetup();
Property changes on: trunk/testing/installer/installfiles/extensions/Configure.install/Configure.settings.php
___________________________________________________________________
Added: svn:eol-style
16 + native
Added: eol:native
27 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Configure.install/info
@@ -0,0 +1,2 @@
 2+cite:
 3+http://www.mediawiki.org/wiki/Extension:Configure
Property changes on: trunk/testing/installer/installfiles/extensions/Configure.install/info
___________________________________________________________________
Added: svn:eol-style
14 + native
Added: eol:native
25 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Configure.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/Configure.install/update.sh
___________________________________________________________________
Added: svn:eol-style
110 + native
Added: svn:executable
211 + *
Added: eol:native
312 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Configure.install/download.sh
@@ -0,0 +1,13 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/$NAME"
 5+
 6+cd $DESTINATION_DIR
 7+if test -n "$REVISION"; then
 8+ svn checkout -r $REVISION $repository
 9+else
 10+ svn checkout $repository
 11+fi
 12+
 13+# Make the serialized directory world readable so it can be read by the web server.
 14+chmod 777 $DESTINATION_DIR/../serialized/
Property changes on: trunk/testing/installer/installfiles/extensions/Configure.install/download.sh
___________________________________________________________________
Added: svn:eol-style
115 + native
Added: svn:executable
216 + *
Added: eol:native
317 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticGoogleMaps.install/download.sh
@@ -0,0 +1,10 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/$NAME"
 5+
 6+cd $DESTINATION_DIR
 7+if test -n "$REVISION"; then
 8+ svn checkout -r $REVISION $repository
 9+else
 10+ svn checkout $repository
 11+fi
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticGoogleMaps.install/download.sh
___________________________________________________________________
Added: svn:executable
112 + *
Added: eol:native
213 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticGoogleMaps.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticGoogleMaps.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
16 + *
Added: eol:native
27 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticGoogleMaps.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticGoogleMaps.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Added: eol:native
26 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticGoogleMaps.install/SemanticGoogleMaps.settings.php
@@ -0,0 +1,8 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/SemanticMediaWiki/includes/SMW_Settings.php");
 5+
 6+require_once("$IP/extensions/SemanticGoogleMaps/SemanticGoogleMaps.php");
 7+
 8+
 9+?>
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticGoogleMaps.install/SemanticGoogleMaps.settings.php
___________________________________________________________________
Added: eol:native
110 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticGoogleMaps.install/info
@@ -0,0 +1,2 @@
 2+Semantic Google Maps:
 3+http://mediawiki.org/wiki/Extension:Semantic_Google_Maps
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticGoogleMaps.install/info
___________________________________________________________________
Added: eol:native
14 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticGoogleMaps.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticGoogleMaps.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Added: eol:native
211 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticDrilldown.install/download.sh
@@ -0,0 +1,10 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/$NAME"
 5+
 6+cd $DESTINATION_DIR
 7+if test -n "$REVISION"; then
 8+ svn checkout -r $REVISION $repository
 9+else
 10+ svn checkout $repository
 11+fi
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticDrilldown.install/download.sh
___________________________________________________________________
Added: svn:executable
112 + *
Added: eol:native
213 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticDrilldown.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticDrilldown.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
16 + *
Added: eol:native
27 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticDrilldown.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticDrilldown.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Added: eol:native
26 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticDrilldown.install/SemanticDrilldown.settings.php
@@ -0,0 +1,8 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/SemanticMediaWiki/includes/SMW_Settings.php");
 5+
 6+require_once("$IP/extensions/SemanticDrilldown/includes/SD_Settings.php");
 7+
 8+
 9+?>
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticDrilldown.install/SemanticDrilldown.settings.php
___________________________________________________________________
Added: eol:native
110 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticDrilldown.install/info
@@ -0,0 +1,2 @@
 2+SemanticForms:
 3+http://mediawiki.org/wiki/Extension:Semantic_Drilldown
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticDrilldown.install/info
___________________________________________________________________
Added: eol:native
14 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticDrilldown.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticDrilldown.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Added: eol:native
211 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SpecialCite.install/SpecialCite.settings.php
@@ -0,0 +1,6 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/Cite/SpecialCite.php");
 5+
 6+
 7+?>
Index: trunk/testing/installer/installfiles/extensions/SpecialCite.install/info
@@ -0,0 +1,3 @@
 2+Special:Cite
 3+===========
 4+http://www.mediawiki.org/wiki/Extension:Cite/Special:Cite.php
Index: trunk/testing/installer/installfiles/extensions/SpecialCite.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/SpecialCite.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Index: trunk/testing/installer/installfiles/extensions/SpecialCite.install/download.sh
@@ -0,0 +1,10 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/Cite"
 5+
 6+cd $DESTINATION_DIR
 7+if test -n "$REVISION"; then
 8+ svn checkout -r $REVISION $repository SpecialCite/
 9+else
 10+ svn checkout $repository SpecialCite/
 11+fi
Property changes on: trunk/testing/installer/installfiles/extensions/SpecialCite.install/download.sh
___________________________________________________________________
Added: svn:executable
112 + *
Index: trunk/testing/installer/installfiles/extensions/SpecialCite.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR
 5+rm -rf SpecialCite
Property changes on: trunk/testing/installer/installfiles/extensions/SpecialCite.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
16 + *
Index: trunk/testing/installer/installfiles/extensions/SpecialCite.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/SpecialCite && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/SpecialCite.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Index: trunk/testing/installer/installfiles/extensions/MooTools12core.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/uniwiki/
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/MooTools12core.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
16 + *
Added: eol:native
27 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/MooTools12core.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/uniwiki/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/MooTools12core.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Added: eol:native
26 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/MooTools12core.install/info
@@ -0,0 +1,3 @@
 2+CssHooks:
 3+http://www.mediawiki.org/wiki/Extension:MooTools_1.2_Core
 4+
Property changes on: trunk/testing/installer/installfiles/extensions/MooTools12core.install/info
___________________________________________________________________
Added: eol:native
15 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/MooTools12core.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/uniwiki/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/MooTools12core.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Added: eol:native
211 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/MooTools12core.install/MooTools12core.settings.php
@@ -0,0 +1,6 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/uniwiki/MooTools12core/MooTools12core.php");
 5+
 6+
 7+?>
Property changes on: trunk/testing/installer/installfiles/extensions/MooTools12core.install/MooTools12core.settings.php
___________________________________________________________________
Added: eol:native
18 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/MooTools12core.install/download.sh
@@ -0,0 +1,18 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/uniwiki/$NAME"
 5+
 6+if [ -d "$DESTINATION_DIR/uniwiki" ]; then
 7+ echo "Directory exists"
 8+else
 9+ mkdir "$DESTINATION_DIR/uniwiki"
 10+ echo "Directory is created"
 11+fi
 12+
 13+
 14+cd $DESTINATION_DIR/uniwiki
 15+if test -n "$REVISION"; then
 16+ svn checkout -r $REVISION $repository
 17+else
 18+ svn checkout $repository
 19+fi
Property changes on: trunk/testing/installer/installfiles/extensions/MooTools12core.install/download.sh
___________________________________________________________________
Added: svn:executable
120 + *
Added: eol:native
221 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/CatBoxAtTop.install/CatBoxAtTop.settings.php
@@ -0,0 +1,6 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/uniwiki/CatBoxAtTop/CatBoxAtTop.php");
 5+
 6+
 7+?>
Property changes on: trunk/testing/installer/installfiles/extensions/CatBoxAtTop.install/CatBoxAtTop.settings.php
___________________________________________________________________
Added: eol:native
18 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/CatBoxAtTop.install/download.sh
@@ -0,0 +1,18 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/uniwiki/$NAME"
 5+
 6+if [ -d "$DESTINATION_DIR/uniwiki" ]; then
 7+ echo "Directory exists"
 8+else
 9+ mkdir "$DESTINATION_DIR/uniwiki"
 10+ echo "Directory is created"
 11+fi
 12+
 13+
 14+cd $DESTINATION_DIR/uniwiki
 15+if test -n "$REVISION"; then
 16+ svn checkout -r $REVISION $repository
 17+else
 18+ svn checkout $repository
 19+fi
Property changes on: trunk/testing/installer/installfiles/extensions/CatBoxAtTop.install/download.sh
___________________________________________________________________
Added: svn:executable
120 + *
Added: eol:native
221 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/CatBoxAtTop.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/uniwiki/
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/CatBoxAtTop.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
16 + *
Added: eol:native
27 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/CatBoxAtTop.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/uniwiki/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/CatBoxAtTop.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Added: eol:native
26 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/CatBoxAtTop.install/info
@@ -0,0 +1,3 @@
 2+CssHooks:
 3+http://www.mediawiki.org/wiki/Extension:CatBoxAtTop
 4+
Property changes on: trunk/testing/installer/installfiles/extensions/CatBoxAtTop.install/info
___________________________________________________________________
Added: eol:native
15 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/CatBoxAtTop.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/uniwiki/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/CatBoxAtTop.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Added: eol:native
211 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/TitleKey.install/setup.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+$MYSQL_COMMAND $DATABASE_NAME < $DESTINATION_DIR/$NAME/titlekey.sql
 5+
Property changes on: trunk/testing/installer/installfiles/extensions/TitleKey.install/setup.sh
___________________________________________________________________
Added: svn:executable
16 + *
Index: trunk/testing/installer/installfiles/extensions/TitleKey.install/info
@@ -0,0 +1,2 @@
 2+Titlekey:
 3+http://www.mediawiki.org/wiki/Extension:TitleKey
Index: trunk/testing/installer/installfiles/extensions/TitleKey.install/update.sh
@@ -0,0 +1,9 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
 10+php maintenance/SMW_setup.php
Property changes on: trunk/testing/installer/installfiles/extensions/TitleKey.install/update.sh
___________________________________________________________________
Added: svn:executable
111 + *
Index: trunk/testing/installer/installfiles/extensions/TitleKey.install/TitleKey.settings.php
@@ -0,0 +1,5 @@
 2+<?PHP
 3+
 4+include_once("$IP/extensions/TitleKey/TitleKey.php");
 5+
 6+?>
Index: trunk/testing/installer/installfiles/extensions/TitleKey.install/download.sh
@@ -0,0 +1,10 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/$NAME"
 5+
 6+cd $DESTINATION_DIR
 7+if test -n "$REVISION"; then
 8+ svn checkout -r $REVISION $repository
 9+else
 10+ svn checkout $repository
 11+fi
Property changes on: trunk/testing/installer/installfiles/extensions/TitleKey.install/download.sh
___________________________________________________________________
Added: svn:executable
112 + *
Index: trunk/testing/installer/installfiles/extensions/TitleKey.install/uninstall.sh
@@ -0,0 +1,5 @@
 2+#!/bin/sh
 3+
 4+php $DESTINATION_DIR/$NAME/maintenance/SMW_setup.php --delete
 5+cd $DESTINATION_DIR
 6+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/TitleKey.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
17 + *
Index: trunk/testing/installer/installfiles/extensions/TitleKey.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/TitleKey.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Index: trunk/testing/installer/installfiles/extensions/CssHooks.install/info
@@ -0,0 +1,2 @@
 2+CssHooks:
 3+http://www.mediawiki.org/wiki/Extension:CssHooks
Property changes on: trunk/testing/installer/installfiles/extensions/CssHooks.install/info
___________________________________________________________________
Added: eol:native
14 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/CssHooks.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/uniwiki/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/CssHooks.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Added: eol:native
211 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/CssHooks.install/download.sh
@@ -0,0 +1,18 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/uniwiki/$NAME"
 5+
 6+if [ -d "$DESTINATION_DIR/uniwiki" ]; then
 7+ echo "Directory exists"
 8+else
 9+ mkdir "$DESTINATION_DIR/uniwiki"
 10+ echo "Directory is created"
 11+fi
 12+
 13+
 14+cd $DESTINATION_DIR/uniwiki
 15+if test -n "$REVISION"; then
 16+ svn checkout -r $REVISION $repository
 17+else
 18+ svn checkout $repository
 19+fi
Property changes on: trunk/testing/installer/installfiles/extensions/CssHooks.install/download.sh
___________________________________________________________________
Added: svn:executable
120 + *
Added: eol:native
221 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/CssHooks.install/CssHooks.settings.php
@@ -0,0 +1,6 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/uniwiki/CssHooks/CssHooks.php");
 5+
 6+
 7+?>
Property changes on: trunk/testing/installer/installfiles/extensions/CssHooks.install/CssHooks.settings.php
___________________________________________________________________
Added: eol:native
18 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/CssHooks.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/uniwiki/
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/CssHooks.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
16 + *
Added: eol:native
27 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/CssHooks.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/uniwiki/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/CssHooks.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Added: eol:native
26 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/TrustedXFF.install/download.sh
@@ -0,0 +1,10 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/$NAME"
 5+
 6+cd $DESTINATION_DIR
 7+if test -n "$REVISION"; then
 8+ svn checkout -r $REVISION $repository
 9+else
 10+ svn checkout $repository
 11+fi
Property changes on: trunk/testing/installer/installfiles/extensions/TrustedXFF.install/download.sh
___________________________________________________________________
Added: svn:executable
112 + *
Index: trunk/testing/installer/installfiles/extensions/TrustedXFF.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/TrustedXFF.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
16 + *
Index: trunk/testing/installer/installfiles/extensions/TrustedXFF.install/TrustedXFF.settings.php
@@ -0,0 +1,6 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/TrustedXFF/TrustedXFF.php");
 5+
 6+
 7+?>
Index: trunk/testing/installer/installfiles/extensions/TrustedXFF.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/TrustedXFF.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Index: trunk/testing/installer/installfiles/extensions/TrustedXFF.install/setup.sh
@@ -0,0 +1,5 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+
 6+php $DESTINATION_DIR/$NAME/generate.php
Property changes on: trunk/testing/installer/installfiles/extensions/TrustedXFF.install/setup.sh
___________________________________________________________________
Added: svn:executable
17 + *
Index: trunk/testing/installer/installfiles/extensions/TrustedXFF.install/info
@@ -0,0 +1,3 @@
 2+TrustedXFF
 3+==========
 4+http://www.mediawiki.org/wiki/Extension:TrustedXFF
Index: trunk/testing/installer/installfiles/extensions/TrustedXFF.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/TrustedXFF.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Index: trunk/testing/installer/installfiles/extensions/SemanticResultFormats.install/download.sh
@@ -0,0 +1,10 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/$NAME"
 5+
 6+cd $DESTINATION_DIR
 7+if test -n "$REVISION"; then
 8+ svn checkout -r $REVISION $repository
 9+else
 10+ svn checkout $repository
 11+fi
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticResultFormats.install/download.sh
___________________________________________________________________
Added: svn:executable
112 + *
Added: eol:native
213 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticResultFormats.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticResultFormats.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
16 + *
Added: eol:native
27 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticResultFormats.install/SemanticResultFormats.settings.php
@@ -0,0 +1,8 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/SemanticMediaWiki/includes/SMW_Settings.php");
 5+
 6+require_once("$IP/extensions/SemanticResultFormats/SRF_Settings.php");
 7+
 8+
 9+?>
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticResultFormats.install/SemanticResultFormats.settings.php
___________________________________________________________________
Added: eol:native
110 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticResultFormats.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticResultFormats.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Added: eol:native
26 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticResultFormats.install/info
@@ -0,0 +1,2 @@
 2+SemanticResultFormats:
 3+http://semantic-mediawiki.org/wiki/Help:Semantic_Result_Formats
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticResultFormats.install/info
___________________________________________________________________
Added: eol:native
14 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticResultFormats.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticResultFormats.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Added: eol:native
211 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/CreatePage.install/info
@@ -0,0 +1,2 @@
 2+imagemap:
 3+http://www.mediawiki.org/wiki/Extension:CreatePage
Property changes on: trunk/testing/installer/installfiles/extensions/CreatePage.install/info
___________________________________________________________________
Added: eol:native
14 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/CreatePage.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/uniwiki/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/CreatePage.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Added: eol:native
211 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/CreatePage.install/download.sh
@@ -0,0 +1,18 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/uniwiki/$NAME"
 5+
 6+if [ -d "$DESTINATION_DIR/uniwiki" ]; then
 7+ echo "the directory exists"
 8+else
 9+ mkdir "$DESTINATION_DIR/uniwiki"
 10+ echo "the directory is created"
 11+fi
 12+
 13+
 14+cd $DESTINATION_DIR/uniwiki
 15+if test -n "$REVISION"; then
 16+ svn checkout -r $REVISION $repository
 17+else
 18+ svn checkout $repository
 19+fi
Property changes on: trunk/testing/installer/installfiles/extensions/CreatePage.install/download.sh
___________________________________________________________________
Added: svn:executable
120 + *
Added: eol:native
221 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/CreatePage.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/uniwiki/
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/CreatePage.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
16 + *
Added: eol:native
27 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/CreatePage.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/uniwiki/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/CreatePage.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Added: eol:native
26 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/CreatePage.install/CreatePage.settings.php
@@ -0,0 +1,6 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/uniwiki/CreatePage/CreatePage.php");
 5+
 6+
 7+?>
Property changes on: trunk/testing/installer/installfiles/extensions/CreatePage.install/CreatePage.settings.php
___________________________________________________________________
Added: eol:native
18 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Layouts.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/uniwiki/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/Layouts.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Added: eol:native
26 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Layouts.install/Layouts.settings.php
@@ -0,0 +1,6 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/uniwiki/Layouts/Layouts.php");
 5+
 6+
 7+?>
Property changes on: trunk/testing/installer/installfiles/extensions/Layouts.install/Layouts.settings.php
___________________________________________________________________
Added: eol:native
18 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Layouts.install/info
@@ -0,0 +1,3 @@
 2+Layouts:
 3+http://www.mediawiki.org/wiki/Extension:Layouts
 4+
Property changes on: trunk/testing/installer/installfiles/extensions/Layouts.install/info
___________________________________________________________________
Added: eol:native
15 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Layouts.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/uniwiki/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/Layouts.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Added: eol:native
211 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Layouts.install/download.sh
@@ -0,0 +1,18 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/uniwiki/$NAME"
 5+
 6+if [ -d "$DESTINATION_DIR/uniwiki" ]; then
 7+ echo "Directory exists"
 8+else
 9+ mkdir "$DESTINATION_DIR/uniwiki"
 10+ echo "Directory is created"
 11+fi
 12+
 13+
 14+cd $DESTINATION_DIR/uniwiki
 15+if test -n "$REVISION"; then
 16+ svn checkout -r $REVISION $repository
 17+else
 18+ svn checkout $repository
 19+fi
Property changes on: trunk/testing/installer/installfiles/extensions/Layouts.install/download.sh
___________________________________________________________________
Added: svn:executable
120 + *
Added: eol:native
221 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Layouts.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/uniwiki/
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/Layouts.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
16 + *
Added: eol:native
27 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticCompoundQueries.install/download.sh
@@ -0,0 +1,10 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/$NAME"
 5+
 6+cd $DESTINATION_DIR
 7+if test -n "$REVISION"; then
 8+ svn checkout -r $REVISION $repository
 9+else
 10+ svn checkout $repository
 11+fi
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticCompoundQueries.install/download.sh
___________________________________________________________________
Added: svn:executable
112 + *
Added: eol:native
213 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticCompoundQueries.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticCompoundQueries.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
16 + *
Added: eol:native
27 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticCompoundQueries.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticCompoundQueries.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Added: eol:native
26 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticCompoundQueries.install/info
@@ -0,0 +1,2 @@
 2+SemanticForms:
 3+http://mediawiki.org/wiki/Extension:Semantic_Compound_Queries
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticCompoundQueries.install/info
___________________________________________________________________
Added: eol:native
14 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticCompoundQueries.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticCompoundQueries.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Added: eol:native
211 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticCompoundQueries.install/SemanticCompundQueries.settings.php
@@ -0,0 +1,8 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/SemanticMediaWiki/includes/SMW_Settings.php");
 5+
 6+require_once("$IP/extensions/SemanticCompoundQueries/SCQ_Settings.php");
 7+
 8+
 9+?>
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticCompoundQueries.install/SemanticCompundQueries.settings.php
___________________________________________________________________
Added: eol:native
110 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Renameuser.install/Renameuser.settings.php
@@ -0,0 +1,6 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/Renameuser/SpecialRenameuser.php");
 5+
 6+
 7+?>
Property changes on: trunk/testing/installer/installfiles/extensions/Renameuser.install/Renameuser.settings.php
___________________________________________________________________
Added: eol:native
18 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Renameuser.install/info
@@ -0,0 +1,5 @@
 2+InputBox
 3+========
 4+http://www.mediawiki.org/wiki/Extension:Renameuser
 5+
 6+The Renameuser extension is a MediaWiki extension that allows a bureaucrat to rename a user.
Property changes on: trunk/testing/installer/installfiles/extensions/Renameuser.install/info
___________________________________________________________________
Added: eol:native
17 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Renameuser.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/Renameuser.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Added: eol:native
211 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Renameuser.install/download.sh
@@ -0,0 +1,10 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/$NAME"
 5+
 6+cd $DESTINATION_DIR
 7+if test -n "$REVISION"; then
 8+ svn checkout -r $REVISION $repository
 9+else
 10+ svn checkout $repository
 11+fi
Property changes on: trunk/testing/installer/installfiles/extensions/Renameuser.install/download.sh
___________________________________________________________________
Added: svn:executable
112 + *
Added: eol:native
213 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Renameuser.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/Renameuser.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
16 + *
Added: eol:native
27 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Renameuser.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/Renameuser.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Added: eol:native
26 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Javascript.install/download.sh
@@ -0,0 +1,18 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/uniwiki/$NAME"
 5+
 6+if [ -d "$DESTINATION_DIR/uniwiki" ]; then
 7+ echo "Directory exists"
 8+else
 9+ mkdir "$DESTINATION_DIR/uniwiki"
 10+ echo "Directory is created"
 11+fi
 12+
 13+
 14+cd $DESTINATION_DIR/uniwiki
 15+if test -n "$REVISION"; then
 16+ svn checkout -r $REVISION $repository
 17+else
 18+ svn checkout $repository
 19+fi
Property changes on: trunk/testing/installer/installfiles/extensions/Javascript.install/download.sh
___________________________________________________________________
Added: svn:executable
120 + *
Added: eol:native
221 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Javascript.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/uniwiki/
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/Javascript.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
16 + *
Added: eol:native
27 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Javascript.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/uniwiki/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/Javascript.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Added: eol:native
26 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Javascript.install/Javascript.settings.php
@@ -0,0 +1,6 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/uniwiki/Javascript/Javascript.php");
 5+
 6+
 7+?>
Property changes on: trunk/testing/installer/installfiles/extensions/Javascript.install/Javascript.settings.php
___________________________________________________________________
Added: eol:native
18 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Javascript.install/info
@@ -0,0 +1,3 @@
 2+Javascript:
 3+http://www.mediawiki.org/wiki/Extension:Javascript
 4+
Property changes on: trunk/testing/installer/installfiles/extensions/Javascript.install/info
___________________________________________________________________
Added: eol:native
15 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Javascript.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/uniwiki/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/Javascript.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Added: eol:native
211 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/CrossNamespaceLinks.install/info
@@ -0,0 +1,3 @@
 2+CrossNamespaceLinks
 3+===================
 4+http://www.mediawiki.org/wiki/Extension:CrossNamespaceLinks
Index: trunk/testing/installer/installfiles/extensions/CrossNamespaceLinks.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/CrossNamespaceLinks.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Index: trunk/testing/installer/installfiles/extensions/CrossNamespaceLinks.install/CrossNamespaceLinks.settings.php
@@ -0,0 +1,6 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/CrossNamespaceLinks/SpecialCrossNamespaceLinks.php");
 5+
 6+
 7+?>
Index: trunk/testing/installer/installfiles/extensions/CrossNamespaceLinks.install/download.sh
@@ -0,0 +1,10 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/$NAME"
 5+
 6+cd $DESTINATION_DIR
 7+if test -n "$REVISION"; then
 8+ svn checkout -r $REVISION $repository
 9+else
 10+ svn checkout $repository
 11+fi
Property changes on: trunk/testing/installer/installfiles/extensions/CrossNamespaceLinks.install/download.sh
___________________________________________________________________
Added: svn:executable
112 + *
Index: trunk/testing/installer/installfiles/extensions/CrossNamespaceLinks.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/CrossNamespaceLinks.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
16 + *
Index: trunk/testing/installer/installfiles/extensions/CrossNamespaceLinks.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/CrossNamespaceLinks.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Index: trunk/testing/installer/installfiles/extensions/xGenericEditPage.install/download.sh
@@ -0,0 +1,18 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/uniwiki/GenericEditPage"
 5+
 6+if [ -d "$DESTINATION_DIR/uniwiki" ]; then
 7+ echo "Directory exists"
 8+else
 9+ mkdir "$DESTINATION_DIR/uniwiki"
 10+ echo "Directory is created"
 11+fi
 12+
 13+
 14+cd $DESTINATION_DIR/uniwiki
 15+if test -n "$REVISION"; then
 16+ svn checkout -r $REVISION $repository
 17+else
 18+ svn checkout $repository
 19+fi
Property changes on: trunk/testing/installer/installfiles/extensions/xGenericEditPage.install/download.sh
___________________________________________________________________
Added: svn:executable
120 + *
Added: eol:native
221 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/xGenericEditPage.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/uniwiki/
 5+rm -rf GenericEditPage
Property changes on: trunk/testing/installer/installfiles/extensions/xGenericEditPage.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
16 + *
Added: eol:native
27 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/xGenericEditPage.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/uniwiki/GenericEditPage && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/xGenericEditPage.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Added: eol:native
26 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/xGenericEditPage.install/info
@@ -0,0 +1,3 @@
 2+GenericEditPage:
 3+http://www.mediawiki.org/wiki/Extension:GenericEditPage
 4+
Property changes on: trunk/testing/installer/installfiles/extensions/xGenericEditPage.install/info
___________________________________________________________________
Added: eol:native
15 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/xGenericEditPage.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/uniwiki/GenericEditPage
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/xGenericEditPage.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Added: eol:native
211 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/xGenericEditPage.install/xGenericEditPage.settings.php
@@ -0,0 +1,6 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/uniwiki/GenericEditPage/GenericEditPage.php");
 5+
 6+
 7+?>
Property changes on: trunk/testing/installer/installfiles/extensions/xGenericEditPage.install/xGenericEditPage.settings.php
___________________________________________________________________
Added: eol:native
18 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/OAI.install/OAI.settings.php
@@ -0,0 +1,12 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/OAI/OAIRepo.php");
 5+
 6+$oaiAgentRegex = '/experimental/';
 7+$oaiAuth = true; # broken... squid? php config? wtf
 8+$oaiAudit = true;
 9+$oaiAuditDatabase = 'oai';
 10+#$wgDebugLogGroups['oai'] = '/home/wikipedia/logs/oai.log';
 11+
 12+
 13+?>
Index: trunk/testing/installer/installfiles/extensions/OAI.install/download.sh
@@ -0,0 +1,10 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/$NAME"
 5+
 6+cd $DESTINATION_DIR
 7+if test -n "$REVISION"; then
 8+ svn checkout -r $REVISION $repository
 9+else
 10+ svn checkout $repository
 11+fi
Property changes on: trunk/testing/installer/installfiles/extensions/OAI.install/download.sh
___________________________________________________________________
Added: svn:executable
112 + *
Index: trunk/testing/installer/installfiles/extensions/OAI.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/OAI.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
16 + *
Index: trunk/testing/installer/installfiles/extensions/OAI.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/OAI.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Index: trunk/testing/installer/installfiles/extensions/OAI.install/AOT-uninstall.sql
@@ -0,0 +1,3 @@
 2+DROP TABLE thread;
 3+DROP TABLE historical_thread;
 4+DROP TABLE user_message_state;
\ No newline at end of file
Index: trunk/testing/installer/installfiles/extensions/OAI.install/setup.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+$MYSQL_COMMAND $DATABASE_NAME < $DESTINATION_DIR/$NAME/update_table.sql
Property changes on: trunk/testing/installer/installfiles/extensions/OAI.install/setup.sh
___________________________________________________________________
Added: svn:executable
15 + *
Index: trunk/testing/installer/installfiles/extensions/OAI.install/info
@@ -0,0 +1,2 @@
 2+OAIRepositoryp:
 3+http://www.mediawiki.org/wiki/Extension:OAIRepository
Index: trunk/testing/installer/installfiles/extensions/OAI.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/OAI.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Index: trunk/testing/installer/installfiles/extensions/InputBox.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/InputBox.install/uninstall.sh
___________________________________________________________________
Added: svn:eol-style
16 + native
Added: svn:executable
27 + *
Added: eol:native
38 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/InputBox.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/InputBox.install/is_installed.sh
___________________________________________________________________
Added: svn:eol-style
15 + native
Added: svn:executable
26 + *
Added: eol:native
37 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/InputBox.install/info
@@ -0,0 +1,5 @@
 2+InputBox
 3+========
 4+http://www.mediawiki.org/wiki/Extension:InputBox
 5+
 6+The Inputbox extension is a MediaWiki extension which adds already created HTML forms to wiki pages.
Property changes on: trunk/testing/installer/installfiles/extensions/InputBox.install/info
___________________________________________________________________
Added: svn:eol-style
17 + native
Added: eol:native
28 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/InputBox.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/InputBox.install/update.sh
___________________________________________________________________
Added: svn:eol-style
110 + native
Added: svn:executable
211 + *
Added: eol:native
312 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/InputBox.install/InputBox.settings.php
@@ -0,0 +1,6 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/InputBox/InputBox.php");
 5+
 6+
 7+?>
Property changes on: trunk/testing/installer/installfiles/extensions/InputBox.install/InputBox.settings.php
___________________________________________________________________
Added: svn:eol-style
18 + native
Added: eol:native
29 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/InputBox.install/download.sh
@@ -0,0 +1,10 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/$NAME"
 5+
 6+cd $DESTINATION_DIR
 7+if test -n "$REVISION"; then
 8+ svn checkout -r $REVISION $repository
 9+else
 10+ svn checkout $repository
 11+fi
Property changes on: trunk/testing/installer/installfiles/extensions/InputBox.install/download.sh
___________________________________________________________________
Added: svn:eol-style
112 + native
Added: svn:executable
213 + *
Added: eol:native
314 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/ConfirmAccount.install/ConfirmAccount-uninstall.sql
@@ -0,0 +1,2 @@
 2+DROP TABLE account_requests;
 3+DROP TABLE account_credentials;
Property changes on: trunk/testing/installer/installfiles/extensions/ConfirmAccount.install/ConfirmAccount-uninstall.sql
___________________________________________________________________
Added: eol:native
14 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/ConfirmAccount.install/ConfirmAccount.settings.php
@@ -0,0 +1,2 @@
 2+<?php
 3+require_once("$IP/extensions/ConfirmAccount/SpecialConfirmAccount.php");
Property changes on: trunk/testing/installer/installfiles/extensions/ConfirmAccount.install/ConfirmAccount.settings.php
___________________________________________________________________
Added: eol:native
14 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/ConfirmAccount.install/download.sh
@@ -0,0 +1,12 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/$NAME"
 5+
 6+cd $DESTINATION_DIR
 7+if test -n "$REVISION"; then
 8+ svn checkout -r $REVISION $repository
 9+else
 10+ svn checkout $repository
 11+fi
 12+
 13+$MYSQL_COMMAND $DATABASE_NAME < $NAME/ConfirmAccount.sql
Property changes on: trunk/testing/installer/installfiles/extensions/ConfirmAccount.install/download.sh
___________________________________________________________________
Added: svn:executable
114 + *
Added: eol:native
215 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/ConfirmAccount.install/uninstall.sh
@@ -0,0 +1,6 @@
 2+#!/bin/sh
 3+
 4+$MYSQL_COMMAND $DATABASE_NAME < $INSTALL_DIR/ConfirmAccount-uninstall.sql
 5+
 6+cd $DESTINATION_DIR
 7+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/ConfirmAccount.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
18 + *
Added: eol:native
29 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/ConfirmAccount.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/ConfirmAccount.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Added: eol:native
26 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/ConfirmAccount.install/info
@@ -0,0 +1,2 @@
 2+confirmaccount:
 3+http://www.mediawiki.org/wiki/Extension:ConfirmAccount
Property changes on: trunk/testing/installer/installfiles/extensions/ConfirmAccount.install/info
___________________________________________________________________
Added: eol:native
14 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/ConfirmAccount.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/ConfirmAccount.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Added: eol:native
211 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/ExternalData.install/download.sh
@@ -0,0 +1,10 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/$NAME"
 5+
 6+cd $DESTINATION_DIR
 7+if test -n "$REVISION"; then
 8+ svn checkout -r $REVISION $repository
 9+else
 10+ svn checkout $repository
 11+fi
Property changes on: trunk/testing/installer/installfiles/extensions/ExternalData.install/download.sh
___________________________________________________________________
Added: svn:executable
112 + *
Added: eol:native
213 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/ExternalData.install/ExternalData.settings.php
@@ -0,0 +1,6 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/ExternalData/ED_Settings.php");
 5+
 6+
 7+?>
Property changes on: trunk/testing/installer/installfiles/extensions/ExternalData.install/ExternalData.settings.php
___________________________________________________________________
Added: eol:native
18 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/ExternalData.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/ExternalData.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
16 + *
Added: eol:native
27 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/ExternalData.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/ExternalData.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Added: eol:native
26 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/ExternalData.install/info
@@ -0,0 +1,3 @@
 2+InputBox
 3+========
 4+http://www.mediawiki.org/wiki/Extension:ExternalData
Property changes on: trunk/testing/installer/installfiles/extensions/ExternalData.install/info
___________________________________________________________________
Added: eol:native
15 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/ExternalData.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/ExternalData.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Added: eol:native
211 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/MetavidWiki.install/info
@@ -0,0 +1,2 @@
 2+MetavidWiki
 3+http://metavidwiki.org
Index: trunk/testing/installer/installfiles/extensions/MetavidWiki.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/MetavidWiki.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Index: trunk/testing/installer/installfiles/extensions/MetavidWiki.install/download.sh
@@ -0,0 +1,10 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/$NAME"
 5+
 6+cd $DESTINATION_DIR
 7+if test -n "$REVISION"; then
 8+ svn checkout -r $REVISION $repository
 9+else
 10+ svn checkout $repository
 11+fi
Property changes on: trunk/testing/installer/installfiles/extensions/MetavidWiki.install/download.sh
___________________________________________________________________
Added: svn:executable
112 + *
Index: trunk/testing/installer/installfiles/extensions/MetavidWiki.install/MetavidWiki.settings.php
@@ -0,0 +1,18 @@
 2+<?PHP
 3+
 4+require_once( "$IP/extensions/ParserFunctions/ParserFunctions.php" );
 5+
 6+//set up namespace:
 7+$smwgNamespaceIndex=100;
 8+//set metavid namespace to smw namespace + 6
 9+$mvNamespaceIndex=$smwgNamespaceIndex + 6;
 10+include_once("$IP/extensions/MetavidWiki/includes/MV_Settings.php");
 11+
 12+//include SemanticMediaWiki settings (if used)
 13+include_once("$IP/extensions/SemanticMediaWiki/includes/SMW_Settings.php");
 14+enableSemantics('localhost');
 15+
 16+//include after enableSemantics to enable metavid Extension semantic wiki overrides
 17+enableMetavid();
 18+
 19+?>
Index: trunk/testing/installer/installfiles/extensions/MetavidWiki.install/uninstall.sh
@@ -0,0 +1,5 @@
 2+#!/bin/sh
 3+
 4+php $DESTINATION_DIR/$NAME/maintenance/SMW_setup.php --delete
 5+cd $DESTINATION_DIR
 6+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/MetavidWiki.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
17 + *
Index: trunk/testing/installer/installfiles/extensions/MetavidWiki.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/MetavidWiki.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Index: trunk/testing/installer/installfiles/extensions/MetavidWiki.install/setup.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+$MYSQL_COMMAND $DATABASE_NAME < $DESTINATION_DIR/$NAME/maintenance/mv_tables.sql
 5+
Property changes on: trunk/testing/installer/installfiles/extensions/MetavidWiki.install/setup.sh
___________________________________________________________________
Added: svn:executable
16 + *
Index: trunk/testing/installer/installfiles/extensions/uniwiki.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/uniwiki.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
16 + *
Added: eol:native
27 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/uniwiki.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/uniwiki.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Added: eol:native
26 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/uniwiki.install/uniwiki.settings.php
@@ -0,0 +1,16 @@
 2+<?PHP
 3+
 4+# All of UniWiki
 5+# =======
 6+$uw = "$IP/extensions/uniwiki";
 7+require_once("$uw/CssHooks/CssHooks.php");
 8+require_once("$uw/Javascript/Javascript.php");
 9+require_once("$uw/MooTools12core/MooTools12core.php");
 10+require_once("$uw/AutoCreateCategoryPages/AutoCreateCategoryPages.php");
 11+require_once("$uw/GenericEditPage/GenericEditPage.php");
 12+require_once("$uw/CatBoxAtTop/CatBoxAtTop.php");
 13+require_once("$uw/CustomToolbar/CustomToolbar.php");
 14+require_once("$uw/Layouts/Layouts.php");
 15+require_once("$uw/Authors/Authors.php");
 16+require_once("$uw/CreatePage/CreatePage.php");
 17+?>
Property changes on: trunk/testing/installer/installfiles/extensions/uniwiki.install/uniwiki.settings.php
___________________________________________________________________
Added: eol:native
118 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/uniwiki.install/info
@@ -0,0 +1,5 @@
 2+InputBox
 3+========
 4+http://www.mediawiki.org/wiki/Extension:InputBox
 5+
 6+The Inputbox extension is a MediaWiki extension which adds already created HTML forms to wiki pages.
Property changes on: trunk/testing/installer/installfiles/extensions/uniwiki.install/info
___________________________________________________________________
Added: eol:native
17 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/uniwiki.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/uniwiki.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Added: eol:native
211 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/uniwiki.install/download.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+svn checkout http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/uniwiki uniwiki
 5+
Property changes on: trunk/testing/installer/installfiles/extensions/uniwiki.install/download.sh
___________________________________________________________________
Added: svn:executable
16 + *
Added: eol:native
27 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/ImageMap.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/ImageMap.install/uninstall.sh
___________________________________________________________________
Added: svn:eol-style
16 + native
Added: svn:executable
27 + *
Added: eol:native
38 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/ImageMap.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/ImageMap.install/is_installed.sh
___________________________________________________________________
Added: svn:eol-style
15 + native
Added: svn:executable
26 + *
Added: eol:native
37 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/ImageMap.install/ImageMap.settings.php
@@ -0,0 +1,6 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/ImageMap/ImageMap.php");
 5+
 6+
 7+?>
Property changes on: trunk/testing/installer/installfiles/extensions/ImageMap.install/ImageMap.settings.php
___________________________________________________________________
Added: svn:eol-style
18 + native
Added: eol:native
29 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/ImageMap.install/info
@@ -0,0 +1,2 @@
 2+imagemap:
 3+http://www.mediawiki.org/wiki/Extension:ImageMap
Property changes on: trunk/testing/installer/installfiles/extensions/ImageMap.install/info
___________________________________________________________________
Added: svn:eol-style
14 + native
Added: eol:native
25 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/ImageMap.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/ImageMap.install/update.sh
___________________________________________________________________
Added: svn:eol-style
110 + native
Added: svn:executable
211 + *
Added: eol:native
312 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/ImageMap.install/download.sh
@@ -0,0 +1,10 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/$NAME"
 5+
 6+cd $DESTINATION_DIR
 7+if test -n "$REVISION"; then
 8+ svn checkout -r $REVISION $repository
 9+else
 10+ svn checkout $repository
 11+fi
Property changes on: trunk/testing/installer/installfiles/extensions/ImageMap.install/download.sh
___________________________________________________________________
Added: svn:eol-style
112 + native
Added: svn:executable
213 + *
Added: eol:native
314 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/GoogleGeocoder.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/GoogleGeocoder.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Index: trunk/testing/installer/installfiles/extensions/GoogleGeocoder.install/GoogleGeocoder.settings.php
@@ -0,0 +1,8 @@
 2+<?PHP
 3+
 4+$wgGoogleMapsKey = 'some_long_string_from_Google';
 5+
 6+require_once("$IP/extensions/GoogleGeocoder/GoogleGeocoder.php");
 7+
 8+
 9+?>
Index: trunk/testing/installer/installfiles/extensions/GoogleGeocoder.install/info
@@ -0,0 +1,2 @@
 2+GoogleGeocoder:
 3+http://www.mediawiki.org/wiki/Extension:Google_Geocoder
Index: trunk/testing/installer/installfiles/extensions/GoogleGeocoder.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/GoogleGeocoder.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Index: trunk/testing/installer/installfiles/extensions/GoogleGeocoder.install/download.sh
@@ -0,0 +1,13 @@
 2+#!/bin/sh
 3+
 4+#repository="$EXTENSIONS_SVN/$NAME"
 5+
 6+cd $DESTINATION_DIR
 7+
 8+svn checkout http://mediawiki-google-geocoder.googlecode.com/svn/trunk/ GoogleGeocoder
 9+
 10+#if test -n "$REVISION"; then
 11+# svn checkout -r $REVISION $repository
 12+#else
 13+# svn checkout $repository
 14+#fi
Property changes on: trunk/testing/installer/installfiles/extensions/GoogleGeocoder.install/download.sh
___________________________________________________________________
Added: svn:executable
115 + *
Index: trunk/testing/installer/installfiles/extensions/GoogleGeocoder.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/GoogleGeocoder.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
16 + *
Index: trunk/testing/installer/installfiles/extensions/ParserFunctions.install/ParserFunctions.settings.php
@@ -0,0 +1,5 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/ParserFunctions/ParserFunctions.php");
 5+
 6+?>
\ No newline at end of file
Property changes on: trunk/testing/installer/installfiles/extensions/ParserFunctions.install/ParserFunctions.settings.php
___________________________________________________________________
Added: svn:eol-style
17 + native
Added: eol:native
28 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/ParserFunctions.install/info
@@ -0,0 +1,2 @@
 2+parserfunctions:
 3+http://www.mediawiki.org/wiki/Extension:ParserFunctions
Property changes on: trunk/testing/installer/installfiles/extensions/ParserFunctions.install/info
___________________________________________________________________
Added: svn:eol-style
14 + native
Added: eol:native
25 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/ParserFunctions.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/ParserFunctions.install/update.sh
___________________________________________________________________
Added: svn:eol-style
110 + native
Added: svn:executable
211 + *
Added: eol:native
312 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/ParserFunctions.install/download.sh
@@ -0,0 +1,10 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/$NAME"
 5+
 6+cd $DESTINATION_DIR
 7+if test -n "$REVISION"; then
 8+ svn checkout -r $REVISION $repository
 9+else
 10+ svn checkout $repository
 11+fi
Property changes on: trunk/testing/installer/installfiles/extensions/ParserFunctions.install/download.sh
___________________________________________________________________
Added: svn:eol-style
112 + native
Added: svn:executable
213 + *
Added: eol:native
314 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/ParserFunctions.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/ParserFunctions.install/uninstall.sh
___________________________________________________________________
Added: svn:eol-style
16 + native
Added: svn:executable
27 + *
Added: eol:native
38 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/ParserFunctions.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/ParserFunctions.install/is_installed.sh
___________________________________________________________________
Added: svn:eol-style
15 + native
Added: svn:executable
26 + *
Added: eol:native
37 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Authors.install/Authors.settings.php
@@ -0,0 +1,6 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/uniwiki/Authors/Authors.php");
 5+
 6+
 7+?>
Index: trunk/testing/installer/installfiles/extensions/Authors.install/info
@@ -0,0 +1,3 @@
 2+CssHooks:
 3+http://www.mediawiki.org/wiki/Extension:Authors
 4+
Property changes on: trunk/testing/installer/installfiles/extensions/Authors.install/info
___________________________________________________________________
Added: eol:native
15 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Authors.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/uniwiki/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/Authors.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Added: eol:native
211 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Authors.install/download.sh
@@ -0,0 +1,18 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/uniwiki/$NAME"
 5+
 6+if [ -d "$DESTINATION_DIR/uniwiki" ]; then
 7+ echo "Directory exists"
 8+else
 9+ mkdir "$DESTINATION_DIR/uniwiki"
 10+ echo "Directory is created"
 11+fi
 12+
 13+
 14+cd $DESTINATION_DIR/uniwiki
 15+if test -n "$REVISION"; then
 16+ svn checkout -r $REVISION $repository
 17+else
 18+ svn checkout $repository
 19+fi
Property changes on: trunk/testing/installer/installfiles/extensions/Authors.install/download.sh
___________________________________________________________________
Added: svn:executable
120 + *
Added: eol:native
221 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Authors.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/uniwiki/
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/Authors.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
16 + *
Added: eol:native
27 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/Authors.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/uniwiki/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/Authors.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Added: eol:native
26 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticMediaWiki.install/SemanticMediaWiki.settings.php
@@ -0,0 +1,6 @@
 2+<?PHP
 3+
 4+include_once("$IP/extensions/SemanticMediaWiki/includes/SMW_Settings.php");
 5+enableSemantics($wgServerName);
 6+
 7+?>
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticMediaWiki.install/SemanticMediaWiki.settings.php
___________________________________________________________________
Added: svn:eol-style
18 + native
Added: eol:native
29 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticMediaWiki.install/download.sh
@@ -0,0 +1,10 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/$NAME"
 5+
 6+cd $DESTINATION_DIR
 7+if test -n "$REVISION"; then
 8+ svn checkout -r $REVISION $repository
 9+else
 10+ svn checkout $repository
 11+fi
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticMediaWiki.install/download.sh
___________________________________________________________________
Added: svn:eol-style
112 + native
Added: svn:executable
213 + *
Added: eol:native
314 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticMediaWiki.install/uninstall.sh
@@ -0,0 +1,5 @@
 2+#!/bin/sh
 3+
 4+php $DESTINATION_DIR/$NAME/maintenance/SMW_setup.php --delete
 5+cd $DESTINATION_DIR
 6+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticMediaWiki.install/uninstall.sh
___________________________________________________________________
Added: svn:eol-style
17 + native
Added: svn:executable
28 + *
Added: eol:native
39 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticMediaWiki.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticMediaWiki.install/is_installed.sh
___________________________________________________________________
Added: svn:eol-style
15 + native
Added: svn:executable
26 + *
Added: eol:native
37 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticMediaWiki.install/setup.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+php $DESTINATION_DIR/$NAME/maintenance/SMW_setup.php
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticMediaWiki.install/setup.sh
___________________________________________________________________
Added: svn:eol-style
15 + native
Added: svn:executable
26 + *
Added: eol:native
37 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticMediaWiki.install/info
@@ -0,0 +1,2 @@
 2+SemanticMediaWiki:
 3+http://semantic-mediawiki.org
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticMediaWiki.install/info
___________________________________________________________________
Added: svn:eol-style
14 + native
Added: eol:native
25 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/SemanticMediaWiki.install/update.sh
@@ -0,0 +1,9 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
 10+php maintenance/SMW_setup.php
Property changes on: trunk/testing/installer/installfiles/extensions/SemanticMediaWiki.install/update.sh
___________________________________________________________________
Added: svn:eol-style
111 + native
Added: svn:executable
212 + *
Added: eol:native
313 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/CustomToolbar.install/download.sh
@@ -0,0 +1,18 @@
 2+#!/bin/sh
 3+
 4+repository="$EXTENSIONS_SVN/uniwiki/$NAME"
 5+
 6+if [ -d "$DESTINATION_DIR/uniwiki" ]; then
 7+ echo "Directory exists"
 8+else
 9+ mkdir "$DESTINATION_DIR/uniwiki"
 10+ echo "Directory is created"
 11+fi
 12+
 13+
 14+cd $DESTINATION_DIR/uniwiki
 15+if test -n "$REVISION"; then
 16+ svn checkout -r $REVISION $repository
 17+else
 18+ svn checkout $repository
 19+fi
Property changes on: trunk/testing/installer/installfiles/extensions/CustomToolbar.install/download.sh
___________________________________________________________________
Added: svn:executable
120 + *
Added: eol:native
221 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/CustomToolbar.install/CustomToolbar.settings.php
@@ -0,0 +1,6 @@
 2+<?PHP
 3+
 4+require_once("$IP/extensions/uniwiki/CustomToolbar/CustomToolbar.php");
 5+
 6+
 7+?>
Property changes on: trunk/testing/installer/installfiles/extensions/CustomToolbar.install/CustomToolbar.settings.php
___________________________________________________________________
Added: eol:native
18 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/CustomToolbar.install/uninstall.sh
@@ -0,0 +1,4 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/uniwiki/
 5+rm -rf $NAME
Property changes on: trunk/testing/installer/installfiles/extensions/CustomToolbar.install/uninstall.sh
___________________________________________________________________
Added: svn:executable
16 + *
Added: eol:native
27 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/CustomToolbar.install/is_installed.sh
@@ -0,0 +1,3 @@
 2+#!/bin/sh
 3+
 4+test -d $DESTINATION_DIR/uniwiki/$NAME && echo "true" || echo "false"
Property changes on: trunk/testing/installer/installfiles/extensions/CustomToolbar.install/is_installed.sh
___________________________________________________________________
Added: svn:executable
15 + *
Added: eol:native
26 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/CustomToolbar.install/info
@@ -0,0 +1,3 @@
 2+CustomToolbar:
 3+http://www.mediawiki.org/wiki/Extension:CustomToolbar
 4+
Property changes on: trunk/testing/installer/installfiles/extensions/CustomToolbar.install/info
___________________________________________________________________
Added: eol:native
15 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/installfiles/extensions/CustomToolbar.install/update.sh
@@ -0,0 +1,8 @@
 2+#!/bin/sh
 3+
 4+cd $DESTINATION_DIR/uniwiki/$NAME
 5+if test -n "$REVISION"; then
 6+ svn update -r $REVISION
 7+else
 8+ svn update
 9+fi
Property changes on: trunk/testing/installer/installfiles/extensions/CustomToolbar.install/update.sh
___________________________________________________________________
Added: svn:executable
110 + *
Added: eol:native
211 + Authors.install/Authors.settings.php
Index: trunk/testing/installer/toolkit_installer.py
@@ -0,0 +1,12 @@
 2+import settings_handler as settings
 3+import os, os.path, shutil
 4+import subprocess
 5+
 6+from installation_system import Installation_System
 7+
 8+class Toolkit_Installer(Installation_System):
 9+ system_name='toolkit'
 10+ def __init__(self,instance=None):
 11+ Installation_System.__init__(self, instance)
 12+ self.destination_dir=settings.toolkit_dir
 13+
Property changes on: trunk/testing/installer/toolkit_installer.py
___________________________________________________________________
Added: svn:eol-style
114 + native
Index: trunk/testing/installer/Logo_gimp.xcf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/testing/installer/Logo_gimp.xcf
___________________________________________________________________
Added: svn:mime-type
215 + application/octet-stream
Index: trunk/testing/installer/installation_system.py
@@ -0,0 +1,356 @@
 2+# This software, copyright (C) 2008-2009 by Wikiation.
 3+# This software is developed by Kim Bruning.
 4+#
 5+# Distributed under the terms of the MIT license.
 6+
 7+import settings_handler as settings
 8+import os, os.path, shutil
 9+import subprocess
 10+from tags import Tags
 11+
 12+
 13+class Installer_Exception(Exception):
 14+ pass
 15+
 16+class Installation_System(object):
 17+ """An Abstract Installation System. Don't instantiate this class directly.
 18+ An installation system understands how to install and uninstall
 19+ 'things' (instances). An instance might be a particular wiki
 20+ (in the case of the mediawiki installer) or a particular extension
 21+ in that wiki (extension installer), or perhaps a tool from the
 22+ toolkit.
 23+ Next to installing and uninstalling, an installer can also determine
 24+ the status of an instance (installed or uninstalled), and can provide
 25+ lists of instances that are available or installed"""
 26+ system_name=None
 27+ destination_dir=None
 28+
 29+ def __init__(self,instance=None):
 30+ self.subsystemdir=os.path.join(settings.installfiles, self.system_name)
 31+ self.destination_dir=None
 32+ self.instance=None
 33+ self.as_alias=None
 34+ self.revision=None
 35+ self.tag=None
 36+ if instance:
 37+ self.set_instance(instance)
 38+
 39+ def set_instance(self,instance):
 40+ self.instance=instance
 41+
 42+ def get_installers(self):
 43+ """list the installers capable of installing an instance"""
 44+ installers=os.listdir(self.subsystemdir)
 45+ installers2=[]
 46+ for line in installers:
 47+ if line.endswith(".install"):
 48+ installers2.append(line.replace(".install",""))
 49+
 50+ installers2.sort()
 51+ return installers2
 52+
 53+ # XXX This should be a mixin
 54+ def get_revisions(self,installer_name):
 55+ """list the revisions a particular installer can install"""
 56+
 57+ if not installer_name:
 58+ raise Installer_Exception("What installer would you like to know the available revisions for?")
 59+
 60+ if not self.exists(installer_name):
 61+ raise Installer_Exception("Can't find installer "+installer_name)
 62+
 63+ return self._get_revisions(installer_name)
 64+
 65+ # XXX this should be a mixin
 66+ def _get_revisions(self, installer_name):
 67+ """actually perform the task of getting revisions for get_revisions
 68+ First checks to see if someone has provided a script to determine
 69+ revisions. If not, falls back to internal method _get_revisions_generic."""
 70+ if self.can_exec(installer_name,'get_revisions'):
 71+ revisions_string=self.exec_task(installer_name,'get_revisions')
 72+ return revisions_string.split('\n')
 73+ else:
 74+ return self._get_revisions_generic(installer_name)
 75+
 76+ return None
 77+
 78+ # XXX should be a mixin
 79+ def get_tags(self, installer_name):
 80+ """get list of tags available for this installer."""
 81+ if not installer_name:
 82+ raise Installer_Exception("What extension would you like to know the available revisions for?")
 83+
 84+ return Tags().gettags(installer_name)
 85+
 86+
 87+ def get_svnbase(self):
 88+ return None
 89+
 90+ def _get_revisions_generic(self, installer):
 91+ """directly query svn to get a list of available revisions. Usually this is adequate."""
 92+
 93+ loglist=self._get_revisions_generic_raw(installer)
 94+ if loglist:
 95+ revs=[]
 96+ for line in loglist:
 97+ if line.startswith("r"):
 98+ rev=line.split()[0] #get the first value
 99+ revs.append(rev[1:]) # strip off the leading r
 100+
 101+ return revs
 102+
 103+ return None # just to make explicit what happens otherwise.
 104+
 105+ def _get_revisions_generic_raw(self, installer):
 106+ """do the actual svn query"""
 107+ svnbase=self.get_svnbase()
 108+ if svnbase:
 109+ location=svnbase+"/"+installer
 110+ loglist=list(os.popen('svn log --quiet '+location))
 111+ # example excerpt of data generated by the above line
 112+ # ------------------------------------------------------------------------
 113+ # r47364 | kim | 2009-02-17 17:13:44 +0100 (Tue, 17 Feb 2009)
 114+ # ------------------------------------------------------------------------
 115+ # r47348 | kim | 2009-02-17 00:40:59 +0100 (Tue, 17 Feb 2009)
 116+ # ------------------------------------------------------------------------
 117+ # r47345 | kim | 2009-02-17 00:29:07 +0100 (Tue, 17 Feb 2009)
 118+ # |-----|
 119+ # we need the numbers after the first r on the line
 120+ return loglist
 121+
 122+
 123+ def exists(self,installer_name):
 124+ """checks to see if a particular installer exists"""
 125+ return installer_name in self.get_installers()
 126+
 127+ def installdir_name(self, installer_name):
 128+ """returns the location of the .install directory for the given installer_name.
 129+ An installer directory is where we store all the scripts to install one particular
 130+ extension, tool from the toolkit, or etc. """
 131+ return os.path.join(self.subsystemdir, installer_name+".install")
 132+
 133+
 134+ def exec_task(self, installer_name, task, env=None):
 135+ """attempt to execute a file starting with the name of task[0] (ie. task.sh, task.py, task.pl, etc)
 136+ * We look for the files in the relevant .install directoty (see also: installdir_name() )
 137+ * task is name of some task. If task requires args, provide a list, task[0] is name of task, task[1:] is args
 138+ * if no such file exists or file fails to run, return an exception.
 139+ * if more than one match exists, one match is picked
 140+ Exactly Which match is picked is not defined
 141+ (so Don't Do That)
 142+ * Quite some information is passed via environment vars. Set debug=True in settings.py to take a look.
 143+ returns
 144+ * stdout returned by task command if successful
 145+ * None if task not available
 146+
 147+ raises exception if problems occur
 148+ """
 149+
 150+ installdir=self.installdir_name(installer_name)
 151+
 152+ if env==None:
 153+ env={}
 154+
 155+ env=dict(env)
 156+
 157+ env["INSTALL_DIR"]=installdir
 158+ env["DESTINATION_DIR"]=self.destination_dir
 159+ env["NAME"]=installer_name
 160+ env["REVISION"]=self.revision or ''
 161+ env["TAG"]=self.tag or ''
 162+ env["MYSQL_COMMAND"]=settings.mysql_command
 163+
 164+ if isinstance(task,str):
 165+ task2=[task]
 166+ else:
 167+ task2=list(task)
 168+
 169+ dirlist=os.listdir(installdir)
 170+ for filename in dirlist:
 171+ if filename.startswith(task2[0]):
 172+ task2[0]=os.path.join(installdir,filename)
 173+ try:
 174+ if settings.debug:
 175+ print " === " +task+" === "
 176+ print "environment",env
 177+ print "task",task2
 178+
 179+ process=subprocess.Popen(task2 ,stdout=subprocess.PIPE, env=env)
 180+ stdout,stderr=process.communicate()
 181+
 182+ if settings.debug:
 183+ print "stdout:",stdout
 184+ print "stderr:",stderr
 185+ print
 186+
 187+ except Exception, e:
 188+ #reraise with task and env info included, to give us a clue where we went wrong
 189+ raise Exception((e,task2,env))
 190+ return stdout
 191+ return None
 192+
 193+ def can_exec(self, installer_name, task):
 194+ """checks to see if there is an executable script available for the given task
 195+ It's usually a good idea to call this before running exec_task
 196+
 197+ returns: True if script exists"""
 198+ installdir=self.installdir_name(installer_name)
 199+ dirlist=os.listdir(installdir)
 200+ for filename in dirlist:
 201+ if filename.startswith(task) and os.access(os.path.join(installdir,filename), os.X_OK):
 202+ return True
 203+
 204+ return False
 205+
 206+
 207+ def get_installed(self):
 208+ """return a list of installed items"""
 209+ installed=[]
 210+ for installer_name in self.get_installers():
 211+ if self.is_installed(installer_name):
 212+ installed.append(installer_name)
 213+
 214+ return installed
 215+
 216+ def is_installed(self,installer_name):
 217+ """return true if the particular item is already installed"""
 218+ if not self.destination_dir:
 219+ raise Installer_Exception("Installation_system: Internal Error: No destination_dir provided")
 220+
 221+ if self.can_exec(installer_name,"is_installed"):
 222+ rv=self.exec_task(installer_name,"is_installed")
 223+ if rv==None:
 224+ print "Warning: "+installer_name+" does not support 'is_installed'."
 225+ elif "true" in rv:
 226+ return True
 227+ elif "false" in rv:
 228+ return False
 229+ else:
 230+ print "Warning: "+installer_name+" 'is_installed' provides unexpected output "
 231+ else:
 232+ print "Warning: "+installer_name+" has some problems with 'is_installed'."
 233+
 234+ return None
 235+
 236+
 237+ def get_info(self,installer_name):
 238+ """print out information about the target from the info file"""
 239+ info_filename=os.path.join(self.installdir_name(installer_name),"info")
 240+ if not self.exists(installer_name):
 241+ raise Installer_Exception("Can't find installer "+installer_name)
 242+
 243+ if os.path.exists(info_filename):
 244+ print file(info_filename).read()
 245+ return True
 246+ else:
 247+ print "This installer provides no information."
 248+
 249+ def install (self, installer_name):
 250+ """Actually install the item
 251+ returns True if installation successful, false if not, and None if unknown"""
 252+ if not self.exists(installer_name):
 253+ raise Installer_Exception("Can't find installer "+installer_name)
 254+
 255+ if self.is_installed(installer_name):
 256+ raise Installer_Exception(installer_name+" already installed.")
 257+ #try:
 258+ self.download(installer_name)
 259+ self.install_settings(installer_name)
 260+ self.setup(installer_name)
 261+ # ...
 262+ #except Installer_Exception:
 263+ # pass
 264+ #except:
 265+ # raise
 266+
 267+ #query the installer to see if ot thinks the component is properly installed
 268+ # any flaws at this point are the fault of the installer :-P
 269+ return self.is_installed(installer_name)
 270+
 271+ def setup(self, installer_name, destination_dir=None):
 272+ """perform actions needed to setup an extension post-download"""
 273+
 274+ destination_dir=destination_dir or self.destination_dir
 275+ if not destination_dir:
 276+ raise Exception("Installation_system: Internal Error: No destination_dir provided")
 277+
 278+ if not self.exists(installer_name):
 279+ raise Installer_Exception("Can't find installer "+installer_name)
 280+
 281+ self._setup(installer_name,destination_dir)
 282+
 283+ def _setup(self, installer_name, destination_dir):
 284+ """actually perform the setup required by setup (do not call directly)"""
 285+ #silently fail if there's no setup script
 286+ if not self.can_exec(installer_name,"setup"):
 287+ return
 288+
 289+ self.exec_task(installer_name,"setup")
 290+
 291+ def download (self, installer_name, destination_dir=None):
 292+ """perform actions needed to download all the files we need"""
 293+
 294+ destination_dir=destination_dir or self.destination_dir
 295+ if not destination_dir:
 296+ raise Exception("Installation_system: Internal Error: No destination_dir provided")
 297+
 298+ if not self.exists(installer_name):
 299+ raise Installer_Exception("Can't find installer "+installer_name)
 300+
 301+ self._download(installer_name, destination_dir)
 302+
 303+ def _download(self, installer_name, destination_dir):
 304+ """actually perform the download for download() (do not call directly)"""
 305+ # if a particular step in the install procedure is not provided
 306+ # we simply skip it
 307+ if not self.can_exec(installer_name,"download"):
 308+ print "notice: cannot execute download script for "+installer_name
 309+ return
 310+
 311+ self.exec_task(installer_name,"download")
 312+
 313+ def install_settings(self,installer_name):
 314+ """do setup for settings files, etc... override to do something useful"""
 315+ pass
 316+
 317+ def uninstall_settings(self,installer_name):
 318+ """remove settings files etc... override to do something useful"""
 319+ pass
 320+
 321+ def uninstall (self, installer_name, destination_dir=None):
 322+ """uninstall the component"""
 323+
 324+ destination_dir=destination_dir or self.destination_dir
 325+ if not destination_dir:
 326+ raise Installer_Exception("Installation_system: Internal Error: No destination_dir provided")
 327+
 328+ if not self.exists(installer_name):
 329+ raise Installer_Exception("Can't find installer "+str(installer_name))
 330+
 331+ if not self.is_installed(installer_name):
 332+ print installer_name+" does not appear to be installed"
 333+ return
 334+
 335+
 336+ self._uninstall(installer_name, destination_dir)
 337+
 338+ self.uninstall_settings(installer_name)
 339+ # use is_installed to determine success.
 340+ return not self.is_installed(installer_name)
 341+
 342+ def _uninstall(self,installer_name, destination_dir):
 343+ """actually uninstall the component (do not call directly)"""
 344+ # if a particular step in the install procedure is not provided
 345+ # we simply skip it
 346+ if self.can_exec(installer_name,"uninstall"):
 347+ self.exec_task(installer_name,"uninstall")
 348+
 349+ def get_extensionsdir(self):
 350+ """return the relevant extensionsdir to look in"""
 351+ extensionsdir=None
 352+ if self.tag:
 353+ extensionsdir=settings.tagsdir+"/"+self.tag+"/"+settings.extensionssubdir
 354+ else:
 355+ extensionsdir=settings.extensionsdir
 356+
 357+ return extensionsdir
Property changes on: trunk/testing/installer/installation_system.py
___________________________________________________________________
Added: svn:eol-style
1358 + native
Index: trunk/testing/util/environment/Uniwiki.sh
@@ -0,0 +1,21 @@
 2+#!/bin/sh
 3+
 4+./installer.py uninstall mediawiki:UW_testsystem
 5+
 6+Tag=REL1_13_3
 7+
 8+./installer.py install mediawiki:$Tag as UW_testsystem
 9+
 10+./installer.py install extension:Configure tag $Tag in UW_testsystem
 11+
 12+./installer.py install extension:CssHooks in UW_testsystem
 13+./installer.py install extension:Javascript in UW_testsystem
 14+./installer.py install extension:MooTools12core in UW_testsystem
 15+./installer.py install extension:AutoCreateCategoryPages in UW_testsystem
 16+./installer.py install extension:GenericEditPage in UW_testsystem
 17+./installer.py install extension:CatBoxAtTop in UW_testsystem
 18+./installer.py install extension:CustomToolbar in UW_testsystem
 19+./installer.py install extension:Layouts in UW_testsystem
 20+./installer.py install extension:Authors in UW_testsystem
 21+./installer.py install extension:CreatePage in UW_testsystem
 22+
Property changes on: trunk/testing/util/environment/Uniwiki.sh
___________________________________________________________________
Added: svn:executable
123 +
Index: trunk/testing/util/environment/Wikipedia.sh
@@ -0,0 +1,89 @@
 2+#!/bin/sh
 3+cd ../../installer
 4+
 5+revision="48811"
 6+echo $revision
 7+
 8+#CentralAuth and GlobalBlocking fail ... global ?
 9+
 10+./installer.py uninstall mediawiki:WMF_testsystem
 11+
 12+./installer.py install mediawiki: revision $revision as WMF_testsystem
 13+
 14+./installer.py install naive:CategoryTree revision $revision in WMF_testsystem
 15+#./installer.py install naive:CentralAuth revision $revision in WMF_testsystem
 16+
 17+# needs to run an install script to add table(s) to database
 18+./installer.py install extension:CheckUser revision $revision in WMF_testsystem
 19+
 20+#:{{done}} -- this extension shows twice with different numbers.. this is the highest
 21+./installer.py install naive:Cite revision $revision in WMF_testsystem
 22+# SpecialCite shares the Cite directory in SVN. We split them into two directories
 23+./installer.py install extension:SpecialCite revision $revision in WMF_testsystem
 24+
 25+./installer.py install naive:Collection revision $revision in WMF_testsystem
 26+
 27+# non standard include
 28+./installer.py install extension:CrossNamespaceLinks revision $revision in WMF_testsystem
 29+
 30+./installer.py install naive:ExpandTemplates revision $revision in WMF_testsystem
 31+
 32+# this extension is marked as obsolete
 33+./installer.py install naive:Makebot revision $revision in WMF_testsystem
 34+# this extension is marked as obsolete
 35+#./installer.py install naive:Makesysop revision $revision in WMF_testsystem
 36+
 37+# this is not an extension that you can install from SVN
 38+./installer.py install extension:OAI revision $revision in WMF_testsystem
 39+
 40+# needs to be an extension as it requires new tables and stuff
 41+./installer.py install extension:Oversight revision $revision in WMF_testsystem
 42+
 43+# needs to be an extension as it requires a non standard entry in LocalSettings
 44+./installer.py install extension:Renameuser revision $revision in WMF_testsystem
 45+
 46+./installer.py install naive:SiteMatrix revision $revision in WMF_testsystem
 47+./installer.py install naive:CharInsert revision revision in WMF_testsystem
 48+
 49+# requires ploticus, requires settings
 50+#./installer.py install naive:EasyTimeline revision $revision in WMF_testsystem
 51+
 52+./installer.py install extension:ImageMap revision $revision in WMF_testsystem
 53+./installer.py install extension:InputBox revision $revision in WMF_testsystem
 54+./installer.py install extension:ParserFunctions in WMF_testsystem
 55+./installer.py install naive:Poem revision $revision in WMF_testsystem
 56+./installer.py install naive:SyntaxHighlight_GeSHi revision $revision in WMF_testsystem
 57+./installer.py install naive:wikihiero revision $revision in WMF_testsystem
 58+./installer.py install extension:OggHandler revision $revision in WMF_testsystem
 59+
 60+# AntiSpoof needs to be installed prior to AbuseFilters
 61+./installer.py install naive:AntiSpoof revision $revision in WMF_testsystem
 62+
 63+# needs further configurations.. needs to have a file added
 64+#./installer.py install naive:AbuseFilter revision $revision in WMF_testsystem
 65+
 66+./installer.py install naive:AntiBot revision $revision in WMF_testsystem
 67+./installer.py install naive:AssertEdit revision $revision in WMF_testsystem
 68+./installer.py install naive:CentralNotice revision $revision in WMF_testsystem
 69+./installer.py install naive:ConfirmEdit revision $revision in WMF_testsystem
 70+./installer.py install naive:DismissableSiteNotice revision $revision in WMF_testsystem
 71+./installer.py install naive:Gadgets revision $revision in WMF_testsystem
 72+
 73+# This expects global pre-exising functionality
 74+#./installer.py install naive:GlobalBlocking revision $revision in WMF_testsystem
 75+
 76+./installer.py install naive:MWSearch revision $revision in WMF_testsystem
 77+./installer.py install naive:OpenSearchXml revision $revision in WMF_testsystem
 78+./installer.py install naive:SimpleAntiSpam in WMF_testsystem
 79+./installer.py install naive:SpamBlacklist revision $revision in WMF_testsystem
 80+./installer.py install naive:TitleBlacklist in WMF_testsystem
 81+./installer.py install extension:TitleKey revision $revision in WMF_testsystem
 82+./installer.py install naive:TorBlock revision $revision in WMF_testsystem
 83+
 84+# result is an exception error
 85+#./installer.py install naive:TrustedXFF revision $revision in WMF_testsystem
 86+
 87+./installer.py install naive:UsernameBlacklist in WMF_testsystem
 88+./installer.py install naive:WikimediaMessages in WMF_testsystem
 89+
 90+
Property changes on: trunk/testing/util/environment/Wikipedia.sh
___________________________________________________________________
Added: svn:executable
191 +
Index: trunk/testing/util/environment/Metavid.sh
@@ -0,0 +1,21 @@
 2+#!/bin/sh
 3+
 4+revision=48811
 5+
 6+
 7+./installer.py uninstall mediawiki:MetavidWiki
 8+
 9+./installer.py install mediawiki: revision 48941 as MetavidWiki
 10+
 11+./installer.py install extension:Configure in MetavidWiki
 12+
 13+./installer.py install extension:SemanticMediaWiki in MetavidWiki
 14+./installer.py install extension:MetavidWiki in MetavidWiki
 15+
 16+./installer.py install extension:ParserFunctions in MetavidWiki
 17+./installer.py install extension:ExternalData in MetavidWiki
 18+#./installer.py install extension:Cite in MetavidWiki
 19+
 20+./installer.py install naive:ConfirmEdit in MetavidWiki
 21+./installer.py install extension:OggHandler in MetavidWiki
 22+
Property changes on: trunk/testing/util/environment/Metavid.sh
___________________________________________________________________
Added: svn:executable
123 +
Index: trunk/testing/util/environment/Referata.sh
@@ -0,0 +1,30 @@
 2+#!/bin/sh
 3+
 4+./installer.py uninstall mediawiki:SMW_testsystem
 5+
 6+Tag=REL1_14_0
 7+
 8+./installer.py install mediawiki:$Tag as SMW_testsystem
 9+
 10+./installer.py install extension:Configure in SMW_testsystem
 11+
 12+./installer.py install extension:SemanticMediaWiki in SMW_testsystem
 13+./installer.py install extension:SemanticForms in SMW_testsystem
 14+./installer.py install extension:SemanticDrilldown in SMW_testsystem
 15+./installer.py install extension:SemanticCompoundQueries in SMW_testsystem
 16+./installer.py install extension:SemanticGoogleMaps in SMW_testsystem
 17+./installer.py install extension:SemanticResultFormats in SMW_testsystem
 18+
 19+./installer.py install extension:ExternalData in SMW_testsystem
 20+./installer.py install extension:DataTransfer in SMW_testsystem
 21+./installer.py install extension:ParserFunctions in SMW_testsystem
 22+./installer.py install extension:Renameuser revision 37407 in SMW_testsystem
 23+./installer.py install naive:ReplaceText in SMW_testsystem
 24+./installer.py install naive:Cite revision 37577 in SMW_testsystem
 25+./installer.py install extension:HeaderTabs in SMW_testsystem
 26+./installer.py install naive:StringFunctions in SMW_testsystem
 27+./installer.py install naive:ConfirmEdit in SMW_testsystem
 28+./installer.py install extension:GoogleGeocoder in SMW_testsystem
 29+./installer.py install naive:Widgets in SMW_testsystem
 30+
 31+./installer.py install naive:DeleteBatch tag $Tag in SMW_testsystem
Property changes on: trunk/testing/util/environment/Referata.sh
___________________________________________________________________
Added: svn:executable
132 +
Index: trunk/testing/util/scripted_clean.py
@@ -0,0 +1,90 @@
 2+#!/usr/bin/env python
 3+import sys
 4+import os, os.path
 5+sys.path.append("..")
 6+
 7+
 8+import wiki_works
 9+from installer.scripted_installer import Scripted_Installer
 10+from installer.mediawiki_installer import Mediawiki_Installer
 11+from installer.isolation import check_isolation,difftests
 12+# settings
 13+
 14+target_wiki='test'
 15+target_wiki2='test2'
 16+resultfile=file("scripted_results","w")
 17+mw_revision="REL1_14_0"
 18+
 19+def test_extension(extension_name):
 20+ result=None
 21+ try:
 22+ installer=Scripted_Installer()
 23+ installer.set_instance(target_wiki)
 24+ installer.install(extension_name)
 25+ result=wiki_works.wiki_works(target_wiki)
 26+ print "result=",result
 27+ installer.uninstall(extension_name)
 28+
 29+ except Exception,e:
 30+ print e
 31+
 32+ return result
 33+
 34+def newenvironment():
 35+ """setup a base environment, with a backup wiki in case an extension actually fails"""
 36+ mwinstaller=Mediawiki_Installer()
 37+
 38+ #remove old stuff
 39+ try:
 40+ mwinstaller.uninstall(target_wiki)
 41+ except Exception,e: #?
 42+ raise e
 43+
 44+ try:
 45+ mwinstaller.uninstall(target_wiki2)
 46+ except Exception,e: #?
 47+ raise e
 48+ mwinstaller.install(installer_name=mw_revision, as_alias=target_wiki)
 49+ difftests(target_wiki)
 50+ mwinstaller.duplicate(target_wiki, target_wiki2)
 51+
 52+
 53+def clear():
 54+ """When an extension fails to uninstall cleanly, uninstall the entire wiki, and
 55+ copy the backup back in its place"""
 56+ mwinstaller=Mediawiki_Installer()
 57+ mwinstaller.uninstall(target_wiki)
 58+ mwinstaller.duplicate(target_wiki2, target_wiki)
 59+
 60+
 61+def is_clean():
 62+ return check_isolation(["check_isolation",target_wiki])
 63+
 64+
 65+
 66+if __name__=="__main__":
 67+ newenvironment()
 68+ installer=Scripted_Installer()
 69+ installer.set_instance(target_wiki)
 70+ scripted_extensions=installer.get_installers()
 71+ for extension_name in scripted_extensions:
 72+ print extension_name,
 73+ result=test_extension(extension_name)
 74+ print result
 75+ r="Unknown"
 76+ if result:
 77+ r="SCRIPTED_INSTALL_SEEMS_OK"
 78+ else:
 79+ r="SCRIPTED_INSTALL_BREAKS"
 80+
 81+ clean=is_clean()
 82+ if clean:
 83+ r+=" UNINSTALL_CLEAN"
 84+ else:
 85+ r+=" UNINSTALL_DIRTY"
 86+ clear()
 87+
 88+
 89+ resultfile.write("* "+extension_name+" "+r+"\n")
 90+ resultfile.flush()
 91+ resultfile.close()
Property changes on: trunk/testing/util/scripted_clean.py
___________________________________________________________________
Added: svn:executable
192 +
Index: trunk/testing/util/allextension.py
@@ -0,0 +1,44 @@
 2+#!/usr/bin/env python
 3+import sys
 4+import os, os.path
 5+sys.path.append("..")
 6+
 7+
 8+import wiki_works
 9+from installer.extension_installer2 import extension_installer2
 10+# settings
 11+
 12+target_wiki='test'
 13+resultfile=file("extension_results","w")
 14+
 15+
 16+def test_extension(extension_name):
 17+ result=None
 18+ try:
 19+ installer=extension_installer2()
 20+ installer.set_instance(target_wiki)
 21+ installer.install(extension_name)
 22+ result=wiki_works.wiki_works(target_wiki)
 23+ print "result=",result
 24+ installer.uninstall(extension_name)
 25+ except Exception,e:
 26+ print e
 27+
 28+ return result
 29+
 30+if __name__=="__main__":
 31+ installer=extension_installer2()
 32+ installer.set_instance(target_wiki)
 33+ extensions=installer.get_installers()
 34+ for extension_name in extensions:
 35+ print extension_name,
 36+ result=test_extension(extension_name)
 37+ print result
 38+ r="Unknown"
 39+ if result:
 40+ r="EXTENSION_INSTALL_SEEMS_OK"
 41+ else:
 42+ r="EXTENSION_INSTALL_BREAKS"
 43+ resultfile.write("* "+extension_name+" "+r+"\n")
 44+ resultfile.flush()
 45+ resultfile.close()
Property changes on: trunk/testing/util/allextension.py
___________________________________________________________________
Added: svn:executable
146 + *
Index: trunk/testing/util/wiki_works.py
@@ -0,0 +1,57 @@
 2+#!/usr/bin/python
 3+import sys, os.path
 4+sys.path.append("..")
 5+
 6+import installer.settings as installersettings
 7+import wikiation_exttest.settings #for some reason
 8+from wikiation_exttest.logindata import LoginData
 9+
 10+
 11+
 12+def do_test(login):
 13+ try:
 14+ site=login.login()
 15+ ver=site.live_version()
 16+ if isinstance(ver,list):
 17+ return True
 18+ else:
 19+ return False
 20+ except Exception, e:
 21+ return False
 22+ # or, if in doubt
 23+ return False # anyway
 24+
 25+def make_login(target):
 26+ login=LoginData(
 27+ name="Does it blend",
 28+ protocol='http',
 29+ server='localhost',
 30+ scriptpath=installersettings.base_scriptpath+target,
 31+ lang='en',
 32+ encoding='utf-8',
 33+ user='admin',
 34+ password='admin1234'
 35+ )
 36+ return login
 37+
 38+
 39+def wiki_works(target):
 40+ login=make_login(target)
 41+ result=do_test(login)
 42+ return result
 43+
 44+def main():
 45+ if len(sys.argv)<2:
 46+ print "syntax: wiki_works.py instance_name"
 47+ sys.exit(1)
 48+ target=sys.argv[1]
 49+
 50+ if wiki_works(target):
 51+ print "wiki works"
 52+ sys.exit(0)
 53+ else:
 54+ print "wiki doesn't work"
 55+ sys.exit(1)
 56+
 57+if __name__=="__main__":
 58+ main()
Property changes on: trunk/testing/util/wiki_works.py
___________________________________________________________________
Added: svn:executable
159 +
Index: trunk/testing/util/allnaive.py
@@ -0,0 +1,44 @@
 2+#!/usr/bin/env python
 3+import sys
 4+import os, os.path
 5+sys.path.append("..")
 6+
 7+
 8+import wiki_works
 9+from installer.naive_installer import Naive_Installer
 10+# settings
 11+
 12+target_wiki='test'
 13+resultfile=file("naive_results","w")
 14+
 15+
 16+def test_extension(extension_name):
 17+ result=None
 18+ try:
 19+ installer=Naive_Installer()
 20+ installer.set_instance(target_wiki)
 21+ installer.install(extension_name)
 22+ result=wiki_works.wiki_works(target_wiki)
 23+ print "result=",result
 24+ installer.uninstall(extension_name)
 25+ except Exception,e:
 26+ print e
 27+
 28+ return result
 29+
 30+if __name__=="__main__":
 31+ installer=Naive_Installer()
 32+ installer.set_instance(target_wiki)
 33+ naive_extensions=installer.get_installers()
 34+ for extension_name in naive_extensions:
 35+ print extension_name,
 36+ result=test_extension(extension_name)
 37+ print result
 38+ r="Unknown"
 39+ if result:
 40+ r="NAIVE_INSTALL_SEEMS_OK"
 41+ else:
 42+ r="NAIVE_INSTALL_BREAKS"
 43+ resultfile.write("* "+extension_name+" "+r+"\n")
 44+ resultfile.flush()
 45+ resultfile.close()
Property changes on: trunk/testing/util/allnaive.py
___________________________________________________________________
Added: svn:executable
146 +
Index: trunk/testing/wikiation_exttest/LICENSE
@@ -0,0 +1,22 @@
 2+This software, copyright (C) 2008-2009 by Wikiation. This software is developed by Kim Bruning.
 3+Copyright (C) 2009 Kim Bruning
 4+
 5+Permission is hereby granted, free of charge, to any person obtaining a copy
 6+of this software and associated documentation files (the "Software"), to deal
 7+in the Software without restriction, including without limitation the rights to
 8+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
 9+of the Software, and to permit persons to whom the Software is furnished to do
 10+so, subject to the following conditions:
 11+
 12+The above copyright notice and this permission notice shall be included in all
 13+copies or substantial portions of the Software.
 14+
 15+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 16+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 17+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 18+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 19+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 20+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 21+SOFTWARE.
 22+
 23+
Property changes on: trunk/testing/wikiation_exttest/LICENSE
___________________________________________________________________
Added: svn:eol-style
124 + native
Index: trunk/testing/wikiation_exttest/base_family.py
@@ -0,0 +1,85 @@
 2+# -*- coding: utf-8 -*- # REQUIRED
 3+# This software, copyright (C) 2008-2009 by Wikiation.
 4+# This software is developed by Kim Bruning.
 5+#
 6+# Distributed under the terms of the MIT license.
 7+
 8+
 9+import sys, settings
 10+if settings.pywikipedia_path not in sys.path:
 11+ sys.path.append(settings.pywikipedia_path)
 12+
 13+import config, family, urllib # REQUIRED
 14+class Family(family.Family): # REQUIRED
 15+ """friendlier version of tghe pywikipedia family class.
 16+ We can use this in conjunction with none-pywikipedia
 17+ config files."""
 18+ def __init__(self,
 19+ name='test',
 20+ protocol='http',
 21+ server='localhost',
 22+ scriptpath='/revisions/REL1.13.2',
 23+ version='1.13.2',
 24+ lang='nl',
 25+ encoding='utf-8',
 26+ api_supported=False,
 27+ RversionTab=None # very rare beast, you probably won't need it.
 28+ ):
 29+
 30+ family.Family.__init__(self)
 31+ self.name = name # REQUIRED; replace with actual name
 32+
 33+ self.langs = { # REQUIRED
 34+ lang: server, # Include one line for each wiki in family
 35+ }
 36+ self._protocol=protocol
 37+ self._scriptpath=scriptpath
 38+ self._version=version
 39+ self._encoding=encoding
 40+ # may as well add these here, so we can have a 1 stop shop
 41+ self._lang=lang
 42+ self._server=server
 43+ self._api_supported=api_supported
 44+ self._RversionTab=RversionTab
 45+
 46+ def protocol(self, code):
 47+ """
 48+ Can be overridden to return 'https'. Other protocols are not supported.
 49+ """
 50+ return self._protocol
 51+
 52+ def scriptpath(self, code):
 53+ """The prefix used to locate scripts on this wiki.
 54+
 55+ This is the value displayed when you enter {{SCRIPTPATH}} on a
 56+ wiki page (often displayed at [[Help:Variables]] if the wiki has
 57+ copied the master help page correctly).
 58+
 59+ The default value is the one used on Wikimedia Foundation wikis,
 60+ but needs to be overridden in the family file for any wiki that
 61+ uses a different value.
 62+
 63+ """
 64+ return self._scriptpath
 65+
 66+ # IMPORTANT: if your wiki does not support the api.php interface,
 67+ # you must uncomment the second line of this method:
 68+ def apipath(self, code):
 69+ if self._api_supported:
 70+ return '%s/api.php' % self.scriptpath(code)
 71+ else:
 72+ raise NotImplementedError, "%s wiki family does not support api.php" % self.name
 73+
 74+ # Which version of MediaWiki is used?
 75+ def version(self, code):
 76+ # Replace with the actual version being run on your wiki
 77+ return self._version
 78+
 79+ def code2encoding(self, code):
 80+ """Return the encoding for a specific language wiki"""
 81+ # Most wikis nowadays use UTF-8, but change this if yours uses
 82+ # a different encoding
 83+ return self._encoding
 84+
 85+ def RversionTab(self, code):
 86+ return self._RversionTab
Property changes on: trunk/testing/wikiation_exttest/base_family.py
___________________________________________________________________
Added: svn:eol-style
187 + native
Index: trunk/testing/wikiation_exttest/wikiation_exttest.py
@@ -0,0 +1,471 @@
 2+#!/usr/bin/python
 3+# -*- coding: utf-8 -*-
 4+
 5+# This software, copyright (C) 2008-2009 by Wikiation.
 6+# This software is developed by Kim Bruning.
 7+#
 8+# Distributed under the terms of the MIT license
 9+
 10+import sys,os
 11+import settings
 12+
 13+sys.path.append(settings.pywikipedia_path)
 14+cwd=os.getcwd()
 15+os.chdir(settings.pywikipedia_path)
 16+import wikipedia
 17+import login
 18+import catlib
 19+os.chdir(cwd)
 20+
 21+import difflib
 22+import imp
 23+from exttest import Test, PageReference
 24+from xml.etree import ElementTree
 25+
 26+
 27+class MissingDataException (Exception):
 28+ pass
 29+
 30+class WikiWebTest:
 31+ """
 32+ Run extension tests on a mediawiki wiki.
 33+ """
 34+
 35+ """open marker for test sequence , must be long and unique"""
 36+ open=u"---START of wikiation test sequence---"
 37+ """close marker for test sequence, must be long and unique"""
 38+ close=u"---END of wikiation test sequence---"
 39+
 40+
 41+ def __init__ (self,site):
 42+ self.site=site
 43+ self.html=None
 44+
 45+ def feedWikiText (self,wikitext, pageName="Bot_test"):
 46+ """feed wikitext to the server, and get html back"""
 47+
 48+ #make a new page with just the wikitext
 49+ page=wikipedia.Page(self.site, pageName)
 50+ page.put(wikitext)
 51+
 52+ #get raw html for the page back
 53+ address=self.site.get_address(pageName)
 54+ html=self.site.getUrl(address)
 55+
 56+ return html
 57+
 58+
 59+ def genTest(self,codeToBeTested):
 60+ """enclose codeToBeTested in test sequence"""
 61+
 62+ if codeToBeTested==None:
 63+ raise MissingDataException("code to be tested is Null");
 64+
 65+ testCode=WikiWebTest.open+codeToBeTested+WikiWebTest.close
 66+
 67+ return testCode
 68+
 69+
 70+ def cleanFeed(self,codeToBeTested, pageName="Bot_test"):
 71+ """like feedWikiText, but return just the bit we're actually
 72+ interested in"""
 73+
 74+ testCode=self.genTest(codeToBeTested)
 75+ html=self.feedWikiText(testCode,pageName)
 76+ enclosedHtml=self.getEnclosed(html)
 77+
 78+ self.html=html
 79+ return enclosedHtml
 80+
 81+
 82+ def getEnclosed(self,html):
 83+ """pull the code-of-interest out from between the open and close markers"""
 84+
 85+ startOpen=html.index(WikiWebTest.open)
 86+ start=startOpen+len(WikiWebTest.open)
 87+
 88+ end=html.index(WikiWebTest.close)
 89+
 90+ return html[start:end]
 91+
 92+
 93+ def test(self, wikiText, expectHtml, test=None, pageName="Bot_test"):
 94+ """do the test, report comparison as plain text for now
 95+ I tried the htmltable, but mediawiki refuses to eat it :-/"""
 96+
 97+ actualHtml=self.cleanFeed(wikiText, pageName)
 98+
 99+ actualHtmlLines=actualHtml.splitlines(1);
 100+ expectHtmlLines=expectHtml.splitlines(1);
 101+
 102+ differ=difflib.Differ()
 103+ diff_text_list= list(differ.compare(actualHtmlLines,expectHtmlLines))
 104+ diff_text="\n".join(diff_text_list)
 105+
 106+ if test:
 107+ if actualHtml==expectHtml:
 108+ test.ok=True
 109+
 110+ if actualHtml!=expectHtml:
 111+ test.ok=False
 112+
 113+ test.diff=diff_text
 114+ test.result=actualHtml
 115+
 116+ return diff_text
 117+
 118+def _title(title):
 119+ """
 120+ -----------------------
 121+ | make a pretty title |
 122+ -----------------------
 123+ """
 124+ titlerow='| '+title+' |'
 125+ stripe="\n"+( "-"*len(titlerow) )+"\n"
 126+ return stripe+titlerow+stripe
 127+
 128+def runtestset(webtest, tests, pageName=None) :
 129+ """Take a List of Test-s, and feed them to WikiWebTest to run them"""
 130+
 131+ if pageName==None:
 132+ pageName=settings.pageName
 133+
 134+ for test in tests:
 135+
 136+ print _title(test.name+' :')
 137+ if test.enable:
 138+ diff=webtest.test(test.code, test.expect, test, pageName)
 139+ print unicode(diff).encode('utf8')
 140+ if test.ok:
 141+ print "\n--OK!\n"
 142+ elif test.known_bug:
 143+ print "\n--OK, known bug.\n"
 144+ else:
 145+ print "\n--FAIL\n"
 146+ else:
 147+ print "test not enabled\n"
 148+
 149+
 150+ print _title("TESTSET COMPLETED")
 151+
 152+
 153+def _isCommented(text,offset,tagstart):
 154+ """
 155+ For a given position in a string, determine if it is located
 156+ in a comment block. Used here to check whether <exttest> or
 157+ </exttest> is located inside a comment.
 158+ 'text' is the text to check,
 159+ 'offset' is the offset from start of string.
 160+ 'tagstart' is the position to check (start of our tag)
 161+ """
 162+ endcommentp=0
 163+ while True:
 164+ commentp=text.find("<!--",offset,tagstart)
 165+ if commentp!=-1:
 166+ endcommentp=text.find("-->",commentp,tagstart)
 167+ if endcommentp==-1:
 168+ break
 169+ offset=endcommentp+len("-->")
 170+ else:
 171+ break
 172+
 173+ return endcommentp==-1
 174+
 175+
 176+
 177+def article2testset(article):
 178+ """parse a pywikipedia Page (article), to yield a testset"""
 179+ text=article.get()
 180+ testset=[]
 181+ count=0
 182+ offset=0
 183+ while True:
 184+ startPosition=text.find("<exttest>",offset)
 185+ if startPosition==-1:
 186+ break
 187+
 188+ if _isCommented(text,offset,startPosition):
 189+ offset=startPosition+1
 190+ continue
 191+
 192+ endTagPosition=text.find("</exttest>",offset)
 193+
 194+ if endTagPosition==-1:
 195+ raise Exception("malformed xml in page "+str(article))
 196+
 197+ if _isCommented(text,offset,endTagPosition):
 198+ offset=endTagPosition+1
 199+ continue
 200+
 201+ endPosition=endTagPosition+len("</exttest>")
 202+
 203+ xmlString=text[startPosition:endPosition]
 204+ try:
 205+ test=xml2testset(unicode(xmlString).encode('utf8'))
 206+ except Exception, e:
 207+ raise Exception("Problem loading page [["+article.title()+"]]: ",e)
 208+ test[0].pageReference=PageReference(
 209+ pageTitle=article.title(),
 210+ startPosition=startPosition,
 211+ endPosition=endPosition)
 212+ count+=1
 213+ if settings.tests_per_page!=0 and count>settings.tests_per_page:
 214+ test[0].enable=False
 215+
 216+ testset+=test
 217+
 218+ offset=endPosition
 219+
 220+ return testset
 221+
 222+def tests2page(tests, site, pageTitle):
 223+ """Write a test report back to a wikipage.
 224+ Only operates between <extresult></extresult> tags;
 225+ this way, if something goes wrong, hopefully we won't
 226+ b0rk the _entire_ page.
 227+ tests is the tests relevant to this page, site is the pywikipedia
 228+ site object for this website, and pageTitle is the title of the
 229+ page on the site."""
 230+ page=wikipedia.Page(site,pageTitle)
 231+ text=page.get()
 232+ offset=0
 233+ for test in tests:
 234+ ref=test.pageReference
 235+
 236+ s=text.find("<extresult>",ref.endPosition+offset)
 237+ startPosition=s+len("<extresult>")
 238+ endPosition=text.find("</extresult>",startPosition)
 239+ if s!=-1 and endPosition!=-1:
 240+ before=text[:startPosition]
 241+ middle="\n<!-- BOT OUTPUT-->\n;Result "
 242+ if test.ok:
 243+ middle+='<span style="color:green">OK</span>'
 244+ elif test.ok==False:
 245+ if test.known_bug:
 246+ middle+='<span style="color:yellow">Known Bug</span>'
 247+ else:
 248+ middle+='<span style="color:red">Differs from expected</span>'
 249+ else:
 250+ middle+='<span style="color:orange">unknown</span>'
 251+ if test.enable:
 252+ middle+="\n;html output\n"
 253+ middle+="<pre>\n"+test.result+"\n</pre>"
 254+ middle+="\n;diff\n"
 255+ middle+="<pre>\n"+test.diff+"</pre>"
 256+ else:
 257+ middle+="\n;Only "+str(settings.tests_per_page)+" tests are allowed per page"
 258+ middle+="\n<!-- END OF BOT OUTPUT-->\n"
 259+ after=text[endPosition:]
 260+ text=before+middle+after
 261+ offset+=len(middle)-(endPosition-startPosition)
 262+
 263+ page.put(text,"testresult")
 264+
 265+def testset2pages(testset, site):
 266+ """Goes through testset, and writes results back to each page
 267+ on the pywikipedia site.
 268+ In the case case where multiple tests per page are permitted,
 269+ testset results are grouped by page, so that only 1 write
 270+ needs to be done per page."""
 271+ byPage={}
 272+ # reorganize tests by page so we can
 273+ # do a page at a time
 274+ for test in testset:
 275+ title=test.pageReference.pageTitle
 276+ if title not in byPage:
 277+ byPage[title]=[]
 278+ byPage[title].append(test)
 279+
 280+ for title, tests in byPage.iteritems():
 281+ tests2page(tests, site, title)
 282+
 283+
 284+
 285+def category2testset(site,categoryName="Automated tests"):
 286+ """Scan a category on the given pywikipedia site for valid
 287+ extension tests, and generate a testset (a list of Test objects)"""
 288+ category=catlib.Category(site,categoryName)
 289+ testset=[]
 290+ for article in category.articles():
 291+ testset+=article2testset(article)
 292+
 293+ return testset
 294+
 295+def runcategorytestset(source_site, webtest, categoryName="Automated tests"):
 296+ """Scan a category for valid extension tests,
 297+ and run all the tests using the webtest object."""
 298+ testset=category2testset(source_site,categoryName)
 299+ runtestset(webtest,testset)
 300+
 301+ return testset
 302+
 303+def runcategoryandreport(source_site, webtest, categoryName="Automated tests"):
 304+ """Scan a category for valid extension tests,
 305+ run all the tests using the webtest object, and report
 306+ the results back to the relevant pages on the wiki.
 307+ """
 308+ testset=runcategorytestset(source_site, webtest, categoryName)
 309+ testset2pages(testset, source_site)
 310+ return testset
 311+
 312+def _elementText(element,tag):
 313+ """find the relevant element contents in an elementtree element,
 314+ and strip spurious whitespace from the ends if settings.strip_whitespace
 315+ is set"""
 316+ text=element.findtext(tag)
 317+ #This strips spurious whitespace from CDATA, due to users inserting it.
 318+ #ick.
 319+ if text and settings.strip_whitespace:
 320+ text=text.strip()
 321+ return text
 322+
 323+def xml2testset(xmlString):
 324+ """converts xml string to a testset (a list of Test objects).
 325+ Next to xml that actually contains a testset (obviously), this function
 326+ will also eat an xml string containing only a single exttest element
 327+ (intended for internal use only, ymmv). If settings.strip_whitespace
 328+ is set, spurious whitespace will be stripped from the start and end of
 329+ the element contents, even inside CDATA!"""
 330+ if not xmlString:
 331+ raise Exception("xml2testset: Empty xmlString.")
 332+ tests=[]
 333+ elements=ElementTree.XML(xmlString)
 334+ for testElement in elements.getiterator("exttest"):
 335+ test=Test()
 336+ test.name=_elementText(testElement, "name")
 337+ test.code=_elementText(testElement, "code")
 338+ test.expect=_elementText(testElement,"expect")
 339+ test.result=_elementText(testElement, "result")
 340+ test.diff=_elementText(testElement, "diff")
 341+ if testElement.find("known_bug") is not None:
 342+ test.known_bug=True
 343+
 344+ if not test.name:
 345+ print "WARNING: <name> element missing"
 346+ if not test.expect:
 347+ print "WARNING:",
 348+ if test.name:
 349+ print "in "+test.name+":",
 350+ print " <expect> element missing"
 351+
 352+ if test.code:
 353+ tests.append(test)
 354+ else:
 355+ report=""
 356+ if test.name:
 357+ report+="In"+test.name+" "
 358+ else:
 359+ report+="In <unnamed test>: (<name> element missing or left blank, so reports might be unclear)"
 360+ if not test.code:
 361+ report +="; missing <code> element (required)"
 362+ if not test.expect:
 363+ report +="; missing <expect> element (not required, but typically recommended)"
 364+ report +="."
 365+ raise MissingDataException(report)
 366+
 367+ return tests
 368+
 369+def runxmltestset(webtest, xmlstring):
 370+ """Take a testset defined in xml format and run it with WikiWebtest
 371+ webtest"""
 372+ testset=xml2testset(xmlstring)
 373+ runtestset(webtest,testset)
 374+ return testset
 375+
 376+def dumppy(testset,filename):
 377+ """write testset to file in python .py format.
 378+ This file can be import-ed normally in python to obtain
 379+ the testset contents.
 380+ Note that the file has test.py as a dependency (in case you
 381+ want to ship it elsewhere)."""
 382+ f=file(filename,"w")
 383+ f.write("from exttest import *\n")
 384+ f.write("tests="+repr(testset))
 385+ f.close()
 386+
 387+def dumpxml(testset,filename):
 388+ """write testset to file in xml format."""
 389+ xml='<?xml version="1.0"?>\n'
 390+ xml+="<exttests>\n"
 391+ for test in testset:
 392+ xml+=test.toXML()
 393+ xml+="</exttests>\n"
 394+ f=file(filename,"w")
 395+ f.write(xml)
 396+ f.close()
 397+
 398+def do_login(site_language, site_name, site_password):
 399+ raise Exception("do_login is Deprecated. Use LoginData instead")
 400+
 401+def main():
 402+ testset=[]
 403+ category_name=settings.category_name
 404+ allOk=False
 405+
 406+ if "--category-name" in sys.argv:
 407+ category_name=sys.argv[ sys.argv.index("--category-name")+1]
 408+ allOk=True
 409+ if "--pyfile" in sys.argv:
 410+ target_site=settings.target_login.login()
 411+ webtest=WikiWebTest(target_site)
 412+ filename=sys.argv[ sys.argv.index("--pyfile")+1]
 413+ print "loading '"+filename+"'"
 414+ testmodule=imp.load_source("testmodule",filename)
 415+ tests=testmodule.tests
 416+ testset=runtestset(webtest,tests)
 417+ allOk=True
 418+ elif "--xmlfile" in sys.argv:
 419+ target_site=settings.target_login.login()
 420+ webtest=WikiWebTest(target_site)
 421+ filename=sys.argv[ sys.argv.index("--xmlfile")+1]
 422+ print "loading '"+filename+"'"
 423+ xmlfile=file(filename)
 424+ xmlstring=xmlfile.read()
 425+ xmlfile.close()
 426+ testset=runxmltestset(webtest, xmlstring)
 427+ allOk=True
 428+ elif "--category" in sys.argv:
 429+ print "testing category"
 430+
 431+ source_site=settings.source_login.login()
 432+ target_site=settings.target_login.login()
 433+ webtest=WikiWebTest(target_site)
 434+ testset=runcategorytestset(source_site, webtest, category_name)
 435+ allOk=True
 436+ elif "--category-and-write" in sys.argv:
 437+ print "running cat and writing back to the wiki"
 438+ source_site=settings.source_login.login()
 439+ target_site=settings.target_login.login()
 440+ webtest=WikiWebTest(target_site)
 441+ testset=runcategoryandreport(source_site, webtest, category_name)
 442+ allOk=True
 443+ elif "--test" in sys.argv:
 444+ print webtest.test("{{SERVER}} yet another test","<a something> yet another test")
 445+ allOk=True
 446+ elif "--help" in sys.argv:
 447+ print file("HELP").read()
 448+ allOk=True
 449+
 450+ if "--dump-xml" in sys.argv:
 451+ filename=sys.argv[ sys.argv.index("--dump-xml")+1]
 452+ print "saving xml to '"+filename+"'."
 453+ dumpxml(testset,filename)
 454+ allOk=True
 455+
 456+ if "--dump-py" in sys.argv:
 457+ filename=sys.argv[ sys.argv.index("--dump-py")+1]
 458+ print "saving py to '"+filename+"'."
 459+ dumppy(testset,filename)
 460+ allOk=True
 461+
 462+ if not allOk:
 463+ print "I don't understand. Try --help for help?"
 464+
 465+
 466+if __name__=="__main__":
 467+ try:
 468+ main()
 469+ finally:
 470+ wikipedia.stopme()
 471+
 472+
Property changes on: trunk/testing/wikiation_exttest/wikiation_exttest.py
___________________________________________________________________
Added: svn:eol-style
1473 + native
Added: svn:executable
2474 +
Index: trunk/testing/wikiation_exttest/__init__.py
Index: trunk/testing/wikiation_exttest/some.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/testing/wikiation_exttest/some.png
___________________________________________________________________
Added: svn:mime-type
3475 + application/octet-stream
Index: trunk/testing/wikiation_exttest/exttest.py
@@ -0,0 +1,68 @@
 2+# This software, copyright (C) 2008-2009 by Wikiation.
 3+# This software is developed by Kim Bruning.
 4+#
 5+# Distributed under the terms of the MIT license.
 6+
 7+class Test:
 8+ name=""
 9+ code=""
 10+ expect=""
 11+ pageReference=None
 12+ diff=""
 13+ ok=None
 14+ result=""
 15+ enable=True
 16+ known_bug=False
 17+
 18+
 19+ def __init__(self, name="", code="", expect="", pageReference=None, diff="", result="", ok=None, enable=True, known_bug=False):
 20+ self.name=name
 21+ self.code=code
 22+ self.expect=expect
 23+ self.pageReference=None
 24+ self.diff=diff
 25+ self.result=result
 26+ self.ok=ok
 27+ self.enable=enable
 28+ self.known_bug=known_bug
 29+
 30+ def __repr__(self):
 31+ return "Test(name='''"+self.name+\
 32+ "''', code='''"+self.code+\
 33+ "''', expect='''"+self.expect+\
 34+ "''', pageReference="+repr(self.pageReference)+\
 35+ ", diff='''"+self.diff+\
 36+ "''', ok="+str(self.ok)+\
 37+ ", result='''"+self.result+\
 38+ "''', enable="+str(self.enable)+\
 39+ ", known_bug="+str(self.known_bug)+\
 40+ ")"
 41+
 42+ def toXML(self):
 43+ xml="<exttest>\n"
 44+ xml+=" <name>"+self.name+"</name>\n"
 45+ xml+=" <code><![CDATA["+self.code+"]]></code>\n"
 46+ xml+=" <expect><![CDATA["+self.expect+"]]></expect>\n"
 47+ if self.result:
 48+ xml+=" <result><![CDATA["+self.result+"]]></result>\n"
 49+ if self.diff:
 50+ xml+=" <diff><![CDATA["+self.diff+"]]></diff>\n"
 51+ if self.known_bug:
 52+ xml+=" <known bug/>"
 53+ xml+="</exttest>\n"
 54+ return xml
 55+
 56+class PageReference:
 57+ startPosition=0
 58+ endPosition=0
 59+ pageTitle=""
 60+
 61+ def __init__(self, pageTitle="", startPosition=0, endPosition=0):
 62+ self.pageTitle=pageTitle
 63+ self.startPosition=startPosition
 64+ self.endPosition=endPosition
 65+
 66+ def __repr__(self):
 67+ return "PageReference(pageTitle='"+self.pageTitle+"', startPosition="+str(self.startPosition)+", endPosition="+str(self.endPosition)+")"
 68+
 69+
Property changes on: trunk/testing/wikiation_exttest/exttest.py
___________________________________________________________________
Added: svn:eol-style
170 + native
Index: trunk/testing/wikiation_exttest/HELP
@@ -0,0 +1,94 @@
 2+--------------------------
 3+Help for exttester
 4+
 5+This software, copyright (C) 2008-2009 by Wikiation.
 6+This software is developed by Kim Bruning.
 7+
 8+Distributed under the terms of the MIT license
 9+
 10+Purpose:
 11+Regression testing of mediawiki and mediawiki extension modules.
 12+Currently checks whether certain wikisyntax generates the expected (X)HTML.
 13+In future, generic web requests might also be checked.
 14+
 15+The test is performed by logging on to the configured wiki and creating a
 16+new page with the specified wikisyntax, surrounded by (long) unique marker
 17+strings.
 18+
 19+
 20+Syntax:
 21+
 22+(unix)
 23+./exttester.py [options]
 24+
 25+(all os)
 26+python exttester.py [options]
 27+
 28+Options are all GNU long form:
 29+
 30+base operations (pick 1):
 31+
 32+--pyfile <filename>
 33+ Execute tests from a python file of the appropriate format (a
 34+ list of Test objects)
 35+ (see examples/example.py, test.py).
 36+ Writes a brief report to stdout while testing.
 37+
 38+--xmlfile <filename>
 39+ Execute tests from an xml file (see examples/example.xml for format)
 40+ Writes a brief report to stdout while testing.
 41+
 42+--category
 43+ Execute tests from a category on the configured wiki
 44+ (default: [[Category:Automated tests]]).
 45+ Will check each page in the category for <exttest></exttest>
 46+ tags, assemble a test-set, and execute it.
 47+
 48+--category-and-write
 49+ similar to --category above, however, if the <exttest> element is
 50+ followed by a <result>...</result> element ( note: <result/>
 51+ currently doesn't work), the contents of the result element will
 52+ be replaced by a wikiformatted report on the test result.
 53+ This is helpful on-wiki for people who like to have their
 54+ tests and results on the same page. A separate element is used
 55+ to reduce the odds of exttester accidentally mangeling
 56+ the page.
 57+
 58+--test
 59+ A quick simple built-in test to check if everything is working ok
 60+ (checks the {{SERVER}} flag). It should report a failure and a diff.
 61+ Useful for checking if your configuration is ok.
 62+
 63+--help
 64+ Display this help
 65+
 66+Other flags:
 67+
 68+--dump-xml <filename>
 69+--dump-py <filename>
 70+ After concluding the test, save respectively xml or python to the
 71+ specified filename, in a format suitable for reading by --pyfile or
 72+ --xmlfile respectively.
 73+
 74+ Both filetypes also include the outcome of the test
 75+ (HTML), and an ascii diff of the outcome with the expected outcome.
 76+
 77+ In the case of --category or --category-and-write, the .py
 78+ file also includes PageReference information (see:
 79+ test.PageReference). Be aware that PageReference information
 80+ is only accurate at the time it was generated. If anyone alters
 81+ the contents of the test category it may no longer be valid.
 82+ This might be a problem in your own programs.
 83+
 84+ To prevent the above problems in exttester,
 85+ --pyfile and --xmlfile only use test information.
 86+ PageReference information, (X)HTML results, and diffs are ignored.
 87+
 88+--category-name <category name>
 89+ Specify a different category to operate on. Just state the category name itself
 90+ (To use [[Category:Foobar]], you just say --category-name Foobar ). If the category
 91+ name uses spaces or other strange characters, you may need to escape or
 92+ quote it. If you want to use unicode strings, ensure your shell and term pass
 93+ unicode correctly.
 94+ By default, exttester operates on the category Automated tests
 95+ (that is to say: [[Category:Automated tests]]).
Property changes on: trunk/testing/wikiation_exttest/HELP
___________________________________________________________________
Added: svn:eol-style
196 + native
Index: trunk/testing/wikiation_exttest/logindata.py
@@ -0,0 +1,60 @@
 2+# This software, copyright (C) 2008-2009 by Wikiation.
 3+# This software is developed by Kim Bruning.
 4+#
 5+# Distributed under the terms of the MIT license
 6+
 7+import sys, os
 8+import settings
 9+if settings.pywikipedia_path not in sys.path:
 10+ sys.path.append(settings.pywikipedia_path)
 11+
 12+cwd=os.getcwd()
 13+os.chdir(settings.pywikipedia_path)
 14+import wikipedia, login
 15+os.chdir(cwd)
 16+import base_family
 17+
 18+class LoginData:
 19+
 20+ def __init__(
 21+ self,
 22+ name='MY_NAME_FOR_THIS_SERVER',
 23+ protocol='http',
 24+ server='www.my_server.com',
 25+ scriptpath='/my/script/path/',
 26+ version='1.13.2',
 27+ lang='en',
 28+ encoding='utf-8',
 29+ user='MY_BOT_USER',
 30+ password='MY_SECRET_PASSWORD',
 31+ RversionTab=None,
 32+ api_supported=False
 33+ ):
 34+ self.lang=lang
 35+ self.user=user
 36+ self.password=password
 37+ self.family=base_family.Family(
 38+ name=name,
 39+ protocol=protocol,
 40+ server=server,
 41+ scriptpath=scriptpath,
 42+ version=version,
 43+ lang=lang,
 44+ encoding=encoding,
 45+ RversionTab=RversionTab,
 46+ api_supported=api_supported)
 47+ self.site=None
 48+
 49+ def login(self):
 50+ self.site=wikipedia.Site(
 51+ code=self.lang,
 52+ fam=self.family,
 53+ user=self.user
 54+ )
 55+ loginManager=login.LoginManager(
 56+ password=self.password,
 57+ site=self.site,
 58+ username=self.user
 59+ )
 60+ loginManager.login()
 61+ return self.site
Property changes on: trunk/testing/wikiation_exttest/logindata.py
___________________________________________________________________
Added: svn:eol-style
162 + native
Index: trunk/testing/wikiation_exttest/examples/out.xml
@@ -0,0 +1,50 @@
 2+<?xml version="1.0"?>
 3+<tests>
 4+<test>
 5+ <name>{{SERVER}} directive</name>
 6+ <code><![CDATA[{{SERVER}} yet another test]]></code>
 7+ <expect><![CDATA[<a href="http://83.149.110.226" class="external free" title="http://83.149.110.226" rel="nofollow">http://83.149.110.226</a> yet another test]]></expect>
 8+ <result><![CDATA[<a href="http://83.149.110.226" class="external free" title="http://83.149.110.226" rel="nofollow">http://83.149.110.226</a> yet another test]]></result>
 9+ <diff><![CDATA[ <a href="http://83.149.110.226" class="external free" title="http://83.149.110.226" rel="nofollow">http://83.149.110.226</a> yet another test]]></diff>
 10+</test>
 11+<test>
 12+ <name>plain text</name>
 13+ <code><![CDATA[test: plain text]]></code>
 14+ <expect><![CDATA[test: plain text]]></expect>
 15+ <result><![CDATA[]]></result>
 16+ <diff><![CDATA[]]></diff>
 17+</test>
 18+<test>
 19+ <name>plain text</name>
 20+ <code><![CDATA[tset: a deliberate spelling error]]></code>
 21+ <expect><![CDATA[test: a deliberate spelling error, and more text]]></expect>
 22+ <result><![CDATA[]]></result>
 23+ <diff><![CDATA[]]></diff>
 24+</test>
 25+<test>
 26+ <name>normal wikilink</name>
 27+ <code><![CDATA[[[hello]]]]></code>
 28+ <expect><![CDATA[<a href="https://www.mediawiki.org/index.php?title=Hello&amp;action=edit" class="new" title="Hello">hello</a>]]></expect>
 29+ <result><![CDATA[]]></result>
 30+ <diff><![CDATA[]]></diff>
 31+</test>
 32+<test>
 33+ <name>normal wikilink with pipe</name>
 34+ <code><![CDATA[[[hello|more]]]]></code>
 35+ <expect><![CDATA[<a href="https://www.mediawiki.org/index.php?title=Hello&amp;action=edit" class="new" title="Hello">more</a>]]></expect>
 36+ <result><![CDATA[<a href="https://www.mediawiki.org/index.php?title=Hello&amp;action=edit" class="new" title="Hello">more</a>]]></result>
 37+ <diff><![CDATA[ <a href="https://www.mediawiki.org/index.php?title=Hello&amp;action=edit" class="new" title="Hello">more</a>]]></diff>
 38+</test>
 39+<test>
 40+ <name>plain text</name>
 41+ <code><![CDATA[tets: a deliberate spelling error.]]></code>
 42+ <expect><![CDATA[test: a deliberate spelling error, and more text]]></expect>
 43+ <result><![CDATA[tets: a deliberate spelling error.]]></result>
 44+ <diff><![CDATA[- tets: a deliberate spelling error.
 45+? - ^
 46+
 47++ test: a deliberate spelling error, and more text
 48+? + ^^^^^^^^^^^^^^^
 49+]]></diff>
 50+</test>
 51+</tests>
Property changes on: trunk/testing/wikiation_exttest/examples/out.xml
___________________________________________________________________
Added: svn:eol-style
152 + native
Index: trunk/testing/wikiation_exttest/examples/out2.xml
@@ -0,0 +1,39 @@
 2+<?xml version="1.0"?>
 3+<exttests>
 4+<exttest>
 5+ <name>{{SERVER}} directive</name>
 6+ <code><![CDATA[{{SERVER}} yet another test]]></code>
 7+ <expect><![CDATA[<a href="http://83.149.110.226" class="external free" title="http://83.149.110.226" rel="nofollow">http://83.149.110.226</a> yet another test]]></expect>
 8+ <result><![CDATA[<a href="http://83.149.110.226" class="external free" title="http://83.149.110.226" rel="nofollow">http://83.149.110.226</a> yet another test]]></result>
 9+ <diff><![CDATA[ <a href="http://83.149.110.226" class="external free" title="http://83.149.110.226" rel="nofollow">http://83.149.110.226</a> yet another test]]></diff>
 10+</exttest>
 11+<exttest>
 12+ <name>plain text 2000</name>
 13+ <code><![CDATA[tset: a deliberate spelling error]]></code>
 14+ <expect><![CDATA[test: a deliberate spelling error, and more text]]></expect>
 15+</exttest>
 16+<exttest>
 17+ <name>normal wikilink</name>
 18+ <code><![CDATA[[[hello]]]]></code>
 19+ <expect><![CDATA[<a href="https://www.mediawiki.org/index.php?title=Hello&amp;action=edit" class="new" title="Hello">hello</a>]]></expect>
 20+</exttest>
 21+<exttest>
 22+ <name>normal wikilink with pipe</name>
 23+ <code><![CDATA[[[hello|more]]]]></code>
 24+ <expect><![CDATA[<a href="https://www.mediawiki.org/index.php?title=Hello&amp;action=edit" class="new" title="Hello">more</a>]]></expect>
 25+ <result><![CDATA[<a href="https://www.mediawiki.org/index.php?title=Hello&amp;action=edit" class="new" title="Hello">more</a>]]></result>
 26+ <diff><![CDATA[ <a href="https://www.mediawiki.org/index.php?title=Hello&amp;action=edit" class="new" title="Hello">more</a>]]></diff>
 27+</exttest>
 28+<exttest>
 29+ <name>plain text</name>
 30+ <code><![CDATA[tets: a deliberate spelling error.]]></code>
 31+ <expect><![CDATA[test: a deliberate spelling error, and more text]]></expect>
 32+ <result><![CDATA[tets: a deliberate spelling error.]]></result>
 33+ <diff><![CDATA[- tets: a deliberate spelling error.
 34+? - ^
 35+
 36++ test: a deliberate spelling error, and more text
 37+? + ^^^^^^^^^^^^^^^
 38+]]></diff>
 39+</exttest>
 40+</exttests>
Property changes on: trunk/testing/wikiation_exttest/examples/out2.xml
___________________________________________________________________
Added: svn:eol-style
141 + native
Index: trunk/testing/wikiation_exttest/examples/out3.xml
@@ -0,0 +1,48 @@
 2+<?xml version="1.0"?>
 3+<exttests>
 4+<exttest>
 5+ <name>{{SERVER}} directive</name>
 6+ <code><![CDATA[{{SERVER}} yet another test]]></code>
 7+ <expect><![CDATA[<a href="http://83.149.110.226" class="external free" title="http://83.149.110.226" rel="nofollow">http://83.149.110.226</a> yet another test]]></expect>
 8+ <result><![CDATA[<a href="http://83.149.110.226" class="external free" title="http://83.149.110.226" rel="nofollow">http://83.149.110.226</a> yet another test]]></result>
 9+ <diff><![CDATA[ <a href="http://83.149.110.226" class="external free" title="http://83.149.110.226" rel="nofollow">http://83.149.110.226</a> yet another test]]></diff>
 10+</exttest>
 11+<exttest>
 12+ <name>plain text 2000</name>
 13+ <code><![CDATA[tset: a deliberate spelling error]]></code>
 14+ <expect><![CDATA[test: a deliberate spelling error, and more text]]></expect>
 15+ <result><![CDATA[tset: a deliberate spelling error]]></result>
 16+ <diff><![CDATA[- tset: a deliberate spelling error
 17+? -
 18+
 19++ test: a deliberate spelling error, and more text
 20+? + +++++++++++++++
 21+]]></diff>
 22+</exttest>
 23+<exttest>
 24+ <name>normal wikilink</name>
 25+ <code><![CDATA[[[hello]]]]></code>
 26+ <expect><![CDATA[<a href="https://www.mediawiki.org/index.php?title=Hello&amp;action=edit" class="new" title="Hello">hello</a>]]></expect>
 27+ <result><![CDATA[<a href="https://www.mediawiki.org/index.php?title=Hello&amp;action=edit" class="new" title="Hello">hello</a>]]></result>
 28+ <diff><![CDATA[ <a href="https://www.mediawiki.org/index.php?title=Hello&amp;action=edit" class="new" title="Hello">hello</a>]]></diff>
 29+</exttest>
 30+<exttest>
 31+ <name>normal wikilink with pipe</name>
 32+ <code><![CDATA[[[hello|more]]]]></code>
 33+ <expect><![CDATA[<a href="https://www.mediawiki.org/index.php?title=Hello&amp;action=edit" class="new" title="Hello">more</a>]]></expect>
 34+ <result><![CDATA[<a href="https://www.mediawiki.org/index.php?title=Hello&amp;action=edit" class="new" title="Hello">more</a>]]></result>
 35+ <diff><![CDATA[ <a href="https://www.mediawiki.org/index.php?title=Hello&amp;action=edit" class="new" title="Hello">more</a>]]></diff>
 36+</exttest>
 37+<exttest>
 38+ <name>plain text</name>
 39+ <code><![CDATA[tets: a deliberate spelling error.]]></code>
 40+ <expect><![CDATA[test: a deliberate spelling error, and more text]]></expect>
 41+ <result><![CDATA[tets: a deliberate spelling error.]]></result>
 42+ <diff><![CDATA[- tets: a deliberate spelling error.
 43+? - ^
 44+
 45++ test: a deliberate spelling error, and more text
 46+? + ^^^^^^^^^^^^^^^
 47+]]></diff>
 48+</exttest>
 49+</exttests>
Property changes on: trunk/testing/wikiation_exttest/examples/out3.xml
___________________________________________________________________
Added: svn:eol-style
150 + native
Index: trunk/testing/wikiation_exttest/examples/example.xml
@@ -0,0 +1,22 @@
 2+<?xml version="1.0"?>
 3+<exttests>
 4+
 5+ <exttest>
 6+ <name>{{SERVER}} directive</name>
 7+ <code>{{SERVER}} yet another test</code>
 8+ <expect><![CDATA[<a href="http://83.149.110.226" class="external free" title="http://83.149.110.226" rel="nofollow">http://83.149.110.226</a> yet another test]]></expect>
 9+ </exttest>
 10+
 11+ <exttest>
 12+ <name>plain text</name>
 13+ <code>test</code>
 14+ <expect>test</expect>
 15+ </exttest>
 16+
 17+ <exttest>
 18+ <name>normal wikilink</name>
 19+ <code>[[hello]]</code>
 20+ <expect><![CDATA[<a href="https://www.mediawiki.org/index.php?title=Hello&amp;action=edit" class="new" title="Hello">hello</a>]]></expect>
 21+ </exttest>
 22+
 23+</exttests>
Property changes on: trunk/testing/wikiation_exttest/examples/example.xml
___________________________________________________________________
Added: svn:eol-style
124 + native
Index: trunk/testing/wikiation_exttest/examples/README
@@ -0,0 +1,3 @@
 2+some of these files ahven't been upgraded to newer version of exttester yet.
 3+
 4+use --dump-py and --dump-xml to generate your own example files
Property changes on: trunk/testing/wikiation_exttest/examples/README
___________________________________________________________________
Added: svn:eol-style
15 + native
Index: trunk/testing/wikiation_exttest/examples/out.py
@@ -0,0 +1,7 @@
 2+from exttest import *
 3+tests=[Test(name='''{{SERVER}} directive''', code='''{{SERVER}} yet another test''', expect='''<a href="http://83.149.110.226" class="external free" title="http://83.149.110.226" rel="nofollow">http://83.149.110.226</a> yet another test''', pageReference=PageReference(pageTitle='Testpage', startPosition=195, endPosition=511), diff=''' <a href="http://83.149.110.226" class="external free" title="http://83.149.110.226" rel="nofollow">http://83.149.110.226</a> yet another test''', ok=True, result='''<a href="http://83.149.110.226" class="external free" title="http://83.149.110.226" rel="nofollow">http://83.149.110.226</a> yet another test''', enable=True), Test(name='''plain text''', code='''test: plain text''', expect='''test: plain text''', pageReference=PageReference(pageTitle='Testpage', startPosition=997, endPosition=1155), diff='''''', ok=None, result='''''', enable=False), Test(name='''plain text''', code='''tset: a deliberate spelling error''', expect='''test: a deliberate spelling error, and more text''', pageReference=PageReference(pageTitle='Testpage', startPosition=1419, endPosition=1626), diff='''''', ok=None, result='''''', enable=False), Test(name='''normal wikilink''', code='''[[hello]]''', expect='''<a href="https://www.mediawiki.org/index.php?title=Hello&amp;action=edit" class="new" title="Hello">hello</a>''', pageReference=PageReference(pageTitle='Testpage', startPosition=1976, endPosition=2212), diff='''''', ok=None, result='''''', enable=False), Test(name='''normal wikilink with pipe''', code='''[[hello|more]]''', expect='''<a href="https://www.mediawiki.org/index.php?title=Hello&amp;action=edit" class="new" title="Hello">more</a>''', pageReference=PageReference(pageTitle='Testpage2', startPosition=8, endPosition=258), diff=''' <a href="https://www.mediawiki.org/index.php?title=Hello&amp;action=edit" class="new" title="Hello">more</a>''', ok=True, result='''<a href="https://www.mediawiki.org/index.php?title=Hello&amp;action=edit" class="new" title="Hello">more</a>''', enable=True), Test(name='''plain text''', code='''tets: a deliberate spelling error.''', expect='''test: a deliberate spelling error, and more text''', pageReference=PageReference(pageTitle='Testpage3', startPosition=118, endPosition=326), diff='''- tets: a deliberate spelling error.
 4+? - ^
 5+
 6++ test: a deliberate spelling error, and more text
 7+? + ^^^^^^^^^^^^^^^
 8+''', ok=False, result='''tets: a deliberate spelling error.''', enable=True)]
Property changes on: trunk/testing/wikiation_exttest/examples/out.py
___________________________________________________________________
Added: svn:eol-style
19 + native
Index: trunk/testing/wikiation_exttest/examples/example.py
@@ -0,0 +1,24 @@
 2+#!/usr/bin/python
 3+
 4+
 5+from exttest import Test
 6+
 7+
 8+tests=[
 9+ Test(
 10+ name="{{SERVER}} directive",
 11+ code="{{SERVER}} yet another test",
 12+ expect='<a href="http://83.149.110.226" class="external free" title="http://83.149.110.226" rel="nofollow">http://83.149.110.226</a> yet another test'
 13+ ),
 14+ Test(
 15+ name="plain text",
 16+ code="test",
 17+ expect="test"
 18+ ),
 19+ Test(
 20+ name="normal wikilink",
 21+ code="[[hello]]",
 22+ expect='<a href="https://www.mediawiki.org/index.php?title=Hello&amp;action=edit" class="new" title="Hello">hello</a>'
 23+ )
 24+]
 25+
Property changes on: trunk/testing/wikiation_exttest/examples/example.py
___________________________________________________________________
Added: svn:eol-style
126 + native
Index: trunk/testing/wikiation_exttest/logintest.py
@@ -0,0 +1,27 @@
 2+#!/usr/bin/python
 3+
 4+#This software, copyright (C) 2008-2009 by Wikiation.
 5+# This software is developed by Kim Bruning.
 6+#
 7+# Distributed under the terms of the MIT license.
 8+
 9+# Logintest: a quick test of logindata
 10+
 11+import logindata
 12+
 13+l=logindata.LoginData(
 14+ name='6Basic',
 15+ protocol='http',
 16+ server='localhost',
 17+ scriptpath='/revisions/REL1_13_2',
 18+ version='1.13.2',
 19+ lang='en',
 20+ user='------',
 21+ password='-------'
 22+ )
 23+
 24+site=l.login()
 25+print site
 26+page=logindata.wikipedia.Page(site,'Hello World')
 27+
 28+page.put("hello world\n");
Property changes on: trunk/testing/wikiation_exttest/logintest.py
___________________________________________________________________
Added: svn:eol-style
129 + native
Added: svn:executable
230 +
Index: trunk/testing/wikiation_exttest/testpages/Testpage
@@ -0,0 +1,37 @@
 2+This is a test page.
 3+Let's also add xml and see what happens.
 4+
 5+<pre>
 6+
 7+ <exttest>
 8+ <name>{{SERVER}} directive</name>
 9+ <code>{{SERVER}} yet another test</code>
 10+ <expect><![CDATA[<a href="http://83.149.110.226" class="external free" title="http://83.149.110.226" rel="nofollow">http://83.149.110.226</a> yet another test]]></expect>
 11+ </exttest>
 12+
 13+<extresult></extresult>
 14+
 15+</pre>
 16+some odd text in between
 17+
 18+<pre>
 19+ <exttest>
 20+ <name>plain text</name>
 21+ <code>test</code>
 22+ <expect>test</expect>
 23+ </exttest>
 24+<extresult></extresult>
 25+
 26+
 27+ <exttest>
 28+ <name>normal wikilink</name>
 29+ <code>[[hello]]</code>
 30+ <expect><![CDATA[<a href="https://www.mediawiki.org/index.php?title=Hello&amp;action=edit" class="new" title="Hello">hello</a>]]></expect>
 31+ </exttest>
 32+
 33+<extresult></extresult>
 34+</pre>
 35+
 36+
 37+
 38+[[Category:automated tests]]
Property changes on: trunk/testing/wikiation_exttest/testpages/Testpage
___________________________________________________________________
Added: svn:eol-style
139 + native
Index: trunk/testing/wikiation_exttest/settings.py.example
@@ -0,0 +1,60 @@
 2+# This software, copyright (C) 2008-2009 by Wikiation.
 3+# This software is developed by Kim Bruning.
 4+#
 5+# Distributed under the terms of the MIT license
 6+
 7+
 8+#Settings file for exttest
 9+import os
 10+
 11+# path to pywikipedia
 12+#(calculated, in this case)
 13+pywikipedia_path=os.path.join(os.path.dirname(__file__),'..','pywikipedia')
 14+
 15+from logindata import LoginData
 16+
 17+# How many tests per page should be permitted?
 18+# (0 = infinite)
 19+tests_per_page=0
 20+
 21+#What is the default category name?
 22+category_name="Automated tests"
 23+
 24+# Trim spaces in elements.
 25+# Certain people introduce spurious whitespace, even in CDATA. ARGH!
 26+# If you cannot smite such infidels, turn on this flag instead to strip
 27+# their whitespace.
 28+# I'm not sure that this is the canonical behaviour. O:-)
 29+strip_whitespace=True
 30+
 31+
 32+# site information
 33+
 34+# wiki to read testcases from, and write reports to
 35+# (logically not used if reading tests from file)
 36+source_login=LoginData(
 37+ name='test_source',
 38+ protocol='http',
 39+ server='localhost',
 40+ scriptpath='/revisions/REL1_13_2',
 41+ lang='en',
 42+ encoding='utf-8',
 43+ user='---------',
 44+ password='--------'
 45+ )
 46+
 47+# wiki to actually run the test on.
 48+target_login=LoginData(
 49+ name='test_target',
 50+ protocol='http',
 51+ server='localhost',
 52+ scriptpath='/revisions/exttest_target',
 53+ lang='en',
 54+ encoding='utf-8',
 55+ user='---------',
 56+ password='--------'
 57+ )
 58+
 59+
 60+#test page name (botTest is default
 61+pageName="Bot_test"
Property changes on: trunk/testing/wikiation_exttest/settings.py.example
___________________________________________________________________
Added: svn:eol-style
162 + native
Index: trunk/testing/tests/ParserFunctions/WETE.xml
@@ -0,0 +1,35 @@
 2+<?xml version="1.0"?>
 3+<exttests>
 4+ <exttest>
 5+ <name>Test resulting true</name>
 6+ <code><![CDATA[{{#if: test | true | false }}]]></code>
 7+ <expect><![CDATA[true]]></expect>
 8+ </exttest>
 9+ <exttest>
 10+ <name>Test resulting false</name>
 11+ <code><![CDATA[{{#if: | true | false }}]]></code>
 12+ <expect><![CDATA[false]]></expect>
 13+ </exttest>
 14+ <exttest>
 15+ <name>Textual comparison resulting true</name>
 16+ <code><![CDATA[{{#ifeq: test | test | true | false }}]]></code>
 17+ <expect><![CDATA[true]]></expect>
 18+ </exttest>
 19+ <exttest>
 20+ <name>Textual comparison resulting false</name>
 21+ <code><![CDATA[{{#ifeq: test | not test | true | false }}]]></code>
 22+ <expect><![CDATA[false]]></expect>
 23+ </exttest>
 24+ <exttest>
 25+ <name>Numerical comparison resulting true</name>
 26+ <code><![CDATA[{{#ifeq: 0 | -0 | true | false }}]]></code>
 27+ <expect><![CDATA[true]]></expect>
 28+ </exttest>
 29+ <exttest>
 30+ <name>Textual comparison resulting false</name>
 31+ <code><![CDATA[{{#ifeq: 1 | 2 | true | false }}]]></code>
 32+ <expect><![CDATA[false]]></expect>
 33+ </exttest>
 34+
 35+</exttests>
 36+
Index: trunk/testing/tests/UniwikiCatBoxAtTop/Selenium.html
@@ -0,0 +1,47 @@
 2+<?xml version="1.0" encoding="UTF-8"?>
 3+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 4+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 5+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
 6+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 7+<link rel="selenium.base" href="" />
 8+<title>Selenium</title>
 9+</head>
 10+<body>
 11+<table cellpadding="1" cellspacing="1" border="1">
 12+<thead>
 13+<tr><td rowspan="1" colspan="3">Selenium</td></tr>
 14+</thead><tbody>
 15+<tr>
 16+ <td>open</td>
 17+ <td>index.php?title=Main_Page&amp;action=edit</td>
 18+ <td></td>
 19+</tr>
 20+<tr>
 21+ <td>type</td>
 22+ <td>wpTextbox1</td>
 23+ <td>[[Category:Test 1]]<br />[[Category:Test 1]]<br />[[Category:test 1]]<br />[[Category:Test 2]]</td>
 24+</tr>
 25+<tr>
 26+ <td>clickAndWait</td>
 27+ <td>wpSave</td>
 28+ <td></td>
 29+</tr>
 30+<tr>
 31+ <td>verifyTextPresent</td>
 32+ <td>Categories</td>
 33+ <td></td>
 34+</tr>
 35+<tr>
 36+ <td>verifyTextPresent</td>
 37+ <td>Test 1</td>
 38+ <td></td>
 39+</tr>
 40+<tr>
 41+ <td>verifyTextPresent</td>
 42+ <td>Test 2</td>
 43+ <td></td>
 44+</tr>
 45+
 46+</tbody></table>
 47+</body>
 48+</html>
Index: trunk/testing/tests/UniwikiGenericEditPage/Selenium.html
@@ -0,0 +1,172 @@
 2+<?xml version="1.0" encoding="UTF-8"?>
 3+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 4+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 5+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
 6+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 7+<link rel="selenium.base" href="" />
 8+<title>Uniwiki Generic Edit Page Manual Testcase 1</title>
 9+</head>
 10+<body>
 11+<table cellpadding="1" cellspacing="1" border="1">
 12+<thead>
 13+<tr><td rowspan="1" colspan="3">Uniwiki Generic Edit Page Manual Testcase 1</td></tr>
 14+</thead><tbody>
 15+<tr>
 16+ <td>open</td>
 17+ <td>index.php?title=Main_Page</td>
 18+ <td></td>
 19+</tr>
 20+<tr>
 21+ <td>type</td>
 22+ <td>searchInput</td>
 23+ <td>Non-existent Page</td>
 24+</tr>
 25+<tr>
 26+ <td>clickAndWait</td>
 27+ <td>searchGoButton</td>
 28+ <td></td>
 29+</tr>
 30+<tr>
 31+ <td>clickAndWait</td>
 32+ <td>link=create this page</td>
 33+ <td></td>
 34+</tr>
 35+<tr>
 36+ <td>type</td>
 37+ <td>//textarea[@name='section-0']</td>
 38+ <td>This is a '''test''' of the ''Uniwiki Generic Edit Page'' extension.</td>
 39+</tr>
 40+<tr>
 41+ <td>type</td>
 42+ <td>fm-add-sect</td>
 43+ <td>Test 1</td>
 44+</tr>
 45+<tr>
 46+ <td>click</td>
 47+ <td>fm-add-sect-button</td>
 48+ <td></td>
 49+</tr>
 50+<tr>
 51+ <td>type</td>
 52+ <td>fm-add-sect</td>
 53+ <td>Test 1</td>
 54+</tr>
 55+<tr>
 56+ <td>click</td>
 57+ <td>fm-add-sect-button</td>
 58+ <td></td>
 59+</tr>
 60+<tr>
 61+ <td>type</td>
 62+ <td>fm-add-sect</td>
 63+ <td>Test 2</td>
 64+</tr>
 65+<tr>
 66+ <td>click</td>
 67+ <td>fm-add-sect-button</td>
 68+ <td></td>
 69+</tr>
 70+<tr>
 71+ <td>type</td>
 72+ <td>//textarea[@name='section-2']</td>
 73+ <td>This is a '''test''' of the ''Uniwiki Generic Edit Page'' extension.</td>
 74+</tr>
 75+<tr>
 76+ <td>type</td>
 77+ <td>//textarea[@name='section-3']</td>
 78+ <td>This is a '''test''' of the ''Uniwiki Generic Edit Page'' extension.</td>
 79+</tr>
 80+<tr>
 81+ <td>type</td>
 82+ <td>//textarea[@name='section-4']</td>
 83+ <td>This is a '''test''' of the ''Uniwiki Generic Edit Page'' extension.</td>
 84+</tr>
 85+<tr>
 86+ <td>type</td>
 87+ <td>fm-add-cat</td>
 88+ <td>Test Category 1</td>
 89+</tr>
 90+<tr>
 91+ <td>click</td>
 92+ <td>fm-add-cat-button</td>
 93+ <td></td>
 94+</tr>
 95+<tr>
 96+ <td>type</td>
 97+ <td>fm-add-cat</td>
 98+ <td>test Category&nbsp;&nbsp;1</td>
 99+</tr>
 100+<tr>
 101+ <td>click</td>
 102+ <td>fm-add-cat-button</td>
 103+ <td></td>
 104+</tr>
 105+<tr>
 106+ <td>type</td>
 107+ <td>fm-add-cat</td>
 108+ <td>Test Category 2</td>
 109+</tr>
 110+<tr>
 111+ <td>click</td>
 112+ <td>fm-add-cat-button</td>
 113+ <td></td>
 114+</tr>
 115+<tr>
 116+ <td>type</td>
 117+ <td>fm-add-cat</td>
 118+ <td>Test Category 3</td>
 119+</tr>
 120+<tr>
 121+ <td>click</td>
 122+ <td>fm-add-cat-button</td>
 123+ <td></td>
 124+</tr>
 125+<tr>
 126+ <td>clickAndWait</td>
 127+ <td>//input[@value='Classic mode']</td>
 128+ <td></td>
 129+</tr>
 130+<tr>
 131+ <td>clickAndWait</td>
 132+ <td>//input[@value='Generic mode']</td>
 133+ <td></td>
 134+</tr>
 135+<tr>
 136+ <td>clickAndWait</td>
 137+ <td>wpPreview</td>
 138+ <td></td>
 139+</tr>
 140+<tr>
 141+ <td>clickAndWait</td>
 142+ <td>wpDiff</td>
 143+ <td></td>
 144+</tr>
 145+<tr>
 146+ <td>clickAndWait</td>
 147+ <td>wpSave</td>
 148+ <td></td>
 149+</tr>
 150+<tr>
 151+ <td>clickAndWait</td>
 152+ <td>link=Edit</td>
 153+ <td></td>
 154+</tr>
 155+<tr>
 156+ <td>click</td>
 157+ <td>enable-1</td>
 158+ <td></td>
 159+</tr>
 160+<tr>
 161+ <td>click</td>
 162+ <td>category-Test Category 1</td>
 163+ <td></td>
 164+</tr>
 165+<tr>
 166+ <td>clickAndWait</td>
 167+ <td>wpSave</td>
 168+ <td></td>
 169+</tr>
 170+
 171+</tbody></table>
 172+</body>
 173+</html>
Index: trunk/testing/tests/ImageMap/WETE.xml
@@ -0,0 +1,18 @@
 2+<?xml version="1.0"?>
 3+<exttests>
 4+<exttest>
 5+ <name>Imagemap</name>
 6+ <code><![CDATA[<imagemap>
 7+Image:Hello.jpg|200px|a friendly greeting
 8+poly 131 45 213 41 210 110 127 109 [[Display]]
 9+poly 104 126 105 171 269 162 267 124 [[Keyboard]]
 10+rect 15 95 94 176 [[Foo type A]]
 11+# A comment, this line is ignored
 12+circle 57 57 20 [[Foo type C]]
 13+desc bottom-left
 14+</imagemap>]]></code>
 15+ <expect><![CDATA[<p class="error">Error: image is invalid or non-existent</p>]]></expect>
 16+ <result><![CDATA[<p class="error">Error: image is invalid or non-existent</p>]]></result>
 17+ <diff><![CDATA[ <p class="error">Error: image is invalid or non-existent</p>]]></diff>
 18+</exttest>
 19+</exttests>
Index: trunk/testing/tests/UniwikiCreatePage/Selenium.html
@@ -0,0 +1,47 @@
 2+<?xml version="1.0" encoding="UTF-8"?>
 3+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 4+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 5+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
 6+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 7+<link rel="selenium.base" href="http://12.wikiation.nl/revisions/R14/" />
 8+<title>Selenium</title>
 9+</head>
 10+<body>
 11+<table cellpadding="1" cellspacing="1" border="1">
 12+<thead>
 13+<tr><td rowspan="1" colspan="3">Selenium</td></tr>
 14+</thead><tbody>
 15+<tr>
 16+ <td>open</td>
 17+ <td>index.php?title=Special:SpecialPages</td>
 18+ <td></td>
 19+</tr>
 20+<tr>
 21+ <td>clickAndWait</td>
 22+ <td>link=Create a page</td>
 23+ <td></td>
 24+</tr>
 25+<tr>
 26+ <td>type</td>
 27+ <td>target</td>
 28+ <td>Template:Test Page 1</td>
 29+</tr>
 30+<tr>
 31+ <td>clickAndWait</td>
 32+ <td>//input[@value='Submit']</td>
 33+ <td></td>
 34+</tr>
 35+<tr>
 36+ <td>verifyTextPresent</td>
 37+ <td>Editing Template:Test Page 1</td>
 38+ <td></td>
 39+</tr>
 40+<tr>
 41+ <td>verifyTextPresent</td>
 42+ <td>You have followed a link to a page that does not exist yet. To create the page, start typing in the box below (see the help page for more info). <br /> If you are here by mistake, click your browser's back button.</td>
 43+ <td></td>
 44+</tr>
 45+
 46+</tbody></table>
 47+</body>
 48+</html>
Index: trunk/testing/tests/Cite/WETE.xml
@@ -0,0 +1,39 @@
 2+<?xml version="1.0"?>
 3+<exttests>
 4+ <exttest>
 5+ <name>Individual regular reference</name>
 6+ <code><![CDATA[Individual regular reference.<ref>This is a regular reference.</ref><references/>]]></code>
 7+ <expect><![CDATA[Individual regular reference.<sup id="cite_ref-0" class="reference"><a href="#cite_note-0" title="">[1]</a></sup><ol class="references"><li id="cite_note-0"><a href="#cite_ref-0" title="">.</a> This is a regular reference.</li></ol>]]></expect>
 8+ </exttest>
 9+ <exttest>
 10+ <name>Multiple regular references</name>
 11+ <code><![CDATA[Multiple regular references.<ref>This is the first in reference.</ref><ref>This is the second reference.</ref><ref>This is the third reference.</ref><ref>This is the fourth reference.</ref><references/>]]></code>
 12+ <expect><![CDATA[Multiple regular references.<sup id="cite_ref-0" class="reference"><a href="#cite_note-0" title="">[1]</a></sup><sup id="cite_ref-1" class="reference"><a href="#cite_note-1" title="">[2]</a></sup><sup id="cite_ref-2" class="reference"><a href="#cite_note-2" title="">[3]</a></sup><sup id="cite_ref-3" class="reference"><a href="#cite_note-3" title="">[4]</a></sup><ol class="references"><li id="cite_note-0"><a href="#cite_ref-0" title="">.</a> This is the first in reference.</li>
 13+<li id="cite_note-1"><a href="#cite_ref-1" title="">.</a> This is the second reference.</li>
 14+<li id="cite_note-2"><a href="#cite_ref-2" title="">.</a> This is the third reference.</li>
 15+<li id="cite_note-3"><a href="#cite_ref-3" title="">.</a> This is the fourth reference.</li></ol>]]></expect>
 16+ </exttest>
 17+ <exttest>
 18+ <name>Named references</name>
 19+ <code><![CDATA[Named references.<ref name="test">This is a reference named "test".</ref><ref name="test"/><ref name="test"/><ref name="test"/><references/>]]></code>
 20+ <expect><![CDATA[Named references.<sup id="cite_ref-test_0-0" class="reference"><a href="#cite_note-test-0" title="">[1]</a></sup><sup id="cite_ref-test_0-1" class="reference"><a href="#cite_note-test-0" title="">[1]</a></sup><sup id="cite_ref-test_0-2" class="reference"><a href="#cite_note-test-0" title="">[1]</a></sup><sup id="cite_ref-test_0-3" class="reference"><a href="#cite_note-test-0" title="">[1]</a></sup><ol class="references"><li id="cite_note-test-0">. <sup><a href="#cite_ref-test_0-0" title="">1.0</a></sup> <sup><a href="#cite_ref-test_0-1" title="">1.1</a></sup> <sup><a href="#cite_ref-test_0-2" title="">1.2</a></sup> <sup><a href="#cite_ref-test_0-3" title="">1.3</a></sup> This is a reference named "test".</li></ol>]]></expect>
 21+ </exttest>
 22+ <exttest>
 23+ <name>Grouped references</name>
 24+ <code><![CDATA[Grouped references.<ref group="testgroup">This is the first group reference.</ref><ref group="testgroup">This is the second group reference.</ref><ref group="testgroup">This is the third group reference.</ref><ref group="testgroup">This is the fourth group reference.</ref><references group="testgroup"/>]]></code>
 25+ <expect><![CDATA[Grouped references.<sup id="cite_ref-0" class="reference"><a href="#cite_note-0" title="">[testgroup 1]</a></sup><sup id="cite_ref-1" class="reference"><a href="#cite_note-1" title="">[testgroup 2]</a></sup><sup id="cite_ref-2" class="reference"><a href="#cite_note-2" title="">[testgroup 3]</a></sup><sup id="cite_ref-3" class="reference"><a href="#cite_note-3" title="">[testgroup 4]</a></sup><ol class="references"><li id="cite_note-0"><a href="#cite_ref-0" title="">.</a> This is the first group reference.</li>
 26+<li id="cite_note-1"><a href="#cite_ref-1" title="">.</a> This is the second group reference.</li>
 27+<li id="cite_note-2"><a href="#cite_ref-2" title="">.</a> This is the third group reference.</li>
 28+<li id="cite_note-3"><a href="#cite_ref-3" title="">.</a> This is the fourth group reference.</li></ol>]]></expect>
 29+ </exttest>
 30+ <exttest>
 31+ <name>Named grouped references</name>
 32+ <code><![CDATA[Named grouped references.<ref name="test" group="testgroup">This is the first named group references.</ref><ref name="test" group="testgroup">This is the second named group references.</ref><ref name="test" group="testgroup">This is the third named group reference.</ref><ref name="test" group="testgroup">This is the fourth named group reference.</ref><references group="testgroup"/>]]></code>
 33+ <expect><![CDATA[Named grouped references.<sup id="cite_ref-test_0-0" class="reference"><a href="#cite_note-test-0" title="">[testgroup 1]</a></sup><sup id="cite_ref-test_0-1" class="reference"><a href="#cite_note-test-0" title="">[testgroup 1]</a></sup><sup id="cite_ref-test_0-2" class="reference"><a href="#cite_note-test-0" title="">[testgroup 1]</a></sup><sup id="cite_ref-test_0-3" class="reference"><a href="#cite_note-test-0" title="">[testgroup 1]</a></sup><ol class="references"><li id="cite_note-test-0">. <sup><a href="#cite_ref-test_0-0" title="">1.0</a></sup> <sup><a href="#cite_ref-test_0-1" title="">1.1</a></sup> <sup><a href="#cite_ref-test_0-2" title="">1.2</a></sup> <sup><a href="#cite_ref-test_0-3" title="">1.3</a></sup> This is the first named group references.</li></ol>]]></expect>
 34+ </exttest>
 35+ <exttest>
 36+ <name>newtest</name>
 37+ <code><![CDATA[Named grouped references.<ref name="test" group="testgroup">This is the first named group references.</ref><ref name="test" group="testgroup">This is the second named group references.</ref><ref name="test" group="testgroup">This is the third named group reference.</ref><ref name="test" group="testgroup">This is the fourth named group reference.</ref><references group="testgroup"/>]]></code>
 38+ <expect><![CDATA[Named grouped references.<sup id="cite_ref-test_0-0" class="reference"><a href="#cite_note-test-0" title="">[testgroup 1]</a></sup><sup id="cite_ref-test_0-1" class="reference"><a href="#cite_note-test-0" title="">[testgroup 1]</a></sup><sup id="cite_ref-test_0-2" class="reference"><a href="#cite_note-test-0" title="">[testgroup 1]</a></sup><sup id="cite_ref-test_0-3" class="reference"><a href="#cite_note-test-0" title="">[testgroup 1]</a></sup><ol class="references"><li id="cite_note-test-0">. <sup><a href="#cite_ref-test_0-0" title="">1.0</a></sup> <sup><a href="#cite_ref-test_0-1" title="">1.1</a></sup> <sup><a href="#cite_ref-test_0-2" title="">1.2</a></sup> <sup><a href="#cite_ref-test_0-3" title="">1.3</a></sup> This is the first named group references.</li></ol>]]></expect>
 39+ </exttest>
 40+</exttests>

Status & tagging log