ILIAS  trunk Revision v13.0_alpha-62-g3b72d83f2e5
MigratedLanguageFileSyncFindModulesWithOverlayTest Class Reference

findModulesWithOverlay(): only current or a .po in lang/<module>/<lang>/ counts, nothing else below lang. More...

+ Inheritance diagram for MigratedLanguageFileSyncFindModulesWithOverlayTest:
+ Collaboration diagram for MigratedLanguageFileSyncFindModulesWithOverlayTest:

Public Member Functions

 testOnlyCurrentOrAPoMakesAnOverlay (string $file, bool $is_overlay)
 
 testAModuleIsFoundPerLanguageAndTheResultIsSorted ()
 
 testLocksAndTheTakenOverRecordAreNoModules ()
 The lock directory and the record sit next to the module directories and are no modules. More...
 
 testSymbolicLinksAreNotFollowed ()
 
 testNoClientDataDirectoryAnInvalidLanguageKeyOrNoLangDirectoryFindNothing ()
 
 testUnreadableDirectoriesCountAsOverlayOrFindNothing ()
 An unreadable module directory counts as overlay, an unreadable overlay root finds nothing. More...
 

Static Public Member Functions

static overlayMarkers ()
 
- Static Public Member Functions inherited from MigratedLanguageFileSyncTestCase
static refreshFlags ()
 

Private Member Functions

 touch (string $relative)
 

Additional Inherited Members

- Protected Member Functions inherited from MigratedLanguageFileSyncTestCase
 setUp ()
 
 tearDown ()
 
 seedShipped (array $entries, string $lang_key='de', string $module=self::MODULE)
 
 seedOverlay (array $entries, string $lang_key='de')
 
 shippedPo (string $lang_key='de', string $module=self::MODULE)
 
 overlayBase (string $lang_key='de')
 
 overlayPo ()
 
 sync (array $entries, bool $refresh=false, ?string $client_data_dir='default')
 
 overlayIdentifiers ()
 
 overlayDirectory ()
 
 findUnwritable (array $lang_keys=['de'], ?string $client_data_dir='default', ?LanguageFileDirectoryManager $manager=null)
 
- Protected Attributes inherited from MigratedLanguageFileSyncTestCase
const string MODULE = 'stest'
 
string $fixture_directory
 
string $client_data_dir
 
string $ilias_root
 
LanguageFileDirectory $directory
 
LanguageFileDirectoryManager $manager
 

Detailed Description

findModulesWithOverlay(): only current or a .po in lang/<module>/<lang>/ counts, nothing else below lang.

Definition at line 27 of file MigratedLanguageFileSyncFindModulesWithOverlayTest.php.

Member Function Documentation

◆ overlayMarkers()

static MigratedLanguageFileSyncFindModulesWithOverlayTest::overlayMarkers ( )
static
Returns
array<string, array{0: string, 1: bool}> file below lang/zmod/de/, whether it makes an overlay

Definition at line 41 of file MigratedLanguageFileSyncFindModulesWithOverlayTest.php.

41 : array
42 {
43 return [
44 'current' => ['current', true],
45 'po' => ['zmod_de.po', true],
46 'only the lock' => ['zmod_de.lock', false],
47 'only the mo' => ['zmod_de.mo', false],
48 ];
49 }

◆ testAModuleIsFoundPerLanguageAndTheResultIsSorted()

MigratedLanguageFileSyncFindModulesWithOverlayTest::testAModuleIsFoundPerLanguageAndTheResultIsSorted ( )

Definition at line 59 of file MigratedLanguageFileSyncFindModulesWithOverlayTest.php.

59 : void
60 {
61 $this->touch('zmod/de/current');
62 $this->touch('amod/de/amod_de.po');
63 $this->touch('fmod/fr/current');
64
65 $this->assertSame(['amod', 'zmod'], MigratedLanguageFileSync::findModulesWithOverlay($this->client_data_dir, 'de'));
66 $this->assertSame(['fmod'], MigratedLanguageFileSync::findModulesWithOverlay($this->client_data_dir, 'fr'));
67 }

References touch().

+ Here is the call graph for this function:

◆ testLocksAndTheTakenOverRecordAreNoModules()

MigratedLanguageFileSyncFindModulesWithOverlayTest::testLocksAndTheTakenOverRecordAreNoModules ( )

The lock directory and the record sit next to the module directories and are no modules.

Definition at line 70 of file MigratedLanguageFileSyncFindModulesWithOverlayTest.php.

70 : void
71 {
72 MigratedLanguageFileSync::markLocalChangesTakenOver($this->client_data_dir, 'de', ['zmod']);
73 $this->touch('.locks/de/current');
74 $this->touch('.locks/de/x.po');
75
76 $this->assertFileExists(MigratedLanguageFilePaths::takenOverFile($this->client_data_dir, 'de'));
77 $this->assertSame([], MigratedLanguageFileSync::findModulesWithOverlay($this->client_data_dir, 'de'));
78 }

References touch().

+ Here is the call graph for this function:

◆ testNoClientDataDirectoryAnInvalidLanguageKeyOrNoLangDirectoryFindNothing()

MigratedLanguageFileSyncFindModulesWithOverlayTest::testNoClientDataDirectoryAnInvalidLanguageKeyOrNoLangDirectoryFindNothing ( )

Definition at line 98 of file MigratedLanguageFileSyncFindModulesWithOverlayTest.php.

98 : void
99 {
100 $this->touch('zmod/de/current');
101
102 $this->assertSame([], MigratedLanguageFileSync::findModulesWithOverlay(null, 'de'));
103 $this->assertSame([], MigratedLanguageFileSync::findModulesWithOverlay($this->client_data_dir, '../de'));
104 $this->assertSame([], MigratedLanguageFileSync::findModulesWithOverlay($this->client_data_dir . '/missing', 'de'));
105 }

References touch().

+ Here is the call graph for this function:

◆ testOnlyCurrentOrAPoMakesAnOverlay()

MigratedLanguageFileSyncFindModulesWithOverlayTest::testOnlyCurrentOrAPoMakesAnOverlay ( string  $file,
bool  $is_overlay 
)

Definition at line 52 of file MigratedLanguageFileSyncFindModulesWithOverlayTest.php.

52 : void
53 {
54 $this->touch('zmod/de/' . $file);
55
56 $this->assertSame($is_overlay ? ['zmod'] : [], MigratedLanguageFileSync::findModulesWithOverlay($this->client_data_dir, 'de'));
57 }

References touch().

+ Here is the call graph for this function:

◆ testSymbolicLinksAreNotFollowed()

MigratedLanguageFileSyncFindModulesWithOverlayTest::testSymbolicLinksAreNotFollowed ( )

Definition at line 80 of file MigratedLanguageFileSyncFindModulesWithOverlayTest.php.

80 : void
81 {
82 $outside = sys_get_temp_dir() . '/ilias_find_overlay_outside_' . bin2hex(random_bytes(4));
83 mkdir($outside . '/de', 0775, true);
84 file_put_contents($outside . '/de/current', 'x');
85 try {
86 mkdir($this->client_data_dir . '/lang/linkedmod', 0775, true);
87 symlink($outside . '/de', $this->client_data_dir . '/lang/linkedmod/de');
88 symlink($outside, $this->client_data_dir . '/lang/linkedmodule');
89 mkdir($this->client_data_dir . '/lang/linkedcurrent/de', 0775, true);
90 symlink($outside . '/missing', $this->client_data_dir . '/lang/linkedcurrent/de/current');
91
92 $this->assertSame(['linkedcurrent'], MigratedLanguageFileSync::findModulesWithOverlay($this->client_data_dir, 'de'));
93 } finally {
95 }
96 }
static removeDirectory(string $directory)

References MigratedPoFixture\removeDirectory().

+ Here is the call graph for this function:

◆ testUnreadableDirectoriesCountAsOverlayOrFindNothing()

MigratedLanguageFileSyncFindModulesWithOverlayTest::testUnreadableDirectoriesCountAsOverlayOrFindNothing ( )

An unreadable module directory counts as overlay, an unreadable overlay root finds nothing.

Definition at line 108 of file MigratedLanguageFileSyncFindModulesWithOverlayTest.php.

108 : void
109 {
110 $this->touch('amod/de/current');
111 mkdir($this->client_data_dir . '/lang/zmod/de', 0775, true);
112 chmod($this->client_data_dir . '/lang/zmod/de', 0000);
113 try {
114 if (is_readable($this->client_data_dir . '/lang/zmod/de')) {
115 $this->markTestSkipped('permissions are not enforced (root)');
116 }
117 $this->assertSame(['amod', 'zmod'], MigratedLanguageFileSync::findModulesWithOverlay($this->client_data_dir, 'de'));
118
119 chmod($this->client_data_dir . '/lang', 0000);
120 $this->assertSame([], MigratedLanguageFileSync::findModulesWithOverlay($this->client_data_dir, 'de'));
121 } finally {
122 chmod($this->client_data_dir . '/lang', 0775);
123 chmod($this->client_data_dir . '/lang/zmod/de', 0775);
124 }
125 }

References touch().

+ Here is the call graph for this function:

◆ touch()

MigratedLanguageFileSyncFindModulesWithOverlayTest::touch ( string  $relative)
private

Definition at line 29 of file MigratedLanguageFileSyncFindModulesWithOverlayTest.php.

29 : void
30 {
31 $file = $this->client_data_dir . '/lang/' . $relative;
32 if (!is_dir(dirname($file))) {
33 mkdir(dirname($file), 0775, true);
34 }
35 file_put_contents($file, 'x');
36 }

Referenced by testAModuleIsFoundPerLanguageAndTheResultIsSorted(), testLocksAndTheTakenOverRecordAreNoModules(), testNoClientDataDirectoryAnInvalidLanguageKeyOrNoLangDirectoryFindNothing(), testOnlyCurrentOrAPoMakesAnOverlay(), and testUnreadableDirectoriesCountAsOverlayOrFindNothing().

+ Here is the caller graph for this function:

The documentation for this class was generated from the following file: