MediaWiki REL1_30
UploadFromUrlTestSuite.php
Go to the documentation of this file.
1<?php
2
3require_once dirname( __DIR__ ) . '/includes/upload/UploadFromUrlTest.php';
4
5class UploadFromUrlTestSuite extends PHPUnit_Framework_TestSuite {
6 public $savedGlobals = [];
7
8 public static function addTables( &$tables ) {
9 $tables[] = 'user_properties';
10 $tables[] = 'filearchive';
11 $tables[] = 'logging';
12 $tables[] = 'updatelog';
13 $tables[] = 'iwlinks';
14
15 return true;
16 }
17
18 protected function setUp() {
23
24 $tmpDir = $this->getNewTempDirectory();
25 $tmpGlobals = [];
26
27 $tmpGlobals['wgScript'] = '/index.php';
28 $tmpGlobals['wgScriptPath'] = '/';
29 $tmpGlobals['wgArticlePath'] = '/wiki/$1';
30 $tmpGlobals['wgStylePath'] = '/skins';
31 $tmpGlobals['wgThumbnailScriptPath'] = false;
32 $tmpGlobals['wgLocalFileRepo'] = [
33 'class' => 'LocalRepo',
34 'name' => 'local',
35 'url' => 'http://example.com/images',
36 'hashLevels' => 2,
37 'transformVia404' => false,
38 'backend' => new FSFileBackend( [
39 'name' => 'local-backend',
40 'wikiId' => wfWikiID(),
41 'containerPaths' => [
42 'local-public' => "{$tmpDir}/test-repo/public",
43 'local-thumb' => "{$tmpDir}/test-repo/thumb",
44 'local-temp' => "{$tmpDir}/test-repo/temp",
45 'local-deleted' => "{$tmpDir}/test-repo/delete",
46 ]
47 ] ),
48 ];
49 foreach ( $tmpGlobals as $var => $val ) {
50 if ( array_key_exists( $var, $GLOBALS ) ) {
51 $this->savedGlobals[$var] = $GLOBALS[$var];
52 }
53 $GLOBALS[$var] = $val;
54 }
55
56 $wgNamespaceProtection[NS_MEDIAWIKI] = 'editinterface';
58 $wgNamespaceAliases['Image_talk'] = NS_FILE_TALK;
59
61 DeferredUpdates::clearPendingUpdates();
64
67 $wgUser = new User;
68 $wgLang = $context->getLanguage();
69 $wgOut = $context->getOutput();
70 $wgParser = new StubObject( 'wgParser', $wgParserConf['class'], [ $wgParserConf ] );
71 $wgRequest = $context->getRequest();
72
73 if ( $wgStyleDirectory === false ) {
74 $wgStyleDirectory = "$IP/skins";
75 }
76
79 }
80
81 protected function tearDown() {
82 foreach ( $this->savedGlobals as $var => $val ) {
83 $GLOBALS[$var] = $val;
84 }
85 // Restore backends
88
89 parent::tearDown();
90 }
91
97 private static function deleteFiles( $files ) {
98 foreach ( $files as $file ) {
99 if ( file_exists( $file ) ) {
100 unlink( $file );
101 }
102 }
103 }
104
110 private static function deleteDirs( $dirs ) {
111 foreach ( $dirs as $dir ) {
112 if ( is_dir( $dir ) ) {
113 rmdir( $dir );
114 }
115 }
116 }
117
124 private function setupUploadDir() {
125 global $IP;
126
127 $dir = $this->getNewTempDirectory();
128
129 wfDebug( "Creating upload directory $dir\n" );
130
131 wfMkdirParents( $dir . '/3/3a', null, __METHOD__ );
132 copy( "$IP/tests/phpunit/data/upload/headbg.jpg", "$dir/3/3a/Foobar.jpg" );
133
134 wfMkdirParents( $dir . '/0/09', null, __METHOD__ );
135 copy( "$IP/tests/phpunit/data/upload/headbg.jpg", "$dir/0/09/Bad.jpg" );
136
137 return $dir;
138 }
139
140 public static function suite() {
141 // Hack to invoke the autoloader required to get phpunit to recognize
142 // the UploadFromUrlTest class
143 class_exists( 'UploadFromUrlTest' );
144 $suite = new UploadFromUrlTestSuite( 'UploadFromUrlTest' );
145
146 return $suite;
147 }
148}
$dir
Definition Autoload.php:8
$GLOBALS['wgAutoloadClasses']['LocalisationUpdate']
Definition Autoload.php:10
and give any other recipients of the Program a copy of this License along with the Program You may charge a fee for the physical act of transferring a copy
Definition COPYING.txt:87
$wgParserCacheType
The cache type for storing article HTML.
$wgStyleDirectory
Filesystem stylesheets directory.
$wgNamespaceProtection
Set the minimum permissions required to edit pages in each namespace.
$wgParserConf
Parser configuration.
$wgNamespaceAliases
Namespace aliases.
wfDebug( $text, $dest='all', array $context=[])
Sends a line to the debug log if enabled or, optionally, to a comment in output.
wfGetMessageCacheStorage()
Get the cache object used by the message cache.
wfGetMainCache()
Get the main cache object.
wfMkdirParents( $dir, $mode=null, $caller=null)
Make directory, and make all parent directories if they don't exist.
wfWikiID()
Get an ASCII string identifying this wiki This is used as a prefix in memcached keys.
$wgUser
Definition Setup.php:817
$wgOut
Definition Setup.php:827
$wgParser
Definition Setup.php:832
if(! $wgDBerrorLogTZ) $wgRequest
Definition Setup.php:662
Class for a file system (FS) based file backend.
static destroySingleton()
Destroy the singleton instance.
static destroySingleton()
Destroy the singleton instance, so that a new one will be created next time singleton() is called.
Definition RepoGroup.php:73
static resetMain()
Resets singleton returned by getMain().
static getMain()
Static methods.
Class to implement stub globals, which are globals that delay loading the their associated module cod...
static deleteDirs( $dirs)
Delete the specified directories, if they exist.
static deleteFiles( $files)
Delete the specified files, if they exist.
setupUploadDir()
Create a dummy uploads directory which will contain a couple of files in order to pass existence test...
The User object encapsulates all of the user-specific settings (user_id, name, rights,...
Definition User.php:51
this class mediates it Skin Encapsulates a look and feel for the wiki All of the functions that render HTML and make choices about how to render it are here and are called from various other places when and is meant to be subclassed with other skins that may override some of its functions The User object contains a reference to a and so rather than having a global skin object we just rely on the global User and get the skin with $wgUser and also has some character encoding functions and other locale stuff The current user interface language is instantiated as $wgLang
Definition design.txt:56
this hook is for auditing only RecentChangesLinked and Watchlist RecentChangesLinked and Watchlist Do not use this to implement individual filters if they are compatible with the ChangesListFilter and ChangesListFilterGroup structure use sub classes of those in conjunction with the ChangesListSpecialPageStructuredFilters hook This hook can be used to implement filters that do not implement that or custom behavior that is not an individual filter e g Watchlist & $tables
Definition hooks.txt:1013
do that in ParserLimitReportFormat instead use this to modify the parameters of the image all existing parser cache entries will be invalid To avoid you ll need to handle that somehow(e.g. with the RejectParserCacheValue hook) because MediaWiki won 't do it for you. & $defaults also a ContextSource after deleting those rows but within the same transaction you ll probably need to make sure the header is varied on and they can depend only on the ResourceLoaderContext $context
Definition hooks.txt:2780
$IP
Definition update.php:3
globals will be eliminated from MediaWiki replaced by an application object which would be passed to constructors Whether that would be an convenient solution remains to be but certainly PHP makes such object oriented programming models easier than they were in previous versions For the time being MediaWiki programmers will have to work in an environment with some global context At the time of globals were initialised on startup by MediaWiki of these were configuration which are documented in DefaultSettings php There is no comprehensive documentation for the remaining however some of the most important ones are listed below They are typically initialised either in index php or in Setup php For a description of the see design txt $wgTitle Title object created from the request URL $wgOut OutputPage object for HTTP response $wgUser User object for the user associated with the current request $wgLang Language object selected by user preferences $wgContLang Language object associated with the wiki being viewed $wgParser Parser object Parser extensions register their hooks here $wgRequest WebRequest to get request data $messageMemc
Definition globals.txt:66
globals will be eliminated from MediaWiki replaced by an application object which would be passed to constructors Whether that would be an convenient solution remains to be but certainly PHP makes such object oriented programming models easier than they were in previous versions For the time being MediaWiki programmers will have to work in an environment with some global context At the time of globals were initialised on startup by MediaWiki of these were configuration which are documented in DefaultSettings php There is no comprehensive documentation for the remaining however some of the most important ones are listed below They are typically initialised either in index php or in Setup php For a description of the see design txt $wgTitle Title object created from the request URL $wgOut OutputPage object for HTTP response $wgUser User object for the user associated with the current request $wgLang Language object selected by user preferences $wgContLang Language object associated with the wiki being viewed $wgParser Parser object Parser extensions register their hooks here $wgRequest WebRequest to get request data $wgMemc
Definition globals.txt:66
const NS_FILE
Definition Defines.php:71
const CACHE_NONE
Definition Defines.php:103
const NS_MEDIAWIKI
Definition Defines.php:73
const NS_FILE_TALK
Definition Defines.php:72
controlled by $wgMainCacheType * $parserMemc
Definition memcached.txt:78