Commit Graph

58 Commits

Author SHA1 Message Date
Tim Hunt 27d625a863 MDL-62482 file_storage: may have many files with same content hash 2018-05-17 11:24:33 +01:00
Eloy Lafuente (stronk7) 796e48a58b MDL-60611 phpunit: remove deprecated stuff and other minor fixes
Thanks @scara for MDL-60611 phpunit: improved redis skipping reasons
2017-11-05 01:45:04 +01:00
Eloy Lafuente (stronk7) 801a372dad MDL-60611 phpunit: switch to namespaced phunit classes 2017-11-02 23:45:34 +01:00
Damyon Wiese 022dccf2a7 Merge branch 'MDL-60001_gzopen' of https://github.com/mrmark/moodle 2017-10-19 13:00:13 +08:00
Mark Nielsen 879827d6fa MDL-60001 core_files: Use local file for gzopen
The gzopen method does not appear to support
file streams.
2017-08-31 15:47:00 -07:00
Mark Nielsen ee8bce2d3b MDL-59960 core_files: improve mimetype detection
Improve mimetype detection for remote files that
have no file extension.  The mimetype detection
that makes use of the file, only works with local
files, so do not use the remote path which can be
a URL or stream.
2017-08-28 11:36:15 -07:00
Andrew Nicols 9020212522 MDL-58718 filestorage: Normalise file paths for Windows 2017-04-26 09:36:10 +08:00
Andrew Nicols a30a04fa01 MDL-58297 filestorage: New functions for hash calculation 2017-04-07 10:40:23 +08:00
Andrew Nicols 0c03db6a32 MDL-46375 core_files: Correct filename in mbz test
I noticed during the file system abstraction that this test was
incorrect.

Since both $storagefalse, and $storagetrue are in the same context,
component, area, itemid, and folder, the fact that they had the same
filename meant that they constantly overwrote one another.

As part of archive_to_storage, existing files in the same location are
found, the files themselves deleted, and the existing file record in the
files table is deleted.

The tests continued to pass because:
* the existing variables were not affected by the deletion of the file
  record and file so the comparisons were successful; and
* subsequent calls to fetch the content of the file meant that the
  files themselves were restored from the trash directory.
2017-02-14 08:42:28 +08:00
Andrew Nicols 16a34ae189 MDL-46375 core_files: Split parts of file_storage into new file system
This change moves all operations which deal with the fetching/updating, or
setting of files from the file_storage class into a new file_system class.

A new file_system can be specified in the config.php and used to replace
all relevant methods in order to move the file system component to an
alternative solution.
2017-02-14 08:42:28 +08:00
sam marshall 66234de24c MDL-57515 Resource: 'not very efficient' with a large number of files
Fixes bug where the resource module loads metadata for all files while
building course modinfo, even though it only needs the first file.
(This causes problems if you have ~10k files.)
2017-01-10 17:43:46 +00:00
Andrew Nicols 2c2f4f17c3 MDL-24343 core: Deprecate unzip_file 2016-08-03 09:05:55 +08:00
Rajesh Taneja 52f3e060e4 MDL-55091 phpunit: Following has been deprecated.
1. getMock()
2. setExpectedException()
3. checkForUnintentionallyCoveredCode renamed to beStrictAboutCoversAnnotation
4. beStrictAboutTestSize renamed to enforceTimeLimit
5. UnitTestCase class is now fully removed.
2016-07-26 10:11:30 +08:00
Eugene Venter 8ef4fbc64f MDL-52530 unittest: more robust capability assignments for guest
for core_files_file_storage_testcase and core_repositorylib_testcase
2015-12-23 09:24:53 +13:00
Jetha Chan 623c947f2b MDL-37308 files: support transparency when not resizing; new unit test 2015-11-29 20:28:19 -06:00
Eloy Lafuente (stronk7) 70ae75674d MDL-51863 packer: ensure empty zip files behavior remains consistent
With PHP bug #70322 fixed, ZipArchive::close() did start returning false
and throwing PHP Warnings with recent PHP versions (5.6.14 and up).
Previously (5.6.13 verified) it was returning true, and false in older
versions (5.4.x verified).

This change does silent the 2 "hacky" calls to close() that we perform
in core leaving the 3rd one (used for files having files) unmodified.

A new unit test has been created to cover the close() behavior, ideally
supporting both old and new PHP versions without harcoding any PHP
version.

Note that we don't use to rely much on results coming from close(), and
that's a good thing given the buggy behavior commented above. This just
keeps empty zips working like they were before.
2015-10-26 21:16:54 +01:00
Eric Merrill c803fa6855 MDL-49298 backup: Make tgz file format standard for backups 2015-03-05 10:07:58 -05:00
Matteo Scaramuccia ad3ade7681 MDL-29708 Fixed extra slashes in $string['storedfilenotcreated']. 2014-06-07 09:53:09 +02:00
Petr Škoda 2803f3c1b5 MDL-43402 remove all zlib detection code
Zlib extension is now required.
2013-12-27 11:06:18 +08:00
Jerome Mouneyrac 316283c72b MDL-42081 fix file_storage phpunit tests following adding new stamp files on fresh install 2013-11-11 16:01:32 +08:00
sam marshall 3749c94627 MDL-42714 Backup: For tgz packer, handle missing zlib extension 2013-11-06 12:34:46 +00:00
Damyon Wiese 370058d8fb Merge branch 'MDL-41838-master' of git://github.com/sammarshallou/moodle
Conflicts:
	lib/upgrade.txt
2013-10-10 10:49:11 +08:00
sam marshall 39e5102f8b MDL-41838 Backup/restore: Support .tar.gz format for .mbz (2 of 2)
The new experimental setting enabletgzbackups allows backups to be
created so that the internal format for .mbz files is .tar.gz.

Restore transparently supports .mbz files with either internal
formats (.zip or .tar.gz).

The .tar.gz format has the following benefits for backup:
- Supports larger files (no limit on total size, 8GB on single file
  vs. 4GB limit on total size)
- Compresses text better, resulting in smaller .mbz files.
- Reports progress regularly during compression of single files,
  reducing the chance of timeouts during backups that include a
  very large file.

Time performance may also be improved although I haven't done a
direct comparison.
2013-10-08 13:04:49 +01:00
sam marshall c858655dde MDL-41838 Files: Implement .tar.gz packer (1 of 2)
A new packer for .tar.gz files (MIME type application/x-gzip) has been
implemented, including unit tests.

This packer is intended for use during backup/restore only and is not
otherwise exposed in the user interface at present. However, it is
supposed to follow the (ancient) POSIX .tar standard; files created
with this packer will open in GNU tar.

There are restrictions in support corresponding to the POSIX standard:

- Non-ASCII filenames are not supported.
- Very long file/path names are not supported.
- Individual files within the .tar may not be more than 8GB.

Some of these limitations might need to be addressed in future changes
if the packer were to be used in areas other than backup/restore.
2013-10-08 13:04:48 +01:00
Marina Glancy 2a68ee0eb1 MDL-42016 files: Properly synchronise internal references 2013-10-06 18:05:05 +11:00
Petr Škoda a9d2f1b414 MDL-41707 allow custom location of external test files used from unit tests 2013-09-27 10:47:56 +02:00
sam marshall 771e3f7cab MDL-41839 Files: Zip packer progress minor bugs
The progress variable wasn't always passed to recursive calls. This
caused a lack of progress() calls between files in subfolders. I
added a unit test for this situation.
2013-09-17 14:19:07 +01:00
sam marshall 71ab7e512b MDL-41151 Files: Zip packer should have way to indicate progress 2013-09-05 16:41:57 +01:00
Petr Škoda 5f15f7c9aa MDL-41022 cleanup core_files_zip_packer_testcase 2013-08-24 16:18:18 +02:00
Petr Škoda 4c34571b76 MDL-41022 cleanup core_files_file_storage_testcase 2013-08-24 16:18:18 +02:00
Petr Škoda 8252b7c291 MDL-40901 standardise core test case class and file names
This finally allows us to type only the class name when executing individual core test cases.
2013-08-04 22:10:31 +02:00
Paul Nicholls 81d9f3d536 MDL-39339 - Add test zips for OSX system files and Thumbs.db 2013-05-30 09:22:56 +12:00
Petr Škoda fd4592bbbc MDL-36959 test reworked adding of files to sha1 content pool 2013-04-20 21:59:08 +02:00
David Mudrák 546b886416 MDL-39087 Delete all component files in uninstall_plugin() 2013-04-12 01:42:58 +02:00
Petr Škoda 689096bc26 MDL-38654 do not test $CFG->gdversion
GD PHP extension is now required. Add-ons need to remove $CFG->gdversion tests. The worst case regression is that add-on will think GD is not available.
2013-03-22 16:57:55 +01:00
Frederic Massart 3385a89c38 MDL-37641 files: Tests for draftfile_exists and get_unused_filename 2013-02-20 08:50:43 +08:00
Petr Škoda 96846ef18b MDL-37640 close all zip archives after use in unit tests 2013-01-25 12:46:58 +01:00
Petr Škoda 01b4040a27 MDL-37429 zipping improvements
Changes:
* zip_packer can create empty zip archives
* new option to ignore problematic files when creating archive
* detection of non-existent files
* debugging messages for opening of faulty zip archives
* coding style improvements
* no PHP 5.2 hacks
* more unit tests
2013-01-12 14:58:26 +01:00
Frederic Massart 1017426c26 MDL-32639 phpunit: Hack not to fail on debugging 2013-01-09 11:48:44 +08:00
Petr Škoda 65598feb36 MDL-36447 skip file preview test if GD not available 2012-12-09 19:22:01 +01:00
Frederic Massart e462f46b77 MDL-35117 librairies: File Packer can only extract a specific list a files 2012-10-18 13:38:48 +08:00
Petr Škoda 060bb94d81 MDL-35479 fix zip packer tests to use debugging asserts 2012-09-17 12:00:02 +02:00
Petr Škoda f6b49abf9b MDL-17830 fix zip_packer return status add debugging for invalid files and dirs 2012-07-29 16:09:18 +02:00
Petr Skoda 6fb8ae95f5 MDL-33753 support utf-8 filename unzipping 2012-07-06 08:03:38 +02:00
Petr Skoda 79c966cf21 MDL-33710, MDL-33710 add utf-8 flag to all zip files created in moodle and unzip from storage fix 2012-07-06 08:02:42 +02:00
David Mudrák 483afa446d MDL-33453 Make it clear what search_references() and search_references_count() are good for
Initially it was not clear enough that these two methods are supposed to
be used for looking for references to a stored_file only. So the docs
comments are improved and unittests added to illustrate the usage.

The patch also removes the unittest for get_references_by_storedfile()
as its usage is already covered in other test methods.
2012-07-05 17:15:37 +02:00
Marina Glancy cfc4db405c MDL-33550 Set default status for file =0 and correct setting user in phpunit test 2012-06-14 14:52:31 +08:00
David Mudrak 2d2c194bbe MDL-33587 Add unit tests for stored_file::delete_reference()
The first unit test forces the File API to be more picky as any sane
core API should be. The second one illustrates the buggy behaviour of
the current implementation of delete_reference(). They both fail at the
moment, of course...
2012-06-07 17:36:23 +02:00
David Mudrak d83ce95322 MDL-33330 improved {files_reference} records creation
This patch unifies the way how records in {files_reference} get created.
Previously, each reference file (i.e. a file with referencefileid set)
created its own record in {files_reference}. This patch makes sure that
existing record is reused if possible.

Bye bye 1:1 relationships, you suck!
2012-06-05 13:39:09 +02:00
Eloy Lafuente (stronk7) 294d976e28 MDL-33326 filestorage tests: Coding style fixes 2012-05-30 02:26:57 +02:00