BackUpWordPress - Version 3.2.5.1-beta

Version Description

  • Correctly set the sslverify argument
  • Fix settings URL
  • Updated and extended German translation.
  • Fixes admin page slug for multisite
Download this release

Release Info

Developer pauldewouters
Plugin Icon 128x128 BackUpWordPress
Version 3.2.5.1-beta
Comparing to
See all releases

Code changes from version 3.2.5 to 3.2.5.1-beta

Files changed (97) hide show
  1. admin/actions.php +51 -9
  2. admin/schedule-form.php +1 -1
  3. backupwordpress.php +1 -1
  4. changelog +0 -17
  5. changelog.txt +7 -0
  6. classes/class-plugin.php +3 -2
  7. functions/interface.php +1 -1
  8. languages/backupwordpress-de_DE.mo +0 -0
  9. languages/backupwordpress-de_DE.po +50 -46
  10. languages/backupwordpress.pot +12 -12
  11. readme.txt +9 -2
  12. vendor/autoload.php +1 -1
  13. vendor/composer/autoload_namespaces.php +0 -1
  14. vendor/composer/autoload_real.php +4 -4
  15. vendor/composer/installed.json +6 -57
  16. vendor/mikey179/vfsStream/CHANGELOG.md +0 -192
  17. vendor/mikey179/vfsStream/LICENSE +0 -27
  18. vendor/mikey179/vfsStream/README.md +0 -8
  19. vendor/mikey179/vfsStream/composer.json +0 -33
  20. vendor/mikey179/vfsStream/examples/Example.php +0 -54
  21. vendor/mikey179/vfsStream/examples/ExampleTestCaseOldWay.php +0 -48
  22. vendor/mikey179/vfsStream/examples/ExampleTestCaseWithVfsStream.php +0 -47
  23. vendor/mikey179/vfsStream/examples/FailureExample.php +0 -50
  24. vendor/mikey179/vfsStream/examples/FailureExampleTestCase.php +0 -58
  25. vendor/mikey179/vfsStream/examples/FileModeExampleTestCaseOldWay.php +0 -67
  26. vendor/mikey179/vfsStream/examples/FilePermissionsExample.php +0 -29
  27. vendor/mikey179/vfsStream/examples/FilePermissionsExampleTestCase.php +0 -44
  28. vendor/mikey179/vfsStream/examples/FilemodeExample.php +0 -62
  29. vendor/mikey179/vfsStream/examples/FilemodeExampleTestCaseWithVfsStream.php +0 -53
  30. vendor/mikey179/vfsStream/examples/bootstrap.php +0 -3
  31. vendor/mikey179/vfsStream/phpdoc.dist.xml +0 -14
  32. vendor/mikey179/vfsStream/phpunit.xml.dist +0 -42
  33. vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/DotDirectory.php +0 -36
  34. vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/Quota.php +0 -87
  35. vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/content/FileContent.php +0 -71
  36. vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/content/LargeFileContent.php +0 -167
  37. vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/content/SeekableFileContent.php +0 -129
  38. vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/content/StringBasedFileContent.php +0 -97
  39. vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStream.php +0 -462
  40. vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamAbstractContent.php +0 -419
  41. vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamBlock.php +0 -34
  42. vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamContainer.php +0 -62
  43. vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamContainerIterator.php +0 -94
  44. vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamContent.php +0 -214
  45. vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamDirectory.php +0 -267
  46. vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamException.php +0 -20
  47. vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamFile.php +0 -394
  48. vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamWrapper.php +0 -986
  49. vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/visitor/vfsStreamAbstractVisitor.php +0 -65
  50. vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/visitor/vfsStreamPrintVisitor.php +0 -108
  51. vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/visitor/vfsStreamStructureVisitor.php +0 -112
  52. vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/visitor/vfsStreamVisitor.php +0 -56
  53. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/DirectoryIterationTestCase.php +0 -318
  54. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/Issue104TestCase.php +0 -52
  55. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/PermissionsTestCase.php +0 -118
  56. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/QuotaTestCase.php +0 -81
  57. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/UnlinkTestCase.php +0 -58
  58. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/content/LargeFileContentTestCase.php +0 -225
  59. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/content/StringBasedFileContentTestCase.php +0 -230
  60. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/proxy/vfsStreamWrapperRecordingProxy.php +0 -326
  61. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamAbstractContentTestCase.php +0 -1054
  62. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamBlockTestCase.php +0 -89
  63. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamContainerIteratorTestCase.php +0 -112
  64. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamDirectoryIssue18TestCase.php +0 -81
  65. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamDirectoryTestCase.php +0 -335
  66. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamExLockTestCase.php +0 -56
  67. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamFileTestCase.php +0 -306
  68. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamGlobTestCase.php +0 -29
  69. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamResolveIncludePathTestCase.php +0 -62
  70. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamTestCase.php +0 -728
  71. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamUmaskTestCase.php +0 -195
  72. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamWrapperAlreadyRegisteredTestCase.php +0 -63
  73. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamWrapperBaseTestCase.php +0 -99
  74. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamWrapperDirSeparatorTestCase.php +0 -73
  75. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamWrapperDirTestCase.php +0 -460
  76. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamWrapperFileTestCase.php +0 -458
  77. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamWrapperFileTimesTestCase.php +0 -315
  78. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamWrapperFlockTestCase.php +0 -440
  79. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamWrapperLargeFileTestCase.php +0 -77
  80. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamWrapperQuotaTestCase.php +0 -224
  81. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamWrapperSetOptionTestCase.php +0 -76
  82. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamWrapperStreamSelectTestCase.php +0 -35
  83. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamWrapperTestCase.php +0 -770
  84. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamWrapperWithoutRootTestCase.php +0 -64
  85. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamZipTestCase.php +0 -53
  86. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/visitor/vfsStreamAbstractVisitorTestCase.php +0 -99
  87. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/visitor/vfsStreamPrintVisitorTestCase.php +0 -103
  88. vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/visitor/vfsStreamStructureVisitorTestCase.php +0 -86
  89. vendor/mikey179/vfsStream/src/test/resources/filesystemcopy/withSubfolders/aFile.txt +0 -1
  90. vendor/mikey179/vfsStream/src/test/resources/filesystemcopy/withSubfolders/subfolder1/file1.txt +0 -1
  91. vendor/symfony/finder/Symfony/Component/Finder/Adapter/AbstractFindAdapter.php +1 -1
  92. vendor/symfony/finder/Symfony/Component/Finder/Comparator/NumberComparator.php +2 -2
  93. vendor/symfony/finder/Symfony/Component/Finder/Finder.php +5 -5
  94. vendor/symfony/finder/Symfony/Component/Finder/README.md +1 -1
  95. vendor/symfony/finder/Symfony/Component/Finder/Shell/Command.php +1 -1
  96. vendor/symfony/finder/Symfony/Component/Finder/composer.json +0 -3
  97. vendor/symfony/finder/Symfony/Component/Finder/phpunit.xml.dist +2 -1
admin/actions.php CHANGED
@@ -685,6 +685,16 @@ function hmbkp_ajax_cron_test() {
685
 
686
  }
687
 
 
 
 
 
 
 
 
 
 
 
688
  // Skip the test if they are using Alternate Cron
689
  if ( defined( 'ALTERNATE_WP_CRON' ) ) {
690
 
@@ -696,22 +706,20 @@ function hmbkp_ajax_cron_test() {
696
 
697
  }
698
 
699
- $url = site_url( 'wp-cron.php' );
700
 
701
- // Attempt to load wp-cron.php 3 times, if we get the same error each time then inform the user.
702
- $response1 = wp_remote_head( $url, array( 'timeout' => 30 ) );
703
- $response2 = wp_remote_head( $url, array( 'timeout' => 30 ) );
704
- $response3 = wp_remote_head( $url, array( 'timeout' => 30 ) );
705
 
706
- if ( is_wp_error( $response1 ) && is_wp_error( $response2 ) && is_wp_error( $response3 ) ) {
707
 
708
- echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress has detected a problem.', 'backupwordpress' ) . '</strong> ' . sprintf( __( '%1$s is returning a %2$s response which could mean cron jobs aren\'t getting fired properly. BackUpWordPress relies on wp-cron to run scheduled backups. See the %3$s for more details.', 'backupwordpress' ), '<code>wp-cron.php</code>', '<code>' . $response1->get_error_message() . '</code>', '<a href="http://wordpress.org/extend/plugins/backupwordpress/faq/">FAQ</a>' ) . '</p></div>';
709
 
710
  update_option( 'hmbkp_wp_cron_test_failed', true );
711
 
712
- } elseif ( ! in_array( 200, array_map( 'wp_remote_retrieve_response_code', array( $response1, $response2, $response3 ) ) ) ) {
713
 
714
- echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress has detected a problem.', 'backupwordpress' ) . '</strong> ' . sprintf( __( '%1$s is returning a %2$s response which could mean cron jobs aren\'t getting fired properly. BackUpWordPress relies on wp-cron to run scheduled backups. See the %3$s for more details.', 'backupwordpress' ), '<code>wp-cron.php</code>', '<code>' . esc_html( wp_remote_retrieve_response_code( $response1 ) ) . ' ' . esc_html( get_status_header_desc( wp_remote_retrieve_response_code( $response1 ) ) ) . '</code>', '<a href="http://wordpress.org/extend/plugins/backupwordpress/faq/">FAQ</a>' ) . '</p></div>';
715
 
716
  update_option( 'hmbkp_wp_cron_test_failed', true );
717
 
@@ -728,3 +736,37 @@ function hmbkp_ajax_cron_test() {
728
 
729
  }
730
  add_action( 'wp_ajax_hmbkp_cron_test', 'hmbkp_ajax_cron_test' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
685
 
686
  }
687
 
688
+ // Skip test if Cron is disabled
689
+ if ( defined( 'DISABLE_WP_CRON' ) && DISABLE_WP_CRON ) {
690
+
691
+ delete_option( 'hmbkp_wp_cron_test_failed' );
692
+
693
+ echo 1;
694
+
695
+ die;
696
+ }
697
+
698
  // Skip the test if they are using Alternate Cron
699
  if ( defined( 'ALTERNATE_WP_CRON' ) ) {
700
 
706
 
707
  }
708
 
709
+ $spawn = hmbkp_get_cron_spawn();
710
 
711
+ $code = wp_remote_retrieve_response_code( $spawn );
712
+ $message = wp_remote_retrieve_response_message( $spawn );
 
 
713
 
714
+ if ( is_wp_error( $spawn ) ) {
715
 
716
+ echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress has detected a problem.', 'backupwordpress' ) . '</strong> ' . sprintf( __( '%1$s is returning a %2$s response which could mean cron jobs aren\'t getting fired properly. BackUpWordPress relies on wp-cron to run scheduled backups. See the %3$s for more details.', 'backupwordpress' ), '<code>wp-cron.php</code>', '<code>' . $spawn->get_error_message() . '</code>', '<a href="http://wordpress.org/extend/plugins/backupwordpress/faq/">FAQ</a>' ) . '</p></div>';
717
 
718
  update_option( 'hmbkp_wp_cron_test_failed', true );
719
 
720
+ } elseif ( 200 !== $code ) {
721
 
722
+ echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress has detected a problem.', 'backupwordpress' ) . '</strong> ' . sprintf( __( '%1$s is returning a %2$s response which could mean cron jobs aren\'t getting fired properly. BackUpWordPress relies on wp-cron to run scheduled backups. See the %3$s for more details.', 'backupwordpress' ), '<code>wp-cron.php</code>', '<code>' . esc_html( $code ) . ' ' . esc_html( $message ) . '</code>', '<a href="http://wordpress.org/extend/plugins/backupwordpress/faq/">FAQ</a>' ) . '</p></div>';
723
 
724
  update_option( 'hmbkp_wp_cron_test_failed', true );
725
 
736
 
737
  }
738
  add_action( 'wp_ajax_hmbkp_cron_test', 'hmbkp_ajax_cron_test' );
739
+
740
+ /**
741
+ * Spawn a request to `wp-cron.php` and return the response.
742
+ *
743
+ * This function is designed to mimic the functionality in `spawn_cron()` with the addition of returning
744
+ * the result of the `wp_remote_post()` request.
745
+ *
746
+ * @return WP_Error|array The response or WP_Error on failure.
747
+ */
748
+ function hmbkp_get_cron_spawn() {
749
+
750
+ global $wp_version;
751
+
752
+ $sslverify = version_compare( $wp_version, 4.0, '<' );
753
+ $doing_wp_cron = sprintf( '%.22F', microtime( true ) );
754
+
755
+ $cron_request = apply_filters( 'cron_request', array(
756
+ 'url' => site_url( 'wp-cron.php?doing_wp_cron=' . $doing_wp_cron ),
757
+ 'key' => $doing_wp_cron,
758
+ 'args' => array(
759
+ 'timeout' => 3,
760
+ 'blocking' => true,
761
+ 'sslverify' => apply_filters( 'https_local_ssl_verify', $sslverify )
762
+ )
763
+ ) );
764
+
765
+ # Enforce a blocking request in case something that's hooked onto the 'cron_request' filter sets it to false
766
+ $cron_request['args']['blocking'] = true;
767
+
768
+ $result = wp_remote_post( $cron_request['url'], $cron_request['args'] );
769
+
770
+ return $result;
771
+
772
+ }
admin/schedule-form.php CHANGED
@@ -19,7 +19,7 @@ hmbkp_clear_settings_errors();
19
 
20
  ?>
21
 
22
- <form method="post" action="<?php echo esc_url( self_admin_url( 'admin-post.php' ) ); ?>">
23
 
24
  <input type="hidden" name="hmbkp_schedule_id" value="<?php echo esc_attr( $schedule->get_id() ); ?>" />
25
  <input type="hidden" name="action" value="hmbkp_edit_schedule_submit" />
19
 
20
  ?>
21
 
22
+ <form method="post" action="<?php echo esc_url( admin_url( 'admin-post.php' ) ); ?>">
23
 
24
  <input type="hidden" name="hmbkp_schedule_id" value="<?php echo esc_attr( $schedule->get_id() ); ?>" />
25
  <input type="hidden" name="action" value="hmbkp_edit_schedule_submit" />
backupwordpress.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: BackUpWordPress Backup Plugin
4
  Plugin URI: http://bwp.hmn.md/
5
  Description: Simple automated backups of your WordPress powered website. Once activated you'll find me under <strong>Tools &rarr; Backups</strong>. On multisite, you'll find me under the Network Settings menu.
6
- Version: 3.2.5
7
  Author: Human Made Limited
8
  Author URI: http://hmn.md/
9
  License: GPL-2.0+
3
  Plugin Name: BackUpWordPress Backup Plugin
4
  Plugin URI: http://bwp.hmn.md/
5
  Description: Simple automated backups of your WordPress powered website. Once activated you'll find me under <strong>Tools &rarr; Backups</strong>. On multisite, you'll find me under the Network Settings menu.
6
+ Version: 3.2.6
7
  Author: Human Made Limited
8
  Author URI: http://hmn.md/
9
  License: GPL-2.0+
changelog DELETED
@@ -1,17 +0,0 @@
1
- * Fixes an issue when evaluating expression with empty
2
- * Fixes a fatal error on PHP 5.3
3
- * Displays other notices
4
- * Updates stable tag
5
- * Adds some escaping and sanitizing
6
- * Defines plugins dir for different environments
7
- * Adds tests for activation and deactivation hooks
8
- * Adds a debugging function for tests
9
- * Symlinks plugin into tests dir
10
- * Splits out deactivation code into separate functions
11
- * Fixes activation and deactivation hooks not being fired
12
- * Exclude backups folder from size calculation
13
- * Fixes a misplaced parenthesis
14
- * Fixes how error messages are bubbled up
15
- * get home path should return defined value
16
- * Removes redundant exclude statement as CVS folders are excluded by default
17
- * Adds a flag parameter to allow get_files to return all files including default excludes
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
changelog.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ f170f82 (HEAD -> 3.2.5.1-beta) Merge branch 'cron-test' into 3.2.5.1-beta
2
+ cfafb2e Merge branch 'mu-settings-page' into 3.2.5.1-beta
3
+ 3ce5701 (origin/cron-test, cron-test) Correctly set the `sslverify` argument
4
+ d924e1e (origin/mu-settings-page, mu-settings-page) Fix settings URL
5
+ 297ab9c (origin/master, origin/HEAD, master) Merge pull request #820 from herrherrmann/master
6
+ 63d1ad0 Updated and extended German translation.
7
+ 29710f0 Fixes admin page slug for multisite
classes/class-plugin.php CHANGED
@@ -6,7 +6,7 @@ namespace HM\BackUpWordPress;
6
  * Class Plugin
7
  */
8
  final class Plugin {
9
- const PLUGIN_VERSION = '3.2.5';
10
 
11
  /**
12
  * @var Plugin The singleton instance.
@@ -67,7 +67,7 @@ final class Plugin {
67
 
68
  add_action( 'admin_init', array( 'HM\BackUpWordPress\Setup', 'self_deactivate' ) );
69
 
70
- add_action( 'admin_notices', array( 'HM\BackUpWordPress\Setup', 'display_admin_notices' ) );
71
 
72
  return true;
73
 
@@ -101,6 +101,7 @@ final class Plugin {
101
 
102
  if ( ! defined( 'HMBKP_ADMIN_PAGE' ) ) {
103
  $prefix = is_multisite() ? 'settings_page_' : 'tools_page_';
 
104
  define( 'HMBKP_ADMIN_PAGE', $prefix . HMBKP_PLUGIN_SLUG );
105
  }
106
 
6
  * Class Plugin
7
  */
8
  final class Plugin {
9
+ const PLUGIN_VERSION = '3.2.6';
10
 
11
  /**
12
  * @var Plugin The singleton instance.
67
 
68
  add_action( 'admin_init', array( 'HM\BackUpWordPress\Setup', 'self_deactivate' ) );
69
 
70
+ add_action( 'all_admin_notices', array( 'HM\BackUpWordPress\Setup', 'display_admin_notices' ) );
71
 
72
  return true;
73
 
101
 
102
  if ( ! defined( 'HMBKP_ADMIN_PAGE' ) ) {
103
  $prefix = is_multisite() ? 'settings_page_' : 'tools_page_';
104
+
105
  define( 'HMBKP_ADMIN_PAGE', $prefix . HMBKP_PLUGIN_SLUG );
106
  }
107
 
functions/interface.php CHANGED
@@ -357,7 +357,7 @@ function hmbkp_translated_schedule_title( $slug, $title ) {
357
 
358
  function hmbkp_get_settings_url() {
359
 
360
- $url = is_multisite() ? self_admin_url( 'settings.php?page=' . HMBKP_PLUGIN_SLUG ) : self_admin_url( 'tools.php?page=' . HMBKP_PLUGIN_SLUG );
361
 
362
  HM\BackUpWordPress\schedules::get_instance()->refresh_schedules();
363
 
357
 
358
  function hmbkp_get_settings_url() {
359
 
360
+ $url = is_multisite() ? network_admin_url( 'settings.php?page=' . HMBKP_PLUGIN_SLUG ) : admin_url( 'tools.php?page=' . HMBKP_PLUGIN_SLUG );
361
 
362
  HM\BackUpWordPress\schedules::get_instance()->refresh_schedules();
363
 
languages/backupwordpress-de_DE.mo CHANGED
Binary file
languages/backupwordpress-de_DE.po CHANGED
@@ -2,81 +2,85 @@
2
  # This file is distributed under the same license as the 2.x package.
3
  msgid ""
4
  msgstr ""
5
- "PO-Revision-Date: 2013-10-11 13:43:28+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
9
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
10
- "X-Generator: GlotPress/0.1\n"
11
  "Project-Id-Version: 2.x\n"
 
 
 
 
12
 
13
  #: ../backupwordpress.php:119
14
  msgid "BackUpWordPress requires PHP version %s or greater."
15
- msgstr ""
16
 
17
  #: ../admin/backups.php:100
18
  msgid "This is where your backups will appear once you have some."
19
- msgstr ""
20
 
21
  #: ../admin/backups.php:120
22
  msgid "% Backups Completed"
23
- msgstr ""
24
 
25
  #: ../admin/backups.php:122
26
  msgid "No Backups Completed"
27
- msgstr ""
28
 
29
  #: ../admin/backups.php:124
30
  msgid "1 Backup Completed"
31
- msgstr ""
32
 
33
  #: ../admin/enable-support.php:3
34
  msgid "Enable BackUpWordPress Support"
35
- msgstr ""
36
 
37
  #: ../admin/enable-support.php:5
38
  msgid "BackUpWordPress uses %s to provide support. In addition to allowing you to send and receive messages we also send the following server information along with your requests:"
39
- msgstr ""
40
 
41
  #: ../admin/enable-support.php:58
42
  msgid "You can disable support in the future by deactivating BackUpWordPress."
43
- msgstr ""
44
 
45
  #: ../admin/enable-support.php:68
46
  msgid "No thanks"
47
- msgstr ""
48
 
49
  #: ../admin/enable-support.php:70
50
  msgid "Yes I want to enable support"
51
- msgstr ""
52
 
53
  #: ../admin/page.php:10
54
  msgid "Support"
55
- msgstr ""
56
 
57
  #: ../admin/page.php:31
58
  msgid "If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s"
59
- msgstr ""
60
 
61
  #: ../admin/page.php:35
62
  msgid "Wish you could store your backups in a safer place? Our %1$spremium extensions%2$s enable automatic backups to Dropbox, FTP, Google Drive and more."
63
- msgstr ""
64
 
65
  #: ../admin/schedule-form-excludes.php:19
66
  msgid "Enter new exclude rules as a comma separated list, e.g. %s"
67
- msgstr ""
68
 
69
  #: ../admin/schedule-form.php:45
70
  msgid "Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups"
71
- msgstr ""
72
 
73
  #: ../admin/schedule.php:78
74
  msgid "store only the last backup on %s"
75
- msgstr ""
76
 
77
  #: ../admin/schedule.php:118
78
  msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s."
79
- msgstr ""
80
 
81
  #: ../classes/class-schedule.php:239
82
  msgid "Argument 1 for %s must be a valid integer"
@@ -92,11 +96,11 @@ msgstr ""
92
 
93
  #: ../classes/class-schedule.php:815
94
  msgid "%s dpesn't exist"
95
- msgstr ""
96
 
97
  #: ../classes/class-schedule.php:819
98
  msgid "That backup wasn't created by this schedule"
99
- msgstr ""
100
 
101
  #: ../classes/class-services.php:252
102
  msgid "Argument 1 for %s must be a valid filepath"
@@ -112,11 +116,11 @@ msgstr ""
112
 
113
  #: ../functions/core.php:269
114
  msgid "You can only delete directories inside your WordPress installation"
115
- msgstr ""
116
 
117
  #: ../admin/actions.php:508
118
  msgid "Your backup completed but with the following errors / warnings, it's probably ok to ignore these."
119
- msgstr "Dein Backup wurde fertiggestellt, aber es traten folgende Fehler/Warnungen auf. Möglicherweise ist es in Ordnung, diese zu ignorieren."
120
 
121
  #: ../admin/actions.php:512
122
  msgid "Your backup failed"
@@ -128,27 +132,27 @@ msgstr "Erhalte eine E-Mail, wenn ein Backup fertiggestellt wird. Wenn das Backu
128
 
129
  #: ../classes/class-email.php:54
130
  msgid "The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s."
131
- msgstr "Die maximale Dateigröße, damit dein Backup an E-Mail-Benachrichtigungen angehängt wird. Standard ist %s."
132
 
133
  #: ../admin/actions.php:520
134
  msgid "You can email details of this error to %s so they can look into the issue."
135
- msgstr "Du kannst Details via E-Mail an %s senden, damit die sich das Problem ansehen können."
136
 
137
  #: ../functions/core.php:246
138
  msgid "Once Hourly"
139
- msgstr "Ein mal pro Stunde"
140
 
141
  #: ../functions/core.php:247
142
  msgid "Twice Daily"
143
- msgstr "Zwei mal pro Tag"
144
 
145
  #: ../functions/core.php:248
146
  msgid "Once Daily"
147
- msgstr "Ein mal pro Tag"
148
 
149
  #: ../functions/core.php:249
150
  msgid "Once Weekly"
151
- msgstr "Ein mal pro Woche"
152
 
153
  #: ../functions/core.php:250
154
  msgid "Once Fortnightly"
@@ -156,7 +160,7 @@ msgstr "Alle 14 Tage"
156
 
157
  #: ../functions/core.php:251
158
  msgid "Once Monthly"
159
- msgstr "Ein mal pro Monat"
160
 
161
  #: ../admin/actions.php:524
162
  msgid "Email to Support"
@@ -172,7 +176,7 @@ msgstr "Hier ist die Antwort des Servers:"
172
 
173
  #: ../admin/page.php:33
174
  msgid "If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page."
175
- msgstr "Wenn du Hilfe brauchst, die Dinge zum Laufen zu bekommen, besuche die FAQ, indem du in der rechten oberen Ecke dieser Seite auf Hilfe klickst."
176
 
177
  #: ../classes/class-schedule.php:609 ../functions/interface.php:261
178
  msgid "Starting Backup"
@@ -265,7 +269,7 @@ msgstr "Wir berechnen die Größe deiner Seite&hellip;"
265
 
266
  #: ../admin/schedule.php:12
267
  msgid "The next backup will be on %1$s at %2$s"
268
- msgstr "Das nächste Backup wird ausgeführt am %1$s um %2$s."
269
 
270
  #: ../admin/schedule.php:37
271
  msgid "every 12 hours at %1$s &amp; %2$s"
@@ -373,7 +377,7 @@ msgstr "Backup fehlgeschlagen"
373
 
374
  #: ../functions/core.php:229
375
  msgid "By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database &amp; files. You can modify these schedules."
376
- msgstr "Standardmäßig führt BackUpWordPress ein tägliches Backup deiner Datenbank und ein wöchentliches Backup deiner Datenbank &amp; Dateien durch. Du kannst diesen Aufgabenplan selbstverständlich anpassen."
377
 
378
  #: ../functions/interface.php:245
379
  msgid "Legacy"
@@ -389,7 +393,7 @@ msgstr "Das Backup-Verzeichnis kann nicht erstellt werden, weil dein %1$s-Verzei
389
 
390
  #: ../functions/core.php:229
391
  msgid "BackUpWordPress has setup your default schedules."
392
- msgstr "BackUpWordPress hat deine Standard-Pläne eingerichtet."
393
 
394
  #: ../classes/class-email.php:154
395
  msgid "Backup of %s Failed"
@@ -397,7 +401,7 @@ msgstr "Backup von %s fehlgeschlagen"
397
 
398
  #: ../classes/class-email.php:69
399
  msgid "Send an email notification to %s"
400
- msgstr "Sende E-Mail-Benachrichtigungen an %s"
401
 
402
  #: ../classes/class-email.php:100
403
  msgid "%s isn't a valid email"
@@ -405,7 +409,7 @@ msgstr "%s ist keine gültige E-Mail-Adresse"
405
 
406
  #: ../admin/schedule.php:4
407
  msgid "Backups will be compressed and should be smaller than this."
408
- msgstr "Die Backups werden komprimiert und sollten kleiner sein."
409
 
410
  #: ../classes/class-email.php:31
411
  msgid "Email notification"
@@ -437,7 +441,7 @@ msgstr "Diese Informationen sind für Version %1$s. Sieh dir die %2$s-Datei fü
437
 
438
  #: ../admin/constants.php:23
439
  msgid "The root directory that is backed up. Defaults to %s."
440
- msgstr "Das Wurzelverzeichnis, das gesichert wird. Standard: %s"
441
 
442
  #: ../admin/constants.php:20
443
  msgid "The capability to use when calling %1$s. Defaults to %2$s."
@@ -459,10 +463,10 @@ msgstr "Abbrechen"
459
  msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available."
460
  msgstr "Der Pfad zur ausführbaren %1$s-Datei. Wird für den %2$s-Teil des Backups genutzt, wenn verfügbar."
461
 
462
- #: ../admin/constants.php:8 ../admin/constants.php:11 ../admin/constants.php:14
463
- #: ../admin/constants.php:17 ../admin/constants.php:20
464
- #: ../admin/constants.php:23 ../admin/constants.php:26
465
- #: ../classes/class-email.php:54
466
  msgid "e.g."
467
  msgstr "z.B."
468
 
@@ -472,7 +476,7 @@ msgstr "Du kannst jede der folgenden %2$s in deinem %3$s %1$sn, um erweiterte Ei
472
 
473
  #: ../admin/actions.php:250 ../admin/actions.php:256
474
  msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details."
475
- msgstr "%1$s gibt eine %2$s-Antwort zurück. Das könnte bedeuten, dass deine Cron-Jobs nicht richtig aufgerufen werden. BackUpWordPress benutzt wp-cron, um geplante Backups auszuführen. Sieh dir das %3$s an für mehr Details."
476
 
477
  #: ../functions/interface.php:78
478
  msgid "http://php.net/manual/en/features.safe-mode.php"
@@ -488,7 +492,7 @@ msgstr "Dein angepasstes Backup-Verzeichnis %1$s existiert nicht und kann nicht
488
 
489
  #: ../functions/interface.php:100
490
  msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead."
491
- msgstr "Dein angepasstes Backup-Verzeichnis %1$s ist nicht schreibbar, neue Backups werden stattdessen nach %2$s gespeichert."
492
 
493
  #: ../functions/interface.php:261
494
  msgid "cancel"
@@ -554,7 +558,7 @@ msgstr "%s passt auf keine Dateien."
554
 
555
  #: ../admin/backups.php:40
556
  msgid "add schedule"
557
- msgstr "Aufgabe hinzufügen"
558
 
559
  #: ../admin/backups.php:71
560
  msgid "Size"
@@ -622,7 +626,7 @@ msgstr "Beim Übersetzen helfen"
622
 
623
  #: ../admin/page.php:27
624
  msgid "You need to fix the issues detailed above before BackUpWordPress can start."
625
- msgstr "Du musst die Probleme, die oben beschrieben werden, beheben, bevor BackUpWordPress starten kann."
626
 
627
  #: ../admin/schedule-form-excludes.php:17
628
  msgid "Preview"
@@ -706,4 +710,4 @@ msgstr "Backup von %s"
706
 
707
  #: ../functions/core.php:334
708
  msgid "This %s file ensures that other people cannot download your backup files."
709
- msgstr "Diese %s-Datei garantiert, dass andere Leute nicht deine Backup-Dateien herunterladen können."
2
  # This file is distributed under the same license as the 2.x package.
3
  msgid ""
4
  msgstr ""
5
+ "PO-Revision-Date: 2015-05-18 22:03+0100\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
9
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
10
+ "X-Generator: Poedit 1.7.6\n"
11
  "Project-Id-Version: 2.x\n"
12
+ "POT-Creation-Date: \n"
13
+ "Last-Translator: \n"
14
+ "Language-Team: \n"
15
+ "Language: de_DE\n"
16
 
17
  #: ../backupwordpress.php:119
18
  msgid "BackUpWordPress requires PHP version %s or greater."
19
+ msgstr "BackUpWordPress benötigt die PHP-Version %s oder neuer."
20
 
21
  #: ../admin/backups.php:100
22
  msgid "This is where your backups will appear once you have some."
23
+ msgstr "Hier erscheinen deine Backups, sobald sie erstellt wurden."
24
 
25
  #: ../admin/backups.php:120
26
  msgid "% Backups Completed"
27
+ msgstr "% Backups durchgeführt"
28
 
29
  #: ../admin/backups.php:122
30
  msgid "No Backups Completed"
31
+ msgstr "Keine Backups durchgeführt"
32
 
33
  #: ../admin/backups.php:124
34
  msgid "1 Backup Completed"
35
+ msgstr "1 Backup durchgeführt"
36
 
37
  #: ../admin/enable-support.php:3
38
  msgid "Enable BackUpWordPress Support"
39
+ msgstr "BackUpWordPress-Support aktivieren"
40
 
41
  #: ../admin/enable-support.php:5
42
  msgid "BackUpWordPress uses %s to provide support. In addition to allowing you to send and receive messages we also send the following server information along with your requests:"
43
+ msgstr "BackUpWordPress benutzt %s, um Support bereitzustellen. Neben der Möglichkeit, Nachrichten zu senden und zu empfangen, werden auch folgende Serverinformationen bei der Kommunikation übertragen:"
44
 
45
  #: ../admin/enable-support.php:58
46
  msgid "You can disable support in the future by deactivating BackUpWordPress."
47
+ msgstr "Support kann ab sofort deaktiviert werden, indem BackUpWordPress deaktiviert wird."
48
 
49
  #: ../admin/enable-support.php:68
50
  msgid "No thanks"
51
+ msgstr "Nein, danke"
52
 
53
  #: ../admin/enable-support.php:70
54
  msgid "Yes I want to enable support"
55
+ msgstr "Ja, ich möchte den Support aktivieren"
56
 
57
  #: ../admin/page.php:10
58
  msgid "Support"
59
+ msgstr "Support"
60
 
61
  #: ../admin/page.php:31
62
  msgid "If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s"
63
+ msgstr "Falls du BackUpWordPress nützlich findest, dann %1$s bewerte es bitte im Plugin-Verzeichnis. %2$s"
64
 
65
  #: ../admin/page.php:35
66
  msgid "Wish you could store your backups in a safer place? Our %1$spremium extensions%2$s enable automatic backups to Dropbox, FTP, Google Drive and more."
67
+ msgstr "Du würdest deine Backups gern an einem sichereren Ort speichern? Unsere %1$Premium-Erweiterungen%2$s ermöglichen automatische Backups zu Dropbox, FTP, Google Drive und mehr."
68
 
69
  #: ../admin/schedule-form-excludes.php:19
70
  msgid "Enter new exclude rules as a comma separated list, e.g. %s"
71
+ msgstr "Erstelle neue Ausnahmen - du kannst mehrere per Komma separieren, z.B. %s"
72
 
73
  #: ../admin/schedule-form.php:45
74
  msgid "Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups"
75
+ msgstr "Ältere Backups werden bei Erreichen dieses Grenzwerts automatisch gelöscht. Dieser Plan wird also maximal %s Backups speichern."
76
 
77
  #: ../admin/schedule.php:78
78
  msgid "store only the last backup on %s"
79
+ msgstr "nur das letzte Backup bei %s speichern"
80
 
81
  #: ../admin/schedule.php:118
82
  msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s."
83
+ msgstr "Backup von %1$s %2$s %3$s, %4$s. %5$s Eine Kopie von jedem Backup an %6$s senden."
84
 
85
  #: ../classes/class-schedule.php:239
86
  msgid "Argument 1 for %s must be a valid integer"
96
 
97
  #: ../classes/class-schedule.php:815
98
  msgid "%s dpesn't exist"
99
+ msgstr "%s nicht vorhanden"
100
 
101
  #: ../classes/class-schedule.php:819
102
  msgid "That backup wasn't created by this schedule"
103
+ msgstr "Dieses Backup wurde nicht anhand dieses Plans erstellt."
104
 
105
  #: ../classes/class-services.php:252
106
  msgid "Argument 1 for %s must be a valid filepath"
116
 
117
  #: ../functions/core.php:269
118
  msgid "You can only delete directories inside your WordPress installation"
119
+ msgstr "Nur Verzeichnisse innerhalb deiner WordPress-Installation können entfernt werden."
120
 
121
  #: ../admin/actions.php:508
122
  msgid "Your backup completed but with the following errors / warnings, it's probably ok to ignore these."
123
+ msgstr "Dein Backup wurde fertiggestellt, aber es traten folgende Fehler/Warnungen auf. Möglicherweise kannst du diese ignorieren."
124
 
125
  #: ../admin/actions.php:512
126
  msgid "Your backup failed"
132
 
133
  #: ../classes/class-email.php:54
134
  msgid "The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s."
135
+ msgstr "Die maximale Dateigröße, mit welcher dein Backup an E-Mail-Benachrichtigungen angehängt wird. Standardmäßig %s."
136
 
137
  #: ../admin/actions.php:520
138
  msgid "You can email details of this error to %s so they can look into the issue."
139
+ msgstr "Du kannst Fehlerdetails via E-Mail an %s senden, damit diese sich das Problem ansehen können."
140
 
141
  #: ../functions/core.php:246
142
  msgid "Once Hourly"
143
+ msgstr "Einmal pro Stunde"
144
 
145
  #: ../functions/core.php:247
146
  msgid "Twice Daily"
147
+ msgstr "Zweimal pro Tag"
148
 
149
  #: ../functions/core.php:248
150
  msgid "Once Daily"
151
+ msgstr "Einmal pro Tag"
152
 
153
  #: ../functions/core.php:249
154
  msgid "Once Weekly"
155
+ msgstr "Einmal pro Woche"
156
 
157
  #: ../functions/core.php:250
158
  msgid "Once Fortnightly"
160
 
161
  #: ../functions/core.php:251
162
  msgid "Once Monthly"
163
+ msgstr "Einmal pro Monat"
164
 
165
  #: ../admin/actions.php:524
166
  msgid "Email to Support"
176
 
177
  #: ../admin/page.php:33
178
  msgid "If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page."
179
+ msgstr "Wenn du Hilfe brauchst, die Dinge zum Laufen zu bekommen, besuche die FAQ-Seite, indem du in der rechten oberen Ecke dieser Seite auf Hilfe klickst."
180
 
181
  #: ../classes/class-schedule.php:609 ../functions/interface.php:261
182
  msgid "Starting Backup"
269
 
270
  #: ../admin/schedule.php:12
271
  msgid "The next backup will be on %1$s at %2$s"
272
+ msgstr "Das nächste Backup wird am %1$s um %2$s durchgeführt."
273
 
274
  #: ../admin/schedule.php:37
275
  msgid "every 12 hours at %1$s &amp; %2$s"
377
 
378
  #: ../functions/core.php:229
379
  msgid "By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database &amp; files. You can modify these schedules."
380
+ msgstr "Standardmäßig führt BackUpWordPress ein tägliches Backup deiner Datenbank und ein wöchentliches Backup deiner Datenbank &amp; Dateien durch. Du kannst diesen Aufgabenplan anpassen."
381
 
382
  #: ../functions/interface.php:245
383
  msgid "Legacy"
393
 
394
  #: ../functions/core.php:229
395
  msgid "BackUpWordPress has setup your default schedules."
396
+ msgstr "BackUpWordPress hat Standard-Pläne für dich eingerichtet."
397
 
398
  #: ../classes/class-email.php:154
399
  msgid "Backup of %s Failed"
401
 
402
  #: ../classes/class-email.php:69
403
  msgid "Send an email notification to %s"
404
+ msgstr "Sende eine E-Mail-Benachrichtigung an %s"
405
 
406
  #: ../classes/class-email.php:100
407
  msgid "%s isn't a valid email"
409
 
410
  #: ../admin/schedule.php:4
411
  msgid "Backups will be compressed and should be smaller than this."
412
+ msgstr "Die Backups werden komprimiert und sollten kleiner sein als angegeben."
413
 
414
  #: ../classes/class-email.php:31
415
  msgid "Email notification"
441
 
442
  #: ../admin/constants.php:23
443
  msgid "The root directory that is backed up. Defaults to %s."
444
+ msgstr "Das Wurzelverzeichnis, das gesichert wird. Standard: %s."
445
 
446
  #: ../admin/constants.php:20
447
  msgid "The capability to use when calling %1$s. Defaults to %2$s."
463
  msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available."
464
  msgstr "Der Pfad zur ausführbaren %1$s-Datei. Wird für den %2$s-Teil des Backups genutzt, wenn verfügbar."
465
 
466
+ #: ../admin/constants.php:8 ../admin/constants.php:11
467
+ #: ../admin/constants.php:14 ../admin/constants.php:17
468
+ #: ../admin/constants.php:20 ../admin/constants.php:23
469
+ #: ../admin/constants.php:26 ../classes/class-email.php:54
470
  msgid "e.g."
471
  msgstr "z.B."
472
 
476
 
477
  #: ../admin/actions.php:250 ../admin/actions.php:256
478
  msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details."
479
+ msgstr "%1$s gibt eine %2$s-Antwort zurück. Das könnte bedeuten, dass deine Cron-Jobs nicht richtig aufgerufen werden. BackUpWordPress benutzt wp-cron, um geplante Backups auszuführen. Sieh dir das %3$s für mehr Details an."
480
 
481
  #: ../functions/interface.php:78
482
  msgid "http://php.net/manual/en/features.safe-mode.php"
492
 
493
  #: ../functions/interface.php:100
494
  msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead."
495
+ msgstr "Dein angepasstes Backup-Verzeichnis %1$s ist nicht beschreibbar, neue Backups werden stattdessen nach %2$s gespeichert."
496
 
497
  #: ../functions/interface.php:261
498
  msgid "cancel"
558
 
559
  #: ../admin/backups.php:40
560
  msgid "add schedule"
561
+ msgstr "Plan hinzufügen"
562
 
563
  #: ../admin/backups.php:71
564
  msgid "Size"
626
 
627
  #: ../admin/page.php:27
628
  msgid "You need to fix the issues detailed above before BackUpWordPress can start."
629
+ msgstr "Du musst die oben beschriebenen Probleme beheben, bevor BackUpWordPress gestartet werden kann."
630
 
631
  #: ../admin/schedule-form-excludes.php:17
632
  msgid "Preview"
710
 
711
  #: ../functions/core.php:334
712
  msgid "This %s file ensures that other people cannot download your backup files."
713
+ msgstr "Diese %s-Datei garantiert, dass andere Leute deine Backup-Dateien nicht herunterladen können."
languages/backupwordpress.pot CHANGED
@@ -2,9 +2,9 @@
2
  # This file is distributed under the GPL-2.0+.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: BackUpWordPress Backup Plugin 3.2.5\n"
6
  "Report-Msgid-Bugs-To: support@humanmade.co.uk\n"
7
- "POT-Creation-Date: 2015-04-29 09:30:39+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -61,11 +61,11 @@ msgstr ""
61
  msgid "Max backups must be greater than 0"
62
  msgstr ""
63
 
64
- #: admin/actions.php:708 admin/actions.php:714
65
  msgid "BackUpWordPress has detected a problem."
66
  msgstr ""
67
 
68
- #: admin/actions.php:708 admin/actions.php:714
69
  msgid ""
70
  "%1$s is returning a %2$s response which could mean cron jobs aren't getting "
71
  "fired properly. BackUpWordPress relies on wp-cron to run scheduled backups. "
@@ -827,34 +827,34 @@ msgstr ""
827
  msgid "This %s file ensures that other people cannot download your backup files."
828
  msgstr ""
829
 
830
- #: classes/class-plugin.php:213
831
  msgid "Update"
832
  msgstr ""
833
 
834
- #: classes/class-plugin.php:214
835
  msgid "Cancel"
836
  msgstr ""
837
 
838
- #: classes/class-plugin.php:215
839
  msgid ""
840
  "Are you sure you want to delete this schedule? All of it's backups will "
841
  "also be deleted."
842
  msgstr ""
843
 
844
- #: classes/class-plugin.php:215 classes/class-plugin.php:216
845
- #: classes/class-plugin.php:217 classes/class-plugin.php:218
846
  msgid "'Cancel' to go back, 'OK' to delete."
847
  msgstr ""
848
 
849
- #: classes/class-plugin.php:216
850
  msgid "Are you sure you want to delete this backup?"
851
  msgstr ""
852
 
853
- #: classes/class-plugin.php:217
854
  msgid "Are you sure you want to remove this exclude rule?"
855
  msgstr ""
856
 
857
- #: classes/class-plugin.php:218
858
  msgid ""
859
  "Reducing the number of backups that are stored on this server will cause "
860
  "some of your existing backups to be deleted, are you sure that's what you "
2
  # This file is distributed under the GPL-2.0+.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: BackUpWordPress Backup Plugin 3.2.6\n"
6
  "Report-Msgid-Bugs-To: support@humanmade.co.uk\n"
7
+ "POT-Creation-Date: 2015-06-08 11:45:41+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
61
  msgid "Max backups must be greater than 0"
62
  msgstr ""
63
 
64
+ #: admin/actions.php:716 admin/actions.php:722
65
  msgid "BackUpWordPress has detected a problem."
66
  msgstr ""
67
 
68
+ #: admin/actions.php:716 admin/actions.php:722
69
  msgid ""
70
  "%1$s is returning a %2$s response which could mean cron jobs aren't getting "
71
  "fired properly. BackUpWordPress relies on wp-cron to run scheduled backups. "
827
  msgid "This %s file ensures that other people cannot download your backup files."
828
  msgstr ""
829
 
830
+ #: classes/class-plugin.php:214
831
  msgid "Update"
832
  msgstr ""
833
 
834
+ #: classes/class-plugin.php:215
835
  msgid "Cancel"
836
  msgstr ""
837
 
838
+ #: classes/class-plugin.php:216
839
  msgid ""
840
  "Are you sure you want to delete this schedule? All of it's backups will "
841
  "also be deleted."
842
  msgstr ""
843
 
844
+ #: classes/class-plugin.php:216 classes/class-plugin.php:217
845
+ #: classes/class-plugin.php:218 classes/class-plugin.php:219
846
  msgid "'Cancel' to go back, 'OK' to delete."
847
  msgstr ""
848
 
849
+ #: classes/class-plugin.php:217
850
  msgid "Are you sure you want to delete this backup?"
851
  msgstr ""
852
 
853
+ #: classes/class-plugin.php:218
854
  msgid "Are you sure you want to remove this exclude rule?"
855
  msgstr ""
856
 
857
+ #: classes/class-plugin.php:219
858
  msgid ""
859
  "Reducing the number of backups that are stored on this server will cause "
860
  "some of your existing backups to be deleted, are you sure that's what you "
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: humanmade, willmot, pauldewouters, joehoyle, mattheu, tcrsavage, c
3
  Tags: back up, backup, backups, database, zip, db, files, archive, wp-cli, humanmade
4
  Requires at least: 3.9
5
  Tested up to: 4.2
6
- Stable tag: 3.2.5
7
 
8
  Simple automated backups of your WordPress powered website.
9
 
@@ -118,6 +118,13 @@ You can also tweet <a href="http://twitter.com/humanmadeltd">@humanmadeltd</a> o
118
 
119
  == Upgrade Notice ==
120
 
 
 
 
 
 
 
 
121
  = 3.2.5 =
122
 
123
  * Security fixes related to add_query_arg
@@ -144,7 +151,7 @@ You can also tweet <a href="http://twitter.com/humanmadeltd">@humanmadeltd</a> o
144
 
145
  == Changelog ==
146
 
147
- ### 3.2.5 / 2015-04-29
148
 
149
  * Fixes an issue when evaluating expression with empty
150
  * Fixes a fatal error on PHP 5.3
3
  Tags: back up, backup, backups, database, zip, db, files, archive, wp-cli, humanmade
4
  Requires at least: 3.9
5
  Tested up to: 4.2
6
+ Stable tag: 3.2.6
7
 
8
  Simple automated backups of your WordPress powered website.
9
 
118
 
119
  == Upgrade Notice ==
120
 
121
+ = 3.2.5.1-beta =
122
+
123
+ * Correctly set the `sslverify` argument
124
+ * Fix settings URL
125
+ * Updated and extended German translation.
126
+ * Fixes admin page slug for multisite
127
+
128
  = 3.2.5 =
129
 
130
  * Security fixes related to add_query_arg
151
 
152
  == Changelog ==
153
 
154
+ ## 3.2.5 / 2015-04-29
155
 
156
  * Fixes an issue when evaluating expression with empty
157
  * Fixes a fatal error on PHP 5.3
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer' . '/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit2bf0ac6fa5ac73bc9dad2e829cb16011::getLoader();
4
 
5
  require_once __DIR__ . '/composer' . '/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit0da939d762bd0aafc6d6e8cf94b6668f::getLoader();
vendor/composer/autoload_namespaces.php CHANGED
@@ -6,6 +6,5 @@ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
- 'org\\bovigo\\vfs\\' => array($vendorDir . '/mikey179/vfsStream/src/main/php'),
10
  'Symfony\\Component\\Finder\\' => array($vendorDir . '/symfony/finder'),
11
  );
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
 
9
  'Symfony\\Component\\Finder\\' => array($vendorDir . '/symfony/finder'),
10
  );
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit2bf0ac6fa5ac73bc9dad2e829cb16011
6
  {
7
  private static $loader;
8
 
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit2bf0ac6fa5ac73bc9dad2e829cb16011
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit2bf0ac6fa5ac73bc9dad2e829cb16011', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit2bf0ac6fa5ac73bc9dad2e829cb16011', 'loadClassLoader'));
25
 
26
  $map = require __DIR__ . '/autoload_namespaces.php';
27
  foreach ($map as $namespace => $path) {
@@ -44,7 +44,7 @@ class ComposerAutoloaderInit2bf0ac6fa5ac73bc9dad2e829cb16011
44
  }
45
  }
46
 
47
- function composerRequire2bf0ac6fa5ac73bc9dad2e829cb16011($file)
48
  {
49
  require $file;
50
  }
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit0da939d762bd0aafc6d6e8cf94b6668f
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit0da939d762bd0aafc6d6e8cf94b6668f', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit0da939d762bd0aafc6d6e8cf94b6668f', 'loadClassLoader'));
25
 
26
  $map = require __DIR__ . '/autoload_namespaces.php';
27
  foreach ($map as $namespace => $path) {
44
  }
45
  }
46
 
47
+ function composerRequire0da939d762bd0aafc6d6e8cf94b6668f($file)
48
  {
49
  require $file;
50
  }
vendor/composer/installed.json CHANGED
@@ -1,27 +1,24 @@
1
  [
2
  {
3
  "name": "symfony/finder",
4
- "version": "v2.6.6",
5
- "version_normalized": "2.6.6.0",
6
  "target-dir": "Symfony/Component/Finder",
7
  "source": {
8
  "type": "git",
9
  "url": "https://github.com/symfony/Finder.git",
10
- "reference": "5dbe2e73a580618f5b4880fda93406eed25de251"
11
  },
12
  "dist": {
13
  "type": "zip",
14
- "url": "https://api.github.com/repos/symfony/Finder/zipball/5dbe2e73a580618f5b4880fda93406eed25de251",
15
- "reference": "5dbe2e73a580618f5b4880fda93406eed25de251",
16
  "shasum": ""
17
  },
18
  "require": {
19
  "php": ">=5.3.3"
20
  },
21
- "require-dev": {
22
- "symfony/phpunit-bridge": "~2.7"
23
- },
24
- "time": "2015-03-30 15:54:10",
25
  "type": "library",
26
  "extra": {
27
  "branch-alias": {
@@ -50,53 +47,5 @@
50
  ],
51
  "description": "Symfony Finder Component",
52
  "homepage": "http://symfony.com"
53
- },
54
- {
55
- "name": "mikey179/vfsStream",
56
- "version": "dev-master",
57
- "version_normalized": "9999999-dev",
58
- "source": {
59
- "type": "git",
60
- "url": "https://github.com/mikey179/vfsStream.git",
61
- "reference": "3a0e11a1df90d32b553bf12c012f836729a5abff"
62
- },
63
- "dist": {
64
- "type": "zip",
65
- "url": "https://api.github.com/repos/mikey179/vfsStream/zipball/3a0e11a1df90d32b553bf12c012f836729a5abff",
66
- "reference": "3a0e11a1df90d32b553bf12c012f836729a5abff",
67
- "shasum": ""
68
- },
69
- "require": {
70
- "php": ">=5.3.0"
71
- },
72
- "require-dev": {
73
- "phpunit/phpunit": "~4.5"
74
- },
75
- "time": "2015-04-13 17:47:24",
76
- "type": "library",
77
- "extra": {
78
- "branch-alias": {
79
- "dev-master": "1.5.x-dev"
80
- }
81
- },
82
- "installation-source": "source",
83
- "autoload": {
84
- "psr-0": {
85
- "org\\bovigo\\vfs\\": "src/main/php"
86
- }
87
- },
88
- "notification-url": "https://packagist.org/downloads/",
89
- "license": [
90
- "BSD-3-Clause"
91
- ],
92
- "authors": [
93
- {
94
- "name": "Frank Kleine",
95
- "homepage": "http://frankkleine.de/",
96
- "role": "Developer"
97
- }
98
- ],
99
- "description": "Virtual file system to mock the real file system in unit tests.",
100
- "homepage": "http://vfs.bovigo.org/"
101
  }
102
  ]
1
  [
2
  {
3
  "name": "symfony/finder",
4
+ "version": "v2.6.4",
5
+ "version_normalized": "2.6.4.0",
6
  "target-dir": "Symfony/Component/Finder",
7
  "source": {
8
  "type": "git",
9
  "url": "https://github.com/symfony/Finder.git",
10
+ "reference": "16513333bca64186c01609961a2bb1b95b5e1355"
11
  },
12
  "dist": {
13
  "type": "zip",
14
+ "url": "https://api.github.com/repos/symfony/Finder/zipball/16513333bca64186c01609961a2bb1b95b5e1355",
15
+ "reference": "16513333bca64186c01609961a2bb1b95b5e1355",
16
  "shasum": ""
17
  },
18
  "require": {
19
  "php": ">=5.3.3"
20
  },
21
+ "time": "2015-01-03 08:01:59",
 
 
 
22
  "type": "library",
23
  "extra": {
24
  "branch-alias": {
47
  ],
48
  "description": "Symfony Finder Component",
49
  "homepage": "http://symfony.com"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
  }
51
  ]
vendor/mikey179/vfsStream/CHANGELOG.md DELETED
@@ -1,192 +0,0 @@
1
- 1.5.0 (2015-03-29)
2
- ------------------
3
-
4
- * implemented #91: `vfsStream::copyFromFileSystem()` should create large file instances
5
- * implemented #92: `vfsStream::copyFromFileSystem()` should respect block devices
6
- * fixed #107: `touch()` does not respect file permissions
7
- * fixed #105: vfs directory structure is not reset after each test
8
- * fixed #104: vfsStream can't handle url encoded pathes
9
-
10
-
11
- 1.4.0 (2014-09-14)
12
- ------------------
13
-
14
- * implemented #85: Added support for emulating block devices in the virtual filesystem, feature provided by Harris Borawski
15
- * fixed #68: Unlink a non-existing file now triggers a PHP warning
16
-
17
-
18
- 1.3.0 (2014-07-21)
19
- ------------------
20
-
21
- * implemented #79: possibility to mock large files without large memory footprint, see https://github.com/mikey179/vfsStream/wiki/MockingLargeFiles
22
- * implemented #67: added partial support for text-mode translation flag (i.e., no actual translation of line endings takes place) so it no longer throws an exception (provided by Anthon Pang)
23
- * fixed issue #74: issue with trailing windows path separators (provided by Sebastian Krüger)
24
- * fixed issue #50: difference between real file system and vfs with `RecursiveDirectoryIterator`
25
- * fixed issue #80: touch with no arguments for modification and access time behave incorrect
26
- * deprecated `org\bovigo\vfs\vfsStreamFile::readUntilEnd()`
27
- * deprecated `org\bovigo\vfs\vfsStreamFile::getBytesRead()`
28
-
29
-
30
- 1.2.0 (2013-04-01)
31
- ------------------
32
-
33
- * implemented issue #34: provide `url()` method on all `vfsStreamContent` instances
34
- * added `org\bovigo\vfs\vfsStreamContent::url()`
35
- * added `org\bovigo\vfs\vfsStreamContent::path()`
36
- * fixed issue #40: flock implementation doesn't work correctly, patch provided by Kamil Dziedzic
37
- * fixed issue #49: call to member function on a non-object when trying to delete a file one above root where a file with same name in root exists
38
- * fixed issue #51: `unlink()` must consider permissions of directory where file is inside, not of the file to unlink itself
39
- * fixed issue #52: `chmod()`, `chown()` and `chgrp()` must consider permissions of directory where file/directory is inside
40
- * fixed issue #53: `chmod()`, `chown()` and `chgrp()` must consider current user and current owner of file/directoy to change
41
-
42
-
43
- 1.1.0 (2012-08-25)
44
- ------------------
45
-
46
- * implemented issue #11: add support for `streamWrapper::stream_metadata()` vfsStream now supports `touch()`, `chown()`, `chgrp()` and `chmod()`
47
- * implemented issue #33: add support for `stream_truncate()` (provided by https://github.com/nikcorg)
48
- * implemented issue #35: size limit (quota) for VFS
49
-
50
-
51
- 1.0.0 (2012-05-15)
52
- ------------------
53
-
54
- * raised requirement for PHP version to 5.3.0
55
- * migrated codebase to use namespaces
56
- * changed distribution from PEAR to Composer
57
- * implemented issue #30: support "c" mode for `fopen()`
58
- * fixed issue #31: prohibit aquiring locks when already locked / release lock on `fclose()`
59
- * fixed issue #32: problems when subfolder has same name as folder
60
- * fixed issue #36: `vfsStreamWrapper::stream_open()` should return false while trying to open existing non-writable file, patch provided by Alexander Peresypkin
61
-
62
-
63
- 0.11.2 (2012-01-14)
64
- -------------------
65
-
66
- * fixed issue #29: set permissions properly when using `vfsStream::copyFromFileSystem()`, patch provided by predakanga
67
- * fixed failing tests under PHP > 5.3.2
68
-
69
-
70
- 0.11.1 (2011-12-04)
71
- -------------------
72
-
73
- * fixed issue #28: `mkdir()` overwrites existing directories/files
74
-
75
-
76
- 0.11.0 (2011-11-29)
77
- -------------------
78
-
79
- * implemented issue #20: `vfsStream::create()` removes old structure
80
- * implemented issue #4: possibility to copy structure from existing file system
81
- * fixed issue #23: `unlink()` should not remove any directory
82
- * fixed issue #25: `vfsStreamDirectory::hasChild()` gives false positives for nested paths, patch provided by Andrew Coulton
83
- * fixed issue #26: opening a file for reading only should not update its modification time, reported and initial patch provided by Ludovic Chabant
84
-
85
-
86
- 0.10.1 (2011-08-22)
87
- -------------------
88
-
89
- * fixed issue #16: replace `vfsStreamContent` to `vfsStreamContainer` for autocompletion
90
- * fixed issue #17: `vfsStream::create()` has issues with numeric directories, patch provided by mathieuk
91
-
92
-
93
- 0.10.0 (2011-07-22)
94
- -------------------
95
-
96
- * added new method `vfsStreamContainer::hasChildren()` and `vfsStreamDirectory::hasChildren()`
97
- * implemented issue #14: less verbose way to initialize vfsStream
98
- * implemented issue #13: remove deprecated method `vfsStreamContent::setFilemtime()`
99
- * implemented issue #6: locking meachanism for files
100
- * ensured that `stream_set_blocking()`, `stream_set_timeout()` and `stream_set_write_buffer()` on vfsStream urls have the same behaviour with PHP 5.2 and 5.3
101
- * implemented issue #10: method to print directory structure
102
-
103
-
104
- 0.9.0 (2011-07-13)
105
- ------------------
106
-
107
- * implemented feature request issue #7: add support for `fileatime()` and `filectime()`
108
- * fixed issue #3: add support for `streamWrapper::stream_cast()`
109
- * fixed issue #9: resolve path not called everywhere its needed
110
- * deprecated `vfsStreamAbstractContent::setFilemtime()`, use `vfsStreamAbstractContent::lastModified()` instead, will be removed with 0.10.0
111
-
112
-
113
- 0.8.0 (2010-10-08)
114
- ------------------
115
-
116
- * implemented enhancement #6: use `vfsStream::umask()` to influence initial file mode for files and directories
117
- * implemented enhancement #19: support of .. in the url, patch provided by Guislain Duthieuw
118
- * fixed issue #18: `getChild()` returns NULL when child's name contains parent name
119
- * fixed bug with incomplete error message when accessing non-existing files on root level
120
-
121
-
122
- 0.7.0 (2010-06-08)
123
- ------------------
124
-
125
- * added new `vfsStream::setup()` method to simplify vfsStream usage
126
- * fixed issue #15: `mkdir()` creates a subfolder in a folder without permissions
127
-
128
-
129
- 0.6.0 (2010-02-15)
130
- ------------------
131
-
132
- * added support for `$mode` param when opening files, implements enhancement #7 and fixes issue #13
133
- * `vfsStreamWrapper::stream_open()` now evaluates `$options` for `STREAM_REPORT_ERRORS`
134
-
135
-
136
- 0.5.0 (2010-01-25)
137
- ------------------
138
-
139
- * added support for `rename()`, patch provided by Benoit Aubuchon
140
- * added support for . as directory alias so that `vfs://foo/.` resolves to `vfs://foo`, can be used as workaround for bug #8
141
-
142
-
143
- 0.4.0 (2009-07-13)
144
- ------------------
145
-
146
- * added support for file modes, users and groups (with restrictions, see http://code.google.com/p/bovigo/wiki/vfsStreamDocsKnownIssues)
147
- * fixed bug #5: `vfsStreamDirectory::addChild()` does not replace child with same name
148
- * fixed bug with `is_writable()` because of missing `stat()` fields, patch provided by Sergey Galkin
149
-
150
-
151
- 0.3.2 (2009-02-16)
152
- ------------------
153
-
154
- * support trailing slashes on directories in vfsStream urls, patch provided by Gabriel Birke
155
- * fixed bug #4: vfsstream can only be read once, reported by Christoph Bloemer
156
- * enabled multiple iterations at the same time over the same directory
157
-
158
-
159
- 0.3.1 (2008-02-18)
160
- ------------------
161
-
162
- * fixed path/directory separator issues under linux systems
163
- * fixed uid/gid issues under linux systems
164
-
165
-
166
- 0.3.0 (2008-01-02)
167
- ------------------
168
-
169
- * added support for `rmdir()`
170
- * added `vfsStream::newDirectory()`, dropped `vfsStreamDirectory::ceate()`
171
- * added new interface `vfsStreamContainer`
172
- * added `vfsStreamContent::at()` which allows code like `$file = vfsStream::newFile('file.txt.')->withContent('foo')->at($otherDir);`
173
- * added `vfsStreamContent::lastModified()`, made `vfsStreamContent::setFilemtime()` an alias for this
174
- * moved from Stubbles development environment to bovigo
175
- * refactorings to reduce crap index of various methods
176
-
177
-
178
- 0.2.0 (2007-12-29)
179
- ------------------
180
-
181
- * moved `vfsStreamWrapper::PROTOCOL` to `vfsStream::SCHEME`
182
- * added new `vfsStream::url()` method to assist in creating correct vfsStream urls
183
- * added `vfsStream::path()` method as opposite to `vfsStream::url()`
184
- * a call to `vfsStreamWrapper::register()` will now reset the root to null, implemented on request from David Zuelke
185
- * added support for `is_readable()`, `is_dir()`, `is_file()`
186
- * added `vfsStream::newFile()` to be able to do `$file = vfsStream::newFile("foo.txt")->withContent("bar");`
187
-
188
-
189
- 0.1.0 (2007-12-14)
190
- ------------------
191
-
192
- * Initial release.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/LICENSE DELETED
@@ -1,27 +0,0 @@
1
- Copyright (c) 2007-2015, Frank Kleine
2
- All rights reserved.
3
-
4
- Redistribution and use in source and binary forms, with or without
5
- modification, are permitted provided that the following conditions are
6
- met:
7
-
8
- * Redistributions of source code must retain the above copyright
9
- notice, this list of conditions and the following disclaimer.
10
- * Redistributions in binary form must reproduce the above copyright
11
- notice, this list of conditions and the following disclaimer in the
12
- documentation and/or other materials provided with the distribution.
13
- * Neither the name of Stubbles nor the names of its
14
- contributors may be used to endorse or promote products derived
15
- from this software without specific prior written permission.
16
-
17
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
18
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
20
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
21
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
24
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
25
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
26
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/README.md DELETED
@@ -1,8 +0,0 @@
1
- You can find documentation in the [wiki](https://github.com/mikey179/vfsStream/wiki).
2
-
3
- Also you might want to check [vfsStream examples](https://github.com/mikey179/vfsStream-examples).
4
-
5
-
6
- [![Build Status](https://secure.travis-ci.org/mikey179/vfsStream.png)](http://travis-ci.org/mikey179/vfsStream) [![Coverage Status](https://coveralls.io/repos/mikey179/vfsStream/badge.png?branch=master)](https://coveralls.io/r/mikey179/vfsStream?branch=master)
7
-
8
- [![Latest Stable Version](https://poser.pugx.org/mikey179/vfsStream/version.png)](https://packagist.org/packages/mikey179/vfsStream) [![Latest Unstable Version](https://poser.pugx.org/mikey179/vfsStream/v/unstable.png)](//packagist.org/packages/mikey179/vfsStream)
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/composer.json DELETED
@@ -1,33 +0,0 @@
1
- {
2
- "name": "mikey179/vfsStream",
3
- "type": "library",
4
- "homepage": "http://vfs.bovigo.org/",
5
- "description": "Virtual file system to mock the real file system in unit tests.",
6
- "license": "BSD-3-Clause",
7
- "authors": [
8
- {
9
- "name": "Frank Kleine",
10
- "homepage": "http://frankkleine.de/",
11
- "role": "Developer"
12
- }
13
- ],
14
- "support": {
15
- "issues": "https://github.com/mikey179/vfsStream/issues",
16
- "source": "https://github.com/mikey179/vfsStream/tree/master",
17
- "wiki": "https://github.com/mikey179/vfsStream/wiki"
18
- },
19
- "require": {
20
- "php": ">=5.3.0"
21
- },
22
- "require-dev": {
23
- "phpunit/phpunit": "~4.5"
24
- },
25
- "autoload": {
26
- "psr-0": { "org\\bovigo\\vfs\\": "src/main/php" }
27
- },
28
- "extra": {
29
- "branch-alias": {
30
- "dev-master": "1.5.x-dev"
31
- }
32
- }
33
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/examples/Example.php DELETED
@@ -1,54 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs\example;
11
- /**
12
- * Example class.
13
- */
14
- class Example
15
- {
16
- /**
17
- * id of the example
18
- *
19
- * @type string
20
- */
21
- protected $id;
22
- /**
23
- * a directory where we do something..
24
- *
25
- * @type string
26
- */
27
- protected $directory;
28
-
29
- /**
30
- * constructor
31
- *
32
- * @param string $id
33
- */
34
- public function __construct($id)
35
- {
36
- $this->id = $id;
37
- }
38
-
39
- /**
40
- * sets the directory
41
- *
42
- * @param string $directory
43
- */
44
- public function setDirectory($directory)
45
- {
46
- $this->directory = $directory . DIRECTORY_SEPARATOR . $this->id;
47
- if (file_exists($this->directory) === false) {
48
- mkdir($this->directory, 0700, true);
49
- }
50
- }
51
-
52
- // more source code here...
53
- }
54
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/examples/ExampleTestCaseOldWay.php DELETED
@@ -1,48 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs\example;
11
- require_once 'Example.php';
12
- /**
13
- * Test case for class Example.
14
- */
15
- class ExampleTestCaseOldWay extends \PHPUnit_Framework_TestCase
16
- {
17
- /**
18
- * set up test environmemt
19
- */
20
- public function setUp()
21
- {
22
- if (file_exists(__DIR__ . '/id') === true) {
23
- rmdir(__DIR__ . '/id');
24
- }
25
- }
26
-
27
- /**
28
- * clear up test environment
29
- */
30
- public function tearDown()
31
- {
32
- if (file_exists(__DIR__ . '/id') === true) {
33
- rmdir(__DIR__ . '/id');
34
- }
35
- }
36
-
37
- /**
38
- * @test
39
- */
40
- public function directoryIsCreated()
41
- {
42
- $example = new Example('id');
43
- $this->assertFalse(file_exists(__DIR__ . '/id'));
44
- $example->setDirectory(__DIR__);
45
- $this->assertTrue(file_exists(__DIR__ . '/id'));
46
- }
47
- }
48
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/examples/ExampleTestCaseWithVfsStream.php DELETED
@@ -1,47 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs\example;
11
- use org\bovigo\vfs\vfsStream;
12
- require_once 'Example.php';
13
- /**
14
- * Test case for class Example.
15
- *
16
- * @package bovigo_vfs
17
- * @subpackage examples
18
- */
19
- class ExampleTestCaseWithVfsStream extends \PHPUnit_Framework_TestCase
20
- {
21
- /**
22
- * root directory
23
- *
24
- * @type vfsStreamDirectory
25
- */
26
- protected $root;
27
-
28
- /**
29
- * set up test environmemt
30
- */
31
- public function setUp()
32
- {
33
- $this->root = vfsStream::setup('exampleDir');
34
- }
35
-
36
- /**
37
- * @test
38
- */
39
- public function directoryIsCreated()
40
- {
41
- $example = new Example('id');
42
- $this->assertFalse($this->root->hasChild('id'));
43
- $example->setDirectory(vfsStream::url('exampleDir'));
44
- $this->assertTrue($this->root->hasChild('id'));
45
- }
46
- }
47
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/examples/FailureExample.php DELETED
@@ -1,50 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs\example;
11
- /**
12
- * Example class to demonstrate testing of failure behaviour with vfsStream.
13
- */
14
- class FailureExample
15
- {
16
- /**
17
- * filename to write data
18
- *
19
- * @type string
20
- */
21
- protected $filename;
22
-
23
- /**
24
- * constructor
25
- *
26
- * @param string $id
27
- */
28
- public function __construct($filename)
29
- {
30
- $this->filename = $filename;
31
- }
32
-
33
- /**
34
- * sets the directory
35
- *
36
- * @param string $directory
37
- */
38
- public function writeData($data)
39
- {
40
- $bytes = @file_put_contents($this->filename, $data);
41
- if (false === $bytes) {
42
- return 'could not write data';
43
- }
44
-
45
- return 'ok';
46
- }
47
-
48
- // more source code here...
49
- }
50
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/examples/FailureExampleTestCase.php DELETED
@@ -1,58 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs\example;
11
- use org\bovigo\vfs\vfsStream;
12
- require_once 'FailureExample.php';
13
- /**
14
- * Test case for class FailureExample.
15
- */
16
- class FailureExampleTestCase extends \PHPUnit_Framework_TestCase
17
- {
18
- /**
19
- * root directory
20
- *
21
- * @type vfsStreamDirectory
22
- */
23
- protected $root;
24
-
25
- /**
26
- * set up test environmemt
27
- */
28
- public function setUp()
29
- {
30
- $this->root = vfsStream::setup('exampleDir');
31
- }
32
-
33
- /**
34
- * @test
35
- */
36
- public function returnsOkOnNoFailure()
37
- {
38
- $example = new FailureExample(vfsStream::url('exampleDir/test.txt'));
39
- $this->assertSame('ok', $example->writeData('testdata'));
40
- $this->assertTrue($this->root->hasChild('test.txt'));
41
- $this->assertSame('testdata', $this->root->getChild('test.txt')->getContent());
42
- }
43
-
44
- /**
45
- * @test
46
- */
47
- public function returnsErrorMessageIfWritingToFileFails()
48
- {
49
- $file = vfsStream::newFile('test.txt', 0000)
50
- ->withContent('notoverwritten')
51
- ->at($this->root);
52
- $example = new FailureExample(vfsStream::url('exampleDir/test.txt'));
53
- $this->assertSame('could not write data', $example->writeData('testdata'));
54
- $this->assertTrue($this->root->hasChild('test.txt'));
55
- $this->assertSame('notoverwritten', $this->root->getChild('test.txt')->getContent());
56
- }
57
- }
58
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/examples/FileModeExampleTestCaseOldWay.php DELETED
@@ -1,67 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs\example;
11
- require_once 'FilemodeExample.php';
12
- /**
13
- * Test case for class FilemodeExample.
14
- */
15
- class FilemodeExampleTestCaseOldWay extends \PHPUnit_Framework_TestCase
16
- {
17
- /**
18
- * set up test environmemt
19
- */
20
- public function setUp()
21
- {
22
- if (file_exists(__DIR__ . '/id') === true) {
23
- rmdir(__DIR__ . '/id');
24
- }
25
- }
26
-
27
- /**
28
- * clear up test environment
29
- */
30
- public function tearDown()
31
- {
32
- if (file_exists(__DIR__ . '/id') === true) {
33
- rmdir(__DIR__ . '/id');
34
- }
35
- }
36
-
37
- /**
38
- * test correct file mode for created directory
39
- */
40
- public function testDirectoryHasCorrectDefaultFilePermissions()
41
- {
42
- $example = new FilemodeExample('id');
43
- $example->setDirectory(__DIR__);
44
- if (DIRECTORY_SEPARATOR === '\\') {
45
- // can not really test on windows, filemode from mkdir() is ignored
46
- $this->assertEquals(40777, decoct(fileperms(__DIR__ . '/id')));
47
- } else {
48
- $this->assertEquals(40700, decoct(fileperms(__DIR__ . '/id')));
49
- }
50
- }
51
-
52
- /**
53
- * test correct file mode for created directory
54
- */
55
- public function testDirectoryHasCorrectDifferentFilePermissions()
56
- {
57
- $example = new FilemodeExample('id', 0755);
58
- $example->setDirectory(__DIR__);
59
- if (DIRECTORY_SEPARATOR === '\\') {
60
- // can not really test on windows, filemode from mkdir() is ignored
61
- $this->assertEquals(40777, decoct(fileperms(__DIR__ . '/id')));
62
- } else {
63
- $this->assertEquals(40755, decoct(fileperms(__DIR__ . '/id')));
64
- }
65
- }
66
- }
67
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/examples/FilePermissionsExample.php DELETED
@@ -1,29 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs\example;
11
- /**
12
- * Example showing correct file permission support introduced with 0.7.0.
13
- */
14
- class FilePermissionsExample
15
- {
16
- /**
17
- * reads configuration from given config file
18
- *
19
- * @param mixed $config
20
- * @param string $configFile
21
- */
22
- public function writeConfig($config, $configFile)
23
- {
24
- @file_put_contents($configFile, serialize($config));
25
- }
26
-
27
- // more methods here
28
- }
29
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/examples/FilePermissionsExampleTestCase.php DELETED
@@ -1,44 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs\example;
11
- use org\bovigo\vfs\vfsStream;
12
- require_once 'FilePermissionsExample.php';
13
- /**
14
- * Test for FilePermissionsExample.
15
- */
16
- class FilePermissionsExampleTestCase extends \PHPUnit_Framework_TestCase
17
- {
18
- /**
19
- * @test
20
- */
21
- public function directoryWritable()
22
- {
23
- vfsStream::setup('exampleDir');
24
- $example = new FilePermissionsExample();
25
- $example->writeConfig(array('foo' => 'bar'),
26
- vfsStream::url('exampleDir/writable.ini')
27
- );
28
-
29
- // assertions here
30
- }
31
-
32
- /**
33
- * @test
34
- */
35
- public function directoryNotWritable()
36
- {
37
- vfsStream::setup('exampleDir', 0444);
38
- $example = new FilePermissionsExample();
39
- $example->writeConfig(array('foo' => 'bar'),
40
- vfsStream::url('exampleDir/notWritable.ini')
41
- );
42
- }
43
- }
44
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/examples/FilemodeExample.php DELETED
@@ -1,62 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs\example;
11
- /**
12
- * Example class.
13
- */
14
- class FilemodeExample
15
- {
16
- /**
17
- * id of the example
18
- *
19
- * @type string
20
- */
21
- protected $id;
22
- /**
23
- * a directory where we do something..
24
- *
25
- * @type string
26
- */
27
- protected $directory;
28
- /**
29
- * file mode for newly created directories
30
- *
31
- * @type int
32
- */
33
- protected $fileMode;
34
-
35
- /**
36
- * constructor
37
- *
38
- * @param string $id
39
- * @param int $fileMode optional
40
- */
41
- public function __construct($id, $fileMode = 0700)
42
- {
43
- $this->id = $id;
44
- $this->fileMode = $fileMode;
45
- }
46
-
47
- /**
48
- * sets the directory
49
- *
50
- * @param string $directory
51
- */
52
- public function setDirectory($directory)
53
- {
54
- $this->directory = $directory . DIRECTORY_SEPARATOR . $this->id;
55
- if (file_exists($this->directory) === false) {
56
- mkdir($this->directory, $this->fileMode, true);
57
- }
58
- }
59
-
60
- // more source code here...
61
- }
62
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/examples/FilemodeExampleTestCaseWithVfsStream.php DELETED
@@ -1,53 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs\example;
11
- use org\bovigo\vfs\vfsStream;
12
- require_once 'FilemodeExample.php';
13
- /**
14
- * Test case for class FilemodeExample.
15
- */
16
- class FilemodeExampleTestCaseWithVfsStream extends \PHPUnit_Framework_TestCase
17
- {
18
- /**
19
- * root directory
20
- *
21
- * @type vfsStreamDirectory
22
- */
23
- protected $root;
24
-
25
- /**
26
- * set up test environmemt
27
- */
28
- public function setUp()
29
- {
30
- $this->root = vfsStream::setup('exampleDir');
31
- }
32
-
33
- /**
34
- * test that the directory is created
35
- */
36
- public function testDirectoryIsCreatedWithDefaultPermissions()
37
- {
38
- $example = new FilemodeExample('id');
39
- $example->setDirectory(vfsStream::url('exampleDir'));
40
- $this->assertEquals(0700, $this->root->getChild('id')->getPermissions());
41
- }
42
-
43
- /**
44
- * test that the directory is created
45
- */
46
- public function testDirectoryIsCreatedWithGivenPermissions()
47
- {
48
- $example = new FilemodeExample('id', 0755);
49
- $example->setDirectory(vfsStream::url('exampleDir'));
50
- $this->assertEquals(0755, $this->root->getChild('id')->getPermissions());
51
- }
52
- }
53
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/examples/bootstrap.php DELETED
@@ -1,3 +0,0 @@
1
- <?php
2
- require __DIR__ . '/../vendor/.composer/autoload.php';
3
- ?>
 
 
 
vendor/mikey179/vfsStream/phpdoc.dist.xml DELETED
@@ -1,14 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8" ?>
2
- <phpdoc>
3
- <title>vfsStream API Doc</title>
4
- <parser>
5
- <target>docs/api</target>
6
- <default-package-name>org\bovigo\vfs</default-package-name>
7
- </parser>
8
- <transformer>
9
- <target>docs/api</target>
10
- </transformer>
11
- <files>
12
- <directory>src/main/php</directory>
13
- </files>
14
- </phpdoc>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/phpunit.xml.dist DELETED
@@ -1,42 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <phpunit backupGlobals="false"
3
- backupStaticAttributes="false"
4
- bootstrap="vendor/autoload.php"
5
- colors="true"
6
- convertErrorsToExceptions="true"
7
- convertNoticesToExceptions="true"
8
- convertWarningsToExceptions="true"
9
- forceCoversAnnotation="false"
10
- mapTestClassNameToCoveredClassName="false"
11
- printerClass="PHPUnit_TextUI_ResultPrinter"
12
- processIsolation="false"
13
- stopOnError="false"
14
- stopOnFailure="false"
15
- stopOnIncomplete="false"
16
- stopOnSkipped="false"
17
- verbose="true">
18
- <testsuites>
19
- <testsuite>
20
- <directory suffix="TestCase.php">./src/test/php</directory>
21
- </testsuite>
22
- </testsuites>
23
-
24
- <filter>
25
- <whitelist>
26
- <directory>src/main/php</directory>
27
- </whitelist>
28
- </filter>
29
-
30
- <logging>
31
- <log type="coverage-html" target="docs/coverage" charset="UTF-8"
32
- yui="true" highlight="false"
33
- lowUpperBound="35" highLowerBound="70"/>
34
- <log type="coverage-clover" target="docs/phpunit/clover.xml"/>
35
- <log type="junit" target="docs/phpunit/junit.xml" logIncompleteSkipped="false"/>
36
- <log type="testdox-html" target="docs/phpunit/testdox.html"/>
37
- </logging>
38
-
39
- <php>
40
- <ini name="memory_limit" value="-1"/>
41
- </php>
42
- </phpunit>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/DotDirectory.php DELETED
@@ -1,36 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Directory container.
13
- */
14
- class DotDirectory extends vfsStreamDirectory
15
- {
16
- /**
17
- * returns iterator for the children
18
- *
19
- * @return vfsStreamContainerIterator
20
- */
21
- public function getIterator()
22
- {
23
- return new \ArrayIterator(array());
24
- }
25
-
26
- /**
27
- * checks whether dir is a dot dir
28
- *
29
- * @return bool
30
- */
31
- public function isDot()
32
- {
33
- return true;
34
- }
35
- }
36
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/Quota.php DELETED
@@ -1,87 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Represents a quota for disk space.
13
- *
14
- * @since 1.1.0
15
- * @internal
16
- */
17
- class Quota
18
- {
19
- /**
20
- * unlimited quota
21
- */
22
- const UNLIMITED = -1;
23
- /**
24
- * quota in bytes
25
- *
26
- * A value of -1 is treated as unlimited.
27
- *
28
- * @type int
29
- */
30
- private $amount;
31
-
32
- /**
33
- * constructor
34
- *
35
- * @param int $amount quota in bytes
36
- */
37
- public function __construct($amount)
38
- {
39
- $this->amount = $amount;
40
- }
41
-
42
- /**
43
- * create with unlimited space
44
- *
45
- * @return Quota
46
- */
47
- public static function unlimited()
48
- {
49
- return new self(self::UNLIMITED);
50
- }
51
-
52
- /**
53
- * checks if a quota is set
54
- *
55
- * @return bool
56
- */
57
- public function isLimited()
58
- {
59
- return self::UNLIMITED < $this->amount;
60
- }
61
-
62
- /**
63
- * checks if given used space exceeda quota limit
64
- *
65
- *
66
- * @param int $usedSpace
67
- * @return int
68
- */
69
- public function spaceLeft($usedSpace)
70
- {
71
- if (self::UNLIMITED === $this->amount) {
72
- return $usedSpace;
73
- }
74
-
75
- if ($usedSpace >= $this->amount) {
76
- return 0;
77
- }
78
-
79
- $spaceLeft = $this->amount - $usedSpace;
80
- if (0 >= $spaceLeft) {
81
- return 0;
82
- }
83
-
84
- return $spaceLeft;
85
- }
86
- }
87
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/content/FileContent.php DELETED
@@ -1,71 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs\content;
11
- /**
12
- * Interface for actual file contents.
13
- *
14
- * @since 1.3.0
15
- */
16
- interface FileContent
17
- {
18
- /**
19
- * returns actual content
20
- *
21
- * @return string
22
- */
23
- public function content();
24
-
25
- /**
26
- * returns size of content
27
- *
28
- * @return int
29
- */
30
- public function size();
31
-
32
- /**
33
- * reads the given amount of bytes from content
34
- *
35
- * @param int $count
36
- * @return string
37
- */
38
- public function read($count);
39
-
40
- /**
41
- * seeks to the given offset
42
- *
43
- * @param int $offset
44
- * @param int $whence
45
- * @return bool
46
- */
47
- public function seek($offset, $whence);
48
-
49
- /**
50
- * checks whether pointer is at end of file
51
- *
52
- * @return bool
53
- */
54
- public function eof();
55
-
56
- /**
57
- * writes an amount of data
58
- *
59
- * @param string $data
60
- * @return amount of written bytes
61
- */
62
- public function write($data);
63
-
64
- /**
65
- * Truncates a file to a given length
66
- *
67
- * @param int $size length to truncate file to
68
- * @return bool
69
- */
70
- public function truncate($size);
71
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/content/LargeFileContent.php DELETED
@@ -1,167 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs\content;
11
- /**
12
- * File content implementation to mock large files.
13
- *
14
- * When content is written via write() the data will be written into the
15
- * positions according to the current offset.
16
- * When content is read via read() it will use the already written data. If no
17
- * data is written at the offsets to read those offsets will be filled with
18
- * spaces.
19
- * Please note that accessing the whole content via content() will deliver a
20
- * string with the length of the originally defined size. It is not advisable to
21
- * do so with large sizes, except you have enough memory and time. :-)
22
- *
23
- * @since 1.3.0
24
- */
25
- class LargeFileContent extends SeekableFileContent implements FileContent
26
- {
27
- /**
28
- * byte array of written content
29
- *
30
- * @type char[]
31
- */
32
- private $content = array();
33
- /**
34
- * file size in bytes
35
- *
36
- * @type int
37
- */
38
- private $size;
39
-
40
- /**
41
- * constructor
42
- *
43
- * @param int $size file size in bytes
44
- */
45
- public function __construct($size)
46
- {
47
- $this->size = $size;
48
- }
49
-
50
- /**
51
- * create large file with given size in kilobyte
52
- *
53
- * @param int $kilobyte
54
- * @return LargeFileContent
55
- */
56
- public static function withKilobytes($kilobyte)
57
- {
58
- return new self($kilobyte * 1024);
59
- }
60
-
61
- /**
62
- * create large file with given size in megabyte
63
- *
64
- * @param int $megabyte
65
- * @return LargeFileContent
66
- */
67
- public static function withMegabytes($megabyte)
68
- {
69
- return self::withKilobytes($megabyte * 1024);
70
- }
71
-
72
- /**
73
- * create large file with given size in gigabyte
74
- *
75
- * @param int $gigabyte
76
- * @return LargeFileContent
77
- */
78
- public static function withGigabytes($gigabyte)
79
- {
80
- return self::withMegabytes($gigabyte * 1024);
81
- }
82
-
83
- /**
84
- * returns actual content
85
- *
86
- * @return string
87
- */
88
- public function content()
89
- {
90
- return $this->doRead(0, $this->size);
91
- }
92
-
93
- /**
94
- * returns size of content
95
- *
96
- * @return int
97
- */
98
- public function size()
99
- {
100
- return $this->size;
101
- }
102
-
103
- /**
104
- * actual reading of given byte count starting at given offset
105
- *
106
- * @param int $offset
107
- * @param int $count
108
- */
109
- protected function doRead($offset, $count)
110
- {
111
- if (($offset + $count) > $this->size) {
112
- $count = $this->size - $offset;
113
- }
114
-
115
- $result = '';
116
- for ($i = 0; $i < $count; $i++) {
117
- if (isset($this->content[$i + $offset])) {
118
- $result .= $this->content[$i + $offset];
119
- } else {
120
- $result .= ' ';
121
- }
122
- }
123
-
124
- return $result;
125
- }
126
-
127
- /**
128
- * actual writing of data with specified length at given offset
129
- *
130
- * @param string $data
131
- * @param int $offset
132
- * @param int $length
133
- */
134
- protected function doWrite($data, $offset, $length)
135
- {
136
- for ($i = 0; $i < $length; $i++) {
137
- $this->content[$i + $offset] = $data{$i};
138
- }
139
-
140
- if ($offset >= $this->size) {
141
- $this->size += $length;
142
- } elseif (($offset + $length) > $this->size) {
143
- $this->size = $offset + $length;
144
- }
145
- }
146
-
147
- /**
148
- * Truncates a file to a given length
149
- *
150
- * @param int $size length to truncate file to
151
- * @return bool
152
- */
153
- public function truncate($size)
154
- {
155
- $this->size = $size;
156
- foreach (array_filter(array_keys($this->content),
157
- function($pos) use ($size)
158
- {
159
- return $pos >= $size;
160
- }
161
- ) as $removePos) {
162
- unset($this->content[$removePos]);
163
- }
164
-
165
- return true;
166
- }
167
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/content/SeekableFileContent.php DELETED
@@ -1,129 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs\content;
11
- /**
12
- * Default implementation for file contents based on simple strings.
13
- *
14
- * @since 1.3.0
15
- */
16
- abstract class SeekableFileContent implements FileContent
17
- {
18
- /**
19
- * current position within content
20
- *
21
- * @type int
22
- */
23
- private $offset = 0;
24
-
25
- /**
26
- * reads the given amount of bytes from content
27
- *
28
- * @param int $count
29
- * @return string
30
- */
31
- public function read($count)
32
- {
33
- $data = $this->doRead($this->offset, $count);
34
- $this->offset += $count;
35
- return $data;
36
- }
37
-
38
- /**
39
- * actual reading of given byte count starting at given offset
40
- *
41
- * @param int $offset
42
- * @param int $count
43
- */
44
- protected abstract function doRead($offset, $count);
45
-
46
- /**
47
- * seeks to the given offset
48
- *
49
- * @param int $offset
50
- * @param int $whence
51
- * @return bool
52
- */
53
- public function seek($offset, $whence)
54
- {
55
- switch ($whence) {
56
- case SEEK_CUR:
57
- $this->offset += $offset;
58
- return true;
59
-
60
- case SEEK_END:
61
- $this->offset = $this->size() + $offset;
62
- return true;
63
-
64
- case SEEK_SET:
65
- $this->offset = $offset;
66
- return true;
67
-
68
- default:
69
- return false;
70
- }
71
-
72
- return false;
73
- }
74
-
75
- /**
76
- * checks whether pointer is at end of file
77
- *
78
- * @return bool
79
- */
80
- public function eof()
81
- {
82
- return $this->size() <= $this->offset;
83
- }
84
-
85
- /**
86
- * writes an amount of data
87
- *
88
- * @param string $data
89
- * @return amount of written bytes
90
- */
91
- public function write($data)
92
- {
93
- $dataLength = strlen($data);
94
- $this->doWrite($data, $this->offset, $dataLength);
95
- $this->offset += $dataLength;
96
- return $dataLength;
97
- }
98
-
99
- /**
100
- * actual writing of data with specified length at given offset
101
- *
102
- * @param string $data
103
- * @param int $offset
104
- * @param int $length
105
- */
106
- protected abstract function doWrite($data, $offset, $length);
107
-
108
- /**
109
- * for backwards compatibility with vfsStreamFile::bytesRead()
110
- *
111
- * @return int
112
- * @deprecated
113
- */
114
- public function bytesRead()
115
- {
116
- return $this->offset;
117
- }
118
-
119
- /**
120
- * for backwards compatibility with vfsStreamFile::readUntilEnd()
121
- *
122
- * @return string
123
- * @deprecated
124
- */
125
- public function readUntilEnd()
126
- {
127
- return substr($this->content(), $this->offset);
128
- }
129
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/content/StringBasedFileContent.php DELETED
@@ -1,97 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs\content;
11
- /**
12
- * Default implementation for file contents based on simple strings.
13
- *
14
- * @since 1.3.0
15
- */
16
- class StringBasedFileContent extends SeekableFileContent implements FileContent
17
- {
18
- /**
19
- * actual content
20
- *
21
- * @type string
22
- */
23
- private $content;
24
-
25
- /**
26
- * constructor
27
- *
28
- * @param string $content
29
- */
30
- public function __construct($content)
31
- {
32
- $this->content = $content;
33
- }
34
-
35
- /**
36
- * returns actual content
37
- *
38
- * @return string
39
- */
40
- public function content()
41
- {
42
- return $this->content;
43
- }
44
-
45
- /**
46
- * returns size of content
47
- *
48
- * @return int
49
- */
50
- public function size()
51
- {
52
- return strlen($this->content);
53
- }
54
-
55
- /**
56
- * actual reading of length starting at given offset
57
- *
58
- * @param int $offset
59
- * @param int $count
60
- */
61
- protected function doRead($offset, $count)
62
- {
63
- return substr($this->content, $offset, $count);
64
- }
65
-
66
- /**
67
- * actual writing of data with specified length at given offset
68
- *
69
- * @param string $data
70
- * @param int $offset
71
- * @param int $length
72
- */
73
- protected function doWrite($data, $offset, $length)
74
- {
75
- $this->content = substr($this->content, 0, $offset)
76
- . $data
77
- . substr($this->content, $offset + $length);
78
- }
79
-
80
- /**
81
- * Truncates a file to a given length
82
- *
83
- * @param int $size length to truncate file to
84
- * @return bool
85
- */
86
- public function truncate($size)
87
- {
88
- if ($size > $this->size()) {
89
- // Pad with null-chars if we're "truncating up"
90
- $this->content .= str_repeat("\0", $size - $this->size());
91
- } else {
92
- $this->content = substr($this->content, 0, $size);
93
- }
94
-
95
- return true;
96
- }
97
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStream.php DELETED
@@ -1,462 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- use org\bovigo\vfs\content\LargeFileContent;
12
- use org\bovigo\vfs\visitor\vfsStreamVisitor;
13
- /**
14
- * Some utility methods for vfsStream.
15
- *
16
- * @api
17
- */
18
- class vfsStream
19
- {
20
- /**
21
- * url scheme
22
- */
23
- const SCHEME = 'vfs';
24
- /**
25
- * owner: root
26
- */
27
- const OWNER_ROOT = 0;
28
- /**
29
- * owner: user 1
30
- */
31
- const OWNER_USER_1 = 1;
32
- /**
33
- * owner: user 2
34
- */
35
- const OWNER_USER_2 = 2;
36
- /**
37
- * group: root
38
- */
39
- const GROUP_ROOT = 0;
40
- /**
41
- * group: user 1
42
- */
43
- const GROUP_USER_1 = 1;
44
- /**
45
- * group: user 2
46
- */
47
- const GROUP_USER_2 = 2;
48
- /**
49
- * initial umask setting
50
- *
51
- * @type int
52
- */
53
- protected static $umask = 0000;
54
- /**
55
- * switch whether dotfiles are enabled in directory listings
56
- *
57
- * @type bool
58
- */
59
- private static $dotFiles = true;
60
-
61
- /**
62
- * prepends the scheme to the given URL
63
- *
64
- * @param string $path path to translate to vfsStream url
65
- * @return string
66
- */
67
- public static function url($path)
68
- {
69
- return self::SCHEME . '://' . str_replace('\\', '/', $path);
70
- }
71
-
72
- /**
73
- * restores the path from the url
74
- *
75
- * @param string $url vfsStream url to translate into path
76
- * @return string
77
- */
78
- public static function path($url)
79
- {
80
- // remove line feeds and trailing whitespaces and path separators
81
- $path = trim($url, " \t\r\n\0\x0B/\\");
82
- $path = substr($path, strlen(self::SCHEME . '://'));
83
- $path = str_replace('\\', '/', $path);
84
- // replace double slashes with single slashes
85
- $path = str_replace('//', '/', $path);
86
- return urldecode($path);
87
- }
88
-
89
- /**
90
- * sets new umask setting and returns previous umask setting
91
- *
92
- * If no value is given only the current umask setting is returned.
93
- *
94
- * @param int $umask new umask setting
95
- * @return int
96
- * @since 0.8.0
97
- */
98
- public static function umask($umask = null)
99
- {
100
- $oldUmask = self::$umask;
101
- if (null !== $umask) {
102
- self::$umask = $umask;
103
- }
104
-
105
- return $oldUmask;
106
- }
107
-
108
- /**
109
- * helper method for setting up vfsStream in unit tests
110
- *
111
- * Instead of
112
- * vfsStreamWrapper::register();
113
- * vfsStreamWrapper::setRoot(vfsStream::newDirectory('root'));
114
- * you can simply do
115
- * vfsStream::setup()
116
- * which yields the same result. Additionally, the method returns the
117
- * freshly created root directory which you can use to make further
118
- * adjustments to it.
119
- *
120
- * Assumed $structure contains an array like this:
121
- * <code>
122
- * array('Core' = array('AbstractFactory' => array('test.php' => 'some text content',
123
- * 'other.php' => 'Some more text content',
124
- * 'Invalid.csv' => 'Something else',
125
- * ),
126
- * 'AnEmptyFolder' => array(),
127
- * 'badlocation.php' => 'some bad content',
128
- * )
129
- * )
130
- * </code>
131
- * the resulting directory tree will look like this:
132
- * <pre>
133
- * root
134
- * \- Core
135
- * |- badlocation.php
136
- * |- AbstractFactory
137
- * | |- test.php
138
- * | |- other.php
139
- * | \- Invalid.csv
140
- * \- AnEmptyFolder
141
- * </pre>
142
- * Arrays will become directories with their key as directory name, and
143
- * strings becomes files with their key as file name and their value as file
144
- * content.
145
- *
146
- * @param string $rootDirName name of root directory
147
- * @param int $permissions file permissions of root directory
148
- * @param array $structure directory structure to add under root directory
149
- * @return \org\bovigo\vfs\vfsStreamDirectory
150
- * @since 0.7.0
151
- * @see https://github.com/mikey179/vfsStream/issues/14
152
- * @see https://github.com/mikey179/vfsStream/issues/20
153
- */
154
- public static function setup($rootDirName = 'root', $permissions = null, array $structure = array())
155
- {
156
- vfsStreamWrapper::register();
157
- return self::create($structure, vfsStreamWrapper::setRoot(self::newDirectory($rootDirName, $permissions)));
158
- }
159
-
160
- /**
161
- * creates vfsStream directory structure from an array and adds it to given base dir
162
- *
163
- * Assumed $structure contains an array like this:
164
- * <code>
165
- * array('Core' = array('AbstractFactory' => array('test.php' => 'some text content',
166
- * 'other.php' => 'Some more text content',
167
- * 'Invalid.csv' => 'Something else',
168
- * ),
169
- * 'AnEmptyFolder' => array(),
170
- * 'badlocation.php' => 'some bad content',
171
- * )
172
- * )
173
- * </code>
174
- * the resulting directory tree will look like this:
175
- * <pre>
176
- * baseDir
177
- * \- Core
178
- * |- badlocation.php
179
- * |- AbstractFactory
180
- * | |- test.php
181
- * | |- other.php
182
- * | \- Invalid.csv
183
- * \- AnEmptyFolder
184
- * </pre>
185
- * Arrays will become directories with their key as directory name, and
186
- * strings becomes files with their key as file name and their value as file
187
- * content.
188
- *
189
- * If no baseDir is given it will try to add the structure to the existing
190
- * root directory without replacing existing childs except those with equal
191
- * names.
192
- *
193
- * @param array $structure directory structure to add under root directory
194
- * @param vfsStreamDirectory $baseDir base directory to add structure to
195
- * @return vfsStreamDirectory
196
- * @throws \InvalidArgumentException
197
- * @since 0.10.0
198
- * @see https://github.com/mikey179/vfsStream/issues/14
199
- * @see https://github.com/mikey179/vfsStream/issues/20
200
- */
201
- public static function create(array $structure, vfsStreamDirectory $baseDir = null)
202
- {
203
- if (null === $baseDir) {
204
- $baseDir = vfsStreamWrapper::getRoot();
205
- }
206
-
207
- if (null === $baseDir) {
208
- throw new \InvalidArgumentException('No baseDir given and no root directory set.');
209
- }
210
-
211
- return self::addStructure($structure, $baseDir);
212
- }
213
-
214
- /**
215
- * helper method to create subdirectories recursively
216
- *
217
- * @param array $structure subdirectory structure to add
218
- * @param vfsStreamDirectory $baseDir directory to add the structure to
219
- * @return vfsStreamDirectory
220
- */
221
- protected static function addStructure(array $structure, vfsStreamDirectory $baseDir)
222
- {
223
- foreach ($structure as $name => $data) {
224
- $name = (string) $name;
225
- if (is_array($data) === true) {
226
- self::addStructure($data, self::newDirectory($name)->at($baseDir));
227
- } elseif (is_string($data) === true) {
228
- $matches = null;
229
- preg_match('/^\[(.*)\]$/', $name, $matches);
230
- if ($matches !== array()) {
231
- self::newBlock($matches[1])->withContent($data)->at($baseDir);
232
- } else {
233
- self::newFile($name)->withContent($data)->at($baseDir);
234
- }
235
- }
236
- }
237
-
238
- return $baseDir;
239
- }
240
-
241
- /**
242
- * copies the file system structure from given path into the base dir
243
- *
244
- * If no baseDir is given it will try to add the structure to the existing
245
- * root directory without replacing existing childs except those with equal
246
- * names.
247
- * File permissions are copied as well.
248
- * Please note that file contents will only be copied if their file size
249
- * does not exceed the given $maxFileSize which defaults to 1024 KB. In case
250
- * the file is larger file content will be mocked, see
251
- * https://github.com/mikey179/vfsStream/wiki/MockingLargeFiles.
252
- *
253
- * @param string $path path to copy the structure from
254
- * @param vfsStreamDirectory $baseDir directory to add the structure to
255
- * @param int $maxFileSize maximum file size of files to copy content from
256
- * @return vfsStreamDirectory
257
- * @throws \InvalidArgumentException
258
- * @since 0.11.0
259
- * @see https://github.com/mikey179/vfsStream/issues/4
260
- */
261
- public static function copyFromFileSystem($path, vfsStreamDirectory $baseDir = null, $maxFileSize = 1048576)
262
- {
263
- if (null === $baseDir) {
264
- $baseDir = vfsStreamWrapper::getRoot();
265
- }
266
-
267
- if (null === $baseDir) {
268
- throw new \InvalidArgumentException('No baseDir given and no root directory set.');
269
- }
270
-
271
- $dir = new \DirectoryIterator($path);
272
- foreach ($dir as $fileinfo) {
273
- switch (filetype($fileinfo->getPathname())) {
274
- case 'file':
275
- if ($fileinfo->getSize() <= $maxFileSize) {
276
- $content = file_get_contents($fileinfo->getPathname());
277
- } else {
278
- $content = new LargeFileContent($fileinfo->getSize());
279
- }
280
-
281
- self::newFile(
282
- $fileinfo->getFilename(),
283
- octdec(substr(sprintf('%o', $fileinfo->getPerms()), -4))
284
- )
285
- ->withContent($content)
286
- ->at($baseDir);
287
- break;
288
-
289
- case 'dir':
290
- if (!$fileinfo->isDot()) {
291
- self::copyFromFileSystem(
292
- $fileinfo->getPathname(),
293
- self::newDirectory(
294
- $fileinfo->getFilename(),
295
- octdec(substr(sprintf('%o', $fileinfo->getPerms()), -4))
296
- )->at($baseDir),
297
- $maxFileSize
298
- );
299
- }
300
-
301
- break;
302
-
303
- case 'block':
304
- self::newBlock(
305
- $fileinfo->getFilename(),
306
- octdec(substr(sprintf('%o', $fileinfo->getPerms()), -4))
307
- )->at($baseDir);
308
- break;
309
- }
310
- }
311
-
312
- return $baseDir;
313
- }
314
-
315
- /**
316
- * returns a new file with given name
317
- *
318
- * @param string $name name of file to create
319
- * @param int $permissions permissions of file to create
320
- * @return vfsStreamFile
321
- */
322
- public static function newFile($name, $permissions = null)
323
- {
324
- return new vfsStreamFile($name, $permissions);
325
- }
326
-
327
- /**
328
- * returns a new directory with given name
329
- *
330
- * If the name contains slashes, a new directory structure will be created.
331
- * The returned directory will always be the parent directory of this
332
- * directory structure.
333
- *
334
- * @param string $name name of directory to create
335
- * @param int $permissions permissions of directory to create
336
- * @return vfsStreamDirectory
337
- */
338
- public static function newDirectory($name, $permissions = null)
339
- {
340
- if ('/' === $name{0}) {
341
- $name = substr($name, 1);
342
- }
343
-
344
- $firstSlash = strpos($name, '/');
345
- if (false === $firstSlash) {
346
- return new vfsStreamDirectory($name, $permissions);
347
- }
348
-
349
- $ownName = substr($name, 0, $firstSlash);
350
- $subDirs = substr($name, $firstSlash + 1);
351
- $directory = new vfsStreamDirectory($ownName, $permissions);
352
- self::newDirectory($subDirs, $permissions)->at($directory);
353
- return $directory;
354
- }
355
-
356
- /**
357
- * returns a new block with the given name
358
- *
359
- * @param string $name name of the block device
360
- * @param int $permissions permissions of block to create
361
- * @return vfsStreamBlock
362
- */
363
- public static function newBlock($name, $permissions = null)
364
- {
365
- return new vfsStreamBlock($name, $permissions);
366
- }
367
-
368
- /**
369
- * returns current user
370
- *
371
- * If the system does not support posix_getuid() the current user will be root (0).
372
- *
373
- * @return int
374
- */
375
- public static function getCurrentUser()
376
- {
377
- return function_exists('posix_getuid') ? posix_getuid() : self::OWNER_ROOT;
378
- }
379
-
380
- /**
381
- * returns current group
382
- *
383
- * If the system does not support posix_getgid() the current group will be root (0).
384
- *
385
- * @return int
386
- */
387
- public static function getCurrentGroup()
388
- {
389
- return function_exists('posix_getgid') ? posix_getgid() : self::GROUP_ROOT;
390
- }
391
-
392
- /**
393
- * use visitor to inspect a content structure
394
- *
395
- * If the given content is null it will fall back to use the current root
396
- * directory of the stream wrapper.
397
- *
398
- * Returns given visitor for method chaining comfort.
399
- *
400
- * @param vfsStreamVisitor $visitor the visitor who inspects
401
- * @param vfsStreamContent $content directory structure to inspect
402
- * @return vfsStreamVisitor
403
- * @throws \InvalidArgumentException
404
- * @since 0.10.0
405
- * @see https://github.com/mikey179/vfsStream/issues/10
406
- */
407
- public static function inspect(vfsStreamVisitor $visitor, vfsStreamContent $content = null)
408
- {
409
- if (null !== $content) {
410
- return $visitor->visit($content);
411
- }
412
-
413
- $root = vfsStreamWrapper::getRoot();
414
- if (null === $root) {
415
- throw new \InvalidArgumentException('No content given and no root directory set.');
416
- }
417
-
418
- return $visitor->visitDirectory($root);
419
- }
420
-
421
- /**
422
- * sets quota to given amount of bytes
423
- *
424
- * @param int $bytes
425
- * @since 1.1.0
426
- */
427
- public static function setQuota($bytes)
428
- {
429
- vfsStreamWrapper::setQuota(new Quota($bytes));
430
- }
431
-
432
- /**
433
- * checks if vfsStream lists dotfiles in directory listings
434
- *
435
- * @return bool
436
- * @since 1.3.0
437
- */
438
- public static function useDotfiles()
439
- {
440
- return self::$dotFiles;
441
- }
442
-
443
- /**
444
- * disable dotfiles in directory listings
445
- *
446
- * @since 1.3.0
447
- */
448
- public static function disableDotfiles()
449
- {
450
- self::$dotFiles = false;
451
- }
452
-
453
- /**
454
- * enable dotfiles in directory listings
455
- *
456
- * @since 1.3.0
457
- */
458
- public static function enableDotfiles()
459
- {
460
- self::$dotFiles = true;
461
- }
462
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamAbstractContent.php DELETED
@@ -1,419 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Base stream contents container.
13
- */
14
- abstract class vfsStreamAbstractContent implements vfsStreamContent
15
- {
16
- /**
17
- * name of the container
18
- *
19
- * @type string
20
- */
21
- protected $name;
22
- /**
23
- * type of the container
24
- *
25
- * @type string
26
- */
27
- protected $type;
28
- /**
29
- * timestamp of last access
30
- *
31
- * @type int
32
- */
33
- protected $lastAccessed;
34
- /**
35
- * timestamp of last attribute modification
36
- *
37
- * @type int
38
- */
39
- protected $lastAttributeModified;
40
- /**
41
- * timestamp of last modification
42
- *
43
- * @type int
44
- */
45
- protected $lastModified;
46
- /**
47
- * permissions for content
48
- *
49
- * @type int
50
- */
51
- protected $permissions;
52
- /**
53
- * owner of the file
54
- *
55
- * @type int
56
- */
57
- protected $user;
58
- /**
59
- * owner group of the file
60
- *
61
- * @type int
62
- */
63
- protected $group;
64
- /**
65
- * path to to this content
66
- *
67
- * @type string
68
- */
69
- private $parentPath;
70
-
71
- /**
72
- * constructor
73
- *
74
- * @param string $name
75
- * @param int $permissions optional
76
- */
77
- public function __construct($name, $permissions = null)
78
- {
79
- $this->name = $name;
80
- $time = time();
81
- if (null === $permissions) {
82
- $permissions = $this->getDefaultPermissions() & ~vfsStream::umask();
83
- }
84
-
85
- $this->lastAccessed = $time;
86
- $this->lastAttributeModified = $time;
87
- $this->lastModified = $time;
88
- $this->permissions = $permissions;
89
- $this->user = vfsStream::getCurrentUser();
90
- $this->group = vfsStream::getCurrentGroup();
91
- }
92
-
93
- /**
94
- * returns default permissions for concrete implementation
95
- *
96
- * @return int
97
- * @since 0.8.0
98
- */
99
- protected abstract function getDefaultPermissions();
100
-
101
- /**
102
- * returns the file name of the content
103
- *
104
- * @return string
105
- */
106
- public function getName()
107
- {
108
- return $this->name;
109
- }
110
-
111
- /**
112
- * renames the content
113
- *
114
- * @param string $newName
115
- */
116
- public function rename($newName)
117
- {
118
- $this->name = $newName;
119
- }
120
-
121
- /**
122
- * checks whether the container can be applied to given name
123
- *
124
- * @param string $name
125
- * @return bool
126
- */
127
- public function appliesTo($name)
128
- {
129
- if ($name === $this->name) {
130
- return true;
131
- }
132
-
133
- $segment_name = $this->name.'/';
134
- return (strncmp($segment_name, $name, strlen($segment_name)) == 0);
135
- }
136
-
137
- /**
138
- * returns the type of the container
139
- *
140
- * @return int
141
- */
142
- public function getType()
143
- {
144
- return $this->type;
145
- }
146
-
147
- /**
148
- * sets the last modification time of the stream content
149
- *
150
- * @param int $filemtime
151
- * @return $this
152
- */
153
- public function lastModified($filemtime)
154
- {
155
- $this->lastModified = $filemtime;
156
- return $this;
157
- }
158
-
159
- /**
160
- * returns the last modification time of the stream content
161
- *
162
- * @return int
163
- */
164
- public function filemtime()
165
- {
166
- return $this->lastModified;
167
- }
168
-
169
- /**
170
- * sets last access time of the stream content
171
- *
172
- * @param int $fileatime
173
- * @return $this
174
- * @since 0.9
175
- */
176
- public function lastAccessed($fileatime)
177
- {
178
- $this->lastAccessed = $fileatime;
179
- return $this;
180
- }
181
-
182
- /**
183
- * returns the last access time of the stream content
184
- *
185
- * @return int
186
- * @since 0.9
187
- */
188
- public function fileatime()
189
- {
190
- return $this->lastAccessed;
191
- }
192
-
193
- /**
194
- * sets the last attribute modification time of the stream content
195
- *
196
- * @param int $filectime
197
- * @return $this
198
- * @since 0.9
199
- */
200
- public function lastAttributeModified($filectime)
201
- {
202
- $this->lastAttributeModified = $filectime;
203
- return $this;
204
- }
205
-
206
- /**
207
- * returns the last attribute modification time of the stream content
208
- *
209
- * @return int
210
- * @since 0.9
211
- */
212
- public function filectime()
213
- {
214
- return $this->lastAttributeModified;
215
- }
216
-
217
- /**
218
- * adds content to given container
219
- *
220
- * @param vfsStreamContainer $container
221
- * @return $this
222
- */
223
- public function at(vfsStreamContainer $container)
224
- {
225
- $container->addChild($this);
226
- return $this;
227
- }
228
-
229
- /**
230
- * change file mode to given permissions
231
- *
232
- * @param int $permissions
233
- * @return $this
234
- */
235
- public function chmod($permissions)
236
- {
237
- $this->permissions = $permissions;
238
- $this->lastAttributeModified = time();
239
- clearstatcache();
240
- return $this;
241
- }
242
-
243
- /**
244
- * returns permissions
245
- *
246
- * @return int
247
- */
248
- public function getPermissions()
249
- {
250
- return $this->permissions;
251
- }
252
-
253
- /**
254
- * checks whether content is readable
255
- *
256
- * @param int $user id of user to check for
257
- * @param int $group id of group to check for
258
- * @return bool
259
- */
260
- public function isReadable($user, $group)
261
- {
262
- if ($this->user === $user) {
263
- $check = 0400;
264
- } elseif ($this->group === $group) {
265
- $check = 0040;
266
- } else {
267
- $check = 0004;
268
- }
269
-
270
- return (bool) ($this->permissions & $check);
271
- }
272
-
273
- /**
274
- * checks whether content is writable
275
- *
276
- * @param int $user id of user to check for
277
- * @param int $group id of group to check for
278
- * @return bool
279
- */
280
- public function isWritable($user, $group)
281
- {
282
- if ($this->user === $user) {
283
- $check = 0200;
284
- } elseif ($this->group === $group) {
285
- $check = 0020;
286
- } else {
287
- $check = 0002;
288
- }
289
-
290
- return (bool) ($this->permissions & $check);
291
- }
292
-
293
- /**
294
- * checks whether content is executable
295
- *
296
- * @param int $user id of user to check for
297
- * @param int $group id of group to check for
298
- * @return bool
299
- */
300
- public function isExecutable($user, $group)
301
- {
302
- if ($this->user === $user) {
303
- $check = 0100;
304
- } elseif ($this->group === $group) {
305
- $check = 0010;
306
- } else {
307
- $check = 0001;
308
- }
309
-
310
- return (bool) ($this->permissions & $check);
311
- }
312
-
313
- /**
314
- * change owner of file to given user
315
- *
316
- * @param int $user
317
- * @return $this
318
- */
319
- public function chown($user)
320
- {
321
- $this->user = $user;
322
- $this->lastAttributeModified = time();
323
- return $this;
324
- }
325
-
326
- /**
327
- * checks whether file is owned by given user
328
- *
329
- * @param int $user
330
- * @return bool
331
- */
332
- public function isOwnedByUser($user)
333
- {
334
- return $this->user === $user;
335
- }
336
-
337
- /**
338
- * returns owner of file
339
- *
340
- * @return int
341
- */
342
- public function getUser()
343
- {
344
- return $this->user;
345
- }
346
-
347
- /**
348
- * change owner group of file to given group
349
- *
350
- * @param int $group
351
- * @return $this
352
- */
353
- public function chgrp($group)
354
- {
355
- $this->group = $group;
356
- $this->lastAttributeModified = time();
357
- return $this;
358
- }
359
-
360
- /**
361
- * checks whether file is owned by group
362
- *
363
- * @param int $group
364
- * @return bool
365
- */
366
- public function isOwnedByGroup($group)
367
- {
368
- return $this->group === $group;
369
- }
370
-
371
- /**
372
- * returns owner group of file
373
- *
374
- * @return int
375
- */
376
- public function getGroup()
377
- {
378
- return $this->group;
379
- }
380
-
381
- /**
382
- * sets parent path
383
- *
384
- * @param string $parentPath
385
- * @internal only to be set by parent
386
- * @since 1.2.0
387
- */
388
- public function setParentPath($parentPath)
389
- {
390
- $this->parentPath = $parentPath;
391
- }
392
-
393
- /**
394
- * returns path to this content
395
- *
396
- * @return string
397
- * @since 1.2.0
398
- */
399
- public function path()
400
- {
401
- if (null === $this->parentPath) {
402
- return $this->name;
403
- }
404
-
405
- return $this->parentPath . '/' . $this->name;
406
- }
407
-
408
- /**
409
- * returns complete vfsStream url for this content
410
- *
411
- * @return string
412
- * @since 1.2.0
413
- */
414
- public function url()
415
- {
416
- return vfsStream::url($this->path());
417
- }
418
- }
419
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamBlock.php DELETED
@@ -1,34 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
-
12
- /**
13
- * Block container.
14
- *
15
- * @api
16
- */
17
- class vfsStreamBlock extends vfsStreamFile
18
- {
19
- /**
20
- * constructor
21
- *
22
- * @param string $name
23
- * @param int $permissions optional
24
- */
25
- public function __construct($name, $permissions = null)
26
- {
27
- if (empty($name)) {
28
- throw new vfsStreamException('Name of Block device was empty');
29
- }
30
- parent::__construct($name, $permissions);
31
-
32
- $this->type = vfsStreamContent::TYPE_BLOCK;
33
- }
34
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamContainer.php DELETED
@@ -1,62 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Interface for stream contents that are able to store other stream contents.
13
- */
14
- interface vfsStreamContainer extends \IteratorAggregate
15
- {
16
- /**
17
- * adds child to the directory
18
- *
19
- * @param vfsStreamContent $child
20
- */
21
- public function addChild(vfsStreamContent $child);
22
-
23
- /**
24
- * removes child from the directory
25
- *
26
- * @param string $name
27
- * @return bool
28
- */
29
- public function removeChild($name);
30
-
31
- /**
32
- * checks whether the container contains a child with the given name
33
- *
34
- * @param string $name
35
- * @return bool
36
- */
37
- public function hasChild($name);
38
-
39
- /**
40
- * returns the child with the given name
41
- *
42
- * @param string $name
43
- * @return vfsStreamContent
44
- */
45
- public function getChild($name);
46
-
47
- /**
48
- * checks whether directory contains any children
49
- *
50
- * @return bool
51
- * @since 0.10.0
52
- */
53
- public function hasChildren();
54
-
55
- /**
56
- * returns a list of children for this directory
57
- *
58
- * @return vfsStreamContent[]
59
- */
60
- public function getChildren();
61
- }
62
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamContainerIterator.php DELETED
@@ -1,94 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Iterator for children of a directory container.
13
- */
14
- class vfsStreamContainerIterator implements \Iterator
15
- {
16
- /**
17
- * list of children from container to iterate over
18
- *
19
- * @type vfsStreamContent[]
20
- */
21
- protected $children;
22
-
23
- /**
24
- * constructor
25
- *
26
- * @param vfsStreamContent[] $children
27
- */
28
- public function __construct(array $children)
29
- {
30
- $this->children = $children;
31
- if (vfsStream::useDotfiles()) {
32
- array_unshift($this->children, new DotDirectory('.'), new DotDirectory('..'));
33
- }
34
-
35
- reset($this->children);
36
- }
37
-
38
- /**
39
- * resets children pointer
40
- */
41
- public function rewind()
42
- {
43
- reset($this->children);
44
- }
45
-
46
- /**
47
- * returns the current child
48
- *
49
- * @return vfsStreamContent
50
- */
51
- public function current()
52
- {
53
- $child = current($this->children);
54
- if (false === $child) {
55
- return null;
56
- }
57
-
58
- return $child;
59
- }
60
-
61
- /**
62
- * returns the name of the current child
63
- *
64
- * @return string
65
- */
66
- public function key()
67
- {
68
- $child = current($this->children);
69
- if (false === $child) {
70
- return null;
71
- }
72
-
73
- return $child->getName();
74
- }
75
-
76
- /**
77
- * iterates to next child
78
- */
79
- public function next()
80
- {
81
- next($this->children);
82
- }
83
-
84
- /**
85
- * checks if the current value is valid
86
- *
87
- * @return bool
88
- */
89
- public function valid()
90
- {
91
- return (false !== current($this->children));
92
- }
93
- }
94
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamContent.php DELETED
@@ -1,214 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Interface for stream contents.
13
- */
14
- interface vfsStreamContent
15
- {
16
- /**
17
- * stream content type: file
18
- *
19
- * @see getType()
20
- */
21
- const TYPE_FILE = 0100000;
22
- /**
23
- * stream content type: directory
24
- *
25
- * @see getType()
26
- */
27
- const TYPE_DIR = 0040000;
28
- /**
29
- * stream content type: symbolic link
30
- *
31
- * @see getType();
32
- */
33
- #const TYPE_LINK = 0120000;
34
-
35
- /**
36
- * stream content type: block
37
- *
38
- * @see getType()
39
- */
40
- const TYPE_BLOCK = 0060000;
41
-
42
- /**
43
- * returns the file name of the content
44
- *
45
- * @return string
46
- */
47
- public function getName();
48
-
49
- /**
50
- * renames the content
51
- *
52
- * @param string $newName
53
- */
54
- public function rename($newName);
55
-
56
- /**
57
- * checks whether the container can be applied to given name
58
- *
59
- * @param string $name
60
- * @return bool
61
- */
62
- public function appliesTo($name);
63
-
64
- /**
65
- * returns the type of the container
66
- *
67
- * @return int
68
- */
69
- public function getType();
70
-
71
- /**
72
- * returns size of content
73
- *
74
- * @return int
75
- */
76
- public function size();
77
-
78
- /**
79
- * sets the last modification time of the stream content
80
- *
81
- * @param int $filemtime
82
- * @return vfsStreamContent
83
- */
84
- public function lastModified($filemtime);
85
-
86
- /**
87
- * returns the last modification time of the stream content
88
- *
89
- * @return int
90
- */
91
- public function filemtime();
92
-
93
- /**
94
- * adds content to given container
95
- *
96
- * @param vfsStreamContainer $container
97
- * @return vfsStreamContent
98
- */
99
- public function at(vfsStreamContainer $container);
100
-
101
- /**
102
- * change file mode to given permissions
103
- *
104
- * @param int $permissions
105
- * @return vfsStreamContent
106
- */
107
- public function chmod($permissions);
108
-
109
- /**
110
- * returns permissions
111
- *
112
- * @return int
113
- */
114
- public function getPermissions();
115
-
116
- /**
117
- * checks whether content is readable
118
- *
119
- * @param int $user id of user to check for
120
- * @param int $group id of group to check for
121
- * @return bool
122
- */
123
- public function isReadable($user, $group);
124
-
125
- /**
126
- * checks whether content is writable
127
- *
128
- * @param int $user id of user to check for
129
- * @param int $group id of group to check for
130
- * @return bool
131
- */
132
- public function isWritable($user, $group);
133
-
134
- /**
135
- * checks whether content is executable
136
- *
137
- * @param int $user id of user to check for
138
- * @param int $group id of group to check for
139
- * @return bool
140
- */
141
- public function isExecutable($user, $group);
142
-
143
- /**
144
- * change owner of file to given user
145
- *
146
- * @param int $user
147
- * @return vfsStreamContent
148
- */
149
- public function chown($user);
150
-
151
- /**
152
- * checks whether file is owned by given user
153
- *
154
- * @param int $user
155
- * @return bool
156
- */
157
- public function isOwnedByUser($user);
158
-
159
- /**
160
- * returns owner of file
161
- *
162
- * @return int
163
- */
164
- public function getUser();
165
-
166
- /**
167
- * change owner group of file to given group
168
- *
169
- * @param int $group
170
- * @return vfsStreamContent
171
- */
172
- public function chgrp($group);
173
-
174
- /**
175
- * checks whether file is owned by group
176
- *
177
- * @param int $group
178
- * @return bool
179
- */
180
- public function isOwnedByGroup($group);
181
-
182
- /**
183
- * returns owner group of file
184
- *
185
- * @return int
186
- */
187
- public function getGroup();
188
-
189
- /**
190
- * sets parent path
191
- *
192
- * @param string $parentPath
193
- * @internal only to be set by parent
194
- * @since 1.2.0
195
- */
196
- public function setParentPath($parentPath);
197
-
198
- /**
199
- * returns path to this content
200
- *
201
- * @return string
202
- * @since 1.2.0
203
- */
204
- public function path();
205
-
206
- /**
207
- * returns complete vfsStream url for this content
208
- *
209
- * @return string
210
- * @since 1.2.0
211
- */
212
- public function url();
213
- }
214
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamDirectory.php DELETED
@@ -1,267 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Directory container.
13
- *
14
- * @api
15
- */
16
- class vfsStreamDirectory extends vfsStreamAbstractContent implements vfsStreamContainer
17
- {
18
- /**
19
- * list of directory children
20
- *
21
- * @type vfsStreamContent[]
22
- */
23
- protected $children = array();
24
-
25
- /**
26
- * constructor
27
- *
28
- * @param string $name
29
- * @param int $permissions optional
30
- * @throws vfsStreamException
31
- */
32
- public function __construct($name, $permissions = null)
33
- {
34
- if (strstr($name, '/') !== false) {
35
- throw new vfsStreamException('Directory name can not contain /.');
36
- }
37
-
38
- $this->type = vfsStreamContent::TYPE_DIR;
39
- parent::__construct($name, $permissions);
40
- }
41
-
42
- /**
43
- * returns default permissions for concrete implementation
44
- *
45
- * @return int
46
- * @since 0.8.0
47
- */
48
- protected function getDefaultPermissions()
49
- {
50
- return 0777;
51
- }
52
-
53
- /**
54
- * returns size of directory
55
- *
56
- * The size of a directory is always 0 bytes. To calculate the summarized
57
- * size of all children in the directory use sizeSummarized().
58
- *
59
- * @return int
60
- */
61
- public function size()
62
- {
63
- return 0;
64
- }
65
-
66
- /**
67
- * returns summarized size of directory and its children
68
- *
69
- * @return int
70
- */
71
- public function sizeSummarized()
72
- {
73
- $size = 0;
74
- foreach ($this->children as $child) {
75
- if ($child->getType() === vfsStreamContent::TYPE_DIR) {
76
- $size += $child->sizeSummarized();
77
- } else {
78
- $size += $child->size();
79
- }
80
- }
81
-
82
- return $size;
83
- }
84
-
85
- /**
86
- * renames the content
87
- *
88
- * @param string $newName
89
- * @throws vfsStreamException
90
- */
91
- public function rename($newName)
92
- {
93
- if (strstr($newName, '/') !== false) {
94
- throw new vfsStreamException('Directory name can not contain /.');
95
- }
96
-
97
- parent::rename($newName);
98
- }
99
-
100
-
101
- /**
102
- * sets parent path
103
- *
104
- * @param string $parentPath
105
- * @internal only to be set by parent
106
- * @since 1.2.0
107
- */
108
- public function setParentPath($parentPath)
109
- {
110
- parent::setParentPath($parentPath);
111
- foreach ($this->children as $child) {
112
- $child->setParentPath($this->path());
113
- }
114
- }
115
-
116
- /**
117
- * adds child to the directory
118
- *
119
- * @param vfsStreamContent $child
120
- */
121
- public function addChild(vfsStreamContent $child)
122
- {
123
- $child->setParentPath($this->path());
124
- $this->children[$child->getName()] = $child;
125
- $this->updateModifications();
126
- }
127
-
128
- /**
129
- * removes child from the directory
130
- *
131
- * @param string $name
132
- * @return bool
133
- */
134
- public function removeChild($name)
135
- {
136
- foreach ($this->children as $key => $child) {
137
- if ($child->appliesTo($name)) {
138
- $child->setParentPath(null);
139
- unset($this->children[$key]);
140
- $this->updateModifications();
141
- return true;
142
- }
143
- }
144
-
145
- return false;
146
- }
147
-
148
- /**
149
- * updates internal timestamps
150
- */
151
- protected function updateModifications()
152
- {
153
- $time = time();
154
- $this->lastAttributeModified = $time;
155
- $this->lastModified = $time;
156
- }
157
-
158
- /**
159
- * checks whether the container contains a child with the given name
160
- *
161
- * @param string $name
162
- * @return bool
163
- */
164
- public function hasChild($name)
165
- {
166
- return ($this->getChild($name) !== null);
167
- }
168
-
169
- /**
170
- * returns the child with the given name
171
- *
172
- * @param string $name
173
- * @return vfsStreamContent
174
- */
175
- public function getChild($name)
176
- {
177
- $childName = $this->getRealChildName($name);
178
- foreach ($this->children as $child) {
179
- if ($child->getName() === $childName) {
180
- return $child;
181
- }
182
-
183
- if ($child->appliesTo($childName) === true && $child->hasChild($childName) === true) {
184
- return $child->getChild($childName);
185
- }
186
- }
187
-
188
- return null;
189
- }
190
-
191
- /**
192
- * helper method to detect the real child name
193
- *
194
- * @param string $name
195
- * @return string
196
- */
197
- protected function getRealChildName($name)
198
- {
199
- if ($this->appliesTo($name) === true) {
200
- return self::getChildName($name, $this->name);
201
- }
202
-
203
- return $name;
204
- }
205
-
206
- /**
207
- * helper method to calculate the child name
208
- *
209
- * @param string $name
210
- * @param string $ownName
211
- * @return string
212
- */
213
- protected static function getChildName($name, $ownName)
214
- {
215
- if ($name === $ownName) {
216
- return $name;
217
- }
218
-
219
- return substr($name, strlen($ownName) + 1);
220
- }
221
-
222
- /**
223
- * checks whether directory contains any children
224
- *
225
- * @return bool
226
- * @since 0.10.0
227
- */
228
- public function hasChildren()
229
- {
230
- return (count($this->children) > 0);
231
- }
232
-
233
- /**
234
- * returns a list of children for this directory
235
- *
236
- * @return vfsStreamContent[]
237
- */
238
- public function getChildren()
239
- {
240
- return array_values($this->children);
241
- }
242
-
243
- /**
244
- * returns iterator for the children
245
- *
246
- * @return vfsStreamContainerIterator
247
- */
248
- public function getIterator()
249
- {
250
- return new vfsStreamContainerIterator($this->children);
251
- }
252
-
253
- /**
254
- * checks whether dir is a dot dir
255
- *
256
- * @return bool
257
- */
258
- public function isDot()
259
- {
260
- if ('.' === $this->name || '..' === $this->name) {
261
- return true;
262
- }
263
-
264
- return false;
265
- }
266
- }
267
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamException.php DELETED
@@ -1,20 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Exception for vfsStream errors.
13
- *
14
- * @api
15
- */
16
- class vfsStreamException extends \Exception
17
- {
18
- // intentionally empty
19
- }
20
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamFile.php DELETED
@@ -1,394 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- use org\bovigo\vfs\content\FileContent;
12
- use org\bovigo\vfs\content\StringBasedFileContent;
13
- /**
14
- * File container.
15
- *
16
- * @api
17
- */
18
- class vfsStreamFile extends vfsStreamAbstractContent
19
- {
20
- /**
21
- * content of the file
22
- *
23
- * @type FileContent
24
- */
25
- private $content;
26
- /**
27
- * Resource id which exclusively locked this file
28
- *
29
- * @type string
30
- */
31
- protected $exclusiveLock;
32
- /**
33
- * Resources ids which currently holds shared lock to this file
34
- *
35
- * @type bool[string]
36
- */
37
- protected $sharedLock = array();
38
-
39
- /**
40
- * constructor
41
- *
42
- * @param string $name
43
- * @param int $permissions optional
44
- */
45
- public function __construct($name, $permissions = null)
46
- {
47
- $this->content = new StringBasedFileContent(null);
48
- $this->type = vfsStreamContent::TYPE_FILE;
49
- parent::__construct($name, $permissions);
50
- }
51
-
52
- /**
53
- * returns default permissions for concrete implementation
54
- *
55
- * @return int
56
- * @since 0.8.0
57
- */
58
- protected function getDefaultPermissions()
59
- {
60
- return 0666;
61
- }
62
-
63
- /**
64
- * checks whether the container can be applied to given name
65
- *
66
- * @param string $name
67
- * @return bool
68
- */
69
- public function appliesTo($name)
70
- {
71
- return ($name === $this->name);
72
- }
73
-
74
- /**
75
- * alias for withContent()
76
- *
77
- * @param string $content
78
- * @return vfsStreamFile
79
- * @see withContent()
80
- */
81
- public function setContent($content)
82
- {
83
- return $this->withContent($content);
84
- }
85
-
86
- /**
87
- * sets the contents of the file
88
- *
89
- * Setting content with this method does not change the time when the file
90
- * was last modified.
91
- *
92
- * @param string]FileContent $content
93
- * @return vfsStreamFile
94
- * @throws \InvalidArgumentException
95
- */
96
- public function withContent($content)
97
- {
98
- if (is_string($content)) {
99
- $this->content = new StringBasedFileContent($content);
100
- } elseif ($content instanceof FileContent) {
101
- $this->content = $content;
102
- } else {
103
- throw new \InvalidArgumentException('Given content must either be a string or an instance of org\bovigo\vfs\content\FileContent');
104
- }
105
-
106
- return $this;
107
- }
108
-
109
- /**
110
- * returns the contents of the file
111
- *
112
- * Getting content does not change the time when the file
113
- * was last accessed.
114
- *
115
- * @return string
116
- */
117
- public function getContent()
118
- {
119
- return $this->content->content();
120
- }
121
-
122
- /**
123
- * simply open the file
124
- *
125
- * @since 0.9
126
- */
127
- public function open()
128
- {
129
- $this->content->seek(0, SEEK_SET);
130
- $this->lastAccessed = time();
131
- }
132
-
133
- /**
134
- * open file and set pointer to end of file
135
- *
136
- * @since 0.9
137
- */
138
- public function openForAppend()
139
- {
140
- $this->content->seek(0, SEEK_END);
141
- $this->lastAccessed = time();
142
- }
143
-
144
- /**
145
- * open file and truncate content
146
- *
147
- * @since 0.9
148
- */
149
- public function openWithTruncate()
150
- {
151
- $this->open();
152
- $this->content->truncate(0);
153
- $time = time();
154
- $this->lastAccessed = $time;
155
- $this->lastModified = $time;
156
- }
157
-
158
- /**
159
- * reads the given amount of bytes from content
160
- *
161
- * Using this method changes the time when the file was last accessed.
162
- *
163
- * @param int $count
164
- * @return string
165
- */
166
- public function read($count)
167
- {
168
- $this->lastAccessed = time();
169
- return $this->content->read($count);
170
- }
171
-
172
- /**
173
- * returns the content until its end from current offset
174
- *
175
- * Using this method changes the time when the file was last accessed.
176
- *
177
- * @return string
178
- * @deprecated since 1.3.0
179
- */
180
- public function readUntilEnd()
181
- {
182
- $this->lastAccessed = time();
183
- return $this->content->readUntilEnd();
184
- }
185
-
186
- /**
187
- * writes an amount of data
188
- *
189
- * Using this method changes the time when the file was last modified.
190
- *
191
- * @param string $data
192
- * @return amount of written bytes
193
- */
194
- public function write($data)
195
- {
196
- $this->lastModified = time();
197
- return $this->content->write($data);
198
- }
199
-
200
- /**
201
- * Truncates a file to a given length
202
- *
203
- * @param int $size length to truncate file to
204
- * @return bool
205
- * @since 1.1.0
206
- */
207
- public function truncate($size)
208
- {
209
- $this->content->truncate($size);
210
- $this->lastModified = time();
211
- return true;
212
- }
213
-
214
- /**
215
- * checks whether pointer is at end of file
216
- *
217
- * @return bool
218
- */
219
- public function eof()
220
- {
221
- return $this->content->eof();
222
- }
223
-
224
- /**
225
- * returns the current position within the file
226
- *
227
- * @return int
228
- * @deprecated since 1.3.0
229
- */
230
- public function getBytesRead()
231
- {
232
- return $this->content->bytesRead();
233
- }
234
-
235
- /**
236
- * seeks to the given offset
237
- *
238
- * @param int $offset
239
- * @param int $whence
240
- * @return bool
241
- */
242
- public function seek($offset, $whence)
243
- {
244
- return $this->content->seek($offset, $whence);
245
- }
246
-
247
- /**
248
- * returns size of content
249
- *
250
- * @return int
251
- */
252
- public function size()
253
- {
254
- return $this->content->size();
255
- }
256
-
257
-
258
- /**
259
- * locks file for
260
- *
261
- * @param resource|vfsStreamWrapper $resource
262
- * @param int $operation
263
- * @return bool
264
- * @since 0.10.0
265
- * @see https://github.com/mikey179/vfsStream/issues/6
266
- * @see https://github.com/mikey179/vfsStream/issues/40
267
- */
268
- public function lock($resource, $operation)
269
- {
270
- if ((LOCK_NB & $operation) == LOCK_NB) {
271
- $operation = $operation - LOCK_NB;
272
- }
273
-
274
- // call to lock file on the same file handler firstly releases the lock
275
- $this->unlock($resource);
276
-
277
- if (LOCK_EX === $operation) {
278
- if ($this->isLocked()) {
279
- return false;
280
- }
281
-
282
- $this->setExclusiveLock($resource);
283
- } elseif(LOCK_SH === $operation) {
284
- if ($this->hasExclusiveLock()) {
285
- return false;
286
- }
287
-
288
- $this->addSharedLock($resource);
289
- }
290
-
291
- return true;
292
- }
293
-
294
- /**
295
- * Removes lock from file acquired by given resource
296
- *
297
- * @param resource|vfsStreamWrapper $resource
298
- * @see https://github.com/mikey179/vfsStream/issues/40
299
- */
300
- public function unlock($resource) {
301
- if ($this->hasExclusiveLock($resource)) {
302
- $this->exclusiveLock = null;
303
- }
304
- if ($this->hasSharedLock($resource)) {
305
- unset($this->sharedLock[$this->getResourceId($resource)]);
306
- }
307
- }
308
-
309
- /**
310
- * Set exlusive lock on file by given resource
311
- *
312
- * @param resource|vfsStreamWrapper $resource
313
- * @see https://github.com/mikey179/vfsStream/issues/40
314
- */
315
- protected function setExclusiveLock($resource) {
316
- $this->exclusiveLock = $this->getResourceId($resource);
317
- }
318
-
319
- /**
320
- * Add shared lock on file by given resource
321
- *
322
- * @param resource|vfsStreamWrapper $resource
323
- * @see https://github.com/mikey179/vfsStream/issues/40
324
- */
325
- protected function addSharedLock($resource) {
326
- $this->sharedLock[$this->getResourceId($resource)] = true;
327
- }
328
-
329
- /**
330
- * checks whether file is locked
331
- *
332
- * @param resource|vfsStreamWrapper $resource
333
- * @return bool
334
- * @since 0.10.0
335
- * @see https://github.com/mikey179/vfsStream/issues/6
336
- * @see https://github.com/mikey179/vfsStream/issues/40
337
- */
338
- public function isLocked($resource = null)
339
- {
340
- return $this->hasSharedLock($resource) || $this->hasExclusiveLock($resource);
341
- }
342
-
343
- /**
344
- * checks whether file is locked in shared mode
345
- *
346
- * @param resource|vfsStreamWrapper $resource
347
- * @return bool
348
- * @since 0.10.0
349
- * @see https://github.com/mikey179/vfsStream/issues/6
350
- * @see https://github.com/mikey179/vfsStream/issues/40
351
- */
352
- public function hasSharedLock($resource = null)
353
- {
354
- if (null !== $resource) {
355
- return isset($this->sharedLock[$this->getResourceId($resource)]);
356
- }
357
-
358
- return !empty($this->sharedLock);
359
- }
360
-
361
- /**
362
- * Returns unique resource id
363
- *
364
- * @param resource|vfsStreamWrapper $resource
365
- * @return string
366
- * @see https://github.com/mikey179/vfsStream/issues/40
367
- */
368
- public function getResourceId($resource) {
369
- if (is_resource($resource)) {
370
- $data = stream_get_meta_data($resource);
371
- $resource = $data['wrapper_data'];
372
- }
373
-
374
- return spl_object_hash($resource);
375
- }
376
-
377
- /**
378
- * checks whether file is locked in exclusive mode
379
- *
380
- * @param resource|vfsStreamWrapper $resource
381
- * @return bool
382
- * @since 0.10.0
383
- * @see https://github.com/mikey179/vfsStream/issues/6
384
- * @see https://github.com/mikey179/vfsStream/issues/40
385
- */
386
- public function hasExclusiveLock($resource = null)
387
- {
388
- if (null !== $resource) {
389
- return $this->exclusiveLock === $this->getResourceId($resource);
390
- }
391
-
392
- return null !== $this->exclusiveLock;
393
- }
394
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamWrapper.php DELETED
@@ -1,986 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Stream wrapper to mock file system requests.
13
- */
14
- class vfsStreamWrapper
15
- {
16
- /**
17
- * open file for reading
18
- */
19
- const READ = 'r';
20
- /**
21
- * truncate file
22
- */
23
- const TRUNCATE = 'w';
24
- /**
25
- * set file pointer to end, append new data
26
- */
27
- const APPEND = 'a';
28
- /**
29
- * set file pointer to start, overwrite existing data
30
- */
31
- const WRITE = 'x';
32
- /**
33
- * set file pointer to start, overwrite existing data; or create file if
34
- * does not exist
35
- */
36
- const WRITE_NEW = 'c';
37
- /**
38
- * file mode: read only
39
- */
40
- const READONLY = 0;
41
- /**
42
- * file mode: write only
43
- */
44
- const WRITEONLY = 1;
45
- /**
46
- * file mode: read and write
47
- */
48
- const ALL = 2;
49
- /**
50
- * switch whether class has already been registered as stream wrapper or not
51
- *
52
- * @type bool
53
- */
54
- protected static $registered = false;
55
- /**
56
- * root content
57
- *
58
- * @type vfsStreamContent
59
- */
60
- protected static $root;
61
- /**
62
- * disk space quota
63
- *
64
- * @type Quota
65
- */
66
- private static $quota;
67
- /**
68
- * file mode: read only, write only, all
69
- *
70
- * @type int
71
- */
72
- protected $mode;
73
- /**
74
- * shortcut to file container
75
- *
76
- * @type vfsStreamFile
77
- */
78
- protected $content;
79
- /**
80
- * shortcut to directory container
81
- *
82
- * @type vfsStreamDirectory
83
- */
84
- protected $dir;
85
- /**
86
- * shortcut to directory container iterator
87
- *
88
- * @type vfsStreamDirectory
89
- */
90
- protected $dirIterator;
91
-
92
- /**
93
- * method to register the stream wrapper
94
- *
95
- * Please be aware that a call to this method will reset the root element
96
- * to null.
97
- * If the stream is already registered the method returns silently. If there
98
- * is already another stream wrapper registered for the scheme used by
99
- * vfsStream a vfsStreamException will be thrown.
100
- *
101
- * @throws vfsStreamException
102
- */
103
- public static function register()
104
- {
105
- self::$root = null;
106
- self::$quota = Quota::unlimited();
107
- if (true === self::$registered) {
108
- return;
109
- }
110
-
111
- if (@stream_wrapper_register(vfsStream::SCHEME, __CLASS__) === false) {
112
- throw new vfsStreamException('A handler has already been registered for the ' . vfsStream::SCHEME . ' protocol.');
113
- }
114
-
115
- self::$registered = true;
116
- }
117
-
118
- /**
119
- * sets the root content
120
- *
121
- * @param vfsStreamContainer $root
122
- * @return vfsStreamContainer
123
- */
124
- public static function setRoot(vfsStreamContainer $root)
125
- {
126
- self::$root = $root;
127
- clearstatcache();
128
- return self::$root;
129
- }
130
-
131
- /**
132
- * returns the root content
133
- *
134
- * @return vfsStreamContainer
135
- */
136
- public static function getRoot()
137
- {
138
- return self::$root;
139
- }
140
-
141
- /**
142
- * sets quota for disk space
143
- *
144
- * @param Quota $quota
145
- * @since 1.1.0
146
- */
147
- public static function setQuota(Quota $quota)
148
- {
149
- self::$quota = $quota;
150
- }
151
-
152
- /**
153
- * returns content for given path
154
- *
155
- * @param string $path
156
- * @return vfsStreamContent
157
- */
158
- protected function getContent($path)
159
- {
160
- if (null === self::$root) {
161
- return null;
162
- }
163
-
164
- if (self::$root->getName() === $path) {
165
- return self::$root;
166
- }
167
-
168
- if ($this->isInRoot($path) && self::$root->hasChild($path) === true) {
169
- return self::$root->getChild($path);
170
- }
171
-
172
- return null;
173
- }
174
-
175
- /**
176
- * helper method to detect whether given path is in root path
177
- *
178
- * @param string $path
179
- * @return bool
180
- */
181
- private function isInRoot($path)
182
- {
183
- return substr($path, 0, strlen(self::$root->getName())) === self::$root->getName();
184
- }
185
-
186
- /**
187
- * returns content for given path but only when it is of given type
188
- *
189
- * @param string $path
190
- * @param int $type
191
- * @return vfsStreamContent
192
- */
193
- protected function getContentOfType($path, $type)
194
- {
195
- $content = $this->getContent($path);
196
- if (null !== $content && $content->getType() === $type) {
197
- return $content;
198
- }
199
-
200
- return null;
201
- }
202
-
203
- /**
204
- * splits path into its dirname and the basename
205
- *
206
- * @param string $path
207
- * @return string[]
208
- */
209
- protected function splitPath($path)
210
- {
211
- $lastSlashPos = strrpos($path, '/');
212
- if (false === $lastSlashPos) {
213
- return array('dirname' => '', 'basename' => $path);
214
- }
215
-
216
- return array('dirname' => substr($path, 0, $lastSlashPos),
217
- 'basename' => substr($path, $lastSlashPos + 1)
218
- );
219
- }
220
-
221
- /**
222
- * helper method to resolve a path from /foo/bar/. to /foo/bar
223
- *
224
- * @param string $path
225
- * @return string
226
- */
227
- protected function resolvePath($path)
228
- {
229
- $newPath = array();
230
- foreach (explode('/', $path) as $pathPart) {
231
- if ('.' !== $pathPart) {
232
- if ('..' !== $pathPart) {
233
- $newPath[] = $pathPart;
234
- } else {
235
- array_pop($newPath);
236
- }
237
- }
238
- }
239
-
240
- return implode('/', $newPath);
241
- }
242
-
243
- /**
244
- * open the stream
245
- *
246
- * @param string $path the path to open
247
- * @param string $mode mode for opening
248
- * @param string $options options for opening
249
- * @param string $opened_path full path that was actually opened
250
- * @return bool
251
- */
252
- public function stream_open($path, $mode, $options, $opened_path)
253
- {
254
- $extended = ((strstr($mode, '+') !== false) ? (true) : (false));
255
- $mode = str_replace(array('t', 'b', '+'), '', $mode);
256
- if (in_array($mode, array('r', 'w', 'a', 'x', 'c')) === false) {
257
- if (($options & STREAM_REPORT_ERRORS) === STREAM_REPORT_ERRORS) {
258
- trigger_error('Illegal mode ' . $mode . ', use r, w, a, x or c, flavoured with t, b and/or +', E_USER_WARNING);
259
- }
260
-
261
- return false;
262
- }
263
-
264
- $this->mode = $this->calculateMode($mode, $extended);
265
- $path = $this->resolvePath(vfsStream::path($path));
266
- $this->content = $this->getContentOfType($path, vfsStreamContent::TYPE_FILE);
267
- if (null !== $this->content) {
268
- if (self::WRITE === $mode) {
269
- if (($options & STREAM_REPORT_ERRORS) === STREAM_REPORT_ERRORS) {
270
- trigger_error('File ' . $path . ' already exists, can not open with mode x', E_USER_WARNING);
271
- }
272
-
273
- return false;
274
- }
275
-
276
- if (
277
- (self::TRUNCATE === $mode || self::APPEND === $mode) &&
278
- $this->content->isWritable(vfsStream::getCurrentUser(), vfsStream::getCurrentGroup()) === false
279
- ) {
280
- return false;
281
- }
282
-
283
- if (self::TRUNCATE === $mode) {
284
- $this->content->openWithTruncate();
285
- } elseif (self::APPEND === $mode) {
286
- $this->content->openForAppend();
287
- } else {
288
- if (!$this->content->isReadable(vfsStream::getCurrentUser(), vfsStream::getCurrentGroup())) {
289
- if (($options & STREAM_REPORT_ERRORS) === STREAM_REPORT_ERRORS) {
290
- trigger_error('Permission denied', E_USER_WARNING);
291
- }
292
- return false;
293
- }
294
- $this->content->open();
295
- }
296
-
297
- return true;
298
- }
299
-
300
- $content = $this->createFile($path, $mode, $options);
301
- if (false === $content) {
302
- return false;
303
- }
304
-
305
- $this->content = $content;
306
- return true;
307
- }
308
-
309
- /**
310
- * creates a file at given path
311
- *
312
- * @param string $path the path to open
313
- * @param string $mode mode for opening
314
- * @param string $options options for opening
315
- * @return bool
316
- */
317
- private function createFile($path, $mode = null, $options = null)
318
- {
319
- $names = $this->splitPath($path);
320
- if (empty($names['dirname']) === true) {
321
- if (($options & STREAM_REPORT_ERRORS) === STREAM_REPORT_ERRORS) {
322
- trigger_error('File ' . $names['basename'] . ' does not exist', E_USER_WARNING);
323
- }
324
-
325
- return false;
326
- }
327
-
328
- $dir = $this->getContentOfType($names['dirname'], vfsStreamContent::TYPE_DIR);
329
- if (null === $dir) {
330
- if (($options & STREAM_REPORT_ERRORS) === STREAM_REPORT_ERRORS) {
331
- trigger_error('Directory ' . $names['dirname'] . ' does not exist', E_USER_WARNING);
332
- }
333
-
334
- return false;
335
- } elseif ($dir->hasChild($names['basename']) === true) {
336
- if (($options & STREAM_REPORT_ERRORS) === STREAM_REPORT_ERRORS) {
337
- trigger_error('Directory ' . $names['dirname'] . ' already contains a director named ' . $names['basename'], E_USER_WARNING);
338
- }
339
-
340
- return false;
341
- }
342
-
343
- if (self::READ === $mode) {
344
- if (($options & STREAM_REPORT_ERRORS) === STREAM_REPORT_ERRORS) {
345
- trigger_error('Can not open non-existing file ' . $path . ' for reading', E_USER_WARNING);
346
- }
347
-
348
- return false;
349
- }
350
-
351
- if ($dir->isWritable(vfsStream::getCurrentUser(), vfsStream::getCurrentGroup()) === false) {
352
- if (($options & STREAM_REPORT_ERRORS) === STREAM_REPORT_ERRORS) {
353
- trigger_error('Can not create new file in non-writable path ' . $names['dirname'], E_USER_WARNING);
354
- }
355
-
356
- return false;
357
- }
358
-
359
- return vfsStream::newFile($names['basename'])->at($dir);
360
- }
361
-
362
- /**
363
- * calculates the file mode
364
- *
365
- * @param string $mode opening mode: r, w, a or x
366
- * @param bool $extended true if + was set with opening mode
367
- * @return int
368
- */
369
- protected function calculateMode($mode, $extended)
370
- {
371
- if (true === $extended) {
372
- return self::ALL;
373
- }
374
-
375
- if (self::READ === $mode) {
376
- return self::READONLY;
377
- }
378
-
379
- return self::WRITEONLY;
380
- }
381
-
382
- /**
383
- * closes the stream
384
- *
385
- * @see https://github.com/mikey179/vfsStream/issues/40
386
- */
387
- public function stream_close()
388
- {
389
- $this->content->lock($this, LOCK_UN);
390
- }
391
-
392
- /**
393
- * read the stream up to $count bytes
394
- *
395
- * @param int $count amount of bytes to read
396
- * @return string
397
- */
398
- public function stream_read($count)
399
- {
400
- if (self::WRITEONLY === $this->mode) {
401
- return '';
402
- }
403
-
404
- if ($this->content->isReadable(vfsStream::getCurrentUser(), vfsStream::getCurrentGroup()) === false) {
405
- return '';
406
- }
407
-
408
- return $this->content->read($count);
409
- }
410
-
411
- /**
412
- * writes data into the stream
413
- *
414
- * @param string $data
415
- * @return int amount of bytes written
416
- */
417
- public function stream_write($data)
418
- {
419
- if (self::READONLY === $this->mode) {
420
- return 0;
421
- }
422
-
423
- if ($this->content->isWritable(vfsStream::getCurrentUser(), vfsStream::getCurrentGroup()) === false) {
424
- return 0;
425
- }
426
-
427
- if (self::$quota->isLimited()) {
428
- $data = substr($data, 0, self::$quota->spaceLeft(self::$root->sizeSummarized()));
429
- }
430
-
431
- return $this->content->write($data);
432
- }
433
-
434
- /**
435
- * truncates a file to a given length
436
- *
437
- * @param int $size length to truncate file to
438
- * @return bool
439
- * @since 1.1.0
440
- */
441
- public function stream_truncate($size)
442
- {
443
- if (self::READONLY === $this->mode) {
444
- return false;
445
- }
446
-
447
- if ($this->content->isWritable(vfsStream::getCurrentUser(), vfsStream::getCurrentGroup()) === false) {
448
- return false;
449
- }
450
-
451
- if ($this->content->getType() !== vfsStreamContent::TYPE_FILE) {
452
- return false;
453
- }
454
-
455
- if (self::$quota->isLimited() && $this->content->size() < $size) {
456
- $maxSize = self::$quota->spaceLeft(self::$root->sizeSummarized());
457
- if (0 === $maxSize) {
458
- return false;
459
- }
460
-
461
- if ($size > $maxSize) {
462
- $size = $maxSize;
463
- }
464
- }
465
-
466
- return $this->content->truncate($size);
467
- }
468
-
469
- /**
470
- * sets metadata like owner, user or permissions
471
- *
472
- * @param string $path
473
- * @param int $option
474
- * @param mixed $var
475
- * @return bool
476
- * @since 1.1.0
477
- */
478
- public function stream_metadata($path, $option, $var)
479
- {
480
- $path = $this->resolvePath(vfsStream::path($path));
481
- $content = $this->getContent($path);
482
- switch ($option) {
483
- case STREAM_META_TOUCH:
484
- if (null === $content) {
485
- $content = $this->createFile($path, null, STREAM_REPORT_ERRORS);
486
- // file creation may not be allowed at provided path
487
- if (false === $content) {
488
- return false;
489
- }
490
- }
491
-
492
- $currentTime = time();
493
- $content->lastModified(((isset($var[0])) ? ($var[0]) : ($currentTime)))
494
- ->lastAccessed(((isset($var[1])) ? ($var[1]) : ($currentTime)));
495
- return true;
496
-
497
- case STREAM_META_OWNER_NAME:
498
- return false;
499
-
500
- case STREAM_META_OWNER:
501
- if (null === $content) {
502
- return false;
503
- }
504
-
505
- return $this->doPermChange($path,
506
- $content,
507
- function() use ($content, $var)
508
- {
509
- $content->chown($var);
510
- }
511
- );
512
-
513
- case STREAM_META_GROUP_NAME:
514
- return false;
515
-
516
- case STREAM_META_GROUP:
517
- if (null === $content) {
518
- return false;
519
- }
520
-
521
- return $this->doPermChange($path,
522
- $content,
523
- function() use ($content, $var)
524
- {
525
- $content->chgrp($var);
526
- }
527
- );
528
-
529
- case STREAM_META_ACCESS:
530
- if (null === $content) {
531
- return false;
532
- }
533
-
534
- return $this->doPermChange($path,
535
- $content,
536
- function() use ($content, $var)
537
- {
538
- $content->chmod($var);
539
- }
540
- );
541
-
542
- default:
543
- return false;
544
- }
545
- }
546
-
547
- /**
548
- * executes given permission change when necessary rights allow such a change
549
- *
550
- * @param string $path
551
- * @param vfsStreamAbstractContent $content
552
- * @param \Closure $change
553
- * @return bool
554
- */
555
- private function doPermChange($path, vfsStreamAbstractContent $content, \Closure $change)
556
- {
557
- if (!$content->isOwnedByUser(vfsStream::getCurrentUser())) {
558
- return false;
559
- }
560
-
561
- if (self::$root->getName() !== $path) {
562
- $names = $this->splitPath($path);
563
- $parent = $this->getContent($names['dirname']);
564
- if (!$parent->isWritable(vfsStream::getCurrentUser(), vfsStream::getCurrentGroup())) {
565
- return false;
566
- }
567
- }
568
-
569
- $change();
570
- return true;
571
- }
572
-
573
- /**
574
- * checks whether stream is at end of file
575
- *
576
- * @return bool
577
- */
578
- public function stream_eof()
579
- {
580
- return $this->content->eof();
581
- }
582
-
583
- /**
584
- * returns the current position of the stream
585
- *
586
- * @return int
587
- */
588
- public function stream_tell()
589
- {
590
- return $this->content->getBytesRead();
591
- }
592
-
593
- /**
594
- * seeks to the given offset
595
- *
596
- * @param int $offset
597
- * @param int $whence
598
- * @return bool
599
- */
600
- public function stream_seek($offset, $whence)
601
- {
602
- return $this->content->seek($offset, $whence);
603
- }
604
-
605
- /**
606
- * flushes unstored data into storage
607
- *
608
- * @return bool
609
- */
610
- public function stream_flush()
611
- {
612
- return true;
613
- }
614
-
615
- /**
616
- * returns status of stream
617
- *
618
- * @return array
619
- */
620
- public function stream_stat()
621
- {
622
- $fileStat = array('dev' => 0,
623
- 'ino' => 0,
624
- 'mode' => $this->content->getType() | $this->content->getPermissions(),
625
- 'nlink' => 0,
626
- 'uid' => $this->content->getUser(),
627
- 'gid' => $this->content->getGroup(),
628
- 'rdev' => 0,
629
- 'size' => $this->content->size(),
630
- 'atime' => $this->content->fileatime(),
631
- 'mtime' => $this->content->filemtime(),
632
- 'ctime' => $this->content->filectime(),
633
- 'blksize' => -1,
634
- 'blocks' => -1
635
- );
636
- return array_merge(array_values($fileStat), $fileStat);
637
- }
638
-
639
- /**
640
- * retrieve the underlaying resource
641
- *
642
- * Please note that this method always returns false as there is no
643
- * underlaying resource to return.
644
- *
645
- * @param int $cast_as
646
- * @since 0.9.0
647
- * @see https://github.com/mikey179/vfsStream/issues/3
648
- * @return bool
649
- */
650
- public function stream_cast($cast_as)
651
- {
652
- return false;
653
- }
654
-
655
- /**
656
- * set lock status for stream
657
- *
658
- * @param int $operation
659
- * @return bool
660
- * @since 0.10.0
661
- * @see https://github.com/mikey179/vfsStream/issues/6
662
- * @see https://github.com/mikey179/vfsStream/issues/31
663
- * @see https://github.com/mikey179/vfsStream/issues/40
664
- */
665
- public function stream_lock($operation)
666
- {
667
- if ((LOCK_NB & $operation) == LOCK_NB) {
668
- $operation = $operation - LOCK_NB;
669
- }
670
-
671
- return $this->content->lock($this, $operation);
672
- }
673
-
674
- /**
675
- * sets options on the stream
676
- *
677
- * @param int $option key of option to set
678
- * @param int $arg1
679
- * @param int $arg2
680
- * @return bool
681
- * @since 0.10.0
682
- * @see https://github.com/mikey179/vfsStream/issues/15
683
- * @see http://www.php.net/manual/streamwrapper.stream-set-option.php
684
- */
685
- public function stream_set_option($option, $arg1, $arg2)
686
- {
687
- switch ($option) {
688
- case STREAM_OPTION_BLOCKING:
689
- // break omitted
690
-
691
- case STREAM_OPTION_READ_TIMEOUT:
692
- // break omitted
693
-
694
- case STREAM_OPTION_WRITE_BUFFER:
695
- // break omitted
696
-
697
- default:
698
- // nothing to do here
699
- }
700
-
701
- return false;
702
- }
703
-
704
- /**
705
- * remove the data under the given path
706
- *
707
- * @param string $path
708
- * @return bool
709
- */
710
- public function unlink($path)
711
- {
712
- $realPath = $this->resolvePath(vfsStream::path($path));
713
- $content = $this->getContent($realPath);
714
- if (null === $content) {
715
- trigger_error('unlink(' . $path . '): No such file or directory', E_USER_WARNING);
716
- return false;
717
- }
718
-
719
- if ($content->getType() !== vfsStreamContent::TYPE_FILE) {
720
- trigger_error('unlink(' . $path . '): Operation not permitted', E_USER_WARNING);
721
- return false;
722
- }
723
-
724
- return $this->doUnlink($realPath);
725
- }
726
-
727
- /**
728
- * removes a path
729
- *
730
- * @param string $path
731
- * @return bool
732
- */
733
- protected function doUnlink($path)
734
- {
735
- if (self::$root->getName() === $path) {
736
- // delete root? very brave. :)
737
- self::$root = null;
738
- clearstatcache();
739
- return true;
740
- }
741
-
742
- $names = $this->splitPath($path);
743
- $content = $this->getContent($names['dirname']);
744
- if (!$content->isWritable(vfsStream::getCurrentUser(), vfsStream::getCurrentGroup())) {
745
- return false;
746
- }
747
-
748
- clearstatcache();
749
- return $content->removeChild($names['basename']);
750
- }
751
-
752
- /**
753
- * rename from one path to another
754
- *
755
- * @param string $path_from
756
- * @param string $path_to
757
- * @return bool
758
- * @author Benoit Aubuchon
759
- */
760
- public function rename($path_from, $path_to)
761
- {
762
- $srcRealPath = $this->resolvePath(vfsStream::path($path_from));
763
- $dstRealPath = $this->resolvePath(vfsStream::path($path_to));
764
- $srcContent = $this->getContent($srcRealPath);
765
- if (null == $srcContent) {
766
- trigger_error(' No such file or directory', E_USER_WARNING);
767
- return false;
768
- }
769
- $dstNames = $this->splitPath($dstRealPath);
770
- $dstParentContent = $this->getContent($dstNames['dirname']);
771
- if (null == $dstParentContent) {
772
- trigger_error('No such file or directory', E_USER_WARNING);
773
- return false;
774
- }
775
- if (!$dstParentContent->isWritable(vfsStream::getCurrentUser(), vfsStream::getCurrentGroup())) {
776
- trigger_error('Permission denied', E_USER_WARNING);
777
- return false;
778
- }
779
- if ($dstParentContent->getType() !== vfsStreamContent::TYPE_DIR) {
780
- trigger_error('Target is not a directory', E_USER_WARNING);
781
- return false;
782
- }
783
-
784
- // remove old source first, so we can rename later
785
- // (renaming first would lead to not being able to remove the old path)
786
- if (!$this->doUnlink($srcRealPath)) {
787
- return false;
788
- }
789
-
790
- $dstContent = $srcContent;
791
- // Renaming the filename
792
- $dstContent->rename($dstNames['basename']);
793
- // Copying to the destination
794
- $dstParentContent->addChild($dstContent);
795
- return true;
796
- }
797
-
798
- /**
799
- * creates a new directory
800
- *
801
- * @param string $path
802
- * @param int $mode
803
- * @param int $options
804
- * @return bool
805
- */
806
- public function mkdir($path, $mode, $options)
807
- {
808
- $umask = vfsStream::umask();
809
- if (0 < $umask) {
810
- $permissions = $mode & ~$umask;
811
- } else {
812
- $permissions = $mode;
813
- }
814
-
815
- $path = $this->resolvePath(vfsStream::path($path));
816
- if (null !== $this->getContent($path)) {
817
- trigger_error('mkdir(): Path vfs://' . $path . ' exists', E_USER_WARNING);
818
- return false;
819
- }
820
-
821
- if (null === self::$root) {
822
- self::$root = vfsStream::newDirectory($path, $permissions);
823
- return true;
824
- }
825
-
826
- $maxDepth = count(explode('/', $path));
827
- $names = $this->splitPath($path);
828
- $newDirs = $names['basename'];
829
- $dir = null;
830
- $i = 0;
831
- while ($dir === null && $i < $maxDepth) {
832
- $dir = $this->getContent($names['dirname']);
833
- $names = $this->splitPath($names['dirname']);
834
- if (null == $dir) {
835
- $newDirs = $names['basename'] . '/' . $newDirs;
836
- }
837
-
838
- $i++;
839
- }
840
-
841
- if (null === $dir
842
- || $dir->getType() !== vfsStreamContent::TYPE_DIR
843
- || $dir->isWritable(vfsStream::getCurrentUser(), vfsStream::getCurrentGroup()) === false) {
844
- return false;
845
- }
846
-
847
- $recursive = ((STREAM_MKDIR_RECURSIVE & $options) !== 0) ? (true) : (false);
848
- if (strpos($newDirs, '/') !== false && false === $recursive) {
849
- return false;
850
- }
851
-
852
- vfsStream::newDirectory($newDirs, $permissions)->at($dir);
853
- return true;
854
- }
855
-
856
- /**
857
- * removes a directory
858
- *
859
- * @param string $path
860
- * @param int $options
861
- * @return bool
862
- * @todo consider $options with STREAM_MKDIR_RECURSIVE
863
- */
864
- public function rmdir($path, $options)
865
- {
866
- $path = $this->resolvePath(vfsStream::path($path));
867
- $child = $this->getContentOfType($path, vfsStreamContent::TYPE_DIR);
868
- if (null === $child) {
869
- return false;
870
- }
871
-
872
- // can only remove empty directories
873
- if (count($child->getChildren()) > 0) {
874
- return false;
875
- }
876
-
877
- if (self::$root->getName() === $path) {
878
- // delete root? very brave. :)
879
- self::$root = null;
880
- clearstatcache();
881
- return true;
882
- }
883
-
884
- $names = $this->splitPath($path);
885
- $dir = $this->getContentOfType($names['dirname'], vfsStreamContent::TYPE_DIR);
886
- if ($dir->isWritable(vfsStream::getCurrentUser(), vfsStream::getCurrentGroup()) === false) {
887
- return false;
888
- }
889
-
890
- clearstatcache();
891
- return $dir->removeChild($child->getName());
892
- }
893
-
894
- /**
895
- * opens a directory
896
- *
897
- * @param string $path
898
- * @param int $options
899
- * @return bool
900
- */
901
- public function dir_opendir($path, $options)
902
- {
903
- $path = $this->resolvePath(vfsStream::path($path));
904
- $this->dir = $this->getContentOfType($path, vfsStreamContent::TYPE_DIR);
905
- if (null === $this->dir || $this->dir->isReadable(vfsStream::getCurrentUser(), vfsStream::getCurrentGroup()) === false) {
906
- return false;
907
- }
908
-
909
- $this->dirIterator = $this->dir->getIterator();
910
- return true;
911
- }
912
-
913
- /**
914
- * reads directory contents
915
- *
916
- * @return string
917
- */
918
- public function dir_readdir()
919
- {
920
- $dir = $this->dirIterator->current();
921
- if (null === $dir) {
922
- return false;
923
- }
924
-
925
- $this->dirIterator->next();
926
- return $dir->getName();
927
- }
928
-
929
- /**
930
- * reset directory iteration
931
- *
932
- * @return bool
933
- */
934
- public function dir_rewinddir()
935
- {
936
- return $this->dirIterator->rewind();
937
- }
938
-
939
- /**
940
- * closes directory
941
- *
942
- * @return bool
943
- */
944
- public function dir_closedir()
945
- {
946
- $this->dirIterator = null;
947
- return true;
948
- }
949
-
950
- /**
951
- * returns status of url
952
- *
953
- * @param string $path path of url to return status for
954
- * @param int $flags flags set by the stream API
955
- * @return array
956
- */
957
- public function url_stat($path, $flags)
958
- {
959
- $content = $this->getContent($this->resolvePath(vfsStream::path($path)));
960
- if (null === $content) {
961
- if (($flags & STREAM_URL_STAT_QUIET) != STREAM_URL_STAT_QUIET) {
962
- trigger_error(' No such file or directory: ' . $path, E_USER_WARNING);
963
- }
964
-
965
- return false;
966
-
967
- }
968
-
969
- $fileStat = array('dev' => 0,
970
- 'ino' => 0,
971
- 'mode' => $content->getType() | $content->getPermissions(),
972
- 'nlink' => 0,
973
- 'uid' => $content->getUser(),
974
- 'gid' => $content->getGroup(),
975
- 'rdev' => 0,
976
- 'size' => $content->size(),
977
- 'atime' => $content->fileatime(),
978
- 'mtime' => $content->filemtime(),
979
- 'ctime' => $content->filectime(),
980
- 'blksize' => -1,
981
- 'blocks' => -1
982
- );
983
- return array_merge(array_values($fileStat), $fileStat);
984
- }
985
- }
986
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/visitor/vfsStreamAbstractVisitor.php DELETED
@@ -1,65 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs\visitor;
11
- use org\bovigo\vfs\vfsStreamContent;
12
- use org\bovigo\vfs\vfsStreamBlock;
13
-
14
- /**
15
- * Abstract base class providing an implementation for the visit() method.
16
- *
17
- * @since 0.10.0
18
- * @see https://github.com/mikey179/vfsStream/issues/10
19
- */
20
- abstract class vfsStreamAbstractVisitor implements vfsStreamVisitor
21
- {
22
- /**
23
- * visit a content and process it
24
- *
25
- * @param vfsStreamContent $content
26
- * @return vfsStreamVisitor
27
- * @throws \InvalidArgumentException
28
- */
29
- public function visit(vfsStreamContent $content)
30
- {
31
- switch ($content->getType()) {
32
- case vfsStreamContent::TYPE_BLOCK:
33
- $this->visitBlockDevice($content);
34
- break;
35
-
36
- case vfsStreamContent::TYPE_FILE:
37
- $this->visitFile($content);
38
- break;
39
-
40
- case vfsStreamContent::TYPE_DIR:
41
- if (!$content->isDot()) {
42
- $this->visitDirectory($content);
43
- }
44
-
45
- break;
46
-
47
- default:
48
- throw new \InvalidArgumentException('Unknown content type ' . $content->getType() . ' for ' . $content->getName());
49
- }
50
-
51
- return $this;
52
- }
53
-
54
- /**
55
- * visit a block device and process it
56
- *
57
- * @param vfsStreamBlock $block
58
- * @return vfsStreamVisitor
59
- */
60
- public function visitBlockDevice(vfsStreamBlock $block)
61
- {
62
- return $this->visitFile($block);
63
- }
64
- }
65
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/visitor/vfsStreamPrintVisitor.php DELETED
@@ -1,108 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs\visitor;
11
- use org\bovigo\vfs\vfsStreamContent;
12
- use org\bovigo\vfs\vfsStreamDirectory;
13
- use org\bovigo\vfs\vfsStreamFile;
14
- use org\bovigo\vfs\vfsStreamBlock;
15
-
16
- /**
17
- * Visitor which traverses a content structure recursively to print it to an output stream.
18
- *
19
- * @since 0.10.0
20
- * @see https://github.com/mikey179/vfsStream/issues/10
21
- */
22
- class vfsStreamPrintVisitor extends vfsStreamAbstractVisitor
23
- {
24
- /**
25
- * target to write output to
26
- *
27
- * @type resource
28
- */
29
- protected $out;
30
- /**
31
- * current depth in directory tree
32
- *
33
- * @type int
34
- */
35
- protected $depth;
36
-
37
- /**
38
- * constructor
39
- *
40
- * If no file pointer given it will fall back to STDOUT.
41
- *
42
- * @param resource $out optional
43
- * @throws \InvalidArgumentException
44
- * @api
45
- */
46
- public function __construct($out = STDOUT)
47
- {
48
- if (is_resource($out) === false || get_resource_type($out) !== 'stream') {
49
- throw new \InvalidArgumentException('Given filepointer is not a resource of type stream');
50
- }
51
-
52
- $this->out = $out;
53
- }
54
-
55
- /**
56
- * visit a file and process it
57
- *
58
- * @param vfsStreamFile $file
59
- * @return vfsStreamPrintVisitor
60
- */
61
- public function visitFile(vfsStreamFile $file)
62
- {
63
- $this->printContent($file->getName());
64
- return $this;
65
- }
66
-
67
- /**
68
- * visit a block device and process it
69
- *
70
- * @param vfsStreamBlock $block
71
- * @return vfsStreamPrintVisitor
72
- */
73
- public function visitBlockDevice(vfsStreamBlock $block)
74
- {
75
- $name = '[' . $block->getName() . ']';
76
- $this->printContent($name);
77
- return $this;
78
- }
79
-
80
- /**
81
- * visit a directory and process it
82
- *
83
- * @param vfsStreamDirectory $dir
84
- * @return vfsStreamPrintVisitor
85
- */
86
- public function visitDirectory(vfsStreamDirectory $dir)
87
- {
88
- $this->printContent($dir->getName());
89
- $this->depth++;
90
- foreach ($dir as $child) {
91
- $this->visit($child);
92
- }
93
-
94
- $this->depth--;
95
- return $this;
96
- }
97
-
98
- /**
99
- * helper method to print the content
100
- *
101
- * @param string $name
102
- */
103
- protected function printContent($name)
104
- {
105
- fwrite($this->out, str_repeat(' ', $this->depth) . '- ' . $name . "\n");
106
- }
107
- }
108
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/visitor/vfsStreamStructureVisitor.php DELETED
@@ -1,112 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs\visitor;
11
- use org\bovigo\vfs\vfsStreamDirectory;
12
- use org\bovigo\vfs\vfsStreamFile;
13
- use org\bovigo\vfs\vfsStreamBlock;
14
-
15
- /**
16
- * Visitor which traverses a content structure recursively to create an array structure from it.
17
- *
18
- * @since 0.10.0
19
- * @see https://github.com/mikey179/vfsStream/issues/10
20
- */
21
- class vfsStreamStructureVisitor extends vfsStreamAbstractVisitor
22
- {
23
- /**
24
- * collected structure
25
- *
26
- * @type array
27
- */
28
- protected $structure = array();
29
- /**
30
- * poiting to currently iterated directory
31
- *
32
- * @type array
33
- */
34
- protected $current;
35
-
36
- /**
37
- * constructor
38
- *
39
- * @api
40
- */
41
- public function __construct()
42
- {
43
- $this->reset();
44
- }
45
-
46
- /**
47
- * visit a file and process it
48
- *
49
- * @param vfsStreamFile $file
50
- * @return vfsStreamStructureVisitor
51
- */
52
- public function visitFile(vfsStreamFile $file)
53
- {
54
- $this->current[$file->getName()] = $file->getContent();
55
- return $this;
56
- }
57
-
58
- /**
59
- * visit a block device and process it
60
- *
61
- * @param vfsStreamBlock $block
62
- * @return vfsStreamStructureVisitor
63
- */
64
- public function visitBlockDevice(vfsStreamBlock $block)
65
- {
66
- $this->current['[' . $block->getName() . ']'] = $block->getContent();
67
- return $this;
68
- }
69
-
70
- /**
71
- * visit a directory and process it
72
- *
73
- * @param vfsStreamDirectory $dir
74
- * @return vfsStreamStructureVisitor
75
- */
76
- public function visitDirectory(vfsStreamDirectory $dir)
77
- {
78
- $this->current[$dir->getName()] = array();
79
- $tmp =& $this->current;
80
- $this->current =& $tmp[$dir->getName()];
81
- foreach ($dir as $child) {
82
- $this->visit($child);
83
- }
84
-
85
- $this->current =& $tmp;
86
- return $this;
87
- }
88
-
89
- /**
90
- * returns structure of visited contents
91
- *
92
- * @return array
93
- * @api
94
- */
95
- public function getStructure()
96
- {
97
- return $this->structure;
98
- }
99
-
100
- /**
101
- * resets structure so visitor could be reused
102
- *
103
- * @return vfsStreamStructureVisitor
104
- */
105
- public function reset()
106
- {
107
- $this->structure = array();
108
- $this->current =& $this->structure;
109
- return $this;
110
- }
111
- }
112
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/visitor/vfsStreamVisitor.php DELETED
@@ -1,56 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs\visitor;
11
- use org\bovigo\vfs\vfsStreamContent;
12
- use org\bovigo\vfs\vfsStreamDirectory;
13
- use org\bovigo\vfs\vfsStreamFile;
14
- use org\bovigo\vfs\vfsStreamBlock;
15
-
16
- /**
17
- * Interface for a visitor to work on a vfsStream content structure.
18
- *
19
- * @since 0.10.0
20
- * @see https://github.com/mikey179/vfsStream/issues/10
21
- */
22
- interface vfsStreamVisitor
23
- {
24
- /**
25
- * visit a content and process it
26
- *
27
- * @param vfsStreamContent $content
28
- * @return vfsStreamVisitor
29
- */
30
- public function visit(vfsStreamContent $content);
31
-
32
- /**
33
- * visit a file and process it
34
- *
35
- * @param vfsStreamFile $file
36
- * @return vfsStreamVisitor
37
- */
38
- public function visitFile(vfsStreamFile $file);
39
-
40
- /**
41
- * visit a directory and process it
42
- *
43
- * @param vfsStreamDirectory $dir
44
- * @return vfsStreamVisitor
45
- */
46
- public function visitDirectory(vfsStreamDirectory $dir);
47
-
48
- /**
49
- * visit a block device and process it
50
- *
51
- * @param vfsStreamBlock $block
52
- * @return vfsStreamVisitor
53
- */
54
- public function visitBlockDevice(vfsStreamBlock $block);
55
- }
56
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/DirectoryIterationTestCase.php DELETED
@@ -1,318 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- require_once __DIR__ . '/vfsStreamWrapperBaseTestCase.php';
12
- /**
13
- * Test for directory iteration.
14
- *
15
- * @group dir
16
- * @group iteration
17
- */
18
- class DirectoryIterationTestCase extends vfsStreamWrapperBaseTestCase
19
- {
20
- /**
21
- * clean up test environment
22
- */
23
- public function tearDown()
24
- {
25
- vfsStream::enableDotfiles();
26
- }
27
-
28
- /**
29
- * @return array
30
- */
31
- public function provideSwitchWithExpectations()
32
- {
33
- return array(array(function() { vfsStream::disableDotfiles(); }, array('bar', 'baz2')),
34
- array(function() { vfsStream::enableDotfiles(); }, array('.', '..', 'bar', 'baz2'))
35
- );
36
- }
37
-
38
- /**
39
- * assertion for directoy count
40
- *
41
- * @param int $expectedCount
42
- * @param int $actualCount
43
- */
44
- private function assertDirectoryCount($expectedCount, $actualCount)
45
- {
46
- $this->assertEquals($expectedCount,
47
- $actualCount,
48
- 'Directory foo contains ' . $expectedCount . ' children, but got ' . $actualCount . ' children while iterating over directory contents'
49
- );
50
- }
51
-
52
- /**
53
- * @param \Closure $dotFilesSwitch
54
- * @param string[] $expectedDirectories
55
- * @test
56
- * @dataProvider provideSwitchWithExpectations
57
- */
58
- public function directoryIteration(\Closure $dotFilesSwitch, array $expectedDirectories)
59
- {
60
- $dotFilesSwitch();
61
- $dir = dir($this->fooURL);
62
- $i = 0;
63
- while (false !== ($entry = $dir->read())) {
64
- $i++;
65
- $this->assertTrue(in_array($entry, $expectedDirectories));
66
- }
67
-
68
- $this->assertDirectoryCount(count($expectedDirectories), $i);
69
- $dir->rewind();
70
- $i = 0;
71
- while (false !== ($entry = $dir->read())) {
72
- $i++;
73
- $this->assertTrue(in_array($entry, $expectedDirectories));
74
- }
75
-
76
- $this->assertDirectoryCount(count($expectedDirectories), $i);
77
- $dir->close();
78
- }
79
-
80
- /**
81
- * @param \Closure $dotFilesSwitch
82
- * @param string[] $expectedDirectories
83
- * @test
84
- * @dataProvider provideSwitchWithExpectations
85
- */
86
- public function directoryIterationWithDot(\Closure $dotFilesSwitch, array $expectedDirectories)
87
- {
88
- $dotFilesSwitch();
89
- $dir = dir($this->fooURL . '/.');
90
- $i = 0;
91
- while (false !== ($entry = $dir->read())) {
92
- $i++;
93
- $this->assertTrue(in_array($entry, $expectedDirectories));
94
- }
95
-
96
- $this->assertDirectoryCount(count($expectedDirectories), $i);
97
- $dir->rewind();
98
- $i = 0;
99
- while (false !== ($entry = $dir->read())) {
100
- $i++;
101
- $this->assertTrue(in_array($entry, $expectedDirectories));
102
- }
103
-
104
- $this->assertDirectoryCount(count($expectedDirectories), $i);
105
- $dir->close();
106
- }
107
-
108
- /**
109
- * assure that a directory iteration works as expected
110
- *
111
- * @param \Closure $dotFilesSwitch
112
- * @param string[] $expectedDirectories
113
- * @test
114
- * @dataProvider provideSwitchWithExpectations
115
- * @group regression
116
- * @group bug_2
117
- */
118
- public function directoryIterationWithOpenDir_Bug_2(\Closure $dotFilesSwitch, array $expectedDirectories)
119
- {
120
- $dotFilesSwitch();
121
- $handle = opendir($this->fooURL);
122
- $i = 0;
123
- while (false !== ($entry = readdir($handle))) {
124
- $i++;
125
- $this->assertTrue(in_array($entry, $expectedDirectories));
126
- }
127
-
128
- $this->assertDirectoryCount(count($expectedDirectories), $i);
129
-
130
- rewinddir($handle);
131
- $i = 0;
132
- while (false !== ($entry = readdir($handle))) {
133
- $i++;
134
- $this->assertTrue(in_array($entry, $expectedDirectories));
135
- }
136
-
137
- $this->assertDirectoryCount(count($expectedDirectories), $i);
138
- closedir($handle);
139
- }
140
-
141
- /**
142
- * assure that a directory iteration works as expected
143
- *
144
- * @author Christoph Bloemer
145
- * @param \Closure $dotFilesSwitch
146
- * @param string[] $expectedDirectories
147
- * @test
148
- * @dataProvider provideSwitchWithExpectations
149
- * @group regression
150
- * @group bug_4
151
- */
152
- public function directoryIteration_Bug_4(\Closure $dotFilesSwitch, array $expectedDirectories)
153
- {
154
- $dotFilesSwitch();
155
- $dir = $this->fooURL;
156
- $list1 = array();
157
- if ($handle = opendir($dir)) {
158
- while (false !== ($listItem = readdir($handle))) {
159
- if ('.' != $listItem && '..' != $listItem) {
160
- if (is_file($dir . '/' . $listItem) === true) {
161
- $list1[] = 'File:[' . $listItem . ']';
162
- } elseif (is_dir($dir . '/' . $listItem) === true) {
163
- $list1[] = 'Folder:[' . $listItem . ']';
164
- }
165
- }
166
- }
167
-
168
- closedir($handle);
169
- }
170
-
171
- $list2 = array();
172
- if ($handle = opendir($dir)) {
173
- while (false !== ($listItem = readdir($handle))) {
174
- if ('.' != $listItem && '..' != $listItem) {
175
- if (is_file($dir . '/' . $listItem) === true) {
176
- $list2[] = 'File:[' . $listItem . ']';
177
- } elseif (is_dir($dir . '/' . $listItem) === true) {
178
- $list2[] = 'Folder:[' . $listItem . ']';
179
- }
180
- }
181
- }
182
-
183
- closedir($handle);
184
- }
185
-
186
- $this->assertEquals($list1, $list2);
187
- $this->assertEquals(2, count($list1));
188
- $this->assertEquals(2, count($list2));
189
- }
190
-
191
- /**
192
- * assure that a directory iteration works as expected
193
- *
194
- * @param \Closure $dotFilesSwitch
195
- * @param string[] $expectedDirectories
196
- * @test
197
- * @dataProvider provideSwitchWithExpectations
198
- */
199
- public function directoryIterationShouldBeIndependent(\Closure $dotFilesSwitch, array $expectedDirectories)
200
- {
201
- $dotFilesSwitch();
202
- $list1 = array();
203
- $list2 = array();
204
- $handle1 = opendir($this->fooURL);
205
- if (false !== ($listItem = readdir($handle1))) {
206
- $list1[] = $listItem;
207
- }
208
-
209
- $handle2 = opendir($this->fooURL);
210
- if (false !== ($listItem = readdir($handle2))) {
211
- $list2[] = $listItem;
212
- }
213
-
214
- if (false !== ($listItem = readdir($handle1))) {
215
- $list1[] = $listItem;
216
- }
217
-
218
- if (false !== ($listItem = readdir($handle2))) {
219
- $list2[] = $listItem;
220
- }
221
-
222
- closedir($handle1);
223
- closedir($handle2);
224
- $this->assertEquals($list1, $list2);
225
- $this->assertEquals(2, count($list1));
226
- $this->assertEquals(2, count($list2));
227
- }
228
-
229
- /**
230
- * @test
231
- * @group issue_50
232
- */
233
- public function recursiveDirectoryIterationWithDotsEnabled()
234
- {
235
- vfsStream::enableDotfiles();
236
- vfsStream::setup();
237
- $structure = array(
238
- 'Core' => array(
239
- 'AbstractFactory' => array(
240
- 'test.php' => 'some text content',
241
- 'other.php' => 'Some more text content',
242
- 'Invalid.csv' => 'Something else',
243
- ),
244
- 'AnEmptyFolder' => array(),
245
- 'badlocation.php' => 'some bad content',
246
- )
247
- );
248
- $root = vfsStream::create($structure);
249
- $rootPath = vfsStream::url($root->getName());
250
-
251
- $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($rootPath),
252
- \RecursiveIteratorIterator::CHILD_FIRST);
253
- $pathes = array();
254
- foreach ($iterator as $fullFileName => $fileSPLObject) {
255
- $pathes[] = $fullFileName;
256
- }
257
-
258
- $this->assertEquals(array('vfs://root'.DIRECTORY_SEPARATOR.'.',
259
- 'vfs://root'.DIRECTORY_SEPARATOR.'..',
260
- 'vfs://root'.DIRECTORY_SEPARATOR.'Core'.DIRECTORY_SEPARATOR.'.',
261
- 'vfs://root'.DIRECTORY_SEPARATOR.'Core'.DIRECTORY_SEPARATOR.'..',
262
- 'vfs://root'.DIRECTORY_SEPARATOR.'Core'.DIRECTORY_SEPARATOR.'AbstractFactory'.DIRECTORY_SEPARATOR.'.',
263
- 'vfs://root'.DIRECTORY_SEPARATOR.'Core'.DIRECTORY_SEPARATOR.'AbstractFactory'.DIRECTORY_SEPARATOR.'..',
264
- 'vfs://root'.DIRECTORY_SEPARATOR.'Core'.DIRECTORY_SEPARATOR.'AbstractFactory'.DIRECTORY_SEPARATOR.'test.php',
265
- 'vfs://root'.DIRECTORY_SEPARATOR.'Core'.DIRECTORY_SEPARATOR.'AbstractFactory'.DIRECTORY_SEPARATOR.'other.php',
266
- 'vfs://root'.DIRECTORY_SEPARATOR.'Core'.DIRECTORY_SEPARATOR.'AbstractFactory'.DIRECTORY_SEPARATOR.'Invalid.csv',
267
- 'vfs://root'.DIRECTORY_SEPARATOR.'Core'.DIRECTORY_SEPARATOR.'AbstractFactory',
268
- 'vfs://root'.DIRECTORY_SEPARATOR.'Core'.DIRECTORY_SEPARATOR.'AnEmptyFolder'.DIRECTORY_SEPARATOR.'.',
269
- 'vfs://root'.DIRECTORY_SEPARATOR.'Core'.DIRECTORY_SEPARATOR.'AnEmptyFolder'.DIRECTORY_SEPARATOR.'..',
270
- 'vfs://root'.DIRECTORY_SEPARATOR.'Core'.DIRECTORY_SEPARATOR.'AnEmptyFolder',
271
- 'vfs://root'.DIRECTORY_SEPARATOR.'Core'.DIRECTORY_SEPARATOR.'badlocation.php',
272
- 'vfs://root'.DIRECTORY_SEPARATOR.'Core'
273
- ),
274
- $pathes
275
- );
276
- }
277
-
278
- /**
279
- * @test
280
- * @group issue_50
281
- */
282
- public function recursiveDirectoryIterationWithDotsDisabled()
283
- {
284
- vfsStream::disableDotfiles();
285
- vfsStream::setup();
286
- $structure = array(
287
- 'Core' => array(
288
- 'AbstractFactory' => array(
289
- 'test.php' => 'some text content',
290
- 'other.php' => 'Some more text content',
291
- 'Invalid.csv' => 'Something else',
292
- ),
293
- 'AnEmptyFolder' => array(),
294
- 'badlocation.php' => 'some bad content',
295
- )
296
- );
297
- $root = vfsStream::create($structure);
298
- $rootPath = vfsStream::url($root->getName());
299
-
300
- $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($rootPath),
301
- \RecursiveIteratorIterator::CHILD_FIRST);
302
- $pathes = array();
303
- foreach ($iterator as $fullFileName => $fileSPLObject) {
304
- $pathes[] = $fullFileName;
305
- }
306
-
307
- $this->assertEquals(array('vfs://root'.DIRECTORY_SEPARATOR.'Core'.DIRECTORY_SEPARATOR.'AbstractFactory'.DIRECTORY_SEPARATOR.'test.php',
308
- 'vfs://root'.DIRECTORY_SEPARATOR.'Core'.DIRECTORY_SEPARATOR.'AbstractFactory'.DIRECTORY_SEPARATOR.'other.php',
309
- 'vfs://root'.DIRECTORY_SEPARATOR.'Core'.DIRECTORY_SEPARATOR.'AbstractFactory'.DIRECTORY_SEPARATOR.'Invalid.csv',
310
- 'vfs://root'.DIRECTORY_SEPARATOR.'Core'.DIRECTORY_SEPARATOR.'AbstractFactory',
311
- 'vfs://root'.DIRECTORY_SEPARATOR.'Core'.DIRECTORY_SEPARATOR.'AnEmptyFolder',
312
- 'vfs://root'.DIRECTORY_SEPARATOR.'Core'.DIRECTORY_SEPARATOR.'badlocation.php',
313
- 'vfs://root'.DIRECTORY_SEPARATOR.'Core'
314
- ),
315
- $pathes
316
- );
317
- }
318
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/Issue104TestCase.php DELETED
@@ -1,52 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * @group issue_104
13
- * @since 1.5.0
14
- */
15
- class Issue104TestCase extends \PHPUnit_Framework_TestCase
16
- {
17
- /**
18
- * @test
19
- */
20
- public function vfsStreamCanHandleUrlEncodedPathPassedByInternalPhpCode()
21
- {
22
- $structure = array('foo bar' => array(
23
- 'schema.xsd' => '<xs:schema targetNamespace="http://www.example.com" xmlns:xs="http://www.w3.org/2001/XMLSchema">
24
- <xs:complexType name="myType"></xs:complexType>
25
- </xs:schema>',
26
- )
27
- );
28
- vfsStream::setup('root', null, $structure);
29
- $doc = new \DOMDocument();
30
- $this->assertTrue($doc->load(vfsStream::url('root/foo bar/schema.xsd')));
31
- }
32
-
33
- /**
34
- * @test
35
- */
36
- public function vfsStreamCanHandleUrlEncodedPath()
37
- {
38
- $content = '<xs:schema targetNamespace="http://www.example.com" xmlns:xs="http://www.w3.org/2001/XMLSchema">
39
- <xs:complexType name="myType"></xs:complexType>
40
- </xs:schema>';
41
- $structure = array('foo bar' => array(
42
- 'schema.xsd' => $content,
43
- )
44
- );
45
- vfsStream::setup('root', null, $structure);
46
- $this->assertEquals(
47
- $content,
48
- file_get_contents(vfsStream::url('root/foo%20bar/schema.xsd'))
49
- );
50
- }
51
- }
52
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/PermissionsTestCase.php DELETED
@@ -1,118 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Test for permissions related functionality.
13
- *
14
- * @group permissions
15
- */
16
- class PermissionsTestCase extends \PHPUnit_Framework_TestCase
17
- {
18
- /**
19
- * @type vfsStreamDirectory
20
- */
21
- private $root;
22
-
23
- /**
24
- * set up test environment
25
- */
26
- public function setup()
27
- {
28
- $structure = array('test_directory' => array('test.file' => ''));
29
- $this->root = vfsStream::setup('root', null, $structure);
30
- }
31
-
32
- /**
33
- * @test
34
- * @group issue_52
35
- */
36
- public function canNotChangePermissionWhenDirectoryNotWriteable()
37
- {
38
- $this->root->getChild('test_directory')->chmod(0444);
39
- $this->assertFalse(@chmod(vfsStream::url('root/test_directory/test.file'), 0777));
40
- }
41
-
42
- /**
43
- * @test
44
- * @group issue_53
45
- */
46
- public function canNotChangePermissionWhenFileNotOwned()
47
- {
48
- $this->root->getChild('test_directory')->getChild('test.file')->chown(vfsStream::OWNER_USER_1);
49
- $this->assertFalse(@chmod(vfsStream::url('root/test_directory/test.file'), 0777));
50
- }
51
-
52
- /**
53
- * @test
54
- * @group issue_52
55
- */
56
- public function canNotChangeOwnerWhenDirectoryNotWriteable()
57
- {
58
- $this->root->getChild('test_directory')->chmod(0444);
59
- $this->assertFalse(@chown(vfsStream::url('root/test_directory/test.file'), vfsStream::OWNER_USER_2));
60
- }
61
-
62
- /**
63
- * @test
64
- * @group issue_53
65
- */
66
- public function canNotChangeOwnerWhenFileNotOwned()
67
- {
68
- $this->root->getChild('test_directory')->getChild('test.file')->chown(vfsStream::OWNER_USER_1);
69
- $this->assertFalse(@chown(vfsStream::url('root/test_directory/test.file'), vfsStream::OWNER_USER_2));
70
- }
71
-
72
- /**
73
- * @test
74
- * @group issue_52
75
- */
76
- public function canNotChangeGroupWhenDirectoryNotWriteable()
77
- {
78
- $this->root->getChild('test_directory')->chmod(0444);
79
- $this->assertFalse(@chgrp(vfsStream::url('root/test_directory/test.file'), vfsStream::GROUP_USER_2));
80
- }
81
-
82
- /**
83
- * @test
84
- * @group issue_53
85
- */
86
- public function canNotChangeGroupWhenFileNotOwned()
87
- {
88
- $this->root->getChild('test_directory')->getChild('test.file')->chown(vfsStream::OWNER_USER_1);
89
- $this->assertFalse(@chgrp(vfsStream::url('root/test_directory/test.file'), vfsStream::GROUP_USER_2));
90
- }
91
-
92
- /**
93
- * @test
94
- * @group issue_107
95
- * @expectedException PHPUnit_Framework_Error
96
- * @expectedExceptionMessage Can not create new file in non-writable path root
97
- * @requires PHP 5.4
98
- * @since 1.5.0
99
- */
100
- public function touchOnNonWriteableDirectoryTriggersError()
101
- {
102
- $this->root->chmod(0555);
103
- touch($this->root->url() . '/touch.txt');
104
- }
105
-
106
- /**
107
- * @test
108
- * @group issue_107
109
- * @requires PHP 5.4
110
- * @since 1.5.0
111
- */
112
- public function touchOnNonWriteableDirectoryDoesNotCreateFile()
113
- {
114
- $this->root->chmod(0555);
115
- $this->assertFalse(@touch($this->root->url() . '/touch.txt'));
116
- $this->assertFalse($this->root->hasChild('touch.txt'));
117
- }
118
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/QuotaTestCase.php DELETED
@@ -1,81 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Test for org\bovigo\vfs\Quota.
13
- *
14
- * @group issue_35
15
- */
16
- class QuotaTestCase extends \PHPUnit_Framework_TestCase
17
- {
18
- /**
19
- * instance to test
20
- *
21
- * @type Quota
22
- */
23
- private $quota;
24
-
25
- /**
26
- * set up test environment
27
- */
28
- public function setUp()
29
- {
30
- $this->quota = new Quota(10);
31
- }
32
-
33
- /**
34
- * @test
35
- */
36
- public function unlimitedQuotaIsNotLimited()
37
- {
38
- $this->assertFalse(Quota::unlimited()->isLimited());
39
- }
40
-
41
- /**
42
- * @test
43
- */
44
- public function limitedQuotaIsLimited()
45
- {
46
- $this->assertTrue($this->quota->isLimited());
47
- }
48
-
49
- /**
50
- * @test
51
- */
52
- public function unlimitedQuotaHasAlwaysSpaceLeft()
53
- {
54
- $this->assertEquals(303, Quota::unlimited()->spaceLeft(303));
55
- }
56
-
57
- /**
58
- * @test
59
- */
60
- public function hasNoSpaceLeftWhenUsedSpaceIsLargerThanQuota()
61
- {
62
- $this->assertEquals(0, $this->quota->spaceLeft(11));
63
- }
64
-
65
- /**
66
- * @test
67
- */
68
- public function hasNoSpaceLeftWhenUsedSpaceIsEqualToQuota()
69
- {
70
- $this->assertEquals(0, $this->quota->spaceLeft(10));
71
- }
72
-
73
- /**
74
- * @test
75
- */
76
- public function hasSpaceLeftWhenUsedSpaceIsLowerThanQuota()
77
- {
78
- $this->assertEquals(1, $this->quota->spaceLeft(9));
79
- }
80
- }
81
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/UnlinkTestCase.php DELETED
@@ -1,58 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Test for unlink() functionality.
13
- *
14
- * @group unlink
15
- */
16
- class UnlinkTestCase extends \PHPUnit_Framework_TestCase
17
- {
18
- /**
19
- * @test
20
- * @group issue_51
21
- */
22
- public function canRemoveNonWritableFileFromWritableDirectory()
23
- {
24
- $structure = array('test_directory' => array('test.file' => ''));
25
- $root = vfsStream::setup('root', null, $structure);
26
- $root->getChild('test_directory')->chmod(0777);
27
- $root->getChild('test_directory')->getChild('test.file')->chmod(0444);
28
- $this->assertTrue(@unlink(vfsStream::url('root/test_directory/test.file')));
29
- }
30
-
31
- /**
32
- * @test
33
- * @group issue_51
34
- */
35
- public function canNotRemoveWritableFileFromNonWritableDirectory()
36
- {
37
- $structure = array('test_directory' => array('test.file' => ''));
38
- $root = vfsStream::setup('root', null, $structure);
39
- $root->getChild('test_directory')->chmod(0444);
40
- $root->getChild('test_directory')->getChild('test.file')->chmod(0777);
41
- $this->assertFalse(@unlink(vfsStream::url('root/test_directory/test.file')));
42
- }
43
-
44
- /**
45
- * @test
46
- * @since 1.4.0
47
- * @group issue_68
48
- */
49
- public function unlinkNonExistingFileTriggersError()
50
- {
51
- vfsStream::setup();
52
- try {
53
- $this->assertFalse(unlink('vfs://root/foo.txt'));
54
- } catch (\PHPUnit_Framework_Error $fe) {
55
- $this->assertEquals('unlink(vfs://root/foo.txt): No such file or directory', $fe->getMessage());
56
- }
57
- }
58
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/content/LargeFileContentTestCase.php DELETED
@@ -1,225 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs\content;
11
- /**
12
- * Test for org\bovigo\vfs\content\LargeFileContent.
13
- *
14
- * @since 1.3.0
15
- * @group issue_79
16
- */
17
- class LargeFileContentTestCase extends \PHPUnit_Framework_TestCase
18
- {
19
- /**
20
- * instance to test
21
- *
22
- * @type LargeFileContent
23
- */
24
- private $largeFileContent;
25
-
26
- /**
27
- * set up test environment
28
- */
29
- public function setUp()
30
- {
31
- $this->largeFileContent = new LargeFileContent(100);
32
- }
33
-
34
- /**
35
- * @test
36
- */
37
- public function hasSizeOriginallyGiven()
38
- {
39
- $this->assertEquals(100, $this->largeFileContent->size());
40
- }
41
-
42
- /**
43
- * @test
44
- */
45
- public function contentIsFilledUpWithSpacesIfNoDataWritten()
46
- {
47
- $this->assertEquals(
48
- str_repeat(' ', 100),
49
- $this->largeFileContent->content()
50
- );
51
- }
52
-
53
- /**
54
- * @test
55
- */
56
- public function readReturnsSpacesWhenNothingWrittenAtOffset()
57
- {
58
- $this->assertEquals(
59
- str_repeat(' ', 10),
60
- $this->largeFileContent->read(10)
61
- );
62
- }
63
-
64
- /**
65
- * @test
66
- */
67
- public function readReturnsContentFilledWithSpaces()
68
- {
69
- $this->largeFileContent->write('foobarbaz');
70
- $this->largeFileContent->seek(0, SEEK_SET);
71
- $this->assertEquals(
72
- 'foobarbaz ',
73
- $this->largeFileContent->read(10)
74
- );
75
- }
76
-
77
- /**
78
- * @test
79
- */
80
- public function writesDataAtStartWhenOffsetNotMoved()
81
- {
82
- $this->assertEquals(9, $this->largeFileContent->write('foobarbaz'));
83
- $this->assertEquals(
84
- 'foobarbaz' . str_repeat(' ', 91),
85
- $this->largeFileContent->content()
86
- );
87
- }
88
-
89
- /**
90
- * @test
91
- */
92
- public function writeDataAtStartDoesNotIncreaseSize()
93
- {
94
- $this->assertEquals(9, $this->largeFileContent->write('foobarbaz'));
95
- $this->assertEquals(100, $this->largeFileContent->size());
96
- }
97
-
98
- /**
99
- * @test
100
- */
101
- public function writesDataAtOffsetWhenOffsetMoved()
102
- {
103
- $this->largeFileContent->seek(50, SEEK_SET);
104
- $this->assertEquals(9, $this->largeFileContent->write('foobarbaz'));
105
- $this->assertEquals(
106
- str_repeat(' ', 50) . 'foobarbaz' . str_repeat(' ', 41),
107
- $this->largeFileContent->content()
108
- );
109
- }
110
-
111
- /**
112
- * @test
113
- */
114
- public function writeDataInBetweenDoesNotIncreaseSize()
115
- {
116
- $this->largeFileContent->seek(50, SEEK_SET);
117
- $this->assertEquals(9, $this->largeFileContent->write('foobarbaz'));
118
- $this->assertEquals(100, $this->largeFileContent->size());
119
- }
120
-
121
- /**
122
- * @test
123
- */
124
- public function writesDataOverEndWhenOffsetAndDataLengthLargerThanSize()
125
- {
126
- $this->largeFileContent->seek(95, SEEK_SET);
127
- $this->assertEquals(9, $this->largeFileContent->write('foobarbaz'));
128
- $this->assertEquals(
129
- str_repeat(' ', 95) . 'foobarbaz',
130
- $this->largeFileContent->content()
131
- );
132
- }
133
-
134
- /**
135
- * @test
136
- */
137
- public function writeDataOverLastOffsetIncreasesSize()
138
- {
139
- $this->largeFileContent->seek(95, SEEK_SET);
140
- $this->assertEquals(9, $this->largeFileContent->write('foobarbaz'));
141
- $this->assertEquals(104, $this->largeFileContent->size());
142
- }
143
-
144
- /**
145
- * @test
146
- */
147
- public function writesDataAfterEndWhenOffsetAfterEnd()
148
- {
149
- $this->largeFileContent->seek(0, SEEK_END);
150
- $this->assertEquals(9, $this->largeFileContent->write('foobarbaz'));
151
- $this->assertEquals(
152
- str_repeat(' ', 100) . 'foobarbaz',
153
- $this->largeFileContent->content()
154
- );
155
- }
156
-
157
- /**
158
- * @test
159
- */
160
- public function writeDataAfterLastOffsetIncreasesSize()
161
- {
162
- $this->largeFileContent->seek(0, SEEK_END);
163
- $this->assertEquals(9, $this->largeFileContent->write('foobarbaz'));
164
- $this->assertEquals(109, $this->largeFileContent->size());
165
- }
166
-
167
- /**
168
- * @test
169
- */
170
- public function truncateReducesSize()
171
- {
172
- $this->assertTrue($this->largeFileContent->truncate(50));
173
- $this->assertEquals(50, $this->largeFileContent->size());
174
- }
175
-
176
- /**
177
- * @test
178
- */
179
- public function truncateRemovesWrittenContentAfterOffset()
180
- {
181
- $this->largeFileContent->seek(45, SEEK_SET);
182
- $this->largeFileContent->write('foobarbaz');
183
- $this->assertTrue($this->largeFileContent->truncate(50));
184
- $this->assertEquals(
185
- str_repeat(' ', 45) . 'fooba',
186
- $this->largeFileContent->content()
187
- );
188
- }
189
-
190
- /**
191
- * @test
192
- */
193
- public function createInstanceWithKilobytes()
194
- {
195
- $this->assertEquals(
196
- 100 * 1024,
197
- LargeFileContent::withKilobytes(100)
198
- ->size()
199
- );
200
- }
201
-
202
- /**
203
- * @test
204
- */
205
- public function createInstanceWithMegabytes()
206
- {
207
- $this->assertEquals(
208
- 100 * 1024 * 1024,
209
- LargeFileContent::withMegabytes(100)
210
- ->size()
211
- );
212
- }
213
-
214
- /**
215
- * @test
216
- */
217
- public function createInstanceWithGigabytes()
218
- {
219
- $this->assertEquals(
220
- 100 * 1024 * 1024 * 1024,
221
- LargeFileContent::withGigabytes(100)
222
- ->size()
223
- );
224
- }
225
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/content/StringBasedFileContentTestCase.php DELETED
@@ -1,230 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs\content;
11
- /**
12
- * Test for org\bovigo\vfs\content\StringBasedFileContent.
13
- *
14
- * @since 1.3.0
15
- * @group issue_79
16
- */
17
- class StringBasedFileContentTestCase extends \PHPUnit_Framework_TestCase
18
- {
19
- /**
20
- * instance to test
21
- *
22
- * @type StringBasedFileContent
23
- */
24
- private $stringBasedFileContent;
25
-
26
- /**
27
- * set up test environment
28
- */
29
- public function setUp()
30
- {
31
- $this->stringBasedFileContent = new StringBasedFileContent('foobarbaz');
32
- }
33
-
34
- /**
35
- * @test
36
- */
37
- public function hasContentOriginallySet()
38
- {
39
- $this->assertEquals('foobarbaz', $this->stringBasedFileContent->content());
40
- }
41
-
42
- /**
43
- * @test
44
- */
45
- public function hasNotReachedEofAfterCreation()
46
- {
47
- $this->assertFalse($this->stringBasedFileContent->eof());
48
- }
49
-
50
- /**
51
- * @test
52
- */
53
- public function sizeEqualsLengthOfGivenString()
54
- {
55
- $this->assertEquals(9, $this->stringBasedFileContent->size());
56
- }
57
-
58
- /**
59
- * @test
60
- */
61
- public function readReturnsSubstringWithRequestedLength()
62
- {
63
- $this->assertEquals('foo', $this->stringBasedFileContent->read(3));
64
- }
65
-
66
- /**
67
- * @test
68
- */
69
- public function readMovesOffset()
70
- {
71
- $this->assertEquals('foo', $this->stringBasedFileContent->read(3));
72
- $this->assertEquals('bar', $this->stringBasedFileContent->read(3));
73
- $this->assertEquals('baz', $this->stringBasedFileContent->read(3));
74
- }
75
-
76
- /**
77
- * @test
78
- */
79
- public function reaMoreThanSizeReturnsWholeContent()
80
- {
81
- $this->assertEquals('foobarbaz', $this->stringBasedFileContent->read(10));
82
- }
83
-
84
- /**
85
- * @test
86
- */
87
- public function readAfterEndReturnsEmptyString()
88
- {
89
- $this->stringBasedFileContent->read(9);
90
- $this->assertEquals('', $this->stringBasedFileContent->read(3));
91
- }
92
-
93
- /**
94
- * @test
95
- */
96
- public function readDoesNotChangeSize()
97
- {
98
- $this->stringBasedFileContent->read(3);
99
- $this->assertEquals(9, $this->stringBasedFileContent->size());
100
- }
101
-
102
- /**
103
- * @test
104
- */
105
- public function readLessThenSizeDoesNotReachEof()
106
- {
107
- $this->stringBasedFileContent->read(3);
108
- $this->assertFalse($this->stringBasedFileContent->eof());
109
- }
110
-
111
- /**
112
- * @test
113
- */
114
- public function readSizeReachesEof()
115
- {
116
- $this->stringBasedFileContent->read(9);
117
- $this->assertTrue($this->stringBasedFileContent->eof());
118
- }
119
-
120
- /**
121
- * @test
122
- */
123
- public function readMoreThanSizeReachesEof()
124
- {
125
- $this->stringBasedFileContent->read(10);
126
- $this->assertTrue($this->stringBasedFileContent->eof());
127
- }
128
-
129
- /**
130
- * @test
131
- */
132
- public function seekWithInvalidOptionReturnsFalse()
133
- {
134
- $this->assertFalse($this->stringBasedFileContent->seek(0, 55));
135
- }
136
-
137
- /**
138
- * @test
139
- */
140
- public function canSeekToGivenOffset()
141
- {
142
- $this->assertTrue($this->stringBasedFileContent->seek(5, SEEK_SET));
143
- $this->assertEquals('rbaz', $this->stringBasedFileContent->read(10));
144
- }
145
-
146
- /**
147
- * @test
148
- */
149
- public function canSeekFromCurrentOffset()
150
- {
151
- $this->assertTrue($this->stringBasedFileContent->seek(5, SEEK_SET));
152
- $this->assertTrue($this->stringBasedFileContent->seek(2, SEEK_CUR));
153
- $this->assertEquals('az', $this->stringBasedFileContent->read(10));
154
- }
155
-
156
- /**
157
- * @test
158
- */
159
- public function canSeekToEnd()
160
- {
161
- $this->assertTrue($this->stringBasedFileContent->seek(0, SEEK_END));
162
- $this->assertEquals('', $this->stringBasedFileContent->read(10));
163
- }
164
-
165
- /**
166
- * @test
167
- */
168
- public function writeOverwritesExistingContentWhenOffsetNotAtEof()
169
- {
170
- $this->assertEquals(3, $this->stringBasedFileContent->write('bar'));
171
- $this->assertEquals('barbarbaz', $this->stringBasedFileContent->content());
172
- }
173
-
174
- /**
175
- * @test
176
- */
177
- public function writeAppendsContentWhenOffsetAtEof()
178
- {
179
- $this->assertTrue($this->stringBasedFileContent->seek(0, SEEK_END));
180
- $this->assertEquals(3, $this->stringBasedFileContent->write('bar'));
181
- $this->assertEquals('foobarbazbar', $this->stringBasedFileContent->content());
182
- }
183
-
184
- /**
185
- * @test
186
- * @group issue_33
187
- * @since 1.1.0
188
- */
189
- public function truncateRemovesSuperflouosContent()
190
- {
191
- $this->assertTrue($this->stringBasedFileContent->truncate(6));
192
- $this->assertEquals('foobar', $this->stringBasedFileContent->content());
193
- }
194
-
195
- /**
196
- * @test
197
- * @group issue_33
198
- * @since 1.1.0
199
- */
200
- public function truncateDecreasesSize()
201
- {
202
- $this->assertTrue($this->stringBasedFileContent->truncate(6));
203
- $this->assertEquals(6, $this->stringBasedFileContent->size());
204
- }
205
-
206
- /**
207
- * @test
208
- * @group issue_33
209
- * @since 1.1.0
210
- */
211
- public function truncateToGreaterSizeAddsZeroBytes()
212
- {
213
- $this->assertTrue($this->stringBasedFileContent->truncate(25));
214
- $this->assertEquals(
215
- "foobarbaz\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
216
- $this->stringBasedFileContent->content()
217
- );
218
- }
219
-
220
- /**
221
- * @test
222
- * @group issue_33
223
- * @since 1.1.0
224
- */
225
- public function truncateToGreaterSizeIncreasesSize()
226
- {
227
- $this->assertTrue($this->stringBasedFileContent->truncate(25));
228
- $this->assertEquals(25, $this->stringBasedFileContent->size());
229
- }
230
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/proxy/vfsStreamWrapperRecordingProxy.php DELETED
@@ -1,326 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Stream wrapper to mock file system requests.
13
- *
14
- * @since 0.10.0
15
- */
16
- class vfsStreamWrapperRecordingProxy extends vfsStreamWrapper
17
- {
18
- /**
19
- * list of called methods for a stream
20
- *
21
- * @var array
22
- */
23
- protected static $calledMethods = array();
24
- /**
25
- * currently opened path
26
- *
27
- * @var string
28
- */
29
- protected $path;
30
-
31
- /**
32
- * records method call for given path
33
- *
34
- * @param string $method
35
- * @param string $path
36
- */
37
- protected static function recordMethodCall($method, $path)
38
- {
39
- if (isset(self::$calledMethods[$path]) === false) {
40
- self::$calledMethods[$path] = array();
41
- }
42
-
43
- self::$calledMethods[$path][] = $method;
44
- }
45
-
46
- /**
47
- * returns recorded method calls for given path
48
- *
49
- * @param string $path
50
- * @return array<string>
51
- */
52
- public static function getMethodCalls($path)
53
- {
54
- if (isset(self::$calledMethods[$path]) === true) {
55
- return self::$calledMethods[$path];
56
- }
57
-
58
- return array();
59
- }
60
-
61
- /**
62
- * helper method for setting up vfsStream with the proxy
63
- *
64
- * @param string $rootDirName optional name of root directory
65
- * @param int $permissions optional file permissions of root directory
66
- * @return vfsStreamDirectory
67
- * @throws vfsStreamException
68
- */
69
- public static function setup($rootDirName = 'root', $permissions = null)
70
- {
71
- self::$root = vfsStream::newDirectory($rootDirName, $permissions);
72
- if (true === self::$registered) {
73
- return self::$root;
74
- }
75
-
76
- if (@stream_wrapper_register(vfsStream::SCHEME, __CLASS__) === false) {
77
- throw new vfsStreamException('A handler has already been registered for the ' . vfsStream::SCHEME . ' protocol.');
78
- }
79
-
80
- self::$registered = true;
81
- return self::$root;
82
- }
83
-
84
- /**
85
- * open the stream
86
- *
87
- * @param string $path the path to open
88
- * @param string $mode mode for opening
89
- * @param string $options options for opening
90
- * @param string $opened_path full path that was actually opened
91
- * @return bool
92
- */
93
- public function stream_open($path, $mode, $options, $opened_path)
94
- {
95
- $this->path = $path;
96
- self::recordMethodCall('stream_open', $this->path);
97
- return parent::stream_open($path, $mode, $options, $opened_path);
98
- }
99
-
100
- /**
101
- * closes the stream
102
- */
103
- public function stream_close()
104
- {
105
- self::recordMethodCall('stream_close', $this->path);
106
- return parent::stream_close();
107
- }
108
-
109
- /**
110
- * read the stream up to $count bytes
111
- *
112
- * @param int $count amount of bytes to read
113
- * @return string
114
- */
115
- public function stream_read($count)
116
- {
117
- self::recordMethodCall('stream_read', $this->path);
118
- return parent::stream_read($count);
119
- }
120
-
121
- /**
122
- * writes data into the stream
123
- *
124
- * @param string $data
125
- * @return int amount of bytes written
126
- */
127
- public function stream_write($data)
128
- {
129
- self::recordMethodCall('stream_write', $this->path);
130
- return parent::stream_write($data);
131
- }
132
-
133
- /**
134
- * checks whether stream is at end of file
135
- *
136
- * @return bool
137
- */
138
- public function stream_eof()
139
- {
140
- self::recordMethodCall('stream_eof', $this->path);
141
- return parent::stream_eof();
142
- }
143
-
144
- /**
145
- * returns the current position of the stream
146
- *
147
- * @return int
148
- */
149
- public function stream_tell()
150
- {
151
- self::recordMethodCall('stream_tell', $this->path);
152
- return parent::stream_tell();
153
- }
154
-
155
- /**
156
- * seeks to the given offset
157
- *
158
- * @param int $offset
159
- * @param int $whence
160
- * @return bool
161
- */
162
- public function stream_seek($offset, $whence)
163
- {
164
- self::recordMethodCall('stream_seek', $this->path);
165
- return parent::stream_seek($offset, $whence);
166
- }
167
-
168
- /**
169
- * flushes unstored data into storage
170
- *
171
- * @return bool
172
- */
173
- public function stream_flush()
174
- {
175
- self::recordMethodCall('stream_flush', $this->path);
176
- return parent::stream_flush();
177
- }
178
-
179
- /**
180
- * returns status of stream
181
- *
182
- * @return array
183
- */
184
- public function stream_stat()
185
- {
186
- self::recordMethodCall('stream_stat', $this->path);
187
- return parent::stream_stat();
188
- }
189
-
190
- /**
191
- * retrieve the underlaying resource
192
- *
193
- * @param int $cast_as
194
- * @return bool
195
- */
196
- public function stream_cast($cast_as)
197
- {
198
- self::recordMethodCall('stream_cast', $this->path);
199
- return parent::stream_cast($cast_as);
200
- }
201
-
202
- /**
203
- * set lock status for stream
204
- *
205
- * @param int $operation
206
- * @return bool
207
- */
208
- public function stream_lock($operation)
209
- {
210
- self::recordMethodCall('stream_link', $this->path);
211
- return parent::stream_lock($operation);
212
- }
213
-
214
- /**
215
- * remove the data under the given path
216
- *
217
- * @param string $path
218
- * @return bool
219
- */
220
- public function unlink($path)
221
- {
222
- self::recordMethodCall('unlink', $path);
223
- return parent::unlink($path);
224
- }
225
-
226
- /**
227
- * rename from one path to another
228
- *
229
- * @param string $path_from
230
- * @param string $path_to
231
- * @return bool
232
- */
233
- public function rename($path_from, $path_to)
234
- {
235
- self::recordMethodCall('rename', $path_from);
236
- return parent::rename($path_from, $path_to);
237
- }
238
-
239
- /**
240
- * creates a new directory
241
- *
242
- * @param string $path
243
- * @param int $mode
244
- * @param int $options
245
- * @return bool
246
- */
247
- public function mkdir($path, $mode, $options)
248
- {
249
- self::recordMethodCall('mkdir', $path);
250
- return parent::mkdir($path, $mode, $options);
251
- }
252
-
253
- /**
254
- * removes a directory
255
- *
256
- * @param string $path
257
- * @param int $options
258
- * @return bool
259
- */
260
- public function rmdir($path, $options)
261
- {
262
- self::recordMethodCall('rmdir', $path);
263
- return parent::rmdir($path, $options);
264
- }
265
-
266
- /**
267
- * opens a directory
268
- *
269
- * @param string $path
270
- * @param int $options
271
- * @return bool
272
- */
273
- public function dir_opendir($path, $options)
274
- {
275
- $this->path = $path;
276
- self::recordMethodCall('dir_opendir', $this->path);
277
- return parent::dir_opendir($path, $options);
278
- }
279
-
280
- /**
281
- * reads directory contents
282
- *
283
- * @return string
284
- */
285
- public function dir_readdir()
286
- {
287
- self::recordMethodCall('dir_readdir', $this->path);
288
- return parent::dir_readdir();
289
- }
290
-
291
- /**
292
- * reset directory iteration
293
- *
294
- * @return bool
295
- */
296
- public function dir_rewinddir()
297
- {
298
- self::recordMethodCall('dir_rewinddir', $this->path);
299
- return parent::dir_rewinddir();
300
- }
301
-
302
- /**
303
- * closes directory
304
- *
305
- * @return bool
306
- */
307
- public function dir_closedir()
308
- {
309
- self::recordMethodCall('dir_closedir', $this->path);
310
- return parent::dir_closedir();
311
- }
312
-
313
- /**
314
- * returns status of url
315
- *
316
- * @param string $path path of url to return status for
317
- * @param int $flags flags set by the stream API
318
- * @return array
319
- */
320
- public function url_stat($path, $flags)
321
- {
322
- self::recordMethodCall('url_stat', $path);
323
- return parent::url_stat($path, $flags);
324
- }
325
- }
326
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamAbstractContentTestCase.php DELETED
@@ -1,1054 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Helper class for the test.
13
- */
14
- class TestvfsStreamAbstractContent extends vfsStreamAbstractContent
15
- {
16
- /**
17
- * returns default permissions for concrete implementation
18
- *
19
- * @return int
20
- * @since 0.8.0
21
- */
22
- protected function getDefaultPermissions()
23
- {
24
- return 0777;
25
- }
26
-
27
- /**
28
- * returns size of content
29
- *
30
- * @return int
31
- */
32
- public function size()
33
- {
34
- return 0;
35
- }
36
- }
37
- /**
38
- * Test for org\bovigo\vfs\vfsStreamAbstractContent.
39
- */
40
- class vfsStreamAbstractContentTestCase extends \PHPUnit_Framework_TestCase
41
- {
42
- /**
43
- * @test
44
- * @group permissions
45
- * @group bug_15
46
- */
47
- public function noPermissionsForEveryone()
48
- {
49
- $abstractContent = new TestvfsStreamAbstractContent('foo', 0000);
50
- $this->assertFalse($abstractContent->isReadable(vfsStream::getCurrentUser(),
51
- vfsStream::getCurrentGroup()
52
- )
53
- );
54
- $this->assertFalse($abstractContent->isReadable(-1,
55
- vfsStream::getCurrentGroup()
56
- )
57
- );
58
- $this->assertFalse($abstractContent->isReadable(-1,
59
- -1
60
- )
61
- );
62
- $this->assertFalse($abstractContent->isWritable(vfsStream::getCurrentUser(),
63
- vfsStream::getCurrentGroup()
64
- )
65
- );
66
- $this->assertFalse($abstractContent->isWritable(-1,
67
- vfsStream::getCurrentGroup()
68
- )
69
- );
70
- $this->assertFalse($abstractContent->isWritable(-1,
71
- -1
72
- )
73
- );
74
- $this->assertFalse($abstractContent->isExecutable(vfsStream::getCurrentUser(),
75
- vfsStream::getCurrentGroup()
76
- )
77
- );
78
- $this->assertFalse($abstractContent->isExecutable(-1,
79
- vfsStream::getCurrentGroup()
80
- )
81
- );
82
- $this->assertFalse($abstractContent->isExecutable(-1,
83
- -1
84
- )
85
- );
86
- }
87
-
88
- /**
89
- * @test
90
- * @group permissions
91
- * @group bug_15
92
- */
93
- public function executePermissionsForUser()
94
- {
95
- $abstractContent = new TestvfsStreamAbstractContent('foo', 0100);
96
- $this->assertFalse($abstractContent->isReadable(vfsStream::getCurrentUser(),
97
- vfsStream::getCurrentGroup()
98
- )
99
- );
100
- $this->assertFalse($abstractContent->isReadable(-1,
101
- vfsStream::getCurrentGroup()
102
- )
103
- );
104
- $this->assertFalse($abstractContent->isReadable(-1,
105
- -1
106
- )
107
- );
108
- $this->assertFalse($abstractContent->isWritable(vfsStream::getCurrentUser(),
109
- vfsStream::getCurrentGroup()
110
- )
111
- );
112
- $this->assertFalse($abstractContent->isWritable(-1,
113
- vfsStream::getCurrentGroup()
114
- )
115
- );
116
- $this->assertFalse($abstractContent->isWritable(-1,
117
- -1
118
- )
119
- );
120
- $this->assertTrue($abstractContent->isExecutable(vfsStream::getCurrentUser(),
121
- vfsStream::getCurrentGroup()
122
- )
123
- );
124
- $this->assertFalse($abstractContent->isExecutable(-1,
125
- vfsStream::getCurrentGroup()
126
- )
127
- );
128
- $this->assertFalse($abstractContent->isExecutable(-1,
129
- -1
130
- )
131
- );
132
- }
133
-
134
- /**
135
- * @test
136
- * @group permissions
137
- * @group bug_15
138
- */
139
- public function executePermissionsForGroup()
140
- {
141
- $abstractContent = new TestvfsStreamAbstractContent('foo', 0010);
142
- $this->assertFalse($abstractContent->isReadable(vfsStream::getCurrentUser(),
143
- vfsStream::getCurrentGroup()
144
- )
145
- );
146
- $this->assertFalse($abstractContent->isReadable(-1,
147
- vfsStream::getCurrentGroup()
148
- )
149
- );
150
- $this->assertFalse($abstractContent->isReadable(-1,
151
- -1
152
- )
153
- );
154
- $this->assertFalse($abstractContent->isWritable(vfsStream::getCurrentUser(),
155
- vfsStream::getCurrentGroup()
156
- )
157
- );
158
- $this->assertFalse($abstractContent->isWritable(-1,
159
- vfsStream::getCurrentGroup()
160
- )
161
- );
162
- $this->assertFalse($abstractContent->isWritable(-1,
163
- -1
164
- )
165
- );
166
- $this->assertFalse($abstractContent->isExecutable(vfsStream::getCurrentUser(),
167
- vfsStream::getCurrentGroup()
168
- )
169
- );
170
- $this->assertTrue($abstractContent->isExecutable(-1,
171
- vfsStream::getCurrentGroup()
172
- )
173
- );
174
- $this->assertFalse($abstractContent->isExecutable(-1,
175
- -1
176
- )
177
- );
178
- }
179
-
180
- /**
181
- * @test
182
- * @group permissions
183
- * @group bug_15
184
- */
185
- public function executePermissionsForOther()
186
- {
187
- $abstractContent = new TestvfsStreamAbstractContent('foo', 0001);
188
- $this->assertFalse($abstractContent->isReadable(vfsStream::getCurrentUser(),
189
- vfsStream::getCurrentGroup()
190
- )
191
- );
192
- $this->assertFalse($abstractContent->isReadable(-1,
193
- vfsStream::getCurrentGroup()
194
- )
195
- );
196
- $this->assertFalse($abstractContent->isReadable(-1,
197
- -1
198
- )
199
- );
200
- $this->assertFalse($abstractContent->isWritable(vfsStream::getCurrentUser(),
201
- vfsStream::getCurrentGroup()
202
- )
203
- );
204
- $this->assertFalse($abstractContent->isWritable(-1,
205
- vfsStream::getCurrentGroup()
206
- )
207
- );
208
- $this->assertFalse($abstractContent->isWritable(-1,
209
- -1
210
- )
211
- );
212
- $this->assertFalse($abstractContent->isExecutable(vfsStream::getCurrentUser(),
213
- vfsStream::getCurrentGroup()
214
- )
215
- );
216
- $this->assertFalse($abstractContent->isExecutable(-1,
217
- vfsStream::getCurrentGroup()
218
- )
219
- );
220
- $this->assertTrue($abstractContent->isExecutable(-1,
221
- -1
222
- )
223
- );
224
- }
225
-
226
- /**
227
- * @test
228
- * @group permissions
229
- * @group bug_15
230
- */
231
- public function writePermissionsForUser()
232
- {
233
- $abstractContent = new TestvfsStreamAbstractContent('foo', 0200);
234
- $this->assertFalse($abstractContent->isReadable(vfsStream::getCurrentUser(),
235
- vfsStream::getCurrentGroup()
236
- )
237
- );
238
- $this->assertFalse($abstractContent->isReadable(-1,
239
- vfsStream::getCurrentGroup()
240
- )
241
- );
242
- $this->assertFalse($abstractContent->isReadable(-1,
243
- -1
244
- )
245
- );
246
- $this->assertTrue($abstractContent->isWritable(vfsStream::getCurrentUser(),
247
- vfsStream::getCurrentGroup()
248
- )
249
- );
250
- $this->assertFalse($abstractContent->isWritable(-1,
251
- vfsStream::getCurrentGroup()
252
- )
253
- );
254
- $this->assertFalse($abstractContent->isWritable(-1,
255
- -1
256
- )
257
- );
258
- $this->assertFalse($abstractContent->isExecutable(vfsStream::getCurrentUser(),
259
- vfsStream::getCurrentGroup()
260
- )
261
- );
262
- $this->assertFalse($abstractContent->isExecutable(-1,
263
- vfsStream::getCurrentGroup()
264
- )
265
- );
266
- $this->assertFalse($abstractContent->isExecutable(-1,
267
- -1
268
- )
269
- );
270
- }
271
-
272
- /**
273
- * @test
274
- * @group permissions
275
- * @group bug_15
276
- */
277
- public function writePermissionsForGroup()
278
- {
279
- $abstractContent = new TestvfsStreamAbstractContent('foo', 0020);
280
- $this->assertFalse($abstractContent->isReadable(vfsStream::getCurrentUser(),
281
- vfsStream::getCurrentGroup()
282
- )
283
- );
284
- $this->assertFalse($abstractContent->isReadable(-1,
285
- vfsStream::getCurrentGroup()
286
- )
287
- );
288
- $this->assertFalse($abstractContent->isReadable(-1,
289
- -1
290
- )
291
- );
292
- $this->assertFalse($abstractContent->isWritable(vfsStream::getCurrentUser(),
293
- vfsStream::getCurrentGroup()
294
- )
295
- );
296
- $this->assertTrue($abstractContent->isWritable(-1,
297
- vfsStream::getCurrentGroup()
298
- )
299
- );
300
- $this->assertFalse($abstractContent->isWritable(-1,
301
- -1
302
- )
303
- );
304
- $this->assertFalse($abstractContent->isExecutable(vfsStream::getCurrentUser(),
305
- vfsStream::getCurrentGroup()
306
- )
307
- );
308
- $this->assertFalse($abstractContent->isExecutable(-1,
309
- vfsStream::getCurrentGroup()
310
- )
311
- );
312
- $this->assertFalse($abstractContent->isExecutable(-1,
313
- -1
314
- )
315
- );
316
- }
317
-
318
- /**
319
- * @test
320
- * @group permissions
321
- * @group bug_15
322
- */
323
- public function writePermissionsForOther()
324
- {
325
- $abstractContent = new TestvfsStreamAbstractContent('foo', 0002);
326
- $this->assertFalse($abstractContent->isReadable(vfsStream::getCurrentUser(),
327
- vfsStream::getCurrentGroup()
328
- )
329
- );
330
- $this->assertFalse($abstractContent->isReadable(-1,
331
- vfsStream::getCurrentGroup()
332
- )
333
- );
334
- $this->assertFalse($abstractContent->isReadable(-1,
335
- -1
336
- )
337
- );
338
- $this->assertFalse($abstractContent->isWritable(vfsStream::getCurrentUser(),
339
- vfsStream::getCurrentGroup()
340
- )
341
- );
342
- $this->assertFalse($abstractContent->isWritable(-1,
343
- vfsStream::getCurrentGroup()
344
- )
345
- );
346
- $this->assertTrue($abstractContent->isWritable(-1,
347
- -1
348
- )
349
- );
350
- $this->assertFalse($abstractContent->isExecutable(vfsStream::getCurrentUser(),
351
- vfsStream::getCurrentGroup()
352
- )
353
- );
354
- $this->assertFalse($abstractContent->isExecutable(-1,
355
- vfsStream::getCurrentGroup()
356
- )
357
- );
358
- $this->assertFalse($abstractContent->isExecutable(-1,
359
- -1
360
- )
361
- );
362
- }
363
-
364
- /**
365
- * @test
366
- * @group permissions
367
- * @group bug_15
368
- */
369
- public function executeAndWritePermissionsForUser()
370
- {
371
- $abstractContent = new TestvfsStreamAbstractContent('foo', 0300);
372
- $this->assertFalse($abstractContent->isReadable(vfsStream::getCurrentUser(),
373
- vfsStream::getCurrentGroup()
374
- )
375
- );
376
- $this->assertFalse($abstractContent->isReadable(-1,
377
- vfsStream::getCurrentGroup()
378
- )
379
- );
380
- $this->assertFalse($abstractContent->isReadable(-1,
381
- -1
382
- )
383
- );
384
- $this->assertTrue($abstractContent->isWritable(vfsStream::getCurrentUser(),
385
- vfsStream::getCurrentGroup()
386
- )
387
- );
388
- $this->assertFalse($abstractContent->isWritable(-1,
389
- vfsStream::getCurrentGroup()
390
- )
391
- );
392
- $this->assertFalse($abstractContent->isWritable(-1,
393
- -1
394
- )
395
- );
396
- $this->assertTrue($abstractContent->isExecutable(vfsStream::getCurrentUser(),
397
- vfsStream::getCurrentGroup()
398
- )
399
- );
400
- $this->assertFalse($abstractContent->isExecutable(-1,
401
- vfsStream::getCurrentGroup()
402
- )
403
- );
404
- $this->assertFalse($abstractContent->isExecutable(-1,
405
- -1
406
- )
407
- );
408
- }
409
-
410
- /**
411
- * @test
412
- * @group permissions
413
- * @group bug_15
414
- */
415
- public function executeAndWritePermissionsForGroup()
416
- {
417
- $abstractContent = new TestvfsStreamAbstractContent('foo', 0030);
418
- $this->assertFalse($abstractContent->isReadable(vfsStream::getCurrentUser(),
419
- vfsStream::getCurrentGroup()
420
- )
421
- );
422
- $this->assertFalse($abstractContent->isReadable(-1,
423
- vfsStream::getCurrentGroup()
424
- )
425
- );
426
- $this->assertFalse($abstractContent->isReadable(-1,
427
- -1
428
- )
429
- );
430
- $this->assertFalse($abstractContent->isWritable(vfsStream::getCurrentUser(),
431
- vfsStream::getCurrentGroup()
432
- )
433
- );
434
- $this->assertTrue($abstractContent->isWritable(-1,
435
- vfsStream::getCurrentGroup()
436
- )
437
- );
438
- $this->assertFalse($abstractContent->isWritable(-1,
439
- -1
440
- )
441
- );
442
- $this->assertFalse($abstractContent->isExecutable(vfsStream::getCurrentUser(),
443
- vfsStream::getCurrentGroup()
444
- )
445
- );
446
- $this->assertTrue($abstractContent->isExecutable(-1,
447
- vfsStream::getCurrentGroup()
448
- )
449
- );
450
- $this->assertFalse($abstractContent->isExecutable(-1,
451
- -1
452
- )
453
- );
454
- }
455
-
456
- /**
457
- * @test
458
- * @group permissions
459
- * @group bug_15
460
- */
461
- public function executeAndWritePermissionsForOther()
462
- {
463
- $abstractContent = new TestvfsStreamAbstractContent('foo', 0003);
464
- $this->assertFalse($abstractContent->isReadable(vfsStream::getCurrentUser(),
465
- vfsStream::getCurrentGroup()
466
- )
467
- );
468
- $this->assertFalse($abstractContent->isReadable(-1,
469
- vfsStream::getCurrentGroup()
470
- )
471
- );
472
- $this->assertFalse($abstractContent->isReadable(-1,
473
- -1
474
- )
475
- );
476
- $this->assertFalse($abstractContent->isWritable(vfsStream::getCurrentUser(),
477
- vfsStream::getCurrentGroup()
478
- )
479
- );
480
- $this->assertFalse($abstractContent->isWritable(-1,
481
- vfsStream::getCurrentGroup()
482
- )
483
- );
484
- $this->assertTrue($abstractContent->isWritable(-1,
485
- -1
486
- )
487
- );
488
- $this->assertFalse($abstractContent->isExecutable(vfsStream::getCurrentUser(),
489
- vfsStream::getCurrentGroup()
490
- )
491
- );
492
- $this->assertFalse($abstractContent->isExecutable(-1,
493
- vfsStream::getCurrentGroup()
494
- )
495
- );
496
- $this->assertTrue($abstractContent->isExecutable(-1,
497
- -1
498
- )
499
- );
500
- }
501
-
502
- /**
503
- * @test
504
- * @group permissions
505
- * @group bug_15
506
- */
507
- public function readPermissionsForUser()
508
- {
509
- $abstractContent = new TestvfsStreamAbstractContent('foo', 0400);
510
- $this->assertTrue($abstractContent->isReadable(vfsStream::getCurrentUser(),
511
- vfsStream::getCurrentGroup()
512
- )
513
- );
514
- $this->assertFalse($abstractContent->isReadable(-1,
515
- vfsStream::getCurrentGroup()
516
- )
517
- );
518
- $this->assertFalse($abstractContent->isReadable(-1,
519
- -1
520
- )
521
- );
522
- $this->assertFalse($abstractContent->isWritable(vfsStream::getCurrentUser(),
523
- vfsStream::getCurrentGroup()
524
- )
525
- );
526
- $this->assertFalse($abstractContent->isWritable(-1,
527
- vfsStream::getCurrentGroup()
528
- )
529
- );
530
- $this->assertFalse($abstractContent->isWritable(-1,
531
- -1
532
- )
533
- );
534
- $this->assertFalse($abstractContent->isExecutable(vfsStream::getCurrentUser(),
535
- vfsStream::getCurrentGroup()
536
- )
537
- );
538
- $this->assertFalse($abstractContent->isExecutable(-1,
539
- vfsStream::getCurrentGroup()
540
- )
541
- );
542
- $this->assertFalse($abstractContent->isExecutable(-1,
543
- -1
544
- )
545
- );
546
- }
547
-
548
- /**
549
- * @test
550
- * @group permissions
551
- * @group bug_15
552
- */
553
- public function readPermissionsForGroup()
554
- {
555
- $abstractContent = new TestvfsStreamAbstractContent('foo', 0040);
556
- $this->assertFalse($abstractContent->isReadable(vfsStream::getCurrentUser(),
557
- vfsStream::getCurrentGroup()
558
- )
559
- );
560
- $this->assertTrue($abstractContent->isReadable(-1,
561
- vfsStream::getCurrentGroup()
562
- )
563
- );
564
- $this->assertFalse($abstractContent->isReadable(-1,
565
- -1
566
- )
567
- );
568
- $this->assertFalse($abstractContent->isWritable(vfsStream::getCurrentUser(),
569
- vfsStream::getCurrentGroup()
570
- )
571
- );
572
- $this->assertFalse($abstractContent->isWritable(-1,
573
- vfsStream::getCurrentGroup()
574
- )
575
- );
576
- $this->assertFalse($abstractContent->isWritable(-1,
577
- -1
578
- )
579
- );
580
- $this->assertFalse($abstractContent->isExecutable(vfsStream::getCurrentUser(),
581
- vfsStream::getCurrentGroup()
582
- )
583
- );
584
- $this->assertFalse($abstractContent->isExecutable(-1,
585
- vfsStream::getCurrentGroup()
586
- )
587
- );
588
- $this->assertFalse($abstractContent->isExecutable(-1,
589
- -1
590
- )
591
- );
592
- }
593
-
594
- /**
595
- * @test
596
- * @group permissions
597
- * @group bug_15
598
- */
599
- public function readPermissionsForOther()
600
- {
601
- $abstractContent = new TestvfsStreamAbstractContent('foo', 0004);
602
- $this->assertFalse($abstractContent->isReadable(vfsStream::getCurrentUser(),
603
- vfsStream::getCurrentGroup()
604
- )
605
- );
606
- $this->assertFalse($abstractContent->isReadable(-1,
607
- vfsStream::getCurrentGroup()
608
- )
609
- );
610
- $this->assertTrue($abstractContent->isReadable(-1,
611
- -1
612
- )
613
- );
614
- $this->assertFalse($abstractContent->isWritable(vfsStream::getCurrentUser(),
615
- vfsStream::getCurrentGroup()
616
- )
617
- );
618
- $this->assertFalse($abstractContent->isWritable(-1,
619
- vfsStream::getCurrentGroup()
620
- )
621
- );
622
- $this->assertFalse($abstractContent->isWritable(-1,
623
- -1
624
- )
625
- );
626
- $this->assertFalse($abstractContent->isExecutable(vfsStream::getCurrentUser(),
627
- vfsStream::getCurrentGroup()
628
- )
629
- );
630
- $this->assertFalse($abstractContent->isExecutable(-1,
631
- vfsStream::getCurrentGroup()
632
- )
633
- );
634
- $this->assertFalse($abstractContent->isExecutable(-1,
635
- -1
636
- )
637
- );
638
- }
639
-
640
- /**
641
- * @test
642
- * @group permissions
643
- * @group bug_15
644
- */
645
- public function readAndExecutePermissionsForUser()
646
- {
647
- $abstractContent = new TestvfsStreamAbstractContent('foo', 0500);
648
- $this->assertTrue($abstractContent->isReadable(vfsStream::getCurrentUser(),
649
- vfsStream::getCurrentGroup()
650
- )
651
- );
652
- $this->assertFalse($abstractContent->isReadable(-1,
653
- vfsStream::getCurrentGroup()
654
- )
655
- );
656
- $this->assertFalse($abstractContent->isReadable(-1,
657
- -1
658
- )
659
- );
660
- $this->assertFalse($abstractContent->isWritable(vfsStream::getCurrentUser(),
661
- vfsStream::getCurrentGroup()
662
- )
663
- );
664
- $this->assertFalse($abstractContent->isWritable(-1,
665
- vfsStream::getCurrentGroup()
666
- )
667
- );
668
- $this->assertFalse($abstractContent->isWritable(-1,
669
- -1
670
- )
671
- );
672
- $this->assertTrue($abstractContent->isExecutable(vfsStream::getCurrentUser(),
673
- vfsStream::getCurrentGroup()
674
- )
675
- );
676
- $this->assertFalse($abstractContent->isExecutable(-1,
677
- vfsStream::getCurrentGroup()
678
- )
679
- );
680
- $this->assertFalse($abstractContent->isExecutable(-1,
681
- -1
682
- )
683
- );
684
- }
685
-
686
- /**
687
- * @test
688
- * @group permissions
689
- * @group bug_15
690
- */
691
- public function readAndExecutePermissionsForGroup()
692
- {
693
- $abstractContent = new TestvfsStreamAbstractContent('foo', 0050);
694
- $this->assertFalse($abstractContent->isReadable(vfsStream::getCurrentUser(),
695
- vfsStream::getCurrentGroup()
696
- )
697
- );
698
- $this->assertTrue($abstractContent->isReadable(-1,
699
- vfsStream::getCurrentGroup()
700
- )
701
- );
702
- $this->assertFalse($abstractContent->isReadable(-1,
703
- -1
704
- )
705
- );
706
- $this->assertFalse($abstractContent->isWritable(vfsStream::getCurrentUser(),
707
- vfsStream::getCurrentGroup()
708
- )
709
- );
710
- $this->assertFalse($abstractContent->isWritable(-1,
711
- vfsStream::getCurrentGroup()
712
- )
713
- );
714
- $this->assertFalse($abstractContent->isWritable(-1,
715
- -1
716
- )
717
- );
718
- $this->assertFalse($abstractContent->isExecutable(vfsStream::getCurrentUser(),
719
- vfsStream::getCurrentGroup()
720
- )
721
- );
722
- $this->assertTrue($abstractContent->isExecutable(-1,
723
- vfsStream::getCurrentGroup()
724
- )
725
- );
726
- $this->assertFalse($abstractContent->isExecutable(-1,
727
- -1
728
- )
729
- );
730
- }
731
-
732
- /**
733
- * @test
734
- * @group permissions
735
- * @group bug_15
736
- */
737
- public function readAndExecutePermissionsForOther()
738
- {
739
- $abstractContent = new TestvfsStreamAbstractContent('foo', 0005);
740
- $this->assertFalse($abstractContent->isReadable(vfsStream::getCurrentUser(),
741
- vfsStream::getCurrentGroup()
742
- )
743
- );
744
- $this->assertFalse($abstractContent->isReadable(-1,
745
- vfsStream::getCurrentGroup()
746
- )
747
- );
748
- $this->assertTrue($abstractContent->isReadable(-1,
749
- -1
750
- )
751
- );
752
- $this->assertFalse($abstractContent->isWritable(vfsStream::getCurrentUser(),
753
- vfsStream::getCurrentGroup()
754
- )
755
- );
756
- $this->assertFalse($abstractContent->isWritable(-1,
757
- vfsStream::getCurrentGroup()
758
- )
759
- );
760
- $this->assertFalse($abstractContent->isWritable(-1,
761
- -1
762
- )
763
- );
764
- $this->assertFalse($abstractContent->isExecutable(vfsStream::getCurrentUser(),
765
- vfsStream::getCurrentGroup()
766
- )
767
- );
768
- $this->assertFalse($abstractContent->isExecutable(-1,
769
- vfsStream::getCurrentGroup()
770
- )
771
- );
772
- $this->assertTrue($abstractContent->isExecutable(-1,
773
- -1
774
- )
775
- );
776
- }
777
-
778
- /**
779
- * @test
780
- * @group permissions
781
- * @group bug_15
782
- */
783
- public function readAndWritePermissionsForUser()
784
- {
785
- $abstractContent = new TestvfsStreamAbstractContent('foo', 0600);
786
- $this->assertTrue($abstractContent->isReadable(vfsStream::getCurrentUser(),
787
- vfsStream::getCurrentGroup()
788
- )
789
- );
790
- $this->assertFalse($abstractContent->isReadable(-1,
791
- vfsStream::getCurrentGroup()
792
- )
793
- );
794
- $this->assertFalse($abstractContent->isReadable(-1,
795
- -1
796
- )
797
- );
798
- $this->assertTrue($abstractContent->isWritable(vfsStream::getCurrentUser(),
799
- vfsStream::getCurrentGroup()
800
- )
801
- );
802
- $this->assertFalse($abstractContent->isWritable(-1,
803
- vfsStream::getCurrentGroup()
804
- )
805
- );
806
- $this->assertFalse($abstractContent->isWritable(-1,
807
- -1
808
- )
809
- );
810
- $this->assertFalse($abstractContent->isExecutable(vfsStream::getCurrentUser(),
811
- vfsStream::getCurrentGroup()
812
- )
813
- );
814
- $this->assertFalse($abstractContent->isExecutable(-1,
815
- vfsStream::getCurrentGroup()
816
- )
817
- );
818
- $this->assertFalse($abstractContent->isExecutable(-1,
819
- -1
820
- )
821
- );
822
- }
823
-
824
- /**
825
- * @test
826
- * @group permissions
827
- * @group bug_15
828
- */
829
- public function readAndWritePermissionsForGroup()
830
- {
831
- $abstractContent = new TestvfsStreamAbstractContent('foo', 0060);
832
- $this->assertFalse($abstractContent->isReadable(vfsStream::getCurrentUser(),
833
- vfsStream::getCurrentGroup()
834
- )
835
- );
836
- $this->assertTrue($abstractContent->isReadable(-1,
837
- vfsStream::getCurrentGroup()
838
- )
839
- );
840
- $this->assertFalse($abstractContent->isReadable(-1,
841
- -1
842
- )
843
- );
844
- $this->assertFalse($abstractContent->isWritable(vfsStream::getCurrentUser(),
845
- vfsStream::getCurrentGroup()
846
- )
847
- );
848
- $this->assertTrue($abstractContent->isWritable(-1,
849
- vfsStream::getCurrentGroup()
850
- )
851
- );
852
- $this->assertFalse($abstractContent->isWritable(-1,
853
- -1
854
- )
855
- );
856
- $this->assertFalse($abstractContent->isExecutable(vfsStream::getCurrentUser(),
857
- vfsStream::getCurrentGroup()
858
- )
859
- );
860
- $this->assertFalse($abstractContent->isExecutable(-1,
861
- vfsStream::getCurrentGroup()
862
- )
863
- );
864
- $this->assertFalse($abstractContent->isExecutable(-1,
865
- -1
866
- )
867
- );
868
- }
869
-
870
- /**
871
- * @test
872
- * @group permissions
873
- * @group bug_15
874
- */
875
- public function readAndWritePermissionsForOther()
876
- {
877
- $abstractContent = new TestvfsStreamAbstractContent('foo', 0006);
878
- $this->assertFalse($abstractContent->isReadable(vfsStream::getCurrentUser(),
879
- vfsStream::getCurrentGroup()
880
- )
881
- );
882
- $this->assertFalse($abstractContent->isReadable(-1,
883
- vfsStream::getCurrentGroup()
884
- )
885
- );
886
- $this->assertTrue($abstractContent->isReadable(-1,
887
- -1
888
- )
889
- );
890
- $this->assertFalse($abstractContent->isWritable(vfsStream::getCurrentUser(),
891
- vfsStream::getCurrentGroup()
892
- )
893
- );
894
- $this->assertFalse($abstractContent->isWritable(-1,
895
- vfsStream::getCurrentGroup()
896
- )
897
- );
898
- $this->assertTrue($abstractContent->isWritable(-1,
899
- -1
900
- )
901
- );
902
- $this->assertFalse($abstractContent->isExecutable(vfsStream::getCurrentUser(),
903
- vfsStream::getCurrentGroup()
904
- )
905
- );
906
- $this->assertFalse($abstractContent->isExecutable(-1,
907
- vfsStream::getCurrentGroup()
908
- )
909
- );
910
- $this->assertFalse($abstractContent->isExecutable(-1,
911
- -1
912
- )
913
- );
914
- }
915
-
916
- /**
917
- * @test
918
- * @group permissions
919
- * @group bug_15
920
- */
921
- public function allPermissionsForUser()
922
- {
923
- $abstractContent = new TestvfsStreamAbstractContent('foo', 0700);
924
- $this->assertTrue($abstractContent->isReadable(vfsStream::getCurrentUser(),
925
- vfsStream::getCurrentGroup()
926
- )
927
- );
928
- $this->assertFalse($abstractContent->isReadable(-1,
929
- vfsStream::getCurrentGroup()
930
- )
931
- );
932
- $this->assertFalse($abstractContent->isReadable(-1,
933
- -1
934
- )
935
- );
936
- $this->assertTrue($abstractContent->isWritable(vfsStream::getCurrentUser(),
937
- vfsStream::getCurrentGroup()
938
- )
939
- );
940
- $this->assertFalse($abstractContent->isWritable(-1,
941
- vfsStream::getCurrentGroup()
942
- )
943
- );
944
- $this->assertFalse($abstractContent->isWritable(-1,
945
- -1
946
- )
947
- );
948
- $this->assertTrue($abstractContent->isExecutable(vfsStream::getCurrentUser(),
949
- vfsStream::getCurrentGroup()
950
- )
951
- );
952
- $this->assertFalse($abstractContent->isExecutable(-1,
953
- vfsStream::getCurrentGroup()
954
- )
955
- );
956
- $this->assertFalse($abstractContent->isExecutable(-1,
957
- -1
958
- )
959
- );
960
- }
961
-
962
- /**
963
- * @test
964
- * @group permissions
965
- * @group bug_15
966
- */
967
- public function allPermissionsForGroup()
968
- {
969
- $abstractContent = new TestvfsStreamAbstractContent('foo', 0070);
970
- $this->assertFalse($abstractContent->isReadable(vfsStream::getCurrentUser(),
971
- vfsStream::getCurrentGroup()
972
- )
973
- );
974
- $this->assertTrue($abstractContent->isReadable(-1,
975
- vfsStream::getCurrentGroup()
976
- )
977
- );
978
- $this->assertFalse($abstractContent->isReadable(-1,
979
- -1
980
- )
981
- );
982
- $this->assertFalse($abstractContent->isWritable(vfsStream::getCurrentUser(),
983
- vfsStream::getCurrentGroup()
984
- )
985
- );
986
- $this->assertTrue($abstractContent->isWritable(-1,
987
- vfsStream::getCurrentGroup()
988
- )
989
- );
990
- $this->assertFalse($abstractContent->isWritable(-1,
991
- -1
992
- )
993
- );
994
- $this->assertFalse($abstractContent->isExecutable(vfsStream::getCurrentUser(),
995
- vfsStream::getCurrentGroup()
996
- )
997
- );
998
- $this->assertTrue($abstractContent->isExecutable(-1,
999
- vfsStream::getCurrentGroup()
1000
- )
1001
- );
1002
- $this->assertFalse($abstractContent->isExecutable(-1,
1003
- -1
1004
- )
1005
- );
1006
- }
1007
-
1008
- /**
1009
- * @test
1010
- * @group permissions
1011
- * @group bug_15
1012
- */
1013
- public function allPermissionsForOther()
1014
- {
1015
- $abstractContent = new TestvfsStreamAbstractContent('foo', 0007);
1016
- $this->assertFalse($abstractContent->isReadable(vfsStream::getCurrentUser(),
1017
- vfsStream::getCurrentGroup()
1018
- )
1019
- );
1020
- $this->assertFalse($abstractContent->isReadable(-1,
1021
- vfsStream::getCurrentGroup()
1022
- )
1023
- );
1024
- $this->assertTrue($abstractContent->isReadable(-1,
1025
- -1
1026
- )
1027
- );
1028
- $this->assertFalse($abstractContent->isWritable(vfsStream::getCurrentUser(),
1029
- vfsStream::getCurrentGroup()
1030
- )
1031
- );
1032
- $this->assertFalse($abstractContent->isWritable(-1,
1033
- vfsStream::getCurrentGroup()
1034
- )
1035
- );
1036
- $this->assertTrue($abstractContent->isWritable(-1,
1037
- -1
1038
- )
1039
- );
1040
- $this->assertFalse($abstractContent->isExecutable(vfsStream::getCurrentUser(),
1041
- vfsStream::getCurrentGroup()
1042
- )
1043
- );
1044
- $this->assertFalse($abstractContent->isExecutable(-1,
1045
- vfsStream::getCurrentGroup()
1046
- )
1047
- );
1048
- $this->assertTrue($abstractContent->isExecutable(-1,
1049
- -1
1050
- )
1051
- );
1052
- }
1053
- }
1054
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamBlockTestCase.php DELETED
@@ -1,89 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Test for org\bovigo\vfs\vfsStreamBlock.
13
- */
14
- class vfsStreamBlockTestCase extends \PHPUnit_Framework_TestCase
15
- {
16
- /**
17
- * The block device being tested.
18
- *
19
- * @var vfsStreamBlock $block
20
- */
21
- protected $block;
22
-
23
- public function setUp()
24
- {
25
- $this->block = new vfsStreamBlock('foo');
26
- }
27
-
28
- /**
29
- * test default values and methods
30
- *
31
- * @test
32
- */
33
- public function defaultValues()
34
- {
35
- $this->assertEquals(vfsStreamContent::TYPE_BLOCK, $this->block->getType());
36
- $this->assertEquals('foo', $this->block->getName());
37
- $this->assertTrue($this->block->appliesTo('foo'));
38
- $this->assertFalse($this->block->appliesTo('foo/bar'));
39
- $this->assertFalse($this->block->appliesTo('bar'));
40
- }
41
-
42
- /**
43
- * tests how external functions see this object
44
- *
45
- * @test
46
- */
47
- public function external()
48
- {
49
- $root = vfsStream::setup('root');
50
- $root->addChild(vfsStream::newBlock('foo'));
51
- $this->assertEquals('block', filetype(vfsStream::url('root/foo')));
52
- }
53
-
54
- /**
55
- * tests adding a complex structure
56
- *
57
- * @test
58
- */
59
- public function addStructure()
60
- {
61
- $structure = array(
62
- 'topLevel' => array(
63
- 'thisIsAFile' => 'file contents',
64
- '[blockDevice]' => 'block contents'
65
- )
66
- );
67
-
68
- $root = vfsStream::create($structure);
69
-
70
- $this->assertSame('block', filetype(vfsStream::url('root/topLevel/blockDevice')));
71
- }
72
-
73
- /**
74
- * tests that a blank name for a block device throws an exception
75
- * @test
76
- * @expectedException org\bovigo\vfs\vfsStreamException
77
- */
78
- public function createWithEmptyName()
79
- {
80
- $structure = array(
81
- 'topLevel' => array(
82
- 'thisIsAFile' => 'file contents',
83
- '[]' => 'block contents'
84
- )
85
- );
86
-
87
- $root = vfsStream::create($structure);
88
- }
89
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamContainerIteratorTestCase.php DELETED
@@ -1,112 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Test for org\bovigo\vfs\vfsStreamContainerIterator.
13
- */
14
- class vfsStreamContainerIteratorTestCase extends \PHPUnit_Framework_TestCase
15
- {
16
- /**
17
- * instance to test
18
- *
19
- * @type vfsStreamDirectory
20
- */
21
- private $dir;
22
- /**
23
- * child one
24
- *
25
- * @type \PHPUnit_Framework_MockObject_MockObject
26
- */
27
- private $mockChild1;
28
- /**
29
- * child two
30
- *
31
- * @type \PHPUnit_Framework_MockObject_MockObject
32
- */
33
- private $mockChild2;
34
-
35
- /**
36
- * set up test environment
37
- */
38
- public function setUp()
39
- {
40
- $this->dir = new vfsStreamDirectory('foo');
41
- $this->mockChild1 = $this->getMock('org\\bovigo\\vfs\\vfsStreamContent');
42
- $this->mockChild1->expects($this->any())
43
- ->method('getName')
44
- ->will($this->returnValue('bar'));
45
- $this->dir->addChild($this->mockChild1);
46
- $this->mockChild2 = $this->getMock('org\\bovigo\\vfs\\vfsStreamContent');
47
- $this->mockChild2->expects($this->any())
48
- ->method('getName')
49
- ->will($this->returnValue('baz'));
50
- $this->dir->addChild($this->mockChild2);
51
- }
52
-
53
- /**
54
- * clean up test environment
55
- */
56
- public function tearDown()
57
- {
58
- vfsStream::enableDotfiles();
59
- }
60
-
61
- /**
62
- * @return array
63
- */
64
- public function provideSwitchWithExpectations()
65
- {
66
- return array(array(function() { vfsStream::disableDotfiles(); },
67
- array()
68
- ),
69
- array(function() { vfsStream::enableDotfiles(); },
70
- array('.', '..')
71
- )
72
- );
73
- }
74
-
75
- private function getDirName($dir)
76
- {
77
- if (is_string($dir)) {
78
- return $dir;
79
- }
80
-
81
-
82
- return $dir->getName();
83
- }
84
-
85
- /**
86
- * @param \Closure $dotFilesSwitch
87
- * @param array $dirNames
88
- * @test
89
- * @dataProvider provideSwitchWithExpectations
90
- */
91
- public function iteration(\Closure $dotFilesSwitch, array $dirs)
92
- {
93
- $dirs[] = $this->mockChild1;
94
- $dirs[] = $this->mockChild2;
95
- $dotFilesSwitch();
96
- $dirIterator = $this->dir->getIterator();
97
- foreach ($dirs as $dir) {
98
- $this->assertEquals($this->getDirName($dir), $dirIterator->key());
99
- $this->assertTrue($dirIterator->valid());
100
- if (!is_string($dir)) {
101
- $this->assertSame($dir, $dirIterator->current());
102
- }
103
-
104
- $dirIterator->next();
105
- }
106
-
107
- $this->assertFalse($dirIterator->valid());
108
- $this->assertNull($dirIterator->key());
109
- $this->assertNull($dirIterator->current());
110
- }
111
- }
112
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamDirectoryIssue18TestCase.php DELETED
@@ -1,81 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Test for org\bovigo\vfs\vfsStreamDirectory.
13
- *
14
- * @group bug_18
15
- */
16
- class vfsStreamDirectoryIssue18TestCase extends \PHPUnit_Framework_TestCase
17
- {
18
- /**
19
- * access to root directory
20
- *
21
- * @var vfsStreamDirectory
22
- */
23
- protected $rootDirectory;
24
-
25
- /**
26
- * set up test environment
27
- */
28
- public function setUp()
29
- {
30
- $this->rootDirectory = vfsStream::newDirectory('/');
31
- $this->rootDirectory->addChild(vfsStream::newDirectory('var/log/app'));
32
- $dir = $this->rootDirectory->getChild('var/log/app');
33
- $dir->addChild(vfsStream::newDirectory('app1'));
34
- $dir->addChild(vfsStream::newDirectory('app2'));
35
- $dir->addChild(vfsStream::newDirectory('foo'));
36
- }
37
-
38
- /**
39
- * @test
40
- */
41
- public function shouldContainThreeSubdirectories()
42
- {
43
- $this->assertEquals(3,
44
- count($this->rootDirectory->getChild('var/log/app')->getChildren())
45
- );
46
- }
47
-
48
- /**
49
- * @test
50
- */
51
- public function shouldContainSubdirectoryFoo()
52
- {
53
- $this->assertTrue($this->rootDirectory->getChild('var/log/app')->hasChild('foo'));
54
- $this->assertInstanceOf('org\\bovigo\\vfs\\vfsStreamDirectory',
55
- $this->rootDirectory->getChild('var/log/app')->getChild('foo')
56
- );
57
- }
58
-
59
- /**
60
- * @test
61
- */
62
- public function shouldContainSubdirectoryApp1()
63
- {
64
- $this->assertTrue($this->rootDirectory->getChild('var/log/app')->hasChild('app1'));
65
- $this->assertInstanceOf('org\\bovigo\\vfs\\vfsStreamDirectory',
66
- $this->rootDirectory->getChild('var/log/app')->getChild('app1')
67
- );
68
- }
69
-
70
- /**
71
- * @test
72
- */
73
- public function shouldContainSubdirectoryApp2()
74
- {
75
- $this->assertTrue($this->rootDirectory->getChild('var/log/app')->hasChild('app2'));
76
- $this->assertInstanceOf('org\\bovigo\\vfs\\vfsStreamDirectory',
77
- $this->rootDirectory->getChild('var/log/app')->getChild('app2')
78
- );
79
- }
80
- }
81
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamDirectoryTestCase.php DELETED
@@ -1,335 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Test for org\bovigo\vfs\vfsStreamDirectory.
13
- */
14
- class vfsStreamDirectoryTestCase extends \PHPUnit_Framework_TestCase
15
- {
16
- /**
17
- * instance to test
18
- *
19
- * @var vfsStreamDirectory
20
- */
21
- protected $dir;
22
-
23
- /**
24
- * set up test environment
25
- */
26
- public function setUp()
27
- {
28
- $this->dir = new vfsStreamDirectory('foo');
29
- }
30
-
31
- /**
32
- * assure that a directory seperator inside the name throws an exception
33
- *
34
- * @test
35
- * @expectedException org\bovigo\vfs\vfsStreamException
36
- */
37
- public function invalidCharacterInName()
38
- {
39
- $dir = new vfsStreamDirectory('foo/bar');
40
- }
41
-
42
- /**
43
- * test default values and methods
44
- *
45
- * @test
46
- */
47
- public function defaultValues()
48
- {
49
- $this->assertEquals(vfsStreamContent::TYPE_DIR, $this->dir->getType());
50
- $this->assertEquals('foo', $this->dir->getName());
51
- $this->assertTrue($this->dir->appliesTo('foo'));
52
- $this->assertTrue($this->dir->appliesTo('foo/bar'));
53
- $this->assertFalse($this->dir->appliesTo('bar'));
54
- $this->assertEquals(array(), $this->dir->getChildren());
55
- }
56
-
57
- /**
58
- * test renaming the directory
59
- *
60
- * @test
61
- */
62
- public function rename()
63
- {
64
- $this->dir->rename('bar');
65
- $this->assertEquals('bar', $this->dir->getName());
66
- $this->assertFalse($this->dir->appliesTo('foo'));
67
- $this->assertFalse($this->dir->appliesTo('foo/bar'));
68
- $this->assertTrue($this->dir->appliesTo('bar'));
69
- }
70
-
71
- /**
72
- * renaming the directory to an invalid name throws a vfsStreamException
73
- *
74
- * @test
75
- * @expectedException org\bovigo\vfs\vfsStreamException
76
- */
77
- public function renameToInvalidNameThrowsvfsStreamException()
78
- {
79
- $this->dir->rename('foo/baz');
80
- }
81
-
82
- /**
83
- * @test
84
- * @since 0.10.0
85
- */
86
- public function hasNoChildrenByDefault()
87
- {
88
- $this->assertFalse($this->dir->hasChildren());
89
- }
90
-
91
- /**
92
- * @test
93
- * @since 0.10.0
94
- */
95
- public function hasChildrenReturnsTrueIfAtLeastOneChildPresent()
96
- {
97
- $mockChild = $this->getMock('org\\bovigo\\vfs\\vfsStreamContent');
98
- $mockChild->expects($this->any())
99
- ->method('appliesTo')
100
- ->will($this->returnValue(false));
101
- $mockChild->expects($this->any())
102
- ->method('getName')
103
- ->will($this->returnValue('baz'));
104
- $this->dir->addChild($mockChild);
105
- $this->assertTrue($this->dir->hasChildren());
106
- }
107
-
108
- /**
109
- * @test
110
- */
111
- public function hasChildReturnsFalseForNonExistingChild()
112
- {
113
- $this->assertFalse($this->dir->hasChild('bar'));
114
- }
115
-
116
- /**
117
- * @test
118
- */
119
- public function getChildReturnsNullForNonExistingChild()
120
- {
121
- $this->assertNull($this->dir->getChild('bar'));
122
- }
123
-
124
- /**
125
- * @test
126
- */
127
- public function removeChildReturnsFalseForNonExistingChild()
128
- {
129
- $this->assertFalse($this->dir->removeChild('bar'));
130
- }
131
-
132
- /**
133
- * @test
134
- */
135
- public function nonExistingChild()
136
- {
137
- $mockChild = $this->getMock('org\\bovigo\\vfs\\vfsStreamContent');
138
- $mockChild->expects($this->any())
139
- ->method('appliesTo')
140
- ->will($this->returnValue(false));
141
- $mockChild->expects($this->any())
142
- ->method('getName')
143
- ->will($this->returnValue('baz'));
144
- $this->dir->addChild($mockChild);
145
- $this->assertFalse($this->dir->removeChild('bar'));
146
- }
147
-
148
- /**
149
- * test that adding, handling and removing of a child works as expected
150
- *
151
- * @test
152
- */
153
- public function childHandling()
154
- {
155
- $mockChild = $this->getMock('org\\bovigo\\vfs\\vfsStreamContent');
156
- $mockChild->expects($this->any())
157
- ->method('getType')
158
- ->will($this->returnValue(vfsStreamContent::TYPE_FILE));
159
- $mockChild->expects($this->any())
160
- ->method('getName')
161
- ->will($this->returnValue('bar'));
162
- $mockChild->expects($this->any())
163
- ->method('appliesTo')
164
- ->with($this->equalTo('bar'))
165
- ->will($this->returnValue(true));
166
- $mockChild->expects($this->once())
167
- ->method('size')
168
- ->will($this->returnValue(5));
169
- $this->dir->addChild($mockChild);
170
- $this->assertTrue($this->dir->hasChild('bar'));
171
- $bar = $this->dir->getChild('bar');
172
- $this->assertSame($mockChild, $bar);
173
- $this->assertEquals(array($mockChild), $this->dir->getChildren());
174
- $this->assertEquals(0, $this->dir->size());
175
- $this->assertEquals(5, $this->dir->sizeSummarized());
176
- $this->assertTrue($this->dir->removeChild('bar'));
177
- $this->assertEquals(array(), $this->dir->getChildren());
178
- $this->assertEquals(0, $this->dir->size());
179
- $this->assertEquals(0, $this->dir->sizeSummarized());
180
- }
181
-
182
- /**
183
- * test that adding, handling and removing of a child works as expected
184
- *
185
- * @test
186
- */
187
- public function childHandlingWithSubdirectory()
188
- {
189
- $mockChild = $this->getMock('org\\bovigo\\vfs\\vfsStreamContent');
190
- $mockChild->expects($this->any())
191
- ->method('getType')
192
- ->will($this->returnValue(vfsStreamContent::TYPE_FILE));
193
- $mockChild->expects($this->any())
194
- ->method('getName')
195
- ->will($this->returnValue('bar'));
196
- $mockChild->expects($this->once())
197
- ->method('size')
198
- ->will($this->returnValue(5));
199
- $subdir = new vfsStreamDirectory('subdir');
200
- $subdir->addChild($mockChild);
201
- $this->dir->addChild($subdir);
202
- $this->assertTrue($this->dir->hasChild('subdir'));
203
- $this->assertSame($subdir, $this->dir->getChild('subdir'));
204
- $this->assertEquals(array($subdir), $this->dir->getChildren());
205
- $this->assertEquals(0, $this->dir->size());
206
- $this->assertEquals(5, $this->dir->sizeSummarized());
207
- $this->assertTrue($this->dir->removeChild('subdir'));
208
- $this->assertEquals(array(), $this->dir->getChildren());
209
- $this->assertEquals(0, $this->dir->size());
210
- $this->assertEquals(0, $this->dir->sizeSummarized());
211
- }
212
-
213
- /**
214
- * dd
215
- *
216
- * @test
217
- * @group regression
218
- * @group bug_5
219
- */
220
- public function addChildReplacesChildWithSameName_Bug_5()
221
- {
222
- $mockChild1 = $this->getMock('org\\bovigo\\vfs\\vfsStreamContent');
223
- $mockChild1->expects($this->any())
224
- ->method('getType')
225
- ->will($this->returnValue(vfsStreamContent::TYPE_FILE));
226
- $mockChild1->expects($this->any())
227
- ->method('getName')
228
- ->will($this->returnValue('bar'));
229
- $mockChild2 = $this->getMock('org\\bovigo\\vfs\\vfsStreamContent');
230
- $mockChild2->expects($this->any())
231
- ->method('getType')
232
- ->will($this->returnValue(vfsStreamContent::TYPE_FILE));
233
- $mockChild2->expects($this->any())
234
- ->method('getName')
235
- ->will($this->returnValue('bar'));
236
- $this->dir->addChild($mockChild1);
237
- $this->assertTrue($this->dir->hasChild('bar'));
238
- $this->assertSame($mockChild1, $this->dir->getChild('bar'));
239
- $this->dir->addChild($mockChild2);
240
- $this->assertTrue($this->dir->hasChild('bar'));
241
- $this->assertSame($mockChild2, $this->dir->getChild('bar'));
242
- }
243
-
244
- /**
245
- * When testing for a nested path, verify that directory separators are respected properly
246
- * so that subdir1/subdir2 is not considered equal to subdir1Xsubdir2.
247
- *
248
- * @test
249
- * @group bug_24
250
- * @group regression
251
- */
252
- public function explicitTestForSeparatorWithNestedPaths_Bug_24()
253
- {
254
- $mockChild = $this->getMock('org\\bovigo\\vfs\\vfsStreamContent');
255
- $mockChild->expects($this->any())
256
- ->method('getType')
257
- ->will($this->returnValue(vfsStreamContent::TYPE_FILE));
258
- $mockChild->expects($this->any())
259
- ->method('getName')
260
- ->will($this->returnValue('bar'));
261
-
262
- $subdir1 = new vfsStreamDirectory('subdir1');
263
- $this->dir->addChild($subdir1);
264
-
265
- $subdir2 = new vfsStreamDirectory('subdir2');
266
- $subdir1->addChild($subdir2);
267
-
268
- $subdir2->addChild($mockChild);
269
-
270
- $this->assertTrue($this->dir->hasChild('subdir1'), "Level 1 path with separator exists");
271
- $this->assertTrue($this->dir->hasChild('subdir1/subdir2'), "Level 2 path with separator exists");
272
- $this->assertTrue($this->dir->hasChild('subdir1/subdir2/bar'), "Level 3 path with separator exists");
273
- $this->assertFalse($this->dir->hasChild('subdir1.subdir2'), "Path with period does not exist");
274
- $this->assertFalse($this->dir->hasChild('subdir1.subdir2/bar'), "Nested path with period does not exist");
275
- }
276
-
277
-
278
- /**
279
- * setting and retrieving permissions for a directory
280
- *
281
- * @test
282
- * @group permissions
283
- */
284
- public function permissions()
285
- {
286
- $this->assertEquals(0777, $this->dir->getPermissions());
287
- $this->assertSame($this->dir, $this->dir->chmod(0755));
288
- $this->assertEquals(0755, $this->dir->getPermissions());
289
- }
290
-
291
- /**
292
- * setting and retrieving permissions for a directory
293
- *
294
- * @test
295
- * @group permissions
296
- */
297
- public function permissionsSet()
298
- {
299
- $this->dir = new vfsStreamDirectory('foo', 0755);
300
- $this->assertEquals(0755, $this->dir->getPermissions());
301
- $this->assertSame($this->dir, $this->dir->chmod(0700));
302
- $this->assertEquals(0700, $this->dir->getPermissions());
303
- }
304
-
305
- /**
306
- * setting and retrieving owner of a file
307
- *
308
- * @test
309
- * @group permissions
310
- */
311
- public function owner()
312
- {
313
- $this->assertEquals(vfsStream::getCurrentUser(), $this->dir->getUser());
314
- $this->assertTrue($this->dir->isOwnedByUser(vfsStream::getCurrentUser()));
315
- $this->assertSame($this->dir, $this->dir->chown(vfsStream::OWNER_USER_1));
316
- $this->assertEquals(vfsStream::OWNER_USER_1, $this->dir->getUser());
317
- $this->assertTrue($this->dir->isOwnedByUser(vfsStream::OWNER_USER_1));
318
- }
319
-
320
- /**
321
- * setting and retrieving owner group of a file
322
- *
323
- * @test
324
- * @group permissions
325
- */
326
- public function group()
327
- {
328
- $this->assertEquals(vfsStream::getCurrentGroup(), $this->dir->getGroup());
329
- $this->assertTrue($this->dir->isOwnedByGroup(vfsStream::getCurrentGroup()));
330
- $this->assertSame($this->dir, $this->dir->chgrp(vfsStream::GROUP_USER_1));
331
- $this->assertEquals(vfsStream::GROUP_USER_1, $this->dir->getGroup());
332
- $this->assertTrue($this->dir->isOwnedByGroup(vfsStream::GROUP_USER_1));
333
- }
334
- }
335
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamExLockTestCase.php DELETED
@@ -1,56 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Test for LOCK_EX behaviour related to file_put_contents().
13
- *
14
- * @group lock_fpc
15
- * @author https://github.com/iwyg
16
- */
17
- class vfsStreamExLockTestCase extends \PHPUnit_Framework_TestCase
18
- {
19
- /**
20
- * set up test environment
21
- */
22
- protected function setUp()
23
- {
24
- $root = vfsStream::setup();
25
- vfsStream::newFile('testfile')->at($root);
26
-
27
- }
28
-
29
- /**
30
- * This test verifies the current behaviour where vfsStream URLs do not work
31
- * with file_put_contents() and LOCK_EX. The test is intended to break once
32
- * PHP changes this so we get notified about the change.
33
- *
34
- * @test
35
- */
36
- public function filePutContentsLockShouldReportError()
37
- {
38
- @file_put_contents(vfsStream::url('root/testfile'), "some string\n", LOCK_EX);
39
- $php_error = error_get_last();
40
- $this->assertEquals("file_put_contents(): Exclusive locks may only be set for regular files", $php_error['message']);
41
- }
42
-
43
- /**
44
- * @test
45
- */
46
- public function flockSouldPass()
47
- {
48
- $fp = fopen(vfsStream::url('root/testfile'), 'w');
49
- flock($fp, LOCK_EX);
50
- fwrite($fp, "another string\n");
51
- flock($fp, LOCK_UN);
52
- fclose($fp);
53
- $this->assertEquals("another string\n", file_get_contents(vfsStream::url('root/testfile')));
54
- }
55
- }
56
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamFileTestCase.php DELETED
@@ -1,306 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Test for org\bovigo\vfs\vfsStreamFile.
13
- */
14
- class vfsStreamFileTestCase extends \PHPUnit_Framework_TestCase
15
- {
16
- /**
17
- * instance to test
18
- *
19
- * @var vfsStreamFile
20
- */
21
- protected $file;
22
-
23
- /**
24
- * set up test environment
25
- */
26
- public function setUp()
27
- {
28
- $this->file = new vfsStreamFile('foo');
29
- }
30
-
31
- /**
32
- * test default values and methods
33
- *
34
- * @test
35
- */
36
- public function defaultValues()
37
- {
38
- $this->assertEquals(vfsStreamContent::TYPE_FILE, $this->file->getType());
39
- $this->assertEquals('foo', $this->file->getName());
40
- $this->assertTrue($this->file->appliesTo('foo'));
41
- $this->assertFalse($this->file->appliesTo('foo/bar'));
42
- $this->assertFalse($this->file->appliesTo('bar'));
43
- }
44
-
45
- /**
46
- * test setting and getting the content of a file
47
- *
48
- * @test
49
- */
50
- public function content()
51
- {
52
- $this->assertNull($this->file->getContent());
53
- $this->assertSame($this->file, $this->file->setContent('bar'));
54
- $this->assertEquals('bar', $this->file->getContent());
55
- $this->assertSame($this->file, $this->file->withContent('baz'));
56
- $this->assertEquals('baz', $this->file->getContent());
57
- }
58
-
59
- /**
60
- * test renaming the directory
61
- *
62
- * @test
63
- */
64
- public function rename()
65
- {
66
- $this->file->rename('bar');
67
- $this->assertEquals('bar', $this->file->getName());
68
- $this->assertFalse($this->file->appliesTo('foo'));
69
- $this->assertFalse($this->file->appliesTo('foo/bar'));
70
- $this->assertTrue($this->file->appliesTo('bar'));
71
- }
72
-
73
- /**
74
- * test reading contents from the file
75
- *
76
- * @test
77
- */
78
- public function readEmptyFile()
79
- {
80
- $this->assertTrue($this->file->eof());
81
- $this->assertEquals(0, $this->file->size());
82
- $this->assertEquals('', $this->file->read(5));
83
- $this->assertEquals(5, $this->file->getBytesRead());
84
- $this->assertTrue($this->file->eof());
85
- }
86
-
87
- /**
88
- * test reading contents from the file
89
- *
90
- * @test
91
- */
92
- public function read()
93
- {
94
- $this->file->setContent('foobarbaz');
95
- $this->assertFalse($this->file->eof());
96
- $this->assertEquals(9, $this->file->size());
97
- $this->assertEquals('foo', $this->file->read(3));
98
- $this->assertEquals(3, $this->file->getBytesRead());
99
- $this->assertFalse($this->file->eof());
100
- $this->assertEquals(9, $this->file->size());
101
- $this->assertEquals('bar', $this->file->read(3));
102
- $this->assertEquals(6, $this->file->getBytesRead());
103
- $this->assertFalse($this->file->eof());
104
- $this->assertEquals(9, $this->file->size());
105
- $this->assertEquals('baz', $this->file->read(3));
106
- $this->assertEquals(9, $this->file->getBytesRead());
107
- $this->assertEquals(9, $this->file->size());
108
- $this->assertTrue($this->file->eof());
109
- $this->assertEquals('', $this->file->read(3));
110
- }
111
-
112
- /**
113
- * test seeking to offset
114
- *
115
- * @test
116
- */
117
- public function seekEmptyFile()
118
- {
119
- $this->assertFalse($this->file->seek(0, 55));
120
- $this->assertTrue($this->file->seek(0, SEEK_SET));
121
- $this->assertEquals(0, $this->file->getBytesRead());
122
- $this->assertTrue($this->file->seek(5, SEEK_SET));
123
- $this->assertEquals(5, $this->file->getBytesRead());
124
- $this->assertTrue($this->file->seek(0, SEEK_CUR));
125
- $this->assertEquals(5, $this->file->getBytesRead());
126
- $this->assertTrue($this->file->seek(2, SEEK_CUR));
127
- $this->assertEquals(7, $this->file->getBytesRead());
128
- $this->assertTrue($this->file->seek(0, SEEK_END));
129
- $this->assertEquals(0, $this->file->getBytesRead());
130
- $this->assertTrue($this->file->seek(2, SEEK_END));
131
- $this->assertEquals(2, $this->file->getBytesRead());
132
- }
133
-
134
- /**
135
- * test seeking to offset
136
- *
137
- * @test
138
- */
139
- public function seekRead()
140
- {
141
- $this->file->setContent('foobarbaz');
142
- $this->assertFalse($this->file->seek(0, 55));
143
- $this->assertTrue($this->file->seek(0, SEEK_SET));
144
- $this->assertEquals('foobarbaz', $this->file->readUntilEnd());
145
- $this->assertEquals(0, $this->file->getBytesRead());
146
- $this->assertTrue($this->file->seek(5, SEEK_SET));
147
- $this->assertEquals('rbaz', $this->file->readUntilEnd());
148
- $this->assertEquals(5, $this->file->getBytesRead());
149
- $this->assertTrue($this->file->seek(0, SEEK_CUR));
150
- $this->assertEquals('rbaz', $this->file->readUntilEnd());
151
- $this->assertEquals(5, $this->file->getBytesRead(), 5);
152
- $this->assertTrue($this->file->seek(2, SEEK_CUR));
153
- $this->assertEquals('az', $this->file->readUntilEnd());
154
- $this->assertEquals(7, $this->file->getBytesRead());
155
- $this->assertTrue($this->file->seek(0, SEEK_END));
156
- $this->assertEquals('', $this->file->readUntilEnd());
157
- $this->assertEquals(9, $this->file->getBytesRead());
158
- $this->assertTrue($this->file->seek(2, SEEK_END));
159
- $this->assertEquals('', $this->file->readUntilEnd());
160
- $this->assertEquals(11, $this->file->getBytesRead());
161
- }
162
-
163
- /**
164
- * test writing data into the file
165
- *
166
- * @test
167
- */
168
- public function writeEmptyFile()
169
- {
170
- $this->assertEquals(3, $this->file->write('foo'));
171
- $this->assertEquals('foo', $this->file->getContent());
172
- $this->assertEquals(3, $this->file->size());
173
- $this->assertEquals(3, $this->file->write('bar'));
174
- $this->assertEquals('foobar', $this->file->getContent());
175
- $this->assertEquals(6, $this->file->size());
176
- }
177
-
178
- /**
179
- * test writing data into the file
180
- *
181
- * @test
182
- */
183
- public function write()
184
- {
185
- $this->file->setContent('foobarbaz');
186
- $this->assertTrue($this->file->seek(3, SEEK_SET));
187
- $this->assertEquals(3, $this->file->write('foo'));
188
- $this->assertEquals('foofoobaz', $this->file->getContent());
189
- $this->assertEquals(9, $this->file->size());
190
- $this->assertEquals(3, $this->file->write('bar'));
191
- $this->assertEquals('foofoobar', $this->file->getContent());
192
- $this->assertEquals(9, $this->file->size());
193
- }
194
-
195
- /**
196
- * setting and retrieving permissions for a file
197
- *
198
- * @test
199
- * @group permissions
200
- */
201
- public function permissions()
202
- {
203
- $this->assertEquals(0666, $this->file->getPermissions());
204
- $this->assertSame($this->file, $this->file->chmod(0644));
205
- $this->assertEquals(0644, $this->file->getPermissions());
206
- }
207
-
208
- /**
209
- * setting and retrieving permissions for a file
210
- *
211
- * @test
212
- * @group permissions
213
- */
214
- public function permissionsSet()
215
- {
216
- $this->file = new vfsStreamFile('foo', 0644);
217
- $this->assertEquals(0644, $this->file->getPermissions());
218
- $this->assertSame($this->file, $this->file->chmod(0600));
219
- $this->assertEquals(0600, $this->file->getPermissions());
220
- }
221
-
222
- /**
223
- * setting and retrieving owner of a file
224
- *
225
- * @test
226
- * @group permissions
227
- */
228
- public function owner()
229
- {
230
- $this->assertEquals(vfsStream::getCurrentUser(), $this->file->getUser());
231
- $this->assertTrue($this->file->isOwnedByUser(vfsStream::getCurrentUser()));
232
- $this->assertSame($this->file, $this->file->chown(vfsStream::OWNER_USER_1));
233
- $this->assertEquals(vfsStream::OWNER_USER_1, $this->file->getUser());
234
- $this->assertTrue($this->file->isOwnedByUser(vfsStream::OWNER_USER_1));
235
- }
236
-
237
- /**
238
- * setting and retrieving owner group of a file
239
- *
240
- * @test
241
- * @group permissions
242
- */
243
- public function group()
244
- {
245
- $this->assertEquals(vfsStream::getCurrentGroup(), $this->file->getGroup());
246
- $this->assertTrue($this->file->isOwnedByGroup(vfsStream::getCurrentGroup()));
247
- $this->assertSame($this->file, $this->file->chgrp(vfsStream::GROUP_USER_1));
248
- $this->assertEquals(vfsStream::GROUP_USER_1, $this->file->getGroup());
249
- $this->assertTrue($this->file->isOwnedByGroup(vfsStream::GROUP_USER_1));
250
- }
251
-
252
- /**
253
- * @test
254
- * @group issue_33
255
- * @since 1.1.0
256
- */
257
- public function truncateRemovesSuperflouosContent()
258
- {
259
- $this->assertEquals(11, $this->file->write("lorem ipsum"));
260
- $this->assertTrue($this->file->truncate(5));
261
- $this->assertEquals(5, $this->file->size());
262
- $this->assertEquals('lorem', $this->file->getContent());
263
- }
264
-
265
- /**
266
- * @test
267
- * @group issue_33
268
- * @since 1.1.0
269
- */
270
- public function truncateToGreaterSizeAddsZeroBytes()
271
- {
272
- $this->assertEquals(11, $this->file->write("lorem ipsum"));
273
- $this->assertTrue($this->file->truncate(25));
274
- $this->assertEquals(25, $this->file->size());
275
- $this->assertEquals("lorem ipsum\0\0\0\0\0\0\0\0\0\0\0\0\0\0", $this->file->getContent());
276
- }
277
-
278
- /**
279
- * @test
280
- * @group issue_79
281
- * @since 1.3.0
282
- */
283
- public function withContentAcceptsAnyFileContentInstance()
284
- {
285
- $mockFileContent = $this->getMock('org\bovigo\vfs\content\FileContent');
286
- $mockFileContent->expects($this->once())
287
- ->method('content')
288
- ->will($this->returnValue('foobarbaz'));
289
- $this->assertEquals(
290
- 'foobarbaz',
291
- $this->file->withContent($mockFileContent)
292
- ->getContent()
293
- );
294
- }
295
-
296
- /**
297
- * @test
298
- * @group issue_79
299
- * @expectedException \InvalidArgumentException
300
- * @since 1.3.0
301
- */
302
- public function withContentThrowsInvalidArgumentExceptionWhenContentIsNoStringAndNoFileContent()
303
- {
304
- $this->file->withContent(313);
305
- }
306
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamGlobTestCase.php DELETED
@@ -1,29 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Test for org\bovigo\vfs\vfsStream.
13
- *
14
- * @since 0.9.0
15
- * @group issue_2
16
- */
17
- class vfsStreamGlobTestCase extends \PHPUnit_Framework_TestCase
18
- {
19
- /**
20
- * @test
21
- */
22
- public function globDoesNotWorkWithVfsStreamUrls()
23
- {
24
- $root = vfsStream::setup('example');
25
- mkdir(vfsStream::url('example/test/'), 0777, true);
26
- $this->assertEmpty(glob(vfsStream::url('example'), GLOB_MARK));
27
- }
28
- }
29
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamResolveIncludePathTestCase.php DELETED
@@ -1,62 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Test for org\bovigo\vfs\vfsStream.
13
- *
14
- * @since 0.9.0
15
- * @group issue_5
16
- */
17
- class vfsStreamResolveIncludePathTestCase extends \PHPUnit_Framework_TestCase
18
- {
19
- /**
20
- * include path to restore after test run
21
- *
22
- * @var string
23
- */
24
- protected $backupIncludePath;
25
-
26
- /**
27
- * set up test environment
28
- */
29
- public function setUp()
30
- {
31
- $this->backupIncludePath = get_include_path();
32
- vfsStream::setup();
33
- mkdir('vfs://root/a/path', 0777, true);
34
- set_include_path('vfs://root/a' . PATH_SEPARATOR . $this->backupIncludePath);
35
- }
36
-
37
- /**
38
- * clean up test environment
39
- */
40
- public function tearDown()
41
- {
42
- set_include_path($this->backupIncludePath);
43
- }
44
-
45
- /**
46
- * @test
47
- */
48
- public function knownFileCanBeResolved()
49
- {
50
- file_put_contents('vfs://root/a/path/knownFile.php', '<?php ?>');
51
- $this->assertEquals('vfs://root/a/path/knownFile.php', stream_resolve_include_path('path/knownFile.php'));
52
- }
53
-
54
- /**
55
- * @test
56
- */
57
- public function unknownFileCanNotBeResolvedYieldsFalse()
58
- {
59
- $this->assertFalse(@stream_resolve_include_path('path/unknownFile.php'));
60
- }
61
- }
62
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamTestCase.php DELETED
@@ -1,728 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Test for org\bovigo\vfs\vfsStream.
13
- */
14
- class vfsStreamTestCase extends \PHPUnit_Framework_TestCase
15
- {
16
- /**
17
- * set up test environment
18
- */
19
- public function setUp()
20
- {
21
- vfsStreamWrapper::register();
22
- }
23
-
24
- /**
25
- * assure that path2url conversion works correct
26
- *
27
- * @test
28
- */
29
- public function url()
30
- {
31
- $this->assertEquals('vfs://foo', vfsStream::url('foo'));
32
- $this->assertEquals('vfs://foo/bar.baz', vfsStream::url('foo/bar.baz'));
33
- $this->assertEquals('vfs://foo/bar.baz', vfsStream::url('foo\bar.baz'));
34
- }
35
-
36
- /**
37
- * assure that url2path conversion works correct
38
- *
39
- * @test
40
- */
41
- public function path()
42
- {
43
- $this->assertEquals('foo', vfsStream::path('vfs://foo'));
44
- $this->assertEquals('foo/bar.baz', vfsStream::path('vfs://foo/bar.baz'));
45
- $this->assertEquals('foo/bar.baz', vfsStream::path('vfs://foo\bar.baz'));
46
- }
47
-
48
- /**
49
- * windows directory separators are converted into default separator
50
- *
51
- * @author Gabriel Birke
52
- * @test
53
- */
54
- public function pathConvertsWindowsDirectorySeparators()
55
- {
56
- $this->assertEquals('foo/bar', vfsStream::path('vfs://foo\\bar'));
57
- }
58
-
59
- /**
60
- * trailing whitespace should be removed
61
- *
62
- * @author Gabriel Birke
63
- * @test
64
- */
65
- public function pathRemovesTrailingWhitespace()
66
- {
67
- $this->assertEquals('foo/bar', vfsStream::path('vfs://foo/bar '));
68
- }
69
-
70
- /**
71
- * trailing slashes are removed
72
- *
73
- * @author Gabriel Birke
74
- * @test
75
- */
76
- public function pathRemovesTrailingSlash()
77
- {
78
- $this->assertEquals('foo/bar', vfsStream::path('vfs://foo/bar/'));
79
- }
80
-
81
- /**
82
- * trailing slash and whitespace should be removed
83
- *
84
- * @author Gabriel Birke
85
- * @test
86
- */
87
- public function pathRemovesTrailingSlashAndWhitespace()
88
- {
89
- $this->assertEquals('foo/bar', vfsStream::path('vfs://foo/bar/ '));
90
- }
91
-
92
- /**
93
- * double slashes should be replaced by single slash
94
- *
95
- * @author Gabriel Birke
96
- * @test
97
- */
98
- public function pathRemovesDoubleSlashes()
99
- {
100
- // Regular path
101
- $this->assertEquals('my/path', vfsStream::path('vfs://my/path'));
102
- // Path with double slashes
103
- $this->assertEquals('my/path', vfsStream::path('vfs://my//path'));
104
- }
105
-
106
- /**
107
- * test to create a new file
108
- *
109
- * @test
110
- */
111
- public function newFile()
112
- {
113
- $file = vfsStream::newFile('filename.txt');
114
- $this->assertInstanceOf('org\\bovigo\\vfs\\vfsStreamFile', $file);
115
- $this->assertEquals('filename.txt', $file->getName());
116
- $this->assertEquals(0666, $file->getPermissions());
117
- }
118
-
119
- /**
120
- * test to create a new file with non-default permissions
121
- *
122
- * @test
123
- * @group permissions
124
- */
125
- public function newFileWithDifferentPermissions()
126
- {
127
- $file = vfsStream::newFile('filename.txt', 0644);
128
- $this->assertInstanceOf('org\\bovigo\\vfs\\vfsStreamFile', $file);
129
- $this->assertEquals('filename.txt', $file->getName());
130
- $this->assertEquals(0644, $file->getPermissions());
131
- }
132
-
133
- /**
134
- * test to create a new directory structure
135
- *
136
- * @test
137
- */
138
- public function newSingleDirectory()
139
- {
140
- $foo = vfsStream::newDirectory('foo');
141
- $this->assertEquals('foo', $foo->getName());
142
- $this->assertEquals(0, count($foo->getChildren()));
143
- $this->assertEquals(0777, $foo->getPermissions());
144
- }
145
-
146
- /**
147
- * test to create a new directory structure with non-default permissions
148
- *
149
- * @test
150
- * @group permissions
151
- */
152
- public function newSingleDirectoryWithDifferentPermissions()
153
- {
154
- $foo = vfsStream::newDirectory('foo', 0755);
155
- $this->assertEquals('foo', $foo->getName());
156
- $this->assertEquals(0, count($foo->getChildren()));
157
- $this->assertEquals(0755, $foo->getPermissions());
158
- }
159
-
160
- /**
161
- * test to create a new directory structure
162
- *
163
- * @test
164
- */
165
- public function newDirectoryStructure()
166
- {
167
- $foo = vfsStream::newDirectory('foo/bar/baz');
168
- $this->assertEquals('foo', $foo->getName());
169
- $this->assertEquals(0777, $foo->getPermissions());
170
- $this->assertTrue($foo->hasChild('bar'));
171
- $this->assertTrue($foo->hasChild('bar/baz'));
172
- $this->assertFalse($foo->hasChild('baz'));
173
- $bar = $foo->getChild('bar');
174
- $this->assertEquals('bar', $bar->getName());
175
- $this->assertEquals(0777, $bar->getPermissions());
176
- $this->assertTrue($bar->hasChild('baz'));
177
- $baz1 = $bar->getChild('baz');
178
- $this->assertEquals('baz', $baz1->getName());
179
- $this->assertEquals(0777, $baz1->getPermissions());
180
- $baz2 = $foo->getChild('bar/baz');
181
- $this->assertSame($baz1, $baz2);
182
- }
183
-
184
- /**
185
- * test that correct directory structure is created
186
- *
187
- * @test
188
- */
189
- public function newDirectoryWithSlashAtStart()
190
- {
191
- $foo = vfsStream::newDirectory('/foo/bar/baz', 0755);
192
- $this->assertEquals('foo', $foo->getName());
193
- $this->assertEquals(0755, $foo->getPermissions());
194
- $this->assertTrue($foo->hasChild('bar'));
195
- $this->assertTrue($foo->hasChild('bar/baz'));
196
- $this->assertFalse($foo->hasChild('baz'));
197
- $bar = $foo->getChild('bar');
198
- $this->assertEquals('bar', $bar->getName());
199
- $this->assertEquals(0755, $bar->getPermissions());
200
- $this->assertTrue($bar->hasChild('baz'));
201
- $baz1 = $bar->getChild('baz');
202
- $this->assertEquals('baz', $baz1->getName());
203
- $this->assertEquals(0755, $baz1->getPermissions());
204
- $baz2 = $foo->getChild('bar/baz');
205
- $this->assertSame($baz1, $baz2);
206
- }
207
-
208
- /**
209
- * @test
210
- * @group setup
211
- * @since 0.7.0
212
- */
213
- public function setupRegistersStreamWrapperAndCreatesRootDirectoryWithDefaultNameAndPermissions()
214
- {
215
- $root = vfsStream::setup();
216
- $this->assertSame($root, vfsStreamWrapper::getRoot());
217
- $this->assertEquals('root', $root->getName());
218
- $this->assertEquals(0777, $root->getPermissions());
219
- }
220
-
221
- /**
222
- * @test
223
- * @group setup
224
- * @since 0.7.0
225
- */
226
- public function setupRegistersStreamWrapperAndCreatesRootDirectoryWithGivenNameAndDefaultPermissions()
227
- {
228
- $root = vfsStream::setup('foo');
229
- $this->assertSame($root, vfsStreamWrapper::getRoot());
230
- $this->assertEquals('foo', $root->getName());
231
- $this->assertEquals(0777, $root->getPermissions());
232
- }
233
-
234
- /**
235
- * @test
236
- * @group setup
237
- * @since 0.7.0
238
- */
239
- public function setupRegistersStreamWrapperAndCreatesRootDirectoryWithGivenNameAndPermissions()
240
- {
241
- $root = vfsStream::setup('foo', 0444);
242
- $this->assertSame($root, vfsStreamWrapper::getRoot());
243
- $this->assertEquals('foo', $root->getName());
244
- $this->assertEquals(0444, $root->getPermissions());
245
- }
246
-
247
- /**
248
- * @test
249
- * @group issue_14
250
- * @group issue_20
251
- * @since 0.10.0
252
- */
253
- public function setupWithEmptyArrayIsEqualToSetup()
254
- {
255
- $root = vfsStream::setup('example',
256
- 0755,
257
- array()
258
- );
259
- $this->assertEquals('example', $root->getName());
260
- $this->assertEquals(0755, $root->getPermissions());
261
- $this->assertFalse($root->hasChildren());
262
- }
263
-
264
- /**
265
- * @test
266
- * @group issue_14
267
- * @group issue_20
268
- * @since 0.10.0
269
- */
270
- public function setupArraysAreTurnedIntoSubdirectories()
271
- {
272
- $root = vfsStream::setup('root',
273
- null,
274
- array('test' => array())
275
- );
276
- $this->assertTrue($root->hasChildren());
277
- $this->assertTrue($root->hasChild('test'));
278
- $this->assertInstanceOf('org\\bovigo\\vfs\\vfsStreamDirectory',
279
- $root->getChild('test')
280
- );
281
- $this->assertFalse($root->getChild('test')->hasChildren());
282
- }
283
-
284
- /**
285
- * @test
286
- * @group issue_14
287
- * @group issue_20
288
- * @since 0.10.0
289
- */
290
- public function setupStringsAreTurnedIntoFilesWithContent()
291
- {
292
- $root = vfsStream::setup('root',
293
- null,
294
- array('test.txt' => 'some content')
295
- );
296
- $this->assertTrue($root->hasChildren());
297
- $this->assertTrue($root->hasChild('test.txt'));
298
- $this->assertVfsFile($root->getChild('test.txt'), 'some content');
299
- }
300
-
301
- /**
302
- * @test
303
- * @group issue_14
304
- * @group issue_20
305
- * @since 0.10.0
306
- */
307
- public function setupWorksRecursively()
308
- {
309
- $root = vfsStream::setup('root',
310
- null,
311
- array('test' => array('foo' => array('test.txt' => 'hello'),
312
- 'baz.txt' => 'world'
313
- )
314
- )
315
- );
316
- $this->assertTrue($root->hasChildren());
317
- $this->assertTrue($root->hasChild('test'));
318
- $test = $root->getChild('test');
319
- $this->assertInstanceOf('org\\bovigo\\vfs\\vfsStreamDirectory', $test);
320
- $this->assertTrue($test->hasChildren());
321
- $this->assertTrue($test->hasChild('baz.txt'));
322
- $this->assertVfsFile($test->getChild('baz.txt'), 'world');
323
-
324
- $this->assertTrue($test->hasChild('foo'));
325
- $foo = $test->getChild('foo');
326
- $this->assertInstanceOf('org\\bovigo\\vfs\\vfsStreamDirectory', $foo);
327
- $this->assertTrue($foo->hasChildren());
328
- $this->assertTrue($foo->hasChild('test.txt'));
329
- $this->assertVfsFile($foo->getChild('test.txt'), 'hello');
330
- }
331
-
332
- /**
333
- * @test
334
- * @group issue_17
335
- * @group issue_20
336
- */
337
- public function setupCastsNumericDirectoriesToStrings()
338
- {
339
- $root = vfsStream::setup('root',
340
- null,
341
- array(2011 => array ('test.txt' => 'some content'))
342
- );
343
- $this->assertTrue($root->hasChild('2011'));
344
-
345
- $directory = $root->getChild('2011');
346
- $this->assertVfsFile($directory->getChild('test.txt'), 'some content');
347
-
348
- $this->assertTrue(file_exists('vfs://root/2011/test.txt'));
349
- }
350
-
351
- /**
352
- * @test
353
- * @group issue_20
354
- * @since 0.11.0
355
- */
356
- public function createArraysAreTurnedIntoSubdirectories()
357
- {
358
- $baseDir = vfsStream::create(array('test' => array()), new vfsStreamDirectory('baseDir'));
359
- $this->assertTrue($baseDir->hasChildren());
360
- $this->assertTrue($baseDir->hasChild('test'));
361
- $this->assertInstanceOf('org\\bovigo\\vfs\\vfsStreamDirectory',
362
- $baseDir->getChild('test')
363
- );
364
- $this->assertFalse($baseDir->getChild('test')->hasChildren());
365
- }
366
-
367
- /**
368
- * @test
369
- * @group issue_20
370
- * @since 0.11.0
371
- */
372
- public function createArraysAreTurnedIntoSubdirectoriesOfRoot()
373
- {
374
- $root = vfsStream::setup();
375
- $this->assertSame($root, vfsStream::create(array('test' => array())));
376
- $this->assertTrue($root->hasChildren());
377
- $this->assertTrue($root->hasChild('test'));
378
- $this->assertInstanceOf('org\\bovigo\\vfs\\vfsStreamDirectory',
379
- $root->getChild('test')
380
- );
381
- $this->assertFalse($root->getChild('test')->hasChildren());
382
- }
383
-
384
- /**
385
- * @test
386
- * @group issue_20
387
- * @expectedException \InvalidArgumentException
388
- * @since 0.11.0
389
- */
390
- public function createThrowsExceptionIfNoBaseDirGivenAndNoRootSet()
391
- {
392
- vfsStream::create(array('test' => array()));
393
- }
394
-
395
- /**
396
- * @test
397
- * @group issue_20
398
- * @since 0.11.0
399
- */
400
- public function createWorksRecursively()
401
- {
402
- $baseDir = vfsStream::create(array('test' => array('foo' => array('test.txt' => 'hello'),
403
- 'baz.txt' => 'world'
404
- )
405
- ),
406
- new vfsStreamDirectory('baseDir')
407
- );
408
- $this->assertTrue($baseDir->hasChildren());
409
- $this->assertTrue($baseDir->hasChild('test'));
410
- $test = $baseDir->getChild('test');
411
- $this->assertInstanceOf('org\\bovigo\\vfs\\vfsStreamDirectory', $test);
412
- $this->assertTrue($test->hasChildren());
413
- $this->assertTrue($test->hasChild('baz.txt'));
414
- $this->assertVfsFile($test->getChild('baz.txt'), 'world');
415
-
416
- $this->assertTrue($test->hasChild('foo'));
417
- $foo = $test->getChild('foo');
418
- $this->assertInstanceOf('org\\bovigo\\vfs\\vfsStreamDirectory', $foo);
419
- $this->assertTrue($foo->hasChildren());
420
- $this->assertTrue($foo->hasChild('test.txt'));
421
- $this->assertVfsFile($foo->getChild('test.txt'), 'hello');
422
- }
423
-
424
- /**
425
- * @test
426
- * @group issue_20
427
- * @since 0.11.0
428
- */
429
- public function createWorksRecursivelyWithRoot()
430
- {
431
- $root = vfsStream::setup();
432
- $this->assertSame($root,
433
- vfsStream::create(array('test' => array('foo' => array('test.txt' => 'hello'),
434
- 'baz.txt' => 'world'
435
- )
436
- )
437
- )
438
- );
439
- $this->assertTrue($root->hasChildren());
440
- $this->assertTrue($root->hasChild('test'));
441
- $test = $root->getChild('test');
442
- $this->assertInstanceOf('org\\bovigo\\vfs\\vfsStreamDirectory', $test);
443
- $this->assertTrue($test->hasChildren());
444
- $this->assertTrue($test->hasChild('baz.txt'));
445
- $this->assertVfsFile($test->getChild('baz.txt'), 'world');
446
-
447
- $this->assertTrue($test->hasChild('foo'));
448
- $foo = $test->getChild('foo');
449
- $this->assertInstanceOf('org\\bovigo\\vfs\\vfsStreamDirectory', $foo);
450
- $this->assertTrue($foo->hasChildren());
451
- $this->assertTrue($foo->hasChild('test.txt'));
452
- $this->assertVfsFile($foo->getChild('test.txt'), 'hello');
453
- }
454
-
455
- /**
456
- * @test
457
- * @group issue_20
458
- * @since 0.10.0
459
- */
460
- public function createStringsAreTurnedIntoFilesWithContent()
461
- {
462
- $baseDir = vfsStream::create(array('test.txt' => 'some content'), new vfsStreamDirectory('baseDir'));
463
- $this->assertTrue($baseDir->hasChildren());
464
- $this->assertTrue($baseDir->hasChild('test.txt'));
465
- $this->assertVfsFile($baseDir->getChild('test.txt'), 'some content');
466
- }
467
-
468
- /**
469
- * @test
470
- * @group issue_20
471
- * @since 0.11.0
472
- */
473
- public function createStringsAreTurnedIntoFilesWithContentWithRoot()
474
- {
475
- $root = vfsStream::setup();
476
- $this->assertSame($root,
477
- vfsStream::create(array('test.txt' => 'some content'))
478
- );
479
- $this->assertTrue($root->hasChildren());
480
- $this->assertTrue($root->hasChild('test.txt'));
481
- $this->assertVfsFile($root->getChild('test.txt'), 'some content');
482
- }
483
-
484
- /**
485
- * @test
486
- * @group issue_20
487
- * @since 0.11.0
488
- */
489
- public function createCastsNumericDirectoriesToStrings()
490
- {
491
- $baseDir = vfsStream::create(array(2011 => array ('test.txt' => 'some content')), new vfsStreamDirectory('baseDir'));
492
- $this->assertTrue($baseDir->hasChild('2011'));
493
-
494
- $directory = $baseDir->getChild('2011');
495
- $this->assertVfsFile($directory->getChild('test.txt'), 'some content');
496
- }
497
-
498
- /**
499
- * @test
500
- * @group issue_20
501
- * @since 0.11.0
502
- */
503
- public function createCastsNumericDirectoriesToStringsWithRoot()
504
- {
505
- $root = vfsStream::setup();
506
- $this->assertSame($root,
507
- vfsStream::create(array(2011 => array ('test.txt' => 'some content')))
508
- );
509
- $this->assertTrue($root->hasChild('2011'));
510
-
511
- $directory = $root->getChild('2011');
512
- $this->assertVfsFile($directory->getChild('test.txt'), 'some content');
513
- }
514
-
515
- /**
516
- * helper function for assertions on vfsStreamFile
517
- *
518
- * @param vfsStreamFile $file
519
- * @param string $content
520
- */
521
- protected function assertVfsFile(vfsStreamFile $file, $content)
522
- {
523
- $this->assertInstanceOf('org\\bovigo\\vfs\\vfsStreamFile',
524
- $file
525
- );
526
- $this->assertEquals($content,
527
- $file->getContent()
528
- );
529
- }
530
-
531
- /**
532
- * @test
533
- * @group issue_10
534
- * @since 0.10.0
535
- */
536
- public function inspectWithContentGivesContentToVisitor()
537
- {
538
- $mockContent = $this->getMock('org\\bovigo\\vfs\\vfsStreamContent');
539
- $mockVisitor = $this->getMock('org\\bovigo\\vfs\\visitor\\vfsStreamVisitor');
540
- $mockVisitor->expects($this->once())
541
- ->method('visit')
542
- ->with($this->equalTo($mockContent))
543
- ->will($this->returnValue($mockVisitor));
544
- $this->assertSame($mockVisitor, vfsStream::inspect($mockVisitor, $mockContent));
545
- }
546
-
547
- /**
548
- * @test
549
- * @group issue_10
550
- * @since 0.10.0
551
- */
552
- public function inspectWithoutContentGivesRootToVisitor()
553
- {
554
- $root = vfsStream::setup();
555
- $mockVisitor = $this->getMock('org\\bovigo\\vfs\\visitor\\vfsStreamVisitor');
556
- $mockVisitor->expects($this->once())
557
- ->method('visitDirectory')
558
- ->with($this->equalTo($root))
559
- ->will($this->returnValue($mockVisitor));
560
- $this->assertSame($mockVisitor, vfsStream::inspect($mockVisitor));
561
- }
562
-
563
- /**
564
- * @test
565
- * @group issue_10
566
- * @expectedException \InvalidArgumentException
567
- * @since 0.10.0
568
- */
569
- public function inspectWithoutContentAndWithoutRootThrowsInvalidArgumentException()
570
- {
571
- $mockVisitor = $this->getMock('org\\bovigo\\vfs\\visitor\\vfsStreamVisitor');
572
- $mockVisitor->expects($this->never())
573
- ->method('visit');
574
- $mockVisitor->expects($this->never())
575
- ->method('visitDirectory');
576
- vfsStream::inspect($mockVisitor);
577
- }
578
-
579
- /**
580
- * returns path to file system copy resource directory
581
- *
582
- * @return string
583
- */
584
- protected function getFileSystemCopyDir()
585
- {
586
- return realpath(dirname(__FILE__) . '/../../../../resources/filesystemcopy');
587
- }
588
-
589
- /**
590
- * @test
591
- * @group issue_4
592
- * @expectedException \InvalidArgumentException
593
- * @since 0.11.0
594
- */
595
- public function copyFromFileSystemThrowsExceptionIfNoBaseDirGivenAndNoRootSet()
596
- {
597
- vfsStream::copyFromFileSystem($this->getFileSystemCopyDir());
598
- }
599
-
600
- /**
601
- * @test
602
- * @group issue_4
603
- * @since 0.11.0
604
- */
605
- public function copyFromEmptyFolder()
606
- {
607
- $baseDir = vfsStream::copyFromFileSystem($this->getFileSystemCopyDir() . '/emptyFolder',
608
- vfsStream::newDirectory('test')
609
- );
610
- $baseDir->removeChild('.gitignore');
611
- $this->assertFalse($baseDir->hasChildren());
612
- }
613
-
614
- /**
615
- * @test
616
- * @group issue_4
617
- * @since 0.11.0
618
- */
619
- public function copyFromEmptyFolderWithRoot()
620
- {
621
- $root = vfsStream::setup();
622
- $this->assertEquals($root,
623
- vfsStream::copyFromFileSystem($this->getFileSystemCopyDir() . '/emptyFolder')
624
- );
625
- $root->removeChild('.gitignore');
626
- $this->assertFalse($root->hasChildren());
627
- }
628
-
629
- /**
630
- * @test
631
- * @group issue_4
632
- * @since 0.11.0
633
- */
634
- public function copyFromWithSubFolders()
635
- {
636
- $baseDir = vfsStream::copyFromFileSystem($this->getFileSystemCopyDir(),
637
- vfsStream::newDirectory('test'),
638
- 3
639
- );
640
- $this->assertTrue($baseDir->hasChildren());
641
- $this->assertTrue($baseDir->hasChild('emptyFolder'));
642
- $this->assertTrue($baseDir->hasChild('withSubfolders'));
643
- $subfolderDir = $baseDir->getChild('withSubfolders');
644
- $this->assertTrue($subfolderDir->hasChild('subfolder1'));
645
- $this->assertTrue($subfolderDir->getChild('subfolder1')->hasChild('file1.txt'));
646
- $this->assertVfsFile($subfolderDir->getChild('subfolder1/file1.txt'), ' ');
647
- $this->assertTrue($subfolderDir->hasChild('subfolder2'));
648
- $this->assertTrue($subfolderDir->hasChild('aFile.txt'));
649
- $this->assertVfsFile($subfolderDir->getChild('aFile.txt'), 'foo');
650
- }
651
-
652
- /**
653
- * @test
654
- * @group issue_4
655
- * @since 0.11.0
656
- */
657
- public function copyFromWithSubFoldersWithRoot()
658
- {
659
- $root = vfsStream::setup();
660
- $this->assertEquals($root,
661
- vfsStream::copyFromFileSystem($this->getFileSystemCopyDir(),
662
- null,
663
- 3
664
- )
665
- );
666
- $this->assertTrue($root->hasChildren());
667
- $this->assertTrue($root->hasChild('emptyFolder'));
668
- $this->assertTrue($root->hasChild('withSubfolders'));
669
- $subfolderDir = $root->getChild('withSubfolders');
670
- $this->assertTrue($subfolderDir->hasChild('subfolder1'));
671
- $this->assertTrue($subfolderDir->getChild('subfolder1')->hasChild('file1.txt'));
672
- $this->assertVfsFile($subfolderDir->getChild('subfolder1/file1.txt'), ' ');
673
- $this->assertTrue($subfolderDir->hasChild('subfolder2'));
674
- $this->assertTrue($subfolderDir->hasChild('aFile.txt'));
675
- $this->assertVfsFile($subfolderDir->getChild('aFile.txt'), 'foo');
676
- }
677
-
678
- /**
679
- * @test
680
- * @group issue_4
681
- * @group issue_29
682
- * @since 0.11.2
683
- */
684
- public function copyFromPreservesFilePermissions()
685
- {
686
- if (DIRECTORY_SEPARATOR !== '/') {
687
- $this->markTestSkipped('Only applicable on Linux style systems.');
688
- }
689
-
690
- $copyDir = $this->getFileSystemCopyDir();
691
- $root = vfsStream::setup();
692
- $this->assertEquals($root,
693
- vfsStream::copyFromFileSystem($copyDir,
694
- null
695
- )
696
- );
697
- $this->assertEquals(fileperms($copyDir . '/withSubfolders') - vfsStreamContent::TYPE_DIR,
698
- $root->getChild('withSubfolders')
699
- ->getPermissions()
700
- );
701
- $this->assertEquals(fileperms($copyDir . '/withSubfolders/aFile.txt') - vfsStreamContent::TYPE_FILE,
702
- $root->getChild('withSubfolders/aFile.txt')
703
- ->getPermissions()
704
- );
705
- }
706
-
707
- /**
708
- * To test this the max file size is reduced to something reproduceable.
709
- *
710
- * @test
711
- * @group issue_91
712
- * @since 1.5.0
713
- */
714
- public function copyFromFileSystemMocksLargeFiles()
715
- {
716
- if (DIRECTORY_SEPARATOR !== '/') {
717
- $this->markTestSkipped('Only applicable on Linux style systems.');
718
- }
719
-
720
- $copyDir = $this->getFileSystemCopyDir();
721
- $root = vfsStream::setup();
722
- vfsStream::copyFromFileSystem($copyDir, $root, 3);
723
- $this->assertEquals(
724
- ' ',
725
- $root->getChild('withSubfolders/subfolder1/file1.txt')->getContent()
726
- );
727
- }
728
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamUmaskTestCase.php DELETED
@@ -1,195 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Test for umask settings.
13
- *
14
- * @group permissions
15
- * @group umask
16
- * @since 0.8.0
17
- */
18
- class vfsStreamUmaskTestCase extends \PHPUnit_Framework_TestCase
19
- {
20
- /**
21
- * set up test environment
22
- */
23
- public function setUp()
24
- {
25
- vfsStream::umask(0000);
26
- }
27
-
28
- /**
29
- * clean up test environment
30
- */
31
- public function tearDown()
32
- {
33
- vfsStream::umask(0000);
34
- }
35
-
36
- /**
37
- * @test
38
- */
39
- public function gettingUmaskSettingDoesNotChangeUmaskSetting()
40
- {
41
- $this->assertEquals(vfsStream::umask(),
42
- vfsStream::umask()
43
- );
44
- $this->assertEquals(0000,
45
- vfsStream::umask()
46
- );
47
- }
48
-
49
- /**
50
- * @test
51
- */
52
- public function changingUmaskSettingReturnsOldUmaskSetting()
53
- {
54
- $this->assertEquals(0000,
55
- vfsStream::umask(0022)
56
- );
57
- $this->assertEquals(0022,
58
- vfsStream::umask()
59
- );
60
- }
61
-
62
- /**
63
- * @test
64
- */
65
- public function createFileWithDefaultUmaskSetting()
66
- {
67
- $file = new vfsStreamFile('foo');
68
- $this->assertEquals(0666, $file->getPermissions());
69
- }
70
-
71
- /**
72
- * @test
73
- */
74
- public function createFileWithDifferentUmaskSetting()
75
- {
76
- vfsStream::umask(0022);
77
- $file = new vfsStreamFile('foo');
78
- $this->assertEquals(0644, $file->getPermissions());
79
- }
80
-
81
- /**
82
- * @test
83
- */
84
- public function createDirectoryWithDefaultUmaskSetting()
85
- {
86
- $directory = new vfsStreamDirectory('foo');
87
- $this->assertEquals(0777, $directory->getPermissions());
88
- }
89
-
90
- /**
91
- * @test
92
- */
93
- public function createDirectoryWithDifferentUmaskSetting()
94
- {
95
- vfsStream::umask(0022);
96
- $directory = new vfsStreamDirectory('foo');
97
- $this->assertEquals(0755, $directory->getPermissions());
98
- }
99
-
100
- /**
101
- * @test
102
- */
103
- public function createFileUsingStreamWithDefaultUmaskSetting()
104
- {
105
- $root = vfsStream::setup();
106
- file_put_contents(vfsStream::url('root/newfile.txt'), 'file content');
107
- $this->assertEquals(0666, $root->getChild('newfile.txt')->getPermissions());
108
- }
109
-
110
- /**
111
- * @test
112
- */
113
- public function createFileUsingStreamWithDifferentUmaskSetting()
114
- {
115
- $root = vfsStream::setup();
116
- vfsStream::umask(0022);
117
- file_put_contents(vfsStream::url('root/newfile.txt'), 'file content');
118
- $this->assertEquals(0644, $root->getChild('newfile.txt')->getPermissions());
119
- }
120
-
121
- /**
122
- * @test
123
- */
124
- public function createDirectoryUsingStreamWithDefaultUmaskSetting()
125
- {
126
- $root = vfsStream::setup();
127
- mkdir(vfsStream::url('root/newdir'));
128
- $this->assertEquals(0777, $root->getChild('newdir')->getPermissions());
129
- }
130
-
131
- /**
132
- * @test
133
- */
134
- public function createDirectoryUsingStreamWithDifferentUmaskSetting()
135
- {
136
- $root = vfsStream::setup();
137
- vfsStream::umask(0022);
138
- mkdir(vfsStream::url('root/newdir'));
139
- $this->assertEquals(0755, $root->getChild('newdir')->getPermissions());
140
- }
141
-
142
- /**
143
- * @test
144
- */
145
- public function createDirectoryUsingStreamWithExplicit0()
146
- {
147
- $root = vfsStream::setup();
148
- vfsStream::umask(0022);
149
- mkdir(vfsStream::url('root/newdir'), null);
150
- $this->assertEquals(0000, $root->getChild('newdir')->getPermissions());
151
- }
152
-
153
- /**
154
- * @test
155
- *
156
- */
157
- public function createDirectoryUsingStreamWithDifferentUmaskSettingButExplicit0777()
158
- {
159
- $root = vfsStream::setup();
160
- vfsStream::umask(0022);
161
- mkdir(vfsStream::url('root/newdir'), 0777);
162
- $this->assertEquals(0755, $root->getChild('newdir')->getPermissions());
163
- }
164
-
165
- /**
166
- * @test
167
- */
168
- public function createDirectoryUsingStreamWithDifferentUmaskSettingButExplicitModeRequestedByCall()
169
- {
170
- $root = vfsStream::setup();
171
- vfsStream::umask(0022);
172
- mkdir(vfsStream::url('root/newdir'), 0700);
173
- $this->assertEquals(0700, $root->getChild('newdir')->getPermissions());
174
- }
175
-
176
- /**
177
- * @test
178
- */
179
- public function defaultUmaskSettingDoesNotInfluenceSetup()
180
- {
181
- $root = vfsStream::setup();
182
- $this->assertEquals(0777, $root->getPermissions());
183
- }
184
-
185
- /**
186
- * @test
187
- */
188
- public function umaskSettingShouldBeRespectedBySetup()
189
- {
190
- vfsStream::umask(0022);
191
- $root = vfsStream::setup();
192
- $this->assertEquals(0755, $root->getPermissions());
193
- }
194
- }
195
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamWrapperAlreadyRegisteredTestCase.php DELETED
@@ -1,63 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Helper class for the test.
13
- */
14
- class TestvfsStreamWrapper extends vfsStreamWrapper
15
- {
16
- /**
17
- * unregisters vfsStreamWrapper
18
- */
19
- public static function unregister()
20
- {
21
- if (in_array(vfsStream::SCHEME, stream_get_wrappers()) === true) {
22
- stream_wrapper_unregister(vfsStream::SCHEME);
23
- }
24
-
25
- self::$registered = false;
26
- }
27
- }
28
- /**
29
- * Test for org\bovigo\vfs\vfsStreamWrapper.
30
- */
31
- class vfsStreamWrapperAlreadyRegisteredTestCase extends \PHPUnit_Framework_TestCase
32
- {
33
- /**
34
- * set up test environment
35
- */
36
- public function setUp()
37
- {
38
- TestvfsStreamWrapper::unregister();
39
- $mock = $this->getMock('org\\bovigo\\vfs\\vfsStreamWrapper');
40
- stream_wrapper_register(vfsStream::SCHEME, get_class($mock));
41
- }
42
-
43
- /**
44
- * clean up test environment
45
- */
46
- public function tearDown()
47
- {
48
- TestvfsStreamWrapper::unregister();
49
- }
50
-
51
- /**
52
- * registering the stream wrapper when another stream wrapper is already
53
- * registered for the vfs scheme should throw an exception
54
- *
55
- * @test
56
- * @expectedException org\bovigo\vfs\vfsStreamException
57
- */
58
- public function registerOverAnotherStreamWrapper()
59
- {
60
- vfsStreamWrapper::register();
61
- }
62
- }
63
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamWrapperBaseTestCase.php DELETED
@@ -1,99 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Test for org\bovigo\vfs\vfsStreamWrapper.
13
- */
14
- abstract class vfsStreamWrapperBaseTestCase extends \PHPUnit_Framework_TestCase
15
- {
16
- /**
17
- * root directory
18
- *
19
- * @var vfsStreamDirectory
20
- */
21
- protected $foo;
22
- /**
23
- * URL of root directory
24
- *
25
- * @var string
26
- */
27
- protected $fooURL;
28
- /**
29
- * sub directory
30
- *
31
- * @var vfsStreamDirectory
32
- */
33
- protected $bar;
34
- /**
35
- * URL of sub directory
36
- *
37
- * @var string
38
- */
39
- protected $barURL;
40
- /**
41
- * a file
42
- *
43
- * @var vfsStreamFile
44
- */
45
- protected $baz1;
46
- /**
47
- * URL of file 1
48
- *
49
- * @var string
50
- */
51
- protected $baz1URL;
52
- /**
53
- * another file
54
- *
55
- * @var vfsStreamFile
56
- */
57
- protected $baz2;
58
- /**
59
- * URL of file 2
60
- *
61
- * @var string
62
- */
63
- protected $baz2URL;
64
-
65
- /**
66
- * set up test environment
67
- */
68
- public function setUp()
69
- {
70
- $this->fooURL = vfsStream::url('foo');
71
- $this->barURL = vfsStream::url('foo/bar');
72
- $this->baz1URL = vfsStream::url('foo/bar/baz1');
73
- $this->baz2URL = vfsStream::url('foo/baz2');
74
- $this->foo = new vfsStreamDirectory('foo');
75
- $this->bar = new vfsStreamDirectory('bar');
76
- $this->baz1 = vfsStream::newFile('baz1')
77
- ->lastModified(300)
78
- ->lastAccessed(300)
79
- ->lastAttributeModified(300)
80
- ->withContent('baz 1');
81
- $this->baz2 = vfsStream::newFile('baz2')
82
- ->withContent('baz2')
83
- ->lastModified(400)
84
- ->lastAccessed(400)
85
- ->lastAttributeModified(400);
86
- $this->bar->addChild($this->baz1);
87
- $this->foo->addChild($this->bar);
88
- $this->foo->addChild($this->baz2);
89
- $this->foo->lastModified(100)
90
- ->lastAccessed(100)
91
- ->lastAttributeModified(100);
92
- $this->bar->lastModified(200)
93
- ->lastAccessed(100)
94
- ->lastAttributeModified(100);
95
- vfsStreamWrapper::register();
96
- vfsStreamWrapper::setRoot($this->foo);
97
- }
98
- }
99
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamWrapperDirSeparatorTestCase.php DELETED
@@ -1,73 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Test that using windows directory separator works correct.
13
- *
14
- * @since 0.9.0
15
- * @group issue_8
16
- */
17
- class vfsStreamWrapperDirSeparatorTestCase extends \PHPUnit_Framework_TestCase
18
- {
19
- /**
20
- * root diretory
21
- *
22
- * @var vfsStreamDirectory
23
- */
24
- protected $root;
25
-
26
- /**
27
- * set up test environment
28
- */
29
- public function setUp()
30
- {
31
- $this->root = vfsStream::setup();
32
- }
33
-
34
- /**
35
- * @test
36
- */
37
- public function fileCanBeAccessedUsingWinDirSeparator()
38
- {
39
- vfsStream::newFile('foo/bar/baz.txt')
40
- ->at($this->root)
41
- ->withContent('test');
42
- $this->assertEquals('test', file_get_contents('vfs://root/foo\bar\baz.txt'));
43
- }
44
-
45
-
46
- /**
47
- * @test
48
- */
49
- public function directoryCanBeCreatedUsingWinDirSeparator()
50
- {
51
- mkdir('vfs://root/dir\bar\foo', true, 0777);
52
- $this->assertTrue($this->root->hasChild('dir'));
53
- $this->assertTrue($this->root->getChild('dir')->hasChild('bar'));
54
- $this->assertTrue($this->root->getChild('dir/bar')->hasChild('foo'));
55
- }
56
-
57
- /**
58
- * @test
59
- */
60
- public function directoryExitsTestUsingTrailingWinDirSeparator()
61
- {
62
- $structure = array(
63
- 'dir' => array(
64
- 'bar' => array(
65
- )
66
- )
67
- );
68
- vfsStream::create($structure, $this->root);
69
-
70
- $this->assertTrue(file_exists(vfsStream::url('root/').'dir\\'));
71
- }
72
- }
73
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamWrapperDirTestCase.php DELETED
@@ -1,460 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- require_once __DIR__ . '/vfsStreamWrapperBaseTestCase.php';
12
- /**
13
- * Test for org\bovigo\vfs\vfsStreamWrapper around mkdir().
14
- *
15
- * @package bovigo_vfs
16
- * @subpackage test
17
- */
18
- class vfsStreamWrapperMkDirTestCase extends vfsStreamWrapperBaseTestCase
19
- {
20
- /**
21
- * mkdir() should not overwrite existing root
22
- *
23
- * @test
24
- */
25
- public function mkdirNoNewRoot()
26
- {
27
- $this->assertFalse(mkdir(vfsStream::url('another')));
28
- $this->assertEquals(2, count($this->foo->getChildren()));
29
- $this->assertSame($this->foo, vfsStreamWrapper::getRoot());
30
- }
31
-
32
- /**
33
- * mkdir() should not overwrite existing root
34
- *
35
- * @test
36
- */
37
- public function mkdirNoNewRootRecursively()
38
- {
39
- $this->assertFalse(mkdir(vfsStream::url('another/more'), 0777, true));
40
- $this->assertEquals(2, count($this->foo->getChildren()));
41
- $this->assertSame($this->foo, vfsStreamWrapper::getRoot());
42
- }
43
-
44
- /**
45
- * assert that mkdir() creates the correct directory structure
46
- *
47
- * @test
48
- * @group permissions
49
- */
50
- public function mkdirNonRecursively()
51
- {
52
- $this->assertFalse(mkdir($this->barURL . '/another/more'));
53
- $this->assertEquals(2, count($this->foo->getChildren()));
54
- $this->assertTrue(mkdir($this->fooURL . '/another'));
55
- $this->assertEquals(3, count($this->foo->getChildren()));
56
- $this->assertEquals(0777, $this->foo->getChild('another')->getPermissions());
57
- }
58
-
59
- /**
60
- * assert that mkdir() creates the correct directory structure
61
- *
62
- * @test
63
- * @group permissions
64
- */
65
- public function mkdirRecursively()
66
- {
67
- $this->assertTrue(mkdir($this->fooURL . '/another/more', 0777, true));
68
- $this->assertEquals(3, count($this->foo->getChildren()));
69
- $another = $this->foo->getChild('another');
70
- $this->assertTrue($another->hasChild('more'));
71
- $this->assertEquals(0777, $this->foo->getChild('another')->getPermissions());
72
- $this->assertEquals(0777, $this->foo->getChild('another')->getChild('more')->getPermissions());
73
- }
74
-
75
- /**
76
- * @test
77
- * @group issue_9
78
- * @since 0.9.0
79
- */
80
- public function mkdirWithDots()
81
- {
82
- $this->assertTrue(mkdir($this->fooURL . '/another/../more/.', 0777, true));
83
- $this->assertEquals(3, count($this->foo->getChildren()));
84
- $this->assertTrue($this->foo->hasChild('more'));
85
- }
86
-
87
- /**
88
- * no root > new directory becomes root
89
- *
90
- * @test
91
- * @group permissions
92
- */
93
- public function mkdirWithoutRootCreatesNewRoot()
94
- {
95
- vfsStreamWrapper::register();
96
- $this->assertTrue(@mkdir(vfsStream::url('foo')));
97
- $this->assertEquals(vfsStreamContent::TYPE_DIR, vfsStreamWrapper::getRoot()->getType());
98
- $this->assertEquals('foo', vfsStreamWrapper::getRoot()->getName());
99
- $this->assertEquals(0777, vfsStreamWrapper::getRoot()->getPermissions());
100
- }
101
-
102
- /**
103
- * trying to create a subdirectory of a file should not work
104
- *
105
- * @test
106
- */
107
- public function mkdirOnFileReturnsFalse()
108
- {
109
- $this->assertFalse(mkdir($this->baz1URL . '/another/more', 0777, true));
110
- }
111
-
112
- /**
113
- * assert that mkdir() creates the correct directory structure
114
- *
115
- * @test
116
- * @group permissions
117
- */
118
- public function mkdirNonRecursivelyDifferentPermissions()
119
- {
120
- $this->assertTrue(mkdir($this->fooURL . '/another', 0755));
121
- $this->assertEquals(0755, $this->foo->getChild('another')->getPermissions());
122
- }
123
-
124
- /**
125
- * assert that mkdir() creates the correct directory structure
126
- *
127
- * @test
128
- * @group permissions
129
- */
130
- public function mkdirRecursivelyDifferentPermissions()
131
- {
132
- $this->assertTrue(mkdir($this->fooURL . '/another/more', 0755, true));
133
- $this->assertEquals(3, count($this->foo->getChildren()));
134
- $another = $this->foo->getChild('another');
135
- $this->assertTrue($another->hasChild('more'));
136
- $this->assertEquals(0755, $this->foo->getChild('another')->getPermissions());
137
- $this->assertEquals(0755, $this->foo->getChild('another')->getChild('more')->getPermissions());
138
- }
139
-
140
- /**
141
- * assert that mkdir() creates the correct directory structure
142
- *
143
- * @test
144
- * @group permissions
145
- */
146
- public function mkdirRecursivelyUsesDefaultPermissions()
147
- {
148
- $this->foo->chmod(0700);
149
- $this->assertTrue(mkdir($this->fooURL . '/another/more', 0777, true));
150
- $this->assertEquals(3, count($this->foo->getChildren()));
151
- $another = $this->foo->getChild('another');
152
- $this->assertTrue($another->hasChild('more'));
153
- $this->assertEquals(0777, $this->foo->getChild('another')->getPermissions());
154
- $this->assertEquals(0777, $this->foo->getChild('another')->getChild('more')->getPermissions());
155
- }
156
-
157
- /**
158
- * no root > new directory becomes root
159
- *
160
- * @test
161
- * @group permissions
162
- */
163
- public function mkdirWithoutRootCreatesNewRootDifferentPermissions()
164
- {
165
- vfsStreamWrapper::register();
166
- $this->assertTrue(@mkdir(vfsStream::url('foo'), 0755));
167
- $this->assertEquals(vfsStreamContent::TYPE_DIR, vfsStreamWrapper::getRoot()->getType());
168
- $this->assertEquals('foo', vfsStreamWrapper::getRoot()->getName());
169
- $this->assertEquals(0755, vfsStreamWrapper::getRoot()->getPermissions());
170
- }
171
-
172
- /**
173
- * no root > new directory becomes root
174
- *
175
- * @test
176
- * @group permissions
177
- */
178
- public function mkdirWithoutRootCreatesNewRootWithDefaultPermissions()
179
- {
180
- vfsStreamWrapper::register();
181
- $this->assertTrue(@mkdir(vfsStream::url('foo')));
182
- $this->assertEquals(vfsStreamContent::TYPE_DIR, vfsStreamWrapper::getRoot()->getType());
183
- $this->assertEquals('foo', vfsStreamWrapper::getRoot()->getName());
184
- $this->assertEquals(0777, vfsStreamWrapper::getRoot()->getPermissions());
185
- }
186
-
187
- /**
188
- * @test
189
- * @group permissions
190
- * @group bug_15
191
- */
192
- public function mkdirDirCanNotCreateNewDirInNonWritingDirectory()
193
- {
194
- vfsStreamWrapper::register();
195
- vfsStreamWrapper::setRoot(new vfsStreamDirectory('root'));
196
- vfsStreamWrapper::getRoot()->addChild(new vfsStreamDirectory('restrictedFolder', 0000));
197
- $this->assertFalse(is_writable(vfsStream::url('root/restrictedFolder/')));
198
- $this->assertFalse(mkdir(vfsStream::url('root/restrictedFolder/newFolder')));
199
- $this->assertFalse(vfsStreamWrapper::getRoot()->hasChild('restrictedFolder/newFolder'));
200
- }
201
-
202
- /**
203
- * @test
204
- * @group issue_28
205
- */
206
- public function mkDirShouldNotOverwriteExistingDirectories()
207
- {
208
- vfsStream::setup('root');
209
- $dir = vfsStream::url('root/dir');
210
- $this->assertTrue(mkdir($dir));
211
- $this->assertFalse(@mkdir($dir));
212
- }
213
-
214
- /**
215
- * @test
216
- * @group issue_28
217
- * @expectedException PHPUnit_Framework_Error
218
- * @expectedExceptionMessage mkdir(): Path vfs://root/dir exists
219
- */
220
- public function mkDirShouldNotOverwriteExistingDirectoriesAndTriggerE_USER_WARNING()
221
- {
222
- vfsStream::setup('root');
223
- $dir = vfsStream::url('root/dir');
224
- $this->assertTrue(mkdir($dir));
225
- $this->assertFalse(mkdir($dir));
226
- }
227
-
228
- /**
229
- * @test
230
- * @group issue_28
231
- */
232
- public function mkDirShouldNotOverwriteExistingFiles()
233
- {
234
- $root = vfsStream::setup('root');
235
- vfsStream::newFile('test.txt')->at($root);
236
- $this->assertFalse(@mkdir(vfsStream::url('root/test.txt')));
237
- }
238
-
239
- /**
240
- * @test
241
- * @group issue_28
242
- * @expectedException PHPUnit_Framework_Error
243
- * @expectedExceptionMessage mkdir(): Path vfs://root/test.txt exists
244
- */
245
- public function mkDirShouldNotOverwriteExistingFilesAndTriggerE_USER_WARNING()
246
- {
247
- $root = vfsStream::setup('root');
248
- vfsStream::newFile('test.txt')->at($root);
249
- $this->assertFalse(mkdir(vfsStream::url('root/test.txt')));
250
- }
251
-
252
- /**
253
- * @test
254
- * @group permissions
255
- * @group bug_15
256
- */
257
- public function canNotIterateOverNonReadableDirectory()
258
- {
259
- vfsStreamWrapper::register();
260
- vfsStreamWrapper::setRoot(new vfsStreamDirectory('root', 0000));
261
- $this->assertFalse(@opendir(vfsStream::url('root')));
262
- $this->assertFalse(@dir(vfsStream::url('root')));
263
- }
264
-
265
- /**
266
- * assert is_dir() returns correct result
267
- *
268
- * @test
269
- */
270
- public function is_dir()
271
- {
272
- $this->assertTrue(is_dir($this->fooURL));
273
- $this->assertTrue(is_dir($this->fooURL . '/.'));
274
- $this->assertTrue(is_dir($this->barURL));
275
- $this->assertTrue(is_dir($this->barURL . '/.'));
276
- $this->assertFalse(is_dir($this->baz1URL));
277
- $this->assertFalse(is_dir($this->baz2URL));
278
- $this->assertFalse(is_dir($this->fooURL . '/another'));
279
- $this->assertFalse(is_dir(vfsStream::url('another')));
280
- }
281
-
282
- /**
283
- * can not unlink without root
284
- *
285
- * @test
286
- */
287
- public function canNotUnlinkDirectoryWithoutRoot()
288
- {
289
- vfsStreamWrapper::register();
290
- $this->assertFalse(@rmdir(vfsStream::url('foo')));
291
- }
292
-
293
- /**
294
- * rmdir() can not remove files
295
- *
296
- * @test
297
- */
298
- public function rmdirCanNotRemoveFiles()
299
- {
300
- $this->assertFalse(rmdir($this->baz1URL));
301
- $this->assertFalse(rmdir($this->baz2URL));
302
- }
303
-
304
- /**
305
- * rmdir() can not remove a non-existing directory
306
- *
307
- * @test
308
- */
309
- public function rmdirCanNotRemoveNonExistingDirectory()
310
- {
311
- $this->assertFalse(rmdir($this->fooURL . '/another'));
312
- }
313
-
314
- /**
315
- * rmdir() can not remove non-empty directories
316
- *
317
- * @test
318
- */
319
- public function rmdirCanNotRemoveNonEmptyDirectory()
320
- {
321
- $this->assertFalse(rmdir($this->fooURL));
322
- $this->assertFalse(rmdir($this->barURL));
323
- }
324
-
325
- /**
326
- * @test
327
- */
328
- public function rmdirCanRemoveEmptyDirectory()
329
- {
330
- vfsStream::newDirectory('empty')->at($this->foo);
331
- $this->assertTrue($this->foo->hasChild('empty'));
332
- $this->assertTrue(rmdir($this->fooURL . '/empty'));
333
- $this->assertFalse($this->foo->hasChild('empty'));
334
- }
335
-
336
- /**
337
- * @test
338
- */
339
- public function rmdirCanRemoveEmptyDirectoryWithDot()
340
- {
341
- vfsStream::newDirectory('empty')->at($this->foo);
342
- $this->assertTrue($this->foo->hasChild('empty'));
343
- $this->assertTrue(rmdir($this->fooURL . '/empty/.'));
344
- $this->assertFalse($this->foo->hasChild('empty'));
345
- }
346
-
347
- /**
348
- * rmdir() can remove empty directories
349
- *
350
- * @test
351
- */
352
- public function rmdirCanRemoveEmptyRoot()
353
- {
354
- $this->foo->removeChild('bar');
355
- $this->foo->removeChild('baz2');
356
- $this->assertTrue(rmdir($this->fooURL));
357
- $this->assertFalse(file_exists($this->fooURL)); // make sure statcache was cleared
358
- $this->assertNull(vfsStreamWrapper::getRoot());
359
- }
360
-
361
- /**
362
- * @test
363
- * @group permissions
364
- * @group bug_15
365
- */
366
- public function rmdirDirCanNotRemoveDirFromNonWritingDirectory()
367
- {
368
- vfsStreamWrapper::register();
369
- vfsStreamWrapper::setRoot(new vfsStreamDirectory('root', 0000));
370
- vfsStreamWrapper::getRoot()->addChild(new vfsStreamDirectory('nonRemovableFolder'));
371
- $this->assertFalse(is_writable(vfsStream::url('root')));
372
- $this->assertFalse(rmdir(vfsStream::url('root/nonRemovableFolder')));
373
- $this->assertTrue(vfsStreamWrapper::getRoot()->hasChild('nonRemovableFolder'));
374
- }
375
-
376
- /**
377
- * @test
378
- * @group permissions
379
- * @group bug_17
380
- */
381
- public function issue17()
382
- {
383
- vfsStreamWrapper::register();
384
- vfsStreamWrapper::setRoot(new vfsStreamDirectory('root', 0770));
385
- vfsStreamWrapper::getRoot()->chgrp(vfsStream::GROUP_USER_1)
386
- ->chown(vfsStream::OWNER_USER_1);
387
- $this->assertFalse(mkdir(vfsStream::url('root/doesNotWork')));
388
- $this->assertFalse(vfsStreamWrapper::getRoot()->hasChild('doesNotWork'));
389
- }
390
-
391
- /**
392
- * @test
393
- * @group bug_19
394
- */
395
- public function accessWithDoubleDotReturnsCorrectContent()
396
- {
397
- $this->assertEquals('baz2',
398
- file_get_contents(vfsStream::url('foo/bar/../baz2'))
399
- );
400
- }
401
-
402
- /**
403
- * @test
404
- * @since 0.11.0
405
- * @group issue_23
406
- */
407
- public function unlinkCanNotRemoveNonEmptyDirectory()
408
- {
409
- try {
410
- $this->assertFalse(unlink($this->barURL));
411
- } catch (\PHPUnit_Framework_Error $fe) {
412
- $this->assertEquals('unlink(vfs://foo/bar): Operation not permitted', $fe->getMessage());
413
- }
414
-
415
- $this->assertTrue($this->foo->hasChild('bar'));
416
- $this->assertFileExists($this->barURL);
417
- }
418
-
419
- /**
420
- * @test
421
- * @since 0.11.0
422
- * @group issue_23
423
- */
424
- public function unlinkCanNotRemoveEmptyDirectory()
425
- {
426
- vfsStream::newDirectory('empty')->at($this->foo);
427
- try {
428
- $this->assertTrue(unlink($this->fooURL . '/empty'));
429
- } catch (\PHPUnit_Framework_Error $fe) {
430
- $this->assertEquals('unlink(vfs://foo/empty): Operation not permitted', $fe->getMessage());
431
- }
432
-
433
- $this->assertTrue($this->foo->hasChild('empty'));
434
- $this->assertFileExists($this->fooURL . '/empty');
435
- }
436
-
437
- /**
438
- * @test
439
- * @group issue_32
440
- */
441
- public function canCreateFolderOfSameNameAsParentFolder()
442
- {
443
- $root = vfsStream::setup('testFolder');
444
- mkdir(vfsStream::url('testFolder') . '/testFolder/subTestFolder', 0777, true);
445
- $this->assertTrue(file_exists(vfsStream::url('testFolder/testFolder/subTestFolder/.')));
446
- }
447
-
448
- /**
449
- * @test
450
- * @group issue_32
451
- */
452
- public function canRetrieveFolderOfSameNameAsParentFolder()
453
- {
454
- $root = vfsStream::setup('testFolder');
455
- mkdir(vfsStream::url('testFolder') . '/testFolder/subTestFolder', 0777, true);
456
- $this->assertTrue($root->hasChild('testFolder'));
457
- $this->assertNotNull($root->getChild('testFolder'));
458
- }
459
- }
460
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamWrapperFileTestCase.php DELETED
@@ -1,458 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- require_once __DIR__ . '/vfsStreamWrapperBaseTestCase.php';
12
- /**
13
- * Test for org\bovigo\vfs\vfsStreamWrapper.
14
- */
15
- class vfsStreamWrapperFileTestCase extends vfsStreamWrapperBaseTestCase
16
- {
17
- /**
18
- * assert that file_get_contents() delivers correct file contents
19
- *
20
- * @test
21
- */
22
- public function file_get_contents()
23
- {
24
- $this->assertEquals('baz2', file_get_contents($this->baz2URL));
25
- $this->assertEquals('baz 1', file_get_contents($this->baz1URL));
26
- $this->assertFalse(@file_get_contents($this->barURL));
27
- $this->assertFalse(@file_get_contents($this->fooURL));
28
- }
29
-
30
- /**
31
- * @test
32
- * @group permissions
33
- * @group bug_15
34
- */
35
- public function file_get_contentsNonReadableFile()
36
- {
37
- vfsStreamWrapper::register();
38
- vfsStreamWrapper::setRoot(new vfsStreamDirectory('root'));
39
- vfsStream::newFile('new.txt', 0000)->at(vfsStreamWrapper::getRoot())->withContent('content');
40
- $this->assertEquals('', @file_get_contents(vfsStream::url('root/new.txt')));
41
- }
42
-
43
- /**
44
- * assert that file_put_contents() delivers correct file contents
45
- *
46
- * @test
47
- */
48
- public function file_put_contentsExistingFile()
49
- {
50
- $this->assertEquals(14, file_put_contents($this->baz2URL, 'baz is not bar'));
51
- $this->assertEquals('baz is not bar', $this->baz2->getContent());
52
- $this->assertEquals(6, file_put_contents($this->baz1URL, 'foobar'));
53
- $this->assertEquals('foobar', $this->baz1->getContent());
54
- $this->assertFalse(@file_put_contents($this->barURL, 'This does not work.'));
55
- $this->assertFalse(@file_put_contents($this->fooURL, 'This does not work, too.'));
56
- }
57
-
58
- /**
59
- * @test
60
- * @group permissions
61
- * @group bug_15
62
- */
63
- public function file_put_contentsExistingFileNonWritableDirectory()
64
- {
65
- vfsStreamWrapper::register();
66
- vfsStreamWrapper::setRoot(new vfsStreamDirectory('root', 0000));
67
- vfsStream::newFile('new.txt')->at(vfsStreamWrapper::getRoot())->withContent('content');
68
- $this->assertEquals(15, @file_put_contents(vfsStream::url('root/new.txt'), 'This does work.'));
69
- $this->assertEquals('This does work.', file_get_contents(vfsStream::url('root/new.txt')));
70
-
71
- }
72
-
73
- /**
74
- * @test
75
- * @group permissions
76
- * @group bug_15
77
- */
78
- public function file_put_contentsExistingNonWritableFile()
79
- {
80
- vfsStreamWrapper::register();
81
- vfsStreamWrapper::setRoot(new vfsStreamDirectory('root'));
82
- vfsStream::newFile('new.txt', 0400)->at(vfsStreamWrapper::getRoot())->withContent('content');
83
- $this->assertFalse(@file_put_contents(vfsStream::url('root/new.txt'), 'This does not work.'));
84
- $this->assertEquals('content', file_get_contents(vfsStream::url('root/new.txt')));
85
- }
86
-
87
- /**
88
- * assert that file_put_contents() delivers correct file contents
89
- *
90
- * @test
91
- */
92
- public function file_put_contentsNonExistingFile()
93
- {
94
- $this->assertEquals(14, file_put_contents($this->fooURL . '/baznot.bar', 'baz is not bar'));
95
- $this->assertEquals(3, count($this->foo->getChildren()));
96
- $this->assertEquals(14, file_put_contents($this->barURL . '/baznot.bar', 'baz is not bar'));
97
- $this->assertEquals(2, count($this->bar->getChildren()));
98
- }
99
-
100
- /**
101
- * @test
102
- * @group permissions
103
- * @group bug_15
104
- */
105
- public function file_put_contentsNonExistingFileNonWritableDirectory()
106
- {
107
- vfsStreamWrapper::register();
108
- vfsStreamWrapper::setRoot(new vfsStreamDirectory('root', 0000));
109
- $this->assertFalse(@file_put_contents(vfsStream::url('root/new.txt'), 'This does not work.'));
110
- $this->assertFalse(file_exists(vfsStream::url('root/new.txt')));
111
-
112
- }
113
-
114
- /**
115
- * using a file pointer should work without any problems
116
- *
117
- * @test
118
- */
119
- public function usingFilePointer()
120
- {
121
- $fp = fopen($this->baz1URL, 'r');
122
- $this->assertEquals(0, ftell($fp));
123
- $this->assertFalse(feof($fp));
124
- $this->assertEquals(0, fseek($fp, 2));
125
- $this->assertEquals(2, ftell($fp));
126
- $this->assertEquals(0, fseek($fp, 1, SEEK_CUR));
127
- $this->assertEquals(3, ftell($fp));
128
- $this->assertEquals(0, fseek($fp, 1, SEEK_END));
129
- $this->assertEquals(6, ftell($fp));
130
- $this->assertTrue(feof($fp));
131
- $this->assertEquals(0, fseek($fp, 2));
132
- $this->assertFalse(feof($fp));
133
- $this->assertEquals(2, ftell($fp));
134
- $this->assertEquals('z', fread($fp, 1));
135
- $this->assertEquals(3, ftell($fp));
136
- $this->assertEquals(' 1', fread($fp, 8092));
137
- $this->assertEquals(5, ftell($fp));
138
- $this->assertTrue(fclose($fp));
139
- }
140
-
141
- /**
142
- * assert is_file() returns correct result
143
- *
144
- * @test
145
- */
146
- public function is_file()
147
- {
148
- $this->assertFalse(is_file($this->fooURL));
149
- $this->assertFalse(is_file($this->barURL));
150
- $this->assertTrue(is_file($this->baz1URL));
151
- $this->assertTrue(is_file($this->baz2URL));
152
- $this->assertFalse(is_file($this->fooURL . '/another'));
153
- $this->assertFalse(is_file(vfsStream::url('another')));
154
- }
155
-
156
- /**
157
- * @test
158
- * @group issue7
159
- * @group issue13
160
- */
161
- public function issue13CanNotOverwriteFiles()
162
- {
163
- $vfsFile = vfsStream::url('foo/overwrite.txt');
164
- file_put_contents($vfsFile, 'test');
165
- file_put_contents($vfsFile, 'd');
166
- $this->assertEquals('d', file_get_contents($vfsFile));
167
- }
168
-
169
- /**
170
- * @test
171
- * @group issue7
172
- * @group issue13
173
- */
174
- public function appendContentIfOpenedWithModeA()
175
- {
176
- $vfsFile = vfsStream::url('foo/overwrite.txt');
177
- file_put_contents($vfsFile, 'test');
178
- $fp = fopen($vfsFile, 'ab');
179
- fwrite($fp, 'd');
180
- fclose($fp);
181
- $this->assertEquals('testd', file_get_contents($vfsFile));
182
- }
183
-
184
- /**
185
- * @test
186
- * @group issue7
187
- * @group issue13
188
- */
189
- public function canOverwriteNonExistingFileWithModeX()
190
- {
191
- $vfsFile = vfsStream::url('foo/overwrite.txt');
192
- $fp = fopen($vfsFile, 'xb');
193
- fwrite($fp, 'test');
194
- fclose($fp);
195
- $this->assertEquals('test', file_get_contents($vfsFile));
196
- }
197
-
198
- /**
199
- * @test
200
- * @group issue7
201
- * @group issue13
202
- */
203
- public function canNotOverwriteExistingFileWithModeX()
204
- {
205
- $vfsFile = vfsStream::url('foo/overwrite.txt');
206
- file_put_contents($vfsFile, 'test');
207
- $this->assertFalse(@fopen($vfsFile, 'xb'));
208
- $this->assertEquals('test', file_get_contents($vfsFile));
209
- }
210
-
211
- /**
212
- * @test
213
- * @group issue7
214
- * @group issue13
215
- */
216
- public function canNotOpenNonExistingFileReadonly()
217
- {
218
- $this->assertFalse(@fopen(vfsStream::url('foo/doesNotExist.txt'), 'rb'));
219
- }
220
-
221
- /**
222
- * @test
223
- * @group issue7
224
- * @group issue13
225
- */
226
- public function canNotOpenNonExistingFileReadAndWrite()
227
- {
228
- $this->assertFalse(@fopen(vfsStream::url('foo/doesNotExist.txt'), 'rb+'));
229
- }
230
-
231
- /**
232
- * @test
233
- * @group issue7
234
- * @group issue13
235
- */
236
- public function canNotOpenWithIllegalMode()
237
- {
238
- $this->assertFalse(@fopen($this->baz2URL, 'invalid'));
239
- }
240
-
241
- /**
242
- * @test
243
- * @group issue7
244
- * @group issue13
245
- */
246
- public function canNotWriteToReadOnlyFile()
247
- {
248
- $fp = fopen($this->baz2URL, 'rb');
249
- $this->assertEquals('baz2', fread($fp, 4096));
250
- $this->assertEquals(0, fwrite($fp, 'foo'));
251
- fclose($fp);
252
- $this->assertEquals('baz2', file_get_contents($this->baz2URL));
253
- }
254
-
255
- /**
256
- * @test
257
- * @group issue7
258
- * @group issue13
259
- */
260
- public function canNotReadFromWriteOnlyFileWithModeW()
261
- {
262
- $fp = fopen($this->baz2URL, 'wb');
263
- $this->assertEquals('', fread($fp, 4096));
264
- $this->assertEquals(3, fwrite($fp, 'foo'));
265
- fseek($fp, 0);
266
- $this->assertEquals('', fread($fp, 4096));
267
- fclose($fp);
268
- $this->assertEquals('foo', file_get_contents($this->baz2URL));
269
- }
270
-
271
- /**
272
- * @test
273
- * @group issue7
274
- * @group issue13
275
- */
276
- public function canNotReadFromWriteOnlyFileWithModeA()
277
- {
278
- $fp = fopen($this->baz2URL, 'ab');
279
- $this->assertEquals('', fread($fp, 4096));
280
- $this->assertEquals(3, fwrite($fp, 'foo'));
281
- fseek($fp, 0);
282
- $this->assertEquals('', fread($fp, 4096));
283
- fclose($fp);
284
- $this->assertEquals('baz2foo', file_get_contents($this->baz2URL));
285
- }
286
-
287
- /**
288
- * @test
289
- * @group issue7
290
- * @group issue13
291
- */
292
- public function canNotReadFromWriteOnlyFileWithModeX()
293
- {
294
- $vfsFile = vfsStream::url('foo/modeXtest.txt');
295
- $fp = fopen($vfsFile, 'xb');
296
- $this->assertEquals('', fread($fp, 4096));
297
- $this->assertEquals(3, fwrite($fp, 'foo'));
298
- fseek($fp, 0);
299
- $this->assertEquals('', fread($fp, 4096));
300
- fclose($fp);
301
- $this->assertEquals('foo', file_get_contents($vfsFile));
302
- }
303
-
304
- /**
305
- * @test
306
- * @group permissions
307
- * @group bug_15
308
- */
309
- public function canNotRemoveFileFromDirectoryWithoutWritePermissions()
310
- {
311
- vfsStreamWrapper::register();
312
- vfsStreamWrapper::setRoot(new vfsStreamDirectory('root', 0000));
313
- vfsStream::newFile('new.txt')->at(vfsStreamWrapper::getRoot());
314
- $this->assertFalse(unlink(vfsStream::url('root/new.txt')));
315
- $this->assertTrue(file_exists(vfsStream::url('root/new.txt')));
316
- }
317
-
318
- /**
319
- * @test
320
- * @group issue_30
321
- */
322
- public function truncatesFileWhenOpenedWithModeW()
323
- {
324
- $vfsFile = vfsStream::url('foo/overwrite.txt');
325
- file_put_contents($vfsFile, 'test');
326
- $fp = fopen($vfsFile, 'wb');
327
- $this->assertEquals('', file_get_contents($vfsFile));
328
- fclose($fp);
329
- }
330
-
331
- /**
332
- * @test
333
- * @group issue_30
334
- */
335
- public function createsNonExistingFileWhenOpenedWithModeC()
336
- {
337
- $vfsFile = vfsStream::url('foo/tobecreated.txt');
338
- $fp = fopen($vfsFile, 'cb');
339
- fwrite($fp, 'some content');
340
- $this->assertTrue($this->foo->hasChild('tobecreated.txt'));
341
- fclose($fp);
342
- $this->assertEquals('some content', file_get_contents($vfsFile));
343
- }
344
-
345
- /**
346
- * @test
347
- * @group issue_30
348
- */
349
- public function createsNonExistingFileWhenOpenedWithModeCplus()
350
- {
351
- $vfsFile = vfsStream::url('foo/tobecreated.txt');
352
- $fp = fopen($vfsFile, 'cb+');
353
- fwrite($fp, 'some content');
354
- $this->assertTrue($this->foo->hasChild('tobecreated.txt'));
355
- fclose($fp);
356
- $this->assertEquals('some content', file_get_contents($vfsFile));
357
- }
358
-
359
- /**
360
- * @test
361
- * @group issue_30
362
- */
363
- public function doesNotTruncateFileWhenOpenedWithModeC()
364
- {
365
- $vfsFile = vfsStream::url('foo/overwrite.txt');
366
- file_put_contents($vfsFile, 'test');
367
- $fp = fopen($vfsFile, 'cb');
368
- $this->assertEquals('test', file_get_contents($vfsFile));
369
- fclose($fp);
370
- }
371
-
372
- /**
373
- * @test
374
- * @group issue_30
375
- */
376
- public function setsPointerToStartWhenOpenedWithModeC()
377
- {
378
- $vfsFile = vfsStream::url('foo/overwrite.txt');
379
- file_put_contents($vfsFile, 'test');
380
- $fp = fopen($vfsFile, 'cb');
381
- $this->assertEquals(0, ftell($fp));
382
- fclose($fp);
383
- }
384
-
385
- /**
386
- * @test
387
- * @group issue_30
388
- */
389
- public function doesNotTruncateFileWhenOpenedWithModeCplus()
390
- {
391
- $vfsFile = vfsStream::url('foo/overwrite.txt');
392
- file_put_contents($vfsFile, 'test');
393
- $fp = fopen($vfsFile, 'cb+');
394
- $this->assertEquals('test', file_get_contents($vfsFile));
395
- fclose($fp);
396
- }
397
-
398
- /**
399
- * @test
400
- * @group issue_30
401
- */
402
- public function setsPointerToStartWhenOpenedWithModeCplus()
403
- {
404
- $vfsFile = vfsStream::url('foo/overwrite.txt');
405
- file_put_contents($vfsFile, 'test');
406
- $fp = fopen($vfsFile, 'cb+');
407
- $this->assertEquals(0, ftell($fp));
408
- fclose($fp);
409
- }
410
-
411
- /**
412
- * @test
413
- */
414
- public function cannotOpenExistingNonwritableFileWithModeA()
415
- {
416
- $this->baz1->chmod(0400);
417
- $this->assertFalse(@fopen($this->baz1URL, 'a'));
418
- }
419
-
420
- /**
421
- * @test
422
- */
423
- public function cannotOpenExistingNonwritableFileWithModeW()
424
- {
425
- $this->baz1->chmod(0400);
426
- $this->assertFalse(@fopen($this->baz1URL, 'w'));
427
- }
428
-
429
- /**
430
- * @test
431
- */
432
- public function cannotOpenNonReadableFileWithModeR()
433
- {
434
- $this->baz1->chmod(0);
435
- $this->assertFalse(@fopen($this->baz1URL, 'r'));
436
- }
437
-
438
- /**
439
- * @test
440
- */
441
- public function cannotRenameToNonWritableDir()
442
- {
443
- $this->bar->chmod(0);
444
- $this->assertFalse(@rename($this->baz2URL, vfsStream::url('foo/bar/baz3')));
445
- }
446
-
447
- /**
448
- * @test
449
- * @group issue_38
450
- */
451
- public function cannotReadFileFromNonReadableDir()
452
- {
453
- $this->markTestSkipped("Issue #38.");
454
- $this->bar->chmod(0);
455
- $this->assertFalse(@file_get_contents($this->baz1URL));
456
- }
457
- }
458
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamWrapperFileTimesTestCase.php DELETED
@@ -1,315 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Test for org\bovigo\vfs\vfsStreamWrapper.
13
- *
14
- * @since 0.9.0
15
- */
16
- class vfsStreamWrapperFileTimesTestCase extends \PHPUnit_Framework_TestCase
17
- {
18
- /**
19
- * URL of foo.txt file
20
- *
21
- * @var string
22
- */
23
- protected $fooUrl;
24
- /**
25
- * URL of bar directory
26
- *
27
- * @var string
28
- */
29
- protected $barUrl;
30
- /**
31
- * URL of baz.txt file
32
- *
33
- * @var string
34
- */
35
- protected $bazUrl;
36
-
37
- /**
38
- * set up test environment
39
- */
40
- public function setUp()
41
- {
42
- vfsStream::setup()
43
- ->lastModified(50)
44
- ->lastAccessed(50)
45
- ->lastAttributeModified(50);
46
- $this->fooUrl = vfsStream::url('root/foo.txt');
47
- $this->barUrl = vfsStream::url('root/bar');
48
- $this->bazUrl = vfsStream::url('root/bar/baz.txt');
49
- }
50
-
51
- /**
52
- * helper assertion for the tests
53
- *
54
- * @param string $url url to check
55
- * @param vfsStreamContent $content content to compare
56
- */
57
- protected function assertFileTimesEqualStreamTimes($url, vfsStreamContent $content)
58
- {
59
- $this->assertEquals(filemtime($url), $content->filemtime());
60
- $this->assertEquals(fileatime($url), $content->fileatime());
61
- $this->assertEquals(filectime($url), $content->filectime());
62
- }
63
-
64
- /**
65
- * @test
66
- * @group issue_7
67
- * @group issue_26
68
- */
69
- public function openFileChangesAttributeTimeOnly()
70
- {
71
- $file = vfsStream::newFile('foo.txt')
72
- ->withContent('test')
73
- ->at(vfsStreamWrapper::getRoot())
74
- ->lastModified(100)
75
- ->lastAccessed(100)
76
- ->lastAttributeModified(100);
77
- fclose(fopen($this->fooUrl, 'rb'));
78
- $this->assertGreaterThan(time() - 2, fileatime($this->fooUrl));
79
- $this->assertLessThanOrEqual(time(), fileatime($this->fooUrl));
80
- $this->assertLessThanOrEqual(100, filemtime($this->fooUrl));
81
- $this->assertEquals(100, filectime($this->fooUrl));
82
- $this->assertFileTimesEqualStreamTimes($this->fooUrl, $file);
83
- }
84
-
85
- /**
86
- * @test
87
- * @group issue_7
88
- * @group issue_26
89
- */
90
- public function fileGetContentsChangesAttributeTimeOnly()
91
- {
92
- $file = vfsStream::newFile('foo.txt')
93
- ->withContent('test')
94
- ->at(vfsStreamWrapper::getRoot())
95
- ->lastModified(100)
96
- ->lastAccessed(100)
97
- ->lastAttributeModified(100);
98
- file_get_contents($this->fooUrl);
99
- $this->assertGreaterThan(time() - 2, fileatime($this->fooUrl));
100
- $this->assertLessThanOrEqual(time(), fileatime($this->fooUrl));
101
- $this->assertLessThanOrEqual(100, filemtime($this->fooUrl));
102
- $this->assertEquals(100, filectime($this->fooUrl));
103
- $this->assertFileTimesEqualStreamTimes($this->fooUrl, $file);
104
- }
105
-
106
- /**
107
- * @test
108
- * @group issue_7
109
- * @group issue_26
110
- */
111
- public function openFileWithTruncateChangesAttributeAndModificationTime()
112
- {
113
- $file = vfsStream::newFile('foo.txt')
114
- ->withContent('test')
115
- ->at(vfsStreamWrapper::getRoot())
116
- ->lastModified(100)
117
- ->lastAccessed(100)
118
- ->lastAttributeModified(100);
119
- fclose(fopen($this->fooUrl, 'wb'));
120
- $this->assertGreaterThan(time() - 2, filemtime($this->fooUrl));
121
- $this->assertGreaterThan(time() - 2, fileatime($this->fooUrl));
122
- $this->assertLessThanOrEqual(time(), filemtime($this->fooUrl));
123
- $this->assertLessThanOrEqual(time(), fileatime($this->fooUrl));
124
- $this->assertEquals(100, filectime($this->fooUrl));
125
- $this->assertFileTimesEqualStreamTimes($this->fooUrl, $file);
126
- }
127
-
128
- /**
129
- * @test
130
- * @group issue_7
131
- */
132
- public function readFileChangesAccessTime()
133
- {
134
- $file = vfsStream::newFile('foo.txt')
135
- ->withContent('test')
136
- ->at(vfsStreamWrapper::getRoot())
137
- ->lastModified(100)
138
- ->lastAccessed(100)
139
- ->lastAttributeModified(100);
140
- $fp = fopen($this->fooUrl, 'rb');
141
- $openTime = time();
142
- sleep(2);
143
- fread($fp, 1024);
144
- fclose($fp);
145
- $this->assertLessThanOrEqual($openTime, filemtime($this->fooUrl));
146
- $this->assertLessThanOrEqual($openTime + 3, fileatime($this->fooUrl));
147
- $this->assertEquals(100, filectime($this->fooUrl));
148
- $this->assertFileTimesEqualStreamTimes($this->fooUrl, $file);
149
- }
150
-
151
- /**
152
- * @test
153
- * @group issue_7
154
- */
155
- public function writeFileChangesModificationTime()
156
- {
157
- $file = vfsStream::newFile('foo.txt')
158
- ->at(vfsStreamWrapper::getRoot())
159
- ->lastModified(100)
160
- ->lastAccessed(100)
161
- ->lastAttributeModified(100);
162
- $fp = fopen($this->fooUrl, 'wb');
163
- $openTime = time();
164
- sleep(2);
165
- fwrite($fp, 'test');
166
- fclose($fp);
167
- $this->assertLessThanOrEqual($openTime + 3, filemtime($this->fooUrl));
168
- $this->assertLessThanOrEqual($openTime, fileatime($this->fooUrl));
169
- $this->assertEquals(100, filectime($this->fooUrl));
170
- $this->assertFileTimesEqualStreamTimes($this->fooUrl, $file);
171
-
172
- }
173
-
174
- /**
175
- * @test
176
- * @group issue_7
177
- */
178
- public function createNewFileSetsAllTimesToCurrentTime()
179
- {
180
- file_put_contents($this->fooUrl, 'test');
181
- $this->assertLessThanOrEqual(time(), filemtime($this->fooUrl));
182
- $this->assertEquals(fileatime($this->fooUrl), filectime($this->fooUrl));
183
- $this->assertEquals(fileatime($this->fooUrl), filemtime($this->fooUrl));
184
- $this->assertFileTimesEqualStreamTimes($this->fooUrl, vfsStreamWrapper::getRoot()->getChild('foo.txt'));
185
- }
186
-
187
- /**
188
- * @test
189
- * @group issue_7
190
- */
191
- public function createNewFileChangesAttributeAndModificationTimeOfContainingDirectory()
192
- {
193
- $dir = vfsStream::newDirectory('bar')
194
- ->at(vfsStreamWrapper::getRoot())
195
- ->lastModified(100)
196
- ->lastAccessed(100)
197
- ->lastAttributeModified(100);
198
- file_put_contents($this->bazUrl, 'test');
199
- $this->assertLessThanOrEqual(time(), filemtime($this->barUrl));
200
- $this->assertLessThanOrEqual(time(), filectime($this->barUrl));
201
- $this->assertEquals(100, fileatime($this->barUrl));
202
- $this->assertFileTimesEqualStreamTimes($this->barUrl, $dir);
203
- }
204
-
205
- /**
206
- * @test
207
- * @group issue_7
208
- */
209
- public function addNewFileNameWithLinkFunctionChangesAttributeTimeOfOriginalFile()
210
- {
211
- $this->markTestSkipped('Links are currently not supported by vfsStream.');
212
- }
213
-
214
- /**
215
- * @test
216
- * @group issue_7
217
- */
218
- public function addNewFileNameWithLinkFunctionChangesAttributeAndModificationTimeOfDirectoryContainingLink()
219
- {
220
- $this->markTestSkipped('Links are currently not supported by vfsStream.');
221
- }
222
-
223
- /**
224
- * @test
225
- * @group issue_7
226
- */
227
- public function removeFileChangesAttributeAndModificationTimeOfContainingDirectory()
228
- {
229
- $dir = vfsStream::newDirectory('bar')
230
- ->at(vfsStreamWrapper::getRoot());
231
- $file = vfsStream::newFile('baz.txt')
232
- ->at($dir)
233
- ->lastModified(100)
234
- ->lastAccessed(100)
235
- ->lastAttributeModified(100);
236
- $dir->lastModified(100)
237
- ->lastAccessed(100)
238
- ->lastAttributeModified(100);
239
- unlink($this->bazUrl);
240
- $this->assertLessThanOrEqual(time(), filemtime($this->barUrl));
241
- $this->assertLessThanOrEqual(time(), filectime($this->barUrl));
242
- $this->assertEquals(100, fileatime($this->barUrl));
243
- $this->assertFileTimesEqualStreamTimes($this->barUrl, $dir);
244
- }
245
-
246
- /**
247
- * @test
248
- * @group issue_7
249
- */
250
- public function renameFileChangesAttributeAndModificationTimeOfAffectedDirectories()
251
- {
252
- $target = vfsStream::newDirectory('target')
253
- ->at(vfsStreamWrapper::getRoot())
254
- ->lastModified(200)
255
- ->lastAccessed(200)
256
- ->lastAttributeModified(200);
257
- $source = vfsStream::newDirectory('bar')
258
- ->at(vfsStreamWrapper::getRoot());
259
- $file = vfsStream::newFile('baz.txt')
260
- ->at($source)
261
- ->lastModified(300)
262
- ->lastAccessed(300)
263
- ->lastAttributeModified(300);
264
- $source->lastModified(100)
265
- ->lastAccessed(100)
266
- ->lastAttributeModified(100);
267
- rename($this->bazUrl, vfsStream::url('root/target/baz.txt'));
268
- $this->assertLessThanOrEqual(time(), filemtime($this->barUrl));
269
- $this->assertLessThanOrEqual(time(), filectime($this->barUrl));
270
- $this->assertEquals(100, fileatime($this->barUrl));
271
- $this->assertFileTimesEqualStreamTimes($this->barUrl, $source);
272
- $this->assertLessThanOrEqual(time(), filemtime(vfsStream::url('root/target')));
273
- $this->assertLessThanOrEqual(time(), filectime(vfsStream::url('root/target')));
274
- $this->assertEquals(200, fileatime(vfsStream::url('root/target')));
275
- $this->assertFileTimesEqualStreamTimes(vfsStream::url('root/target'), $target);
276
- }
277
-
278
- /**
279
- * @test
280
- * @group issue_7
281
- */
282
- public function renameFileDoesNotChangeFileTimesOfFileItself()
283
- {
284
- $target = vfsStream::newDirectory('target')
285
- ->at(vfsStreamWrapper::getRoot())
286
- ->lastModified(200)
287
- ->lastAccessed(200)
288
- ->lastAttributeModified(200);
289
- $source = vfsStream::newDirectory('bar')
290
- ->at(vfsStreamWrapper::getRoot());
291
- $file = vfsStream::newFile('baz.txt')
292
- ->at($source)
293
- ->lastModified(300)
294
- ->lastAccessed(300)
295
- ->lastAttributeModified(300);
296
- $source->lastModified(100)
297
- ->lastAccessed(100)
298
- ->lastAttributeModified(100);
299
- rename($this->bazUrl, vfsStream::url('root/target/baz.txt'));
300
- $this->assertEquals(300, filemtime(vfsStream::url('root/target/baz.txt')));
301
- $this->assertEquals(300, filectime(vfsStream::url('root/target/baz.txt')));
302
- $this->assertEquals(300, fileatime(vfsStream::url('root/target/baz.txt')));
303
- $this->assertFileTimesEqualStreamTimes(vfsStream::url('root/target/baz.txt'), $file);
304
- }
305
-
306
- /**
307
- * @test
308
- * @group issue_7
309
- */
310
- public function changeFileAttributesChangesAttributeTimeOfFileItself()
311
- {
312
- $this->markTestSkipped('Changing file attributes via stream wrapper for self-defined streams is not supported by PHP.');
313
- }
314
- }
315
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamWrapperFlockTestCase.php DELETED
@@ -1,440 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Test for flock() implementation.
13
- *
14
- * @package bovigo_vfs
15
- * @subpackage test
16
- * @since 0.10.0
17
- * @see https://github.com/mikey179/vfsStream/issues/6
18
- * @group issue_6
19
- */
20
- class vfsStreamWrapperFlockTestCase extends \PHPUnit_Framework_TestCase
21
- {
22
- /**
23
- * root directory
24
- *
25
- * @var vfsStreamContainer
26
- */
27
- protected $root;
28
-
29
- /**
30
- * set up test environment
31
- */
32
- public function setUp()
33
- {
34
- $this->root = vfsStream::setup();
35
- }
36
-
37
- /**
38
- * @test
39
- */
40
- public function fileIsNotLockedByDefault()
41
- {
42
- $this->assertFalse(vfsStream::newFile('foo.txt')->isLocked());
43
- }
44
-
45
- /**
46
- * @test
47
- */
48
- public function streamIsNotLockedByDefault()
49
- {
50
- file_put_contents(vfsStream::url('root/foo.txt'), 'content');
51
- $this->assertFalse($this->root->getChild('foo.txt')->isLocked());
52
- }
53
-
54
- /**
55
- * @test
56
- */
57
- public function canAquireSharedLock()
58
- {
59
- $file = vfsStream::newFile('foo.txt')->at($this->root);
60
- $fp = fopen(vfsStream::url('root/foo.txt'), 'rb');
61
- $this->assertTrue(flock($fp, LOCK_SH));
62
- $this->assertTrue($file->isLocked());
63
- $this->assertTrue($file->hasSharedLock());
64
- $this->assertFalse($file->hasExclusiveLock());
65
- fclose($fp);
66
-
67
- }
68
-
69
- /**
70
- * @test
71
- */
72
- public function canAquireSharedLockWithNonBlockingFlockCall()
73
- {
74
- $file = vfsStream::newFile('foo.txt')->at($this->root);
75
- $fp = fopen(vfsStream::url('root/foo.txt'), 'rb');
76
- $this->assertTrue(flock($fp, LOCK_SH | LOCK_NB));
77
- $this->assertTrue($file->isLocked());
78
- $this->assertTrue($file->hasSharedLock());
79
- $this->assertFalse($file->hasExclusiveLock());
80
- fclose($fp);
81
-
82
- }
83
-
84
- /**
85
- * @test
86
- */
87
- public function canAquireEclusiveLock()
88
- {
89
- $file = vfsStream::newFile('foo.txt')->at($this->root);
90
- $fp = fopen(vfsStream::url('root/foo.txt'), 'rb');
91
- $this->assertTrue(flock($fp, LOCK_EX));
92
- $this->assertTrue($file->isLocked());
93
- $this->assertFalse($file->hasSharedLock());
94
- $this->assertTrue($file->hasExclusiveLock());
95
- fclose($fp);
96
- }
97
-
98
- /**
99
- * @test
100
- */
101
- public function canAquireEclusiveLockWithNonBlockingFlockCall()
102
- {
103
- $file = vfsStream::newFile('foo.txt')->at($this->root);
104
- $fp = fopen(vfsStream::url('root/foo.txt'), 'rb');
105
- $this->assertTrue(flock($fp, LOCK_EX | LOCK_NB));
106
- $this->assertTrue($file->isLocked());
107
- $this->assertFalse($file->hasSharedLock());
108
- $this->assertTrue($file->hasExclusiveLock());
109
- fclose($fp);
110
- }
111
-
112
- /**
113
- * @test
114
- */
115
- public function canRemoveLock()
116
- {
117
- $file = vfsStream::newFile('foo.txt')->at($this->root);
118
- $fp = fopen(vfsStream::url('root/foo.txt'), 'rb');
119
- $file->lock($fp, LOCK_EX);
120
- $this->assertTrue(flock($fp, LOCK_UN));
121
- $this->assertFalse($file->isLocked());
122
- $this->assertFalse($file->hasSharedLock());
123
- $this->assertFalse($file->hasExclusiveLock());
124
- fclose($fp);
125
- }
126
-
127
- /**
128
- * @see https://github.com/mikey179/vfsStream/issues/40
129
- * @test
130
- * @group issue_40
131
- */
132
- public function canRemoveLockWhenNotLocked()
133
- {
134
- $file = vfsStream::newFile('foo.txt')->at($this->root);
135
- $fp = fopen(vfsStream::url('root/foo.txt'), 'rb');
136
- $this->assertTrue(flock($fp, LOCK_UN));
137
- $this->assertFalse($file->isLocked());
138
- $this->assertFalse($file->hasSharedLock());
139
- $this->assertFalse($file->hasSharedLock($fp));
140
- $this->assertFalse($file->hasExclusiveLock());
141
- $this->assertFalse($file->hasExclusiveLock($fp));
142
- fclose($fp);
143
- }
144
-
145
- /**
146
- * @see https://github.com/mikey179/vfsStream/issues/40
147
- * @test
148
- * @group issue_40
149
- */
150
- public function canRemoveSharedLockWithoutRemovingSharedLockOnOtherFileHandler()
151
- {
152
- $file = vfsStream::newFile('foo.txt')->at($this->root);
153
- $fp1 = fopen(vfsStream::url('root/foo.txt'), 'rb');
154
- $fp2 = fopen(vfsStream::url('root/foo.txt'), 'rb');
155
- $file->lock($fp1, LOCK_SH);
156
- $file->lock($fp2, LOCK_SH);
157
- $this->assertTrue(flock($fp1, LOCK_UN));
158
- $this->assertTrue($file->hasSharedLock());
159
- $this->assertFalse($file->hasSharedLock($fp1));
160
- $this->assertTrue($file->hasSharedLock($fp2));
161
- fclose($fp1);
162
- fclose($fp2);
163
- }
164
-
165
- /**
166
- * @see https://github.com/mikey179/vfsStream/issues/40
167
- * @test
168
- * @group issue_40
169
- */
170
- public function canNotRemoveSharedLockAcquiredOnOtherFileHandler()
171
- {
172
- $file = vfsStream::newFile('foo.txt')->at($this->root);
173
- $fp1 = fopen(vfsStream::url('root/foo.txt'), 'rb');
174
- $fp2 = fopen(vfsStream::url('root/foo.txt'), 'rb');
175
- $file->lock($fp1, LOCK_SH);
176
- $this->assertTrue(flock($fp2, LOCK_UN));
177
- $this->assertTrue($file->isLocked());
178
- $this->assertTrue($file->hasSharedLock());
179
- $this->assertFalse($file->hasExclusiveLock());
180
- fclose($fp1);
181
- fclose($fp2);
182
- }
183
-
184
- /**
185
- * @see https://github.com/mikey179/vfsStream/issues/40
186
- * @test
187
- * @group issue_40
188
- */
189
- public function canNotRemoveExlusiveLockAcquiredOnOtherFileHandler()
190
- {
191
- $file = vfsStream::newFile('foo.txt')->at($this->root);
192
- $fp1 = fopen(vfsStream::url('root/foo.txt'), 'rb');
193
- $fp2 = fopen(vfsStream::url('root/foo.txt'), 'rb');
194
- $file->lock($fp1, LOCK_EX);
195
- $this->assertTrue(flock($fp2, LOCK_UN));
196
- $this->assertTrue($file->isLocked());
197
- $this->assertFalse($file->hasSharedLock());
198
- $this->assertTrue($file->hasExclusiveLock());
199
- fclose($fp1);
200
- fclose($fp2);
201
- }
202
-
203
- /**
204
- * @test
205
- */
206
- public function canRemoveLockWithNonBlockingFlockCall()
207
- {
208
- $file = vfsStream::newFile('foo.txt')->at($this->root);
209
- $fp = fopen(vfsStream::url('root/foo.txt'), 'rb');
210
- $file->lock($fp, LOCK_EX);
211
- $this->assertTrue(flock($fp, LOCK_UN | LOCK_NB));
212
- $this->assertFalse($file->isLocked());
213
- $this->assertFalse($file->hasSharedLock());
214
- $this->assertFalse($file->hasExclusiveLock());
215
- fclose($fp);
216
- }
217
-
218
- /**
219
- * @see https://github.com/mikey179/vfsStream/issues/40
220
- * @test
221
- * @group issue_40
222
- */
223
- public function canNotAquireExclusiveLockIfAlreadyExclusivelyLockedOnOtherFileHandler()
224
- {
225
- $file = vfsStream::newFile('foo.txt')->at($this->root);
226
- $fp1 = fopen(vfsStream::url('root/foo.txt'), 'rb');
227
- $fp2 = fopen(vfsStream::url('root/foo.txt'), 'rb');
228
- $file->lock($fp1, LOCK_EX);
229
- $this->assertFalse(flock($fp2, LOCK_EX + LOCK_NB));
230
- $this->assertTrue($file->isLocked());
231
- $this->assertFalse($file->hasSharedLock());
232
- $this->assertTrue($file->hasExclusiveLock());
233
- $this->assertTrue($file->hasExclusiveLock($fp1));
234
- $this->assertFalse($file->hasExclusiveLock($fp2));
235
- fclose($fp1);
236
- fclose($fp2);
237
- }
238
-
239
- /**
240
- * @see https://github.com/mikey179/vfsStream/issues/40
241
- * @test
242
- * @group issue_40
243
- */
244
- public function canAquireExclusiveLockIfAlreadySelfExclusivelyLocked()
245
- {
246
- $file = vfsStream::newFile('foo.txt')->at($this->root);
247
- $fp = fopen(vfsStream::url('root/foo.txt'), 'rb');
248
- $file->lock($fp, LOCK_EX);
249
- $this->assertTrue(flock($fp, LOCK_EX + LOCK_NB));
250
- $this->assertTrue($file->isLocked());
251
- $this->assertFalse($file->hasSharedLock());
252
- $this->assertTrue($file->hasExclusiveLock());
253
- fclose($fp);
254
- }
255
-
256
- /**
257
- * @see https://github.com/mikey179/vfsStream/issues/40
258
- * @test
259
- * @group issue_40
260
- */
261
- public function canNotAquireExclusiveLockIfAlreadySharedLockedOnOtherFileHandler()
262
- {
263
- $file = vfsStream::newFile('foo.txt')->at($this->root);
264
- $fp1 = fopen(vfsStream::url('root/foo.txt'), 'rb');
265
- $fp2 = fopen(vfsStream::url('root/foo.txt'), 'rb');
266
- $file->lock($fp1, LOCK_SH);
267
- $this->assertFalse(flock($fp2, LOCK_EX));
268
- $this->assertTrue($file->isLocked());
269
- $this->assertTrue($file->hasSharedLock());
270
- $this->assertFalse($file->hasExclusiveLock());
271
- fclose($fp1);
272
- fclose($fp2);
273
- }
274
-
275
- /**
276
- * @see https://github.com/mikey179/vfsStream/issues/40
277
- * @test
278
- * @group issue_40
279
- */
280
- public function canAquireExclusiveLockIfAlreadySelfSharedLocked()
281
- {
282
- $file = vfsStream::newFile('foo.txt')->at($this->root);
283
- $fp = fopen(vfsStream::url('root/foo.txt'), 'rb');
284
- $file->lock($fp, LOCK_SH);
285
- $this->assertTrue(flock($fp, LOCK_EX));
286
- $this->assertTrue($file->isLocked());
287
- $this->assertFalse($file->hasSharedLock());
288
- $this->assertTrue($file->hasExclusiveLock());
289
- fclose($fp);
290
- }
291
-
292
- /**
293
- * @see https://github.com/mikey179/vfsStream/issues/40
294
- * @test
295
- * @group issue_40
296
- */
297
- public function canNotAquireSharedLockIfAlreadyExclusivelyLockedOnOtherFileHandler()
298
- {
299
- $file = vfsStream::newFile('foo.txt')->at($this->root);
300
- $fp1 = fopen(vfsStream::url('root/foo.txt'), 'rb');
301
- $fp2 = fopen(vfsStream::url('root/foo.txt'), 'rb');
302
- $file->lock($fp1, LOCK_EX);
303
- $this->assertFalse(flock($fp2, LOCK_SH + LOCK_NB));
304
- $this->assertTrue($file->isLocked());
305
- $this->assertFalse($file->hasSharedLock());
306
- $this->assertTrue($file->hasExclusiveLock());
307
- fclose($fp1);
308
- fclose($fp2);
309
- }
310
-
311
- /**
312
- * @see https://github.com/mikey179/vfsStream/issues/40
313
- * @test
314
- * @group issue_40
315
- */
316
- public function canAquireSharedLockIfAlreadySelfExclusivelyLocked()
317
- {
318
- $file = vfsStream::newFile('foo.txt')->at($this->root);
319
- $fp = fopen(vfsStream::url('root/foo.txt'), 'rb');
320
- $file->lock($fp, LOCK_EX);
321
- $this->assertTrue(flock($fp, LOCK_SH + LOCK_NB));
322
- $this->assertTrue($file->isLocked());
323
- $this->assertTrue($file->hasSharedLock());
324
- $this->assertFalse($file->hasExclusiveLock());
325
- fclose($fp);
326
- }
327
-
328
- /**
329
- * @see https://github.com/mikey179/vfsStream/issues/40
330
- * @test
331
- * @group issue_40
332
- */
333
- public function canAquireSharedLockIfAlreadySelfSharedLocked()
334
- {
335
- $file = vfsStream::newFile('foo.txt')->at($this->root);
336
- $fp = fopen(vfsStream::url('root/foo.txt'), 'rb');
337
- $file->lock($fp, LOCK_SH);
338
- $this->assertTrue(flock($fp, LOCK_SH));
339
- $this->assertTrue($file->isLocked());
340
- $this->assertTrue($file->hasSharedLock());
341
- $this->assertFalse($file->hasExclusiveLock());
342
- fclose($fp);
343
- }
344
-
345
- /**
346
- * @see https://github.com/mikey179/vfsStream/issues/40
347
- * @test
348
- * @group issue_40
349
- */
350
- public function canAquireSharedLockIfAlreadySharedLockedOnOtherFileHandler()
351
- {
352
- $file = vfsStream::newFile('foo.txt')->at($this->root);
353
- $fp1 = fopen(vfsStream::url('root/foo.txt'), 'rb');
354
- $fp2 = fopen(vfsStream::url('root/foo.txt'), 'rb');
355
- $file->lock($fp1, LOCK_SH);
356
- $this->assertTrue(flock($fp2, LOCK_SH));
357
- $this->assertTrue($file->isLocked());
358
- $this->assertTrue($file->hasSharedLock());
359
- $this->assertTrue($file->hasSharedLock($fp1));
360
- $this->assertTrue($file->hasSharedLock($fp2));
361
- $this->assertFalse($file->hasExclusiveLock());
362
- fclose($fp1);
363
- fclose($fp2);
364
- }
365
-
366
- /**
367
- * @see https://github.com/mikey179/vfsStream/issues/31
368
- * @see https://github.com/mikey179/vfsStream/issues/40
369
- * @test
370
- * @group issue_31
371
- * @group issue_40
372
- */
373
- public function removesExclusiveLockOnStreamClose()
374
- {
375
- $file = vfsStream::newFile('foo.txt')->at($this->root);
376
- $fp = fopen(vfsStream::url('root/foo.txt'), 'rb');
377
- $file->lock($fp, LOCK_EX);
378
- fclose($fp);
379
- $this->assertFalse($file->isLocked());
380
- $this->assertFalse($file->hasSharedLock());
381
- $this->assertFalse($file->hasExclusiveLock());
382
- }
383
-
384
- /**
385
- * @see https://github.com/mikey179/vfsStream/issues/31
386
- * @see https://github.com/mikey179/vfsStream/issues/40
387
- * @test
388
- * @group issue_31
389
- * @group issue_40
390
- */
391
- public function removesSharedLockOnStreamClose()
392
- {
393
- $file = vfsStream::newFile('foo.txt')->at($this->root);
394
- $fp = fopen(vfsStream::url('root/foo.txt'), 'rb');
395
- $file->lock($fp, LOCK_SH);
396
- fclose($fp);
397
- $this->assertFalse($file->isLocked());
398
- $this->assertFalse($file->hasSharedLock());
399
- $this->assertFalse($file->hasExclusiveLock());
400
- }
401
-
402
- /**
403
- * @see https://github.com/mikey179/vfsStream/issues/40
404
- * @test
405
- * @group issue_40
406
- */
407
- public function notRemovesExclusiveLockOnStreamCloseIfExclusiveLockAcquiredOnOtherFileHandler()
408
- {
409
- $file = vfsStream::newFile('foo.txt')->at($this->root);
410
- $fp1 = fopen(vfsStream::url('root/foo.txt'), 'rb');
411
- $fp2 = fopen(vfsStream::url('root/foo.txt'), 'rb');
412
- $file->lock($fp2, LOCK_EX);
413
- fclose($fp1);
414
- $this->assertTrue($file->isLocked());
415
- $this->assertFalse($file->hasSharedLock());
416
- $this->assertTrue($file->hasExclusiveLock());
417
- $this->assertTrue($file->hasExclusiveLock($fp2));
418
- fclose($fp2);
419
- }
420
-
421
- /**
422
- * @see https://github.com/mikey179/vfsStream/issues/40
423
- * @test
424
- * @group issue_40
425
- */
426
- public function notRemovesSharedLockOnStreamCloseIfSharedLockAcquiredOnOtherFileHandler()
427
- {
428
- $file = vfsStream::newFile('foo.txt')->at($this->root);
429
- $fp1 = fopen(vfsStream::url('root/foo.txt'), 'rb');
430
- $fp2 = fopen(vfsStream::url('root/foo.txt'), 'rb');
431
- $file->lock($fp2, LOCK_SH);
432
- fclose($fp1);
433
- $this->assertTrue($file->isLocked());
434
- $this->assertTrue($file->hasSharedLock());
435
- $this->assertTrue($file->hasSharedLock($fp2));
436
- $this->assertFalse($file->hasExclusiveLock());
437
- fclose($fp2);
438
- }
439
- }
440
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamWrapperLargeFileTestCase.php DELETED
@@ -1,77 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- use org\bovigo\vfs\content\LargeFileContent;
12
- /**
13
- * Test for large file mocks.
14
- *
15
- * @package bovigo_vfs
16
- * @subpackage test
17
- * @since 1.3.0
18
- * @group issue_79
19
- */
20
- class vfsStreamWrapperLargeFileTestCase extends \PHPUnit_Framework_TestCase
21
- {
22
- /**
23
- * large file to test
24
- *
25
- * @var vfsStreamFile
26
- */
27
- private $largeFile;
28
-
29
- /**
30
- * set up test environment
31
- */
32
- public function setUp()
33
- {
34
- $root = vfsStream::setup();
35
- $this->largeFile = vfsStream::newFile('large.txt')
36
- ->withContent(LargeFileContent::withGigabytes(100))
37
- ->at($root);
38
- }
39
-
40
- /**
41
- * @test
42
- */
43
- public function hasLargeFileSize()
44
- {
45
- $this->assertEquals(
46
- 100 * 1024 * 1024 * 1024,
47
- filesize($this->largeFile->url())
48
- );
49
- }
50
-
51
- /**
52
- * @test
53
- */
54
- public function canReadFromLargeFile()
55
- {
56
- $fp = fopen($this->largeFile->url(), 'rb');
57
- $data = fread($fp, 15);
58
- fclose($fp);
59
- $this->assertEquals(str_repeat(' ', 15), $data);
60
- }
61
-
62
- /**
63
- * @test
64
- */
65
- public function canWriteIntoLargeFile()
66
- {
67
- $fp = fopen($this->largeFile->url(), 'rb+');
68
- fseek($fp, 100 * 1024 * 1024, SEEK_SET);
69
- fwrite($fp, 'foobarbaz');
70
- fclose($fp);
71
- $this->largeFile->seek((100 * 1024 * 1024) - 3, SEEK_SET);
72
- $this->assertEquals(
73
- ' foobarbaz ',
74
- $this->largeFile->read(15)
75
- );
76
- }
77
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamWrapperQuotaTestCase.php DELETED
@@ -1,224 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Test for quota related functionality of org\bovigo\vfs\vfsStreamWrapper.
13
- *
14
- * @group issue_35
15
- */
16
- class vfsStreamWrapperQuotaTestCase extends \PHPUnit_Framework_TestCase
17
- {
18
- /**
19
- * access to root
20
- *
21
- * @type vfsStreamDirectory
22
- */
23
- private $root;
24
-
25
- /**
26
- * set up test environment
27
- */
28
- public function setUp()
29
- {
30
- $this->root = vfsStream::setup();
31
- vfsStream::setQuota(10);
32
- }
33
-
34
- /**
35
- * @test
36
- */
37
- public function writeLessThanQuotaWritesEverything()
38
- {
39
- $this->assertEquals(9, file_put_contents(vfsStream::url('root/file.txt'), '123456789'));
40
- $this->assertEquals('123456789', $this->root->getChild('file.txt')->getContent());
41
- }
42
-
43
- /**
44
- * @test
45
- */
46
- public function writeUpToQotaWritesEverything()
47
- {
48
- $this->assertEquals(10, file_put_contents(vfsStream::url('root/file.txt'), '1234567890'));
49
- $this->assertEquals('1234567890', $this->root->getChild('file.txt')->getContent());
50
- }
51
-
52
- /**
53
- * @test
54
- */
55
- public function writeMoreThanQotaWritesOnlyUpToQuota()
56
- {
57
- try {
58
- file_put_contents(vfsStream::url('root/file.txt'), '12345678901');
59
- } catch (\PHPUnit_Framework_Error $e) {
60
- $this->assertEquals('file_put_contents(): Only 10 of 11 bytes written, possibly out of free disk space',
61
- $e->getMessage()
62
- );
63
- }
64
-
65
- $this->assertEquals('1234567890', $this->root->getChild('file.txt')->getContent());
66
- }
67
-
68
- /**
69
- * @test
70
- */
71
- public function considersAllFilesForQuota()
72
- {
73
- vfsStream::newFile('foo.txt')
74
- ->withContent('foo')
75
- ->at(vfsStream::newDirectory('bar')
76
- ->at($this->root)
77
- );
78
- try {
79
- file_put_contents(vfsStream::url('root/file.txt'), '12345678901');
80
- } catch (\PHPUnit_Framework_Error $e) {
81
- $this->assertEquals('file_put_contents(): Only 7 of 11 bytes written, possibly out of free disk space',
82
- $e->getMessage()
83
- );
84
- }
85
-
86
- $this->assertEquals('1234567', $this->root->getChild('file.txt')->getContent());
87
- }
88
-
89
- /**
90
- * @test
91
- * @group issue_33
92
- */
93
- public function truncateToLessThanQuotaWritesEverything()
94
- {
95
- if (version_compare(PHP_VERSION, '5.4.0', '<')) {
96
- $this->markTestSkipped('Requires PHP 5.4');
97
- }
98
-
99
- if (strstr(PHP_VERSION, 'hiphop') !== false) {
100
- $this->markTestSkipped('Not supported on hhvm');
101
- }
102
-
103
- $fp = fopen(vfsStream::url('root/file.txt'), 'w+');
104
- $this->assertTrue(ftruncate($fp, 9));
105
- fclose($fp);
106
- $this->assertEquals(9,
107
- $this->root->getChild('file.txt')->size()
108
- );
109
- $this->assertEquals("\0\0\0\0\0\0\0\0\0",
110
- $this->root->getChild('file.txt')->getContent()
111
- );
112
- }
113
-
114
- /**
115
- * @test
116
- * @group issue_33
117
- */
118
- public function truncateUpToQotaWritesEverything()
119
- {
120
- if (version_compare(PHP_VERSION, '5.4.0', '<')) {
121
- $this->markTestSkipped('Requires PHP 5.4');
122
- }
123
-
124
- if (strstr(PHP_VERSION, 'hiphop') !== false) {
125
- $this->markTestSkipped('Not supported on hhvm');
126
- }
127
-
128
- $fp = fopen(vfsStream::url('root/file.txt'), 'w+');
129
- $this->assertTrue(ftruncate($fp, 10));
130
- fclose($fp);
131
- $this->assertEquals(10,
132
- $this->root->getChild('file.txt')->size()
133
- );
134
- $this->assertEquals("\0\0\0\0\0\0\0\0\0\0",
135
- $this->root->getChild('file.txt')->getContent()
136
- );
137
- }
138
-
139
- /**
140
- * @test
141
- * @group issue_33
142
- */
143
- public function truncateToMoreThanQotaWritesOnlyUpToQuota()
144
- {
145
- if (version_compare(PHP_VERSION, '5.4.0', '<')) {
146
- $this->markTestSkipped('Requires PHP 5.4');
147
- }
148
-
149
- if (strstr(PHP_VERSION, 'hiphop') !== false) {
150
- $this->markTestSkipped('Not supported on hhvm');
151
- }
152
-
153
- $fp = fopen(vfsStream::url('root/file.txt'), 'w+');
154
- $this->assertTrue(ftruncate($fp, 11));
155
- fclose($fp);
156
- $this->assertEquals(10,
157
- $this->root->getChild('file.txt')->size()
158
- );
159
- $this->assertEquals("\0\0\0\0\0\0\0\0\0\0",
160
- $this->root->getChild('file.txt')->getContent()
161
- );
162
- }
163
-
164
- /**
165
- * @test
166
- * @group issue_33
167
- */
168
- public function truncateConsidersAllFilesForQuota()
169
- {
170
- if (version_compare(PHP_VERSION, '5.4.0', '<')) {
171
- $this->markTestSkipped('Requires PHP 5.4');
172
- }
173
-
174
- if (strstr(PHP_VERSION, 'hiphop') !== false) {
175
- $this->markTestSkipped('Not supported on hhvm');
176
- }
177
-
178
- vfsStream::newFile('bar.txt')
179
- ->withContent('bar')
180
- ->at(vfsStream::newDirectory('bar')
181
- ->at($this->root)
182
- );
183
- $fp = fopen(vfsStream::url('root/file.txt'), 'w+');
184
- $this->assertTrue(ftruncate($fp, 11));
185
- fclose($fp);
186
- $this->assertEquals(7,
187
- $this->root->getChild('file.txt')->size()
188
- );
189
- $this->assertEquals("\0\0\0\0\0\0\0",
190
- $this->root->getChild('file.txt')->getContent()
191
- );
192
- }
193
-
194
- /**
195
- * @test
196
- * @group issue_33
197
- */
198
- public function canNotTruncateToGreaterLengthWhenDiscQuotaReached()
199
- {
200
- if (version_compare(PHP_VERSION, '5.4.0', '<')) {
201
- $this->markTestSkipped('Requires PHP 5.4');
202
- }
203
-
204
- if (strstr(PHP_VERSION, 'hiphop') !== false) {
205
- $this->markTestSkipped('Not supported on hhvm');
206
- }
207
-
208
- vfsStream::newFile('bar.txt')
209
- ->withContent('1234567890')
210
- ->at(vfsStream::newDirectory('bar')
211
- ->at($this->root)
212
- );
213
- $fp = fopen(vfsStream::url('root/file.txt'), 'w+');
214
- $this->assertFalse(ftruncate($fp, 11));
215
- fclose($fp);
216
- $this->assertEquals(0,
217
- $this->root->getChild('file.txt')->size()
218
- );
219
- $this->assertEquals('',
220
- $this->root->getChild('file.txt')->getContent()
221
- );
222
- }
223
- }
224
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamWrapperSetOptionTestCase.php DELETED
@@ -1,76 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Test for stream_set_option() implementation.
13
- *
14
- * @since 0.10.0
15
- * @see https://github.com/mikey179/vfsStream/issues/15
16
- * @group issue_15
17
- */
18
- class vfsStreamWrapperSetOptionTestCase extends \PHPUnit_Framework_TestCase
19
- {
20
- /**
21
- * root directory
22
- *
23
- * @var vfsStreamContainer
24
- */
25
- protected $root;
26
-
27
- /**
28
- * set up test environment
29
- */
30
- public function setUp()
31
- {
32
- $this->root = vfsStream::setup();
33
- vfsStream::newFile('foo.txt')->at($this->root);
34
- }
35
-
36
- /**
37
- * @test
38
- */
39
- public function setBlockingDoesNotWork()
40
- {
41
- $fp = fopen(vfsStream::url('root/foo.txt'), 'rb');
42
- $this->assertFalse(stream_set_blocking($fp, 1));
43
- fclose($fp);
44
- }
45
-
46
- /**
47
- * @test
48
- */
49
- public function removeBlockingDoesNotWork()
50
- {
51
- $fp = fopen(vfsStream::url('root/foo.txt'), 'rb');
52
- $this->assertFalse(stream_set_blocking($fp, 0));
53
- fclose($fp);
54
- }
55
-
56
- /**
57
- * @test
58
- */
59
- public function setTimeoutDoesNotWork()
60
- {
61
- $fp = fopen(vfsStream::url('root/foo.txt'), 'rb');
62
- $this->assertFalse(stream_set_timeout($fp, 1));
63
- fclose($fp);
64
- }
65
-
66
- /**
67
- * @test
68
- */
69
- public function setWriteBufferDoesNotWork()
70
- {
71
- $fp = fopen(vfsStream::url('root/foo.txt'), 'rb');
72
- $this->assertEquals(-1, stream_set_write_buffer($fp, 512));
73
- fclose($fp);
74
- }
75
- }
76
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamWrapperStreamSelectTestCase.php DELETED
@@ -1,35 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Test for org\bovigo\vfs\vfsStreamWrapper.
13
- *
14
- * @since 0.9.0
15
- * @group issue_3
16
- */
17
- class vfsStreamWrapperSelectStreamTestCase extends \PHPUnit_Framework_TestCase
18
- {
19
- /**
20
- * @test
21
- * @expectedException \PHPUnit_Framework_Error
22
- */
23
- public function selectStream()
24
- {
25
- $root = vfsStream::setup();
26
- $file = vfsStream::newFile('foo.txt')->at($root)->withContent('testContent');
27
-
28
- $fp = fopen(vfsStream::url('root/foo.txt'), 'rb');
29
- $readarray = array($fp);
30
- $writearray = array();
31
- $exceptarray = array();
32
- stream_select($readarray, $writearray, $exceptarray, 1);
33
- }
34
- }
35
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamWrapperTestCase.php DELETED
@@ -1,770 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- require_once __DIR__ . '/vfsStreamWrapperBaseTestCase.php';
12
- /**
13
- * Test for org\bovigo\vfs\vfsStreamWrapper.
14
- */
15
- class vfsStreamWrapperTestCase extends vfsStreamWrapperBaseTestCase
16
- {
17
- /**
18
- * ensure that a call to vfsStreamWrapper::register() resets the stream
19
- *
20
- * Implemented after a request by David Zülke.
21
- *
22
- * @test
23
- */
24
- public function resetByRegister()
25
- {
26
- $this->assertSame($this->foo, vfsStreamWrapper::getRoot());
27
- vfsStreamWrapper::register();
28
- $this->assertNull(vfsStreamWrapper::getRoot());
29
- }
30
-
31
- /**
32
- * @test
33
- * @since 0.11.0
34
- */
35
- public function setRootReturnsRoot()
36
- {
37
- vfsStreamWrapper::register();
38
- $root = vfsStream::newDirectory('root');
39
- $this->assertSame($root, vfsStreamWrapper::setRoot($root));
40
- }
41
-
42
- /**
43
- * assure that filesize is returned correct
44
- *
45
- * @test
46
- */
47
- public function filesize()
48
- {
49
- $this->assertEquals(0, filesize($this->fooURL));
50
- $this->assertEquals(0, filesize($this->fooURL . '/.'));
51
- $this->assertEquals(0, filesize($this->barURL));
52
- $this->assertEquals(0, filesize($this->barURL . '/.'));
53
- $this->assertEquals(4, filesize($this->baz2URL));
54
- $this->assertEquals(5, filesize($this->baz1URL));
55
- }
56
-
57
- /**
58
- * assert that file_exists() delivers correct result
59
- *
60
- * @test
61
- */
62
- public function file_exists()
63
- {
64
- $this->assertTrue(file_exists($this->fooURL));
65
- $this->assertTrue(file_exists($this->fooURL . '/.'));
66
- $this->assertTrue(file_exists($this->barURL));
67
- $this->assertTrue(file_exists($this->barURL . '/.'));
68
- $this->assertTrue(file_exists($this->baz1URL));
69
- $this->assertTrue(file_exists($this->baz2URL));
70
- $this->assertFalse(file_exists($this->fooURL . '/another'));
71
- $this->assertFalse(file_exists(vfsStream::url('another')));
72
- }
73
-
74
- /**
75
- * assert that filemtime() delivers correct result
76
- *
77
- * @test
78
- */
79
- public function filemtime()
80
- {
81
- $this->assertEquals(100, filemtime($this->fooURL));
82
- $this->assertEquals(100, filemtime($this->fooURL . '/.'));
83
- $this->assertEquals(200, filemtime($this->barURL));
84
- $this->assertEquals(200, filemtime($this->barURL . '/.'));
85
- $this->assertEquals(300, filemtime($this->baz1URL));
86
- $this->assertEquals(400, filemtime($this->baz2URL));
87
- }
88
-
89
- /**
90
- * @test
91
- * @group issue_23
92
- */
93
- public function unlinkRemovesFilesOnly()
94
- {
95
- $this->assertTrue(unlink($this->baz2URL));
96
- $this->assertFalse(file_exists($this->baz2URL)); // make sure statcache was cleared
97
- $this->assertEquals(array($this->bar), $this->foo->getChildren());
98
- $this->assertFalse(@unlink($this->fooURL . '/another'));
99
- $this->assertFalse(@unlink(vfsStream::url('another')));
100
- $this->assertEquals(array($this->bar), $this->foo->getChildren());
101
- }
102
-
103
- /**
104
- * @test
105
- * @group issue_49
106
- */
107
- public function unlinkReturnsFalseWhenFileDoesNotExist()
108
- {
109
- vfsStream::setup()->addChild(vfsStream::newFile('foo.blubb'));
110
- $this->assertFalse(@unlink(vfsStream::url('foo.blubb2')));
111
- }
112
-
113
- /**
114
- * @test
115
- * @group issue_49
116
- */
117
- public function unlinkReturnsFalseWhenFileDoesNotExistAndFileWithSameNameExistsInRoot()
118
- {
119
- vfsStream::setup()->addChild(vfsStream::newFile('foo.blubb'));
120
- $this->assertFalse(@unlink(vfsStream::url('foo.blubb')));
121
- }
122
-
123
- /**
124
- * assert dirname() returns correct directory name
125
- *
126
- * @test
127
- */
128
- public function dirname()
129
- {
130
- $this->assertEquals($this->fooURL, dirname($this->barURL));
131
- $this->assertEquals($this->barURL, dirname($this->baz1URL));
132
- # returns "vfs:" instead of "."
133
- # however this seems not to be fixable because dirname() does not
134
- # call the stream wrapper
135
- #$this->assertEquals(dirname(vfsStream::url('doesNotExist')), '.');
136
- }
137
-
138
- /**
139
- * assert basename() returns correct file name
140
- *
141
- * @test
142
- */
143
- public function basename()
144
- {
145
- $this->assertEquals('bar', basename($this->barURL));
146
- $this->assertEquals('baz1', basename($this->baz1URL));
147
- $this->assertEquals('doesNotExist', basename(vfsStream::url('doesNotExist')));
148
- }
149
-
150
- /**
151
- * assert is_readable() works correct
152
- *
153
- * @test
154
- */
155
- public function is_readable()
156
- {
157
- $this->assertTrue(is_readable($this->fooURL));
158
- $this->assertTrue(is_readable($this->fooURL . '/.'));
159
- $this->assertTrue(is_readable($this->barURL));
160
- $this->assertTrue(is_readable($this->barURL . '/.'));
161
- $this->assertTrue(is_readable($this->baz1URL));
162
- $this->assertTrue(is_readable($this->baz2URL));
163
- $this->assertFalse(is_readable($this->fooURL . '/another'));
164
- $this->assertFalse(is_readable(vfsStream::url('another')));
165
-
166
- $this->foo->chmod(0222);
167
- $this->assertFalse(is_readable($this->fooURL));
168
-
169
- $this->baz1->chmod(0222);
170
- $this->assertFalse(is_readable($this->baz1URL));
171
- }
172
-
173
- /**
174
- * assert is_writable() works correct
175
- *
176
- * @test
177
- */
178
- public function is_writable()
179
- {
180
- $this->assertTrue(is_writable($this->fooURL));
181
- $this->assertTrue(is_writable($this->fooURL . '/.'));
182
- $this->assertTrue(is_writable($this->barURL));
183
- $this->assertTrue(is_writable($this->barURL . '/.'));
184
- $this->assertTrue(is_writable($this->baz1URL));
185
- $this->assertTrue(is_writable($this->baz2URL));
186
- $this->assertFalse(is_writable($this->fooURL . '/another'));
187
- $this->assertFalse(is_writable(vfsStream::url('another')));
188
-
189
- $this->foo->chmod(0444);
190
- $this->assertFalse(is_writable($this->fooURL));
191
-
192
- $this->baz1->chmod(0444);
193
- $this->assertFalse(is_writable($this->baz1URL));
194
- }
195
-
196
- /**
197
- * assert is_executable() works correct
198
- *
199
- * @test
200
- */
201
- public function is_executable()
202
- {
203
- $this->assertFalse(is_executable($this->baz1URL));
204
- $this->baz1->chmod(0766);
205
- $this->assertTrue(is_executable($this->baz1URL));
206
- $this->assertFalse(is_executable($this->baz2URL));
207
- }
208
-
209
- /**
210
- * assert is_executable() works correct
211
- *
212
- * @test
213
- */
214
- public function directoriesAndNonExistingFilesAreNeverExecutable()
215
- {
216
- $this->assertFalse(is_executable($this->fooURL));
217
- $this->assertFalse(is_executable($this->fooURL . '/.'));
218
- $this->assertFalse(is_executable($this->barURL));
219
- $this->assertFalse(is_executable($this->barURL . '/.'));
220
- $this->assertFalse(is_executable($this->fooURL . '/another'));
221
- $this->assertFalse(is_executable(vfsStream::url('another')));
222
- }
223
-
224
- /**
225
- * file permissions
226
- *
227
- * @test
228
- * @group permissions
229
- */
230
- public function chmod()
231
- {
232
- $this->assertEquals(40777, decoct(fileperms($this->fooURL)));
233
- $this->assertEquals(40777, decoct(fileperms($this->fooURL . '/.')));
234
- $this->assertEquals(40777, decoct(fileperms($this->barURL)));
235
- $this->assertEquals(40777, decoct(fileperms($this->barURL . '/.')));
236
- $this->assertEquals(100666, decoct(fileperms($this->baz1URL)));
237
- $this->assertEquals(100666, decoct(fileperms($this->baz2URL)));
238
-
239
- $this->foo->chmod(0755);
240
- $this->bar->chmod(0700);
241
- $this->baz1->chmod(0644);
242
- $this->baz2->chmod(0600);
243
- $this->assertEquals(40755, decoct(fileperms($this->fooURL)));
244
- $this->assertEquals(40755, decoct(fileperms($this->fooURL . '/.')));
245
- $this->assertEquals(40700, decoct(fileperms($this->barURL)));
246
- $this->assertEquals(40700, decoct(fileperms($this->barURL . '/.')));
247
- $this->assertEquals(100644, decoct(fileperms($this->baz1URL)));
248
- $this->assertEquals(100600, decoct(fileperms($this->baz2URL)));
249
- }
250
-
251
- /**
252
- * @test
253
- * @group issue_11
254
- * @group permissions
255
- */
256
- public function chmodModifiesPermissions()
257
- {
258
- if (version_compare(phpversion(), '5.4.0', '<')) {
259
- $this->assertFalse(@chmod($this->fooURL, 0755));
260
- $this->assertFalse(@chmod($this->barURL, 0711));
261
- $this->assertFalse(@chmod($this->baz1URL, 0644));
262
- $this->assertFalse(@chmod($this->baz2URL, 0664));
263
- $this->assertEquals(40777, decoct(fileperms($this->fooURL)));
264
- $this->assertEquals(40777, decoct(fileperms($this->barURL)));
265
- $this->assertEquals(100666, decoct(fileperms($this->baz1URL)));
266
- $this->assertEquals(100666, decoct(fileperms($this->baz2URL)));
267
- } else {
268
- $this->assertTrue(chmod($this->fooURL, 0755));
269
- $this->assertTrue(chmod($this->barURL, 0711));
270
- $this->assertTrue(chmod($this->baz1URL, 0644));
271
- $this->assertTrue(chmod($this->baz2URL, 0664));
272
- $this->assertEquals(40755, decoct(fileperms($this->fooURL)));
273
- $this->assertEquals(40711, decoct(fileperms($this->barURL)));
274
- $this->assertEquals(100644, decoct(fileperms($this->baz1URL)));
275
- $this->assertEquals(100664, decoct(fileperms($this->baz2URL)));
276
- }
277
- }
278
-
279
- /**
280
- * @test
281
- * @group permissions
282
- */
283
- public function fileownerIsCurrentUserByDefault()
284
- {
285
- $this->assertEquals(vfsStream::getCurrentUser(), fileowner($this->fooURL));
286
- $this->assertEquals(vfsStream::getCurrentUser(), fileowner($this->fooURL . '/.'));
287
- $this->assertEquals(vfsStream::getCurrentUser(), fileowner($this->barURL));
288
- $this->assertEquals(vfsStream::getCurrentUser(), fileowner($this->barURL . '/.'));
289
- $this->assertEquals(vfsStream::getCurrentUser(), fileowner($this->baz1URL));
290
- $this->assertEquals(vfsStream::getCurrentUser(), fileowner($this->baz2URL));
291
- }
292
-
293
- /**
294
- * @test
295
- * @group issue_11
296
- * @group permissions
297
- */
298
- public function chownChangesUser()
299
- {
300
- if (version_compare(phpversion(), '5.4.0', '<')) {
301
- $this->foo->chown(vfsStream::OWNER_USER_1);
302
- $this->bar->chown(vfsStream::OWNER_USER_1);
303
- $this->baz1->chown(vfsStream::OWNER_USER_2);
304
- $this->baz2->chown(vfsStream::OWNER_USER_2);
305
- } else {
306
- chown($this->fooURL, vfsStream::OWNER_USER_1);
307
- chown($this->barURL, vfsStream::OWNER_USER_1);
308
- chown($this->baz1URL, vfsStream::OWNER_USER_2);
309
- chown($this->baz2URL, vfsStream::OWNER_USER_2);
310
- }
311
-
312
- $this->assertEquals(vfsStream::OWNER_USER_1, fileowner($this->fooURL));
313
- $this->assertEquals(vfsStream::OWNER_USER_1, fileowner($this->fooURL . '/.'));
314
- $this->assertEquals(vfsStream::OWNER_USER_1, fileowner($this->barURL));
315
- $this->assertEquals(vfsStream::OWNER_USER_1, fileowner($this->barURL . '/.'));
316
- $this->assertEquals(vfsStream::OWNER_USER_2, fileowner($this->baz1URL));
317
- $this->assertEquals(vfsStream::OWNER_USER_2, fileowner($this->baz2URL));
318
- }
319
-
320
- /**
321
- * @test
322
- * @group issue_11
323
- * @group permissions
324
- */
325
- public function chownDoesNotWorkOnVfsStreamUrls()
326
- {
327
- if (version_compare(phpversion(), '5.4.0', '<')) {
328
- $this->assertFalse(@chown($this->fooURL, vfsStream::OWNER_USER_2));
329
- $this->assertEquals(vfsStream::getCurrentUser(), fileowner($this->fooURL));
330
- }
331
- }
332
-
333
- /**
334
- * @test
335
- * @group issue_11
336
- * @group permissions
337
- */
338
- public function groupIsCurrentGroupByDefault()
339
- {
340
- $this->assertEquals(vfsStream::getCurrentGroup(), filegroup($this->fooURL));
341
- $this->assertEquals(vfsStream::getCurrentGroup(), filegroup($this->fooURL . '/.'));
342
- $this->assertEquals(vfsStream::getCurrentGroup(), filegroup($this->barURL));
343
- $this->assertEquals(vfsStream::getCurrentGroup(), filegroup($this->barURL . '/.'));
344
- $this->assertEquals(vfsStream::getCurrentGroup(), filegroup($this->baz1URL));
345
- $this->assertEquals(vfsStream::getCurrentGroup(), filegroup($this->baz2URL));
346
- }
347
-
348
- /**
349
- * @test
350
- * @group issue_11
351
- * @group permissions
352
- */
353
- public function chgrp()
354
- {
355
- if (version_compare(phpversion(), '5.4.0', '<')) {
356
- $this->foo->chgrp(vfsStream::GROUP_USER_1);
357
- $this->bar->chgrp(vfsStream::GROUP_USER_1);
358
- $this->baz1->chgrp(vfsStream::GROUP_USER_2);
359
- $this->baz2->chgrp(vfsStream::GROUP_USER_2);
360
- } else {
361
- chgrp($this->fooURL, vfsStream::GROUP_USER_1);
362
- chgrp($this->barURL, vfsStream::GROUP_USER_1);
363
- chgrp($this->baz1URL, vfsStream::GROUP_USER_2);
364
- chgrp($this->baz2URL, vfsStream::GROUP_USER_2);
365
- }
366
-
367
- $this->assertEquals(vfsStream::GROUP_USER_1, filegroup($this->fooURL));
368
- $this->assertEquals(vfsStream::GROUP_USER_1, filegroup($this->fooURL . '/.'));
369
- $this->assertEquals(vfsStream::GROUP_USER_1, filegroup($this->barURL));
370
- $this->assertEquals(vfsStream::GROUP_USER_1, filegroup($this->barURL . '/.'));
371
- $this->assertEquals(vfsStream::GROUP_USER_2, filegroup($this->baz1URL));
372
- $this->assertEquals(vfsStream::GROUP_USER_2, filegroup($this->baz2URL));
373
- }
374
-
375
- /**
376
- * @test
377
- * @group issue_11
378
- * @group permissions
379
- */
380
- public function chgrpDoesNotWorkOnVfsStreamUrls()
381
- {
382
- if (version_compare(phpversion(), '5.4.0', '<')) {
383
- $this->assertFalse(@chgrp($this->fooURL, vfsStream::GROUP_USER_2));
384
- $this->assertEquals(vfsStream::getCurrentGroup(), filegroup($this->fooURL));
385
- }
386
- }
387
-
388
- /**
389
- * @test
390
- * @author Benoit Aubuchon
391
- */
392
- public function renameDirectory()
393
- {
394
- // move foo/bar to foo/baz3
395
- $baz3URL = vfsStream::url('foo/baz3');
396
- $this->assertTrue(rename($this->barURL, $baz3URL));
397
- $this->assertFileExists($baz3URL);
398
- $this->assertFileNotExists($this->barURL);
399
- }
400
-
401
- /**
402
- * @test
403
- */
404
- public function renameDirectoryWithDots()
405
- {
406
- // move foo/bar to foo/baz3
407
- $baz3URL = vfsStream::url('foo/baz3');
408
- $this->assertTrue(rename($this->barURL . '/.', $baz3URL));
409
- $this->assertFileExists($baz3URL);
410
- $this->assertFileNotExists($this->barURL);
411
- }
412
-
413
- /**
414
- * @test
415
- * @group issue_9
416
- * @since 0.9.0
417
- */
418
- public function renameDirectoryWithDotsInTarget()
419
- {
420
- // move foo/bar to foo/baz3
421
- $baz3URL = vfsStream::url('foo/../foo/baz3/.');
422
- $this->assertTrue(rename($this->barURL . '/.', $baz3URL));
423
- $this->assertFileExists($baz3URL);
424
- $this->assertFileNotExists($this->barURL);
425
- }
426
-
427
- /**
428
- * @test
429
- * @author Benoit Aubuchon
430
- */
431
- public function renameDirectoryOverwritingExistingFile()
432
- {
433
- // move foo/bar to foo/baz2
434
- $this->assertTrue(rename($this->barURL, $this->baz2URL));
435
- $this->assertFileExists(vfsStream::url('foo/baz2/baz1'));
436
- $this->assertFileNotExists($this->barURL);
437
- }
438
-
439
- /**
440
- * @test
441
- * @expectedException PHPUnit_Framework_Error
442
- */
443
- public function renameFileIntoFile()
444
- {
445
- // foo/baz2 is a file, so it can not be turned into a directory
446
- $baz3URL = vfsStream::url('foo/baz2/baz3');
447
- $this->assertTrue(rename($this->baz1URL, $baz3URL));
448
- $this->assertFileExists($baz3URL);
449
- $this->assertFileNotExists($this->baz1URL);
450
- }
451
-
452
- /**
453
- * @test
454
- * @author Benoit Aubuchon
455
- */
456
- public function renameFileToDirectory()
457
- {
458
- // move foo/bar/baz1 to foo/baz3
459
- $baz3URL = vfsStream::url('foo/baz3');
460
- $this->assertTrue(rename($this->baz1URL, $baz3URL));
461
- $this->assertFileExists($this->barURL);
462
- $this->assertFileExists($baz3URL);
463
- $this->assertFileNotExists($this->baz1URL);
464
- }
465
-
466
- /**
467
- * assert that trying to rename from a non existing file trigger a warning
468
- *
469
- * @expectedException PHPUnit_Framework_Error
470
- * @test
471
- */
472
- public function renameOnSourceFileNotFound()
473
- {
474
- rename(vfsStream::url('notfound'), $this->baz1URL);
475
- }
476
- /**
477
- * assert that trying to rename to a directory that is not found trigger a warning
478
-
479
- * @expectedException PHPUnit_Framework_Error
480
- * @test
481
- */
482
- public function renameOnDestinationDirectoryFileNotFound()
483
- {
484
- rename($this->baz1URL, vfsStream::url('foo/notfound/file2'));
485
- }
486
- /**
487
- * stat() and fstat() should return the same result
488
- *
489
- * @test
490
- */
491
- public function statAndFstatReturnSameResult()
492
- {
493
- $fp = fopen($this->baz2URL, 'r');
494
- $this->assertEquals(stat($this->baz2URL),
495
- fstat($fp)
496
- );
497
- fclose($fp);
498
- }
499
-
500
- /**
501
- * stat() returns full data
502
- *
503
- * @test
504
- */
505
- public function statReturnsFullDataForFiles()
506
- {
507
- $this->assertEquals(array(0 => 0,
508
- 1 => 0,
509
- 2 => 0100666,
510
- 3 => 0,
511
- 4 => vfsStream::getCurrentUser(),
512
- 5 => vfsStream::getCurrentGroup(),
513
- 6 => 0,
514
- 7 => 4,
515
- 8 => 400,
516
- 9 => 400,
517
- 10 => 400,
518
- 11 => -1,
519
- 12 => -1,
520
- 'dev' => 0,
521
- 'ino' => 0,
522
- 'mode' => 0100666,
523
- 'nlink' => 0,
524
- 'uid' => vfsStream::getCurrentUser(),
525
- 'gid' => vfsStream::getCurrentGroup(),
526
- 'rdev' => 0,
527
- 'size' => 4,
528
- 'atime' => 400,
529
- 'mtime' => 400,
530
- 'ctime' => 400,
531
- 'blksize' => -1,
532
- 'blocks' => -1
533
- ),
534
- stat($this->baz2URL)
535
- );
536
- }
537
-
538
- /**
539
- * @test
540
- */
541
- public function statReturnsFullDataForDirectories()
542
- {
543
- $this->assertEquals(array(0 => 0,
544
- 1 => 0,
545
- 2 => 0040777,
546
- 3 => 0,
547
- 4 => vfsStream::getCurrentUser(),
548
- 5 => vfsStream::getCurrentGroup(),
549
- 6 => 0,
550
- 7 => 0,
551
- 8 => 100,
552
- 9 => 100,
553
- 10 => 100,
554
- 11 => -1,
555
- 12 => -1,
556
- 'dev' => 0,
557
- 'ino' => 0,
558
- 'mode' => 0040777,
559
- 'nlink' => 0,
560
- 'uid' => vfsStream::getCurrentUser(),
561
- 'gid' => vfsStream::getCurrentGroup(),
562
- 'rdev' => 0,
563
- 'size' => 0,
564
- 'atime' => 100,
565
- 'mtime' => 100,
566
- 'ctime' => 100,
567
- 'blksize' => -1,
568
- 'blocks' => -1
569
- ),
570
- stat($this->fooURL)
571
- );
572
- }
573
-
574
- /**
575
- * @test
576
- */
577
- public function statReturnsFullDataForDirectoriesWithDot()
578
- {
579
- $this->assertEquals(array(0 => 0,
580
- 1 => 0,
581
- 2 => 0040777,
582
- 3 => 0,
583
- 4 => vfsStream::getCurrentUser(),
584
- 5 => vfsStream::getCurrentGroup(),
585
- 6 => 0,
586
- 7 => 0,
587
- 8 => 100,
588
- 9 => 100,
589
- 10 => 100,
590
- 11 => -1,
591
- 12 => -1,
592
- 'dev' => 0,
593
- 'ino' => 0,
594
- 'mode' => 0040777,
595
- 'nlink' => 0,
596
- 'uid' => vfsStream::getCurrentUser(),
597
- 'gid' => vfsStream::getCurrentGroup(),
598
- 'rdev' => 0,
599
- 'size' => 0,
600
- 'atime' => 100,
601
- 'mtime' => 100,
602
- 'ctime' => 100,
603
- 'blksize' => -1,
604
- 'blocks' => -1
605
- ),
606
- stat($this->fooURL . '/.')
607
- );
608
- }
609
-
610
- /**
611
- * @test
612
- * @expectedException PHPUnit_Framework_Error
613
- */
614
- public function openFileWithoutDirectory()
615
- {
616
- vfsStreamWrapper::register();
617
- $this->assertFalse(file_get_contents(vfsStream::url('file.txt')));
618
- }
619
-
620
- /**
621
- * @test
622
- * @group issue_33
623
- * @since 1.1.0
624
- * @requires PHP 5.4.0
625
- */
626
- public function truncateRemovesSuperflouosContent()
627
- {
628
- if (strstr(PHP_VERSION, 'hiphop') !== false) {
629
- $this->markTestSkipped('Not supported on hhvm');
630
- }
631
-
632
- $handle = fopen($this->baz1URL, "r+");
633
- $this->assertTrue(ftruncate($handle, 0));
634
- $this->assertEquals(0, filesize($this->baz1URL));
635
- $this->assertEquals('', file_get_contents($this->baz1URL));
636
- fclose($handle);
637
- }
638
-
639
- /**
640
- * @test
641
- * @group issue_33
642
- * @since 1.1.0
643
- * @requires PHP 5.4.0
644
- */
645
- public function truncateToGreaterSizeAddsZeroBytes()
646
- {
647
- if (strstr(PHP_VERSION, 'hiphop') !== false) {
648
- $this->markTestSkipped('Not supported on hhvm');
649
- }
650
-
651
- $handle = fopen($this->baz1URL, "r+");
652
- $this->assertTrue(ftruncate($handle, 25));
653
- $this->assertEquals(25, filesize($this->baz1URL));
654
- $this->assertEquals("baz 1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
655
- file_get_contents($this->baz1URL));
656
- fclose($handle);
657
- }
658
-
659
- /**
660
- * @test
661
- * @group issue_11
662
- * @requires PHP 5.4.0
663
- */
664
- public function touchCreatesNonExistingFile()
665
- {
666
- $this->assertTrue(touch($this->fooURL . '/new.txt'));
667
- $this->assertTrue($this->foo->hasChild('new.txt'));
668
- }
669
-
670
- /**
671
- * @test
672
- * @group issue_11
673
- * @requires PHP 5.4.0
674
- */
675
- public function touchChangesAccessAndModificationTimeForFile()
676
- {
677
- $this->assertTrue(touch($this->baz1URL, 303, 313));
678
- $this->assertEquals(303, $this->baz1->filemtime());
679
- $this->assertEquals(313, $this->baz1->fileatime());
680
- }
681
-
682
- /**
683
- * @test
684
- * @group issue_11
685
- * @group issue_80
686
- * @requires PHP 5.4.0
687
- */
688
- public function touchChangesTimesToCurrentTimestampWhenNoTimesGiven()
689
- {
690
- $this->assertTrue(touch($this->baz1URL));
691
- $this->assertEquals(time(), $this->baz1->filemtime(), '', 1);
692
- $this->assertEquals(time(), $this->baz1->fileatime(), '', 1);
693
- }
694
-
695
- /**
696
- * @test
697
- * @group issue_11
698
- * @requires PHP 5.4.0
699
- */
700
- public function touchWithModifiedTimeChangesAccessAndModifiedTime()
701
- {
702
- $this->assertTrue(touch($this->baz1URL, 303));
703
- $this->assertEquals(303, $this->baz1->filemtime());
704
- $this->assertEquals(303, $this->baz1->fileatime());
705
- }
706
-
707
- /**
708
- * @test
709
- * @group issue_11
710
- * @requires PHP 5.4.0
711
- */
712
- public function touchChangesAccessAndModificationTimeForDirectory()
713
- {
714
- $this->assertTrue(touch($this->fooURL, 303, 313));
715
- $this->assertEquals(303, $this->foo->filemtime());
716
- $this->assertEquals(313, $this->foo->fileatime());
717
- }
718
-
719
- /**
720
- * @test
721
- * @group issue_34
722
- * @since 1.2.0
723
- */
724
- public function pathesAreCorrectlySet()
725
- {
726
- $this->assertEquals(vfsStream::path($this->fooURL), $this->foo->path());
727
- $this->assertEquals(vfsStream::path($this->barURL), $this->bar->path());
728
- $this->assertEquals(vfsStream::path($this->baz1URL), $this->baz1->path());
729
- $this->assertEquals(vfsStream::path($this->baz2URL), $this->baz2->path());
730
- }
731
-
732
- /**
733
- * @test
734
- * @group issue_34
735
- * @since 1.2.0
736
- */
737
- public function urlsAreCorrectlySet()
738
- {
739
- $this->assertEquals($this->fooURL, $this->foo->url());
740
- $this->assertEquals($this->barURL, $this->bar->url());
741
- $this->assertEquals($this->baz1URL, $this->baz1->url());
742
- $this->assertEquals($this->baz2URL, $this->baz2->url());
743
- }
744
-
745
- /**
746
- * @test
747
- * @group issue_34
748
- * @since 1.2.0
749
- */
750
- public function pathIsUpdatedAfterMove()
751
- {
752
- // move foo/bar/baz1 to foo/baz3
753
- $baz3URL = vfsStream::url('foo/baz3');
754
- $this->assertTrue(rename($this->baz1URL, $baz3URL));
755
- $this->assertEquals(vfsStream::path($baz3URL), $this->baz1->path());
756
- }
757
-
758
- /**
759
- * @test
760
- * @group issue_34
761
- * @since 1.2.0
762
- */
763
- public function urlIsUpdatedAfterMove()
764
- {
765
- // move foo/bar/baz1 to foo/baz3
766
- $baz3URL = vfsStream::url('foo/baz3');
767
- $this->assertTrue(rename($this->baz1URL, $baz3URL));
768
- $this->assertEquals($baz3URL, $this->baz1->url());
769
- }
770
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamWrapperWithoutRootTestCase.php DELETED
@@ -1,64 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Test for org\bovigo\vfs\vfsStreamWrapper.
13
- */
14
- class vfsStreamWrapperWithoutRootTestCase extends \PHPUnit_Framework_TestCase
15
- {
16
- /**
17
- * set up test environment
18
- */
19
- public function setUp()
20
- {
21
- vfsStreamWrapper::register();
22
- }
23
-
24
- /**
25
- * no root > no directory to open
26
- *
27
- * @test
28
- */
29
- public function canNotOpenDirectory()
30
- {
31
- $this->assertFalse(@dir(vfsStream::url('foo')));
32
- }
33
-
34
- /**
35
- * can not unlink without root
36
- *
37
- * @test
38
- */
39
- public function canNotUnlink()
40
- {
41
- $this->assertFalse(@unlink(vfsStream::url('foo')));
42
- }
43
-
44
- /**
45
- * can not open a file without root
46
- *
47
- * @test
48
- */
49
- public function canNotOpen()
50
- {
51
- $this->assertFalse(@fopen(vfsStream::url('foo'), 'r'));
52
- }
53
-
54
- /**
55
- * can not rename a file without root
56
- *
57
- * @test
58
- */
59
- public function canNotRename()
60
- {
61
- $this->assertFalse(@rename(vfsStream::url('foo'), vfsStream::url('bar')));
62
- }
63
- }
64
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamZipTestCase.php DELETED
@@ -1,53 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs;
11
- /**
12
- * Test for org\bovigo\vfs\vfsStreamWrapper in conjunction with ext/zip.
13
- *
14
- * @group zip
15
- */
16
- class vfsStreamZipTestCase extends \PHPUnit_Framework_TestCase
17
- {
18
- /**
19
- * set up test environment
20
- */
21
- public function setUp()
22
- {
23
- if (extension_loaded('zip') === false) {
24
- $this->markTestSkipped('No ext/zip installed, skipping test.');
25
- }
26
-
27
- $this->markTestSkipped('Zip extension can not work with vfsStream urls.');
28
-
29
- vfsStreamWrapper::register();
30
- vfsStreamWrapper::setRoot(vfsStream::newDirectory('root'));
31
-
32
- }
33
-
34
- /**
35
- * @test
36
- */
37
- public function createZipArchive()
38
- {
39
- $zip = new ZipArchive();
40
- $this->assertTrue($zip->open(vfsStream::url('root/test.zip'), ZipArchive::CREATE));
41
- $this->assertTrue($zip->addFromString("testfile1.txt", "#1 This is a test string added as testfile1.txt.\n"));
42
- $this->assertTrue($zip->addFromString("testfile2.txt", "#2 This is a test string added as testfile2.txt.\n"));
43
- $zip->setArchiveComment('a test');
44
- var_dump($zip);
45
- $this->assertTrue($zip->close());
46
- var_dump($zip->getStatusString());
47
- var_dump($zip->close());
48
- var_dump($zip->getStatusString());
49
- var_dump($zip);
50
- var_dump(file_exists(vfsStream::url('root/test.zip')));
51
- }
52
- }
53
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/visitor/vfsStreamAbstractVisitorTestCase.php DELETED
@@ -1,99 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs\visitor;
11
- use org\bovigo\vfs\vfsStreamDirectory;
12
- use org\bovigo\vfs\vfsStreamFile;
13
- use org\bovigo\vfs\vfsStreamBlock;
14
- /**
15
- * Test for org\bovigo\vfs\visitor\vfsStreamAbstractVisitor.
16
- *
17
- * @since 0.10.0
18
- * @see https://github.com/mikey179/vfsStream/issues/10
19
- * @group issue_10
20
- */
21
- class vfsStreamAbstractVisitorTestCase extends \PHPUnit_Framework_TestCase
22
- {
23
- /**
24
- * instance to test
25
- *
26
- * @var vfsStreamAbstractVisitor
27
- */
28
- protected $abstractVisitor;
29
-
30
- /**
31
- * set up test environment
32
- */
33
- public function setUp()
34
- {
35
- $this->abstractVisitor = $this->getMock('org\\bovigo\\vfs\\visitor\\vfsStreamAbstractVisitor',
36
- array('visitFile', 'visitDirectory')
37
- );
38
- }
39
-
40
- /**
41
- * @test
42
- * @expectedException \InvalidArgumentException
43
- */
44
- public function visitThrowsInvalidArgumentExceptionOnUnknownContentType()
45
- {
46
- $mockContent = $this->getMock('org\\bovigo\\vfs\\vfsStreamContent');
47
- $mockContent->expects($this->any())
48
- ->method('getType')
49
- ->will($this->returnValue('invalid'));
50
- $this->assertSame($this->abstractVisitor,
51
- $this->abstractVisitor->visit($mockContent)
52
- );
53
- }
54
-
55
- /**
56
- * @test
57
- */
58
- public function visitWithFileCallsVisitFile()
59
- {
60
- $file = new vfsStreamFile('foo.txt');
61
- $this->abstractVisitor->expects($this->once())
62
- ->method('visitFile')
63
- ->with($this->equalTo($file));
64
- $this->assertSame($this->abstractVisitor,
65
- $this->abstractVisitor->visit($file)
66
- );
67
- }
68
-
69
- /**
70
- * tests that a block device eventually calls out to visit file
71
- *
72
- * @test
73
- */
74
- public function visitWithBlockCallsVisitFile()
75
- {
76
- $block = new vfsStreamBlock('foo');
77
- $this->abstractVisitor->expects($this->once())
78
- ->method('visitFile')
79
- ->with($this->equalTo($block));
80
- $this->assertSame($this->abstractVisitor,
81
- $this->abstractVisitor->visit($block)
82
- );
83
- }
84
-
85
- /**
86
- * @test
87
- */
88
- public function visitWithDirectoryCallsVisitDirectory()
89
- {
90
- $dir = new vfsStreamDirectory('bar');
91
- $this->abstractVisitor->expects($this->once())
92
- ->method('visitDirectory')
93
- ->with($this->equalTo($dir));
94
- $this->assertSame($this->abstractVisitor,
95
- $this->abstractVisitor->visit($dir)
96
- );
97
- }
98
- }
99
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/visitor/vfsStreamPrintVisitorTestCase.php DELETED
@@ -1,103 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs\visitor;
11
- use org\bovigo\vfs\vfsStream;
12
- use org\bovigo\vfs\vfsStreamDirectory;
13
- use org\bovigo\vfs\vfsStreamFile;
14
- /**
15
- * Test for org\bovigo\vfs\visitor\vfsStreamPrintVisitor.
16
- *
17
- * @since 0.10.0
18
- * @see https://github.com/mikey179/vfsStream/issues/10
19
- * @group issue_10
20
- */
21
- class vfsStreamPrintVisitorTestCase extends \PHPUnit_Framework_TestCase
22
- {
23
- /**
24
- * @test
25
- * @expectedException \InvalidArgumentException
26
- */
27
- public function constructWithNonResourceThrowsInvalidArgumentException()
28
- {
29
- new vfsStreamPrintVisitor('invalid');
30
- }
31
-
32
- /**
33
- * @test
34
- * @expectedException \InvalidArgumentException
35
- */
36
- public function constructWithNonStreamResourceThrowsInvalidArgumentException()
37
- {
38
- new vfsStreamPrintVisitor(xml_parser_create());
39
- }
40
-
41
- /**
42
- * @test
43
- */
44
- public function visitFileWritesFileNameToStream()
45
- {
46
- $output = vfsStream::newFile('foo.txt')
47
- ->at(vfsStream::setup());
48
- $printVisitor = new vfsStreamPrintVisitor(fopen('vfs://root/foo.txt', 'wb'));
49
- $this->assertSame($printVisitor,
50
- $printVisitor->visitFile(vfsStream::newFile('bar.txt'))
51
- );
52
- $this->assertEquals("- bar.txt\n", $output->getContent());
53
- }
54
-
55
- /**
56
- * @test
57
- */
58
- public function visitFileWritesBlockDeviceToStream()
59
- {
60
- $output = vfsStream::newFile('foo.txt')
61
- ->at(vfsStream::setup());
62
- $printVisitor = new vfsStreamPrintVisitor(fopen('vfs://root/foo.txt', 'wb'));
63
- $this->assertSame($printVisitor,
64
- $printVisitor->visitBlockDevice(vfsStream::newBlock('bar'))
65
- );
66
- $this->assertEquals("- [bar]\n", $output->getContent());
67
- }
68
-
69
- /**
70
- * @test
71
- */
72
- public function visitDirectoryWritesDirectoryNameToStream()
73
- {
74
- $output = vfsStream::newFile('foo.txt')
75
- ->at(vfsStream::setup());
76
- $printVisitor = new vfsStreamPrintVisitor(fopen('vfs://root/foo.txt', 'wb'));
77
- $this->assertSame($printVisitor,
78
- $printVisitor->visitDirectory(vfsStream::newDirectory('baz'))
79
- );
80
- $this->assertEquals("- baz\n", $output->getContent());
81
- }
82
-
83
- /**
84
- * @test
85
- */
86
- public function visitRecursiveDirectoryStructure()
87
- {
88
- $root = vfsStream::setup('root',
89
- null,
90
- array('test' => array('foo' => array('test.txt' => 'hello'),
91
- 'baz.txt' => 'world'
92
- ),
93
- 'foo.txt' => ''
94
- )
95
- );
96
- $printVisitor = new vfsStreamPrintVisitor(fopen('vfs://root/foo.txt', 'wb'));
97
- $this->assertSame($printVisitor,
98
- $printVisitor->visitDirectory($root)
99
- );
100
- $this->assertEquals("- root\n - test\n - foo\n - test.txt\n - baz.txt\n - foo.txt\n", file_get_contents('vfs://root/foo.txt'));
101
- }
102
- }
103
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/visitor/vfsStreamStructureVisitorTestCase.php DELETED
@@ -1,86 +0,0 @@
1
- <?php
2
- /**
3
- * This file is part of vfsStream.
4
- *
5
- * For the full copyright and license information, please view the LICENSE
6
- * file that was distributed with this source code.
7
- *
8
- * @package org\bovigo\vfs
9
- */
10
- namespace org\bovigo\vfs\visitor;
11
- use org\bovigo\vfs\vfsStream;
12
- /**
13
- * Test for org\bovigo\vfs\visitor\vfsStreamStructureVisitor.
14
- *
15
- * @since 0.10.0
16
- * @see https://github.com/mikey179/vfsStream/issues/10
17
- * @group issue_10
18
- */
19
- class vfsStreamStructureVisitorTestCase extends \PHPUnit_Framework_TestCase
20
- {
21
- /**
22
- * @test
23
- */
24
- public function visitFileCreatesStructureForFile()
25
- {
26
- $structureVisitor = new vfsStreamStructureVisitor();
27
- $this->assertEquals(array('foo.txt' => 'test'),
28
- $structureVisitor->visitFile(vfsStream::newFile('foo.txt')
29
- ->withContent('test')
30
- )
31
- ->getStructure()
32
- );
33
- }
34
-
35
- /**
36
- * @test
37
- */
38
- public function visitFileCreatesStructureForBlock()
39
- {
40
- $structureVisitor = new vfsStreamStructureVisitor();
41
- $this->assertEquals(array('[foo]' => 'test'),
42
- $structureVisitor->visitBlockDevice(vfsStream::newBlock('foo')
43
- ->withContent('test')
44
- )
45
- ->getStructure()
46
- );
47
- }
48
-
49
- /**
50
- * @test
51
- */
52
- public function visitDirectoryCreatesStructureForDirectory()
53
- {
54
- $structureVisitor = new vfsStreamStructureVisitor();
55
- $this->assertEquals(array('baz' => array()),
56
- $structureVisitor->visitDirectory(vfsStream::newDirectory('baz'))
57
- ->getStructure()
58
- );
59
- }
60
-
61
- /**
62
- * @test
63
- */
64
- public function visitRecursiveDirectoryStructure()
65
- {
66
- $root = vfsStream::setup('root',
67
- null,
68
- array('test' => array('foo' => array('test.txt' => 'hello'),
69
- 'baz.txt' => 'world'
70
- ),
71
- 'foo.txt' => ''
72
- )
73
- );
74
- $structureVisitor = new vfsStreamStructureVisitor();
75
- $this->assertEquals(array('root' => array('test' => array('foo' => array('test.txt' => 'hello'),
76
- 'baz.txt' => 'world'
77
- ),
78
- 'foo.txt' => ''
79
- ),
80
- ),
81
- $structureVisitor->visitDirectory($root)
82
- ->getStructure()
83
- );
84
- }
85
- }
86
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/mikey179/vfsStream/src/test/resources/filesystemcopy/withSubfolders/aFile.txt DELETED
@@ -1 +0,0 @@
1
- foo
 
vendor/mikey179/vfsStream/src/test/resources/filesystemcopy/withSubfolders/subfolder1/file1.txt DELETED
@@ -1 +0,0 @@
1
- foobar
 
vendor/symfony/finder/Symfony/Component/Finder/Adapter/AbstractFindAdapter.php CHANGED
@@ -272,7 +272,7 @@ abstract class AbstractFindAdapter extends AbstractAdapter
272
  foreach ($dates as $i => $date) {
273
  $command->add($i > 0 ? '-and' : null);
274
 
275
- $mins = (int) round((time() - $date->getTarget()) / 60);
276
 
277
  if (0 > $mins) {
278
  // mtime is in the future
272
  foreach ($dates as $i => $date) {
273
  $command->add($i > 0 ? '-and' : null);
274
 
275
+ $mins = (int) round((time()-$date->getTarget()) / 60);
276
 
277
  if (0 > $mins) {
278
  // mtime is in the future
vendor/symfony/finder/Symfony/Component/Finder/Comparator/NumberComparator.php CHANGED
@@ -64,13 +64,13 @@ class NumberComparator extends Comparator
64
  $target *= 1000000;
65
  break;
66
  case 'mi':
67
- $target *= 1024 * 1024;
68
  break;
69
  case 'g':
70
  $target *= 1000000000;
71
  break;
72
  case 'gi':
73
- $target *= 1024 * 1024 * 1024;
74
  break;
75
  }
76
  }
64
  $target *= 1000000;
65
  break;
66
  case 'mi':
67
+ $target *= 1024*1024;
68
  break;
69
  case 'g':
70
  $target *= 1000000000;
71
  break;
72
  case 'gi':
73
+ $target *= 1024*1024*1024;
74
  break;
75
  }
76
  }
vendor/symfony/finder/Symfony/Component/Finder/Finder.php CHANGED
@@ -234,7 +234,7 @@ class Finder implements \IteratorAggregate, \Countable
234
  * $finder->date('> now - 2 hours');
235
  * $finder->date('>= 2005-10-15');
236
  *
237
- * @param string $date A date range string
238
  *
239
  * @return Finder The current Finder instance
240
  *
@@ -436,9 +436,9 @@ class Finder implements \IteratorAggregate, \Countable
436
  public function ignoreDotFiles($ignoreDotFiles)
437
  {
438
  if ($ignoreDotFiles) {
439
- $this->ignore |= static::IGNORE_DOT_FILES;
440
  } else {
441
- $this->ignore &= ~static::IGNORE_DOT_FILES;
442
  }
443
 
444
  return $this;
@@ -458,9 +458,9 @@ class Finder implements \IteratorAggregate, \Countable
458
  public function ignoreVCS($ignoreVCS)
459
  {
460
  if ($ignoreVCS) {
461
- $this->ignore |= static::IGNORE_VCS_FILES;
462
  } else {
463
- $this->ignore &= ~static::IGNORE_VCS_FILES;
464
  }
465
 
466
  return $this;
234
  * $finder->date('> now - 2 hours');
235
  * $finder->date('>= 2005-10-15');
236
  *
237
+ * @param string $date A date rage string
238
  *
239
  * @return Finder The current Finder instance
240
  *
436
  public function ignoreDotFiles($ignoreDotFiles)
437
  {
438
  if ($ignoreDotFiles) {
439
+ $this->ignore = $this->ignore | static::IGNORE_DOT_FILES;
440
  } else {
441
+ $this->ignore = $this->ignore & ~static::IGNORE_DOT_FILES;
442
  }
443
 
444
  return $this;
458
  public function ignoreVCS($ignoreVCS)
459
  {
460
  if ($ignoreVCS) {
461
+ $this->ignore = $this->ignore | static::IGNORE_VCS_FILES;
462
  } else {
463
+ $this->ignore = $this->ignore & ~static::IGNORE_VCS_FILES;
464
  }
465
 
466
  return $this;
vendor/symfony/finder/Symfony/Component/Finder/README.md CHANGED
@@ -45,7 +45,7 @@ Resources
45
  You can run the unit tests with the following command:
46
 
47
  $ cd path/to/Symfony/Component/Finder/
48
- $ composer install
49
  $ phpunit
50
 
51
  [1]: http://api.symfony.com/2.5/Symfony/Component/Finder/SplFileInfo.html
45
  You can run the unit tests with the following command:
46
 
47
  $ cd path/to/Symfony/Component/Finder/
48
+ $ composer.phar install
49
  $ phpunit
50
 
51
  [1]: http://api.symfony.com/2.5/Symfony/Component/Finder/SplFileInfo.html
vendor/symfony/finder/Symfony/Component/Finder/Shell/Command.php CHANGED
@@ -168,7 +168,7 @@ class Command
168
  }
169
 
170
  $this->bits[] = self::create($this);
171
- $this->labels[$label] = count($this->bits) - 1;
172
 
173
  return $this->bits[$this->labels[$label]];
174
  }
168
  }
169
 
170
  $this->bits[] = self::create($this);
171
+ $this->labels[$label] = count($this->bits)-1;
172
 
173
  return $this->bits[$this->labels[$label]];
174
  }
vendor/symfony/finder/Symfony/Component/Finder/composer.json CHANGED
@@ -18,9 +18,6 @@
18
  "require": {
19
  "php": ">=5.3.3"
20
  },
21
- "require-dev": {
22
- "symfony/phpunit-bridge": "~2.7"
23
- },
24
  "autoload": {
25
  "psr-0": { "Symfony\\Component\\Finder\\": "" }
26
  },
18
  "require": {
19
  "php": ">=5.3.3"
20
  },
 
 
 
21
  "autoload": {
22
  "psr-0": { "Symfony\\Component\\Finder\\": "" }
23
  },
vendor/symfony/finder/Symfony/Component/Finder/phpunit.xml.dist CHANGED
@@ -7,7 +7,8 @@
7
  bootstrap="vendor/autoload.php"
8
  >
9
  <php>
10
- <ini name="error_reporting" value="-1" />
 
11
  </php>
12
  <testsuites>
13
  <testsuite name="Symfony Finder Component Test Suite">
7
  bootstrap="vendor/autoload.php"
8
  >
9
  <php>
10
+ <!-- Silence E_USER_DEPRECATED (-16385 == -1 & ~E_USER_DEPRECATED) -->
11
+ <ini name="error_reporting" value="-16385"/>
12
  </php>
13
  <testsuites>
14
  <testsuite name="Symfony Finder Component Test Suite">