Skip to content

Commit cc736ed

Browse files
committed
Fix path issue on Windows
1 parent 3ae2686 commit cc736ed

5 files changed

Lines changed: 23 additions & 21 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
3333
- Added specific tests for sprinkleManager with 100% test coverage
3434
- Ignore existing `package-lock.json` which caused incorrect dependencies to be installed when upgrading from older versions of UserFrosting.
3535
- Vendor assets not found in production mode
36-
37-
### Deprecated
38-
- `UserFrosting\APP_DIR_NAME` : Use `UserFrosting\APP_DIR` instead.
36+
- Fix path issue on Windows
3937

4038
## 4.2.0-beta.1
4139

app/defines.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@
2828
define('UserFrosting\ROOT_DIR', realpath(__DIR__ . '/..'));
2929

3030
// Names of app directories
31-
define('UserFrosting\APP_DIR_NAME', basename(__DIR__)); //@deprecated; Use `UserFrosting\APP_DIR` instead
31+
define('UserFrosting\APP_DIR_NAME', basename(__DIR__));
3232
define('UserFrosting\SPRINKLES_DIR_NAME', 'sprinkles');
3333

3434
// Names of src directories within Sprinkles
3535
define('UserFrosting\SRC_DIR_NAME', 'src');
3636

3737
// Full path to Sprinkles directory
38-
define('UserFrosting\SPRINKLES_DIR', APP_DIR . DS . SPRINKLES_DIR_NAME);
38+
define('UserFrosting\SPRINKLES_DIR', APP_DIR_NAME . DS . SPRINKLES_DIR_NAME);
3939

4040
// Full path to sprinkles schema file
4141
define('UserFrosting\SPRINKLES_SCHEMA_FILE', APP_DIR . DS . 'sprinkles.json');

app/sprinkles/core/src/ServicesProvider/ServicesProvider.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -698,8 +698,9 @@ public function register(ContainerInterface $container)
698698
$sprinkles = $c->sprinkleManager->getSprinkleNames();
699699

700700
// Add Sprinkles' templates namespaces
701+
// TODO : Use locator
701702
foreach ($sprinkles as $sprinkle) {
702-
$path = \UserFrosting\SPRINKLES_DIR . \UserFrosting\DS .
703+
$path = \UserFrosting\APP_DIR . \UserFrosting\DS . \UserFrosting\SPRINKLES_DIR_NAME . \UserFrosting\DS .
703704
$sprinkle . \UserFrosting\DS .
704705
\UserFrosting\TEMPLATE_DIR_NAME . \UserFrosting\DS;
705706

app/system/Sprinkle/SprinkleManager.php

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class SprinkleManager
3434
protected $sprinkles = [];
3535

3636
/**
37-
* @var string The full absolute base path to the sprinkles directory.
37+
* @var string Relaive path to the sprinkles directory. Will be used to register the location with the ResourceLocator
3838
*/
3939
protected $sprinklesPath = \UserFrosting\SPRINKLES_DIR . \UserFrosting\DS;
4040

@@ -60,7 +60,7 @@ public function addResources()
6060
}
6161

6262
/**
63-
* Register a sprinkle as a locator location
63+
* Register a sprinkle as a locator location, using relative path to the sprinkle
6464
* @param string $sprinkleName
6565
*/
6666
public function addSprinkleResources($sprinkleName)
@@ -85,12 +85,13 @@ public function getSprinklePath($sprinkleName)
8585
}
8686

8787
// Get path and make sure it exist
88-
$path = $this->getSprinklesPath() . $sprinkle;
89-
if (!file_exists($path)) {
90-
throw new FileNotFoundException("Sprinkle `$sprinkleName` should be found at `$path`, but that directory doesn't exist.");
88+
$relPath = $this->getSprinklesPath() . $sprinkle;
89+
$fullpath = \UserFrosting\ROOT_DIR . \UserFrosting\DS . $relPath;
90+
if (!file_exists($fullpath)) {
91+
throw new FileNotFoundException("Sprinkle `$sprinkleName` should be found at `$fullpath`, but that directory doesn't exist.");
9192
}
9293

93-
return $path;
94+
return $relPath;
9495
}
9596

9697
/**

app/tests/Unit/SprinkleManagerTest.php

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -134,16 +134,16 @@ public function testIsAvailable($sprinkleName, $isAvailable, SprinkleManager $sp
134134
/**
135135
* @depends testInitFromSchema
136136
* @param string $sprinkleName
137-
* @param bool $path
138137
* @param SprinkleManager $sprinkleManager
139-
* @testWith ["foo", "/data/foo"]
140-
* ["bar", "/data/bar"]
141-
* ["test", "/data/test"]
138+
* @testWith ["foo"]
139+
* ["bar"]
140+
* ["test"]
142141
*/
143-
public function testGetSprinklePath($sprinkleName, $path, SprinkleManager $sprinkleManager)
142+
public function testGetSprinklePath($sprinkleName, SprinkleManager $sprinkleManager)
144143
{
145-
$sprinkleManager->setSprinklesPath(__DIR__ . '/data/');
146-
$this->assertSame(__DIR__ . $path, $sprinkleManager->getSprinklePath($sprinkleName));
144+
$basePath = 'app/tests/Unit/data/';
145+
$sprinkleManager->setSprinklesPath($basePath);
146+
$this->assertSame($basePath . $sprinkleName, $sprinkleManager->getSprinklePath($sprinkleName));
147147
}
148148

149149
/**
@@ -154,7 +154,8 @@ public function testGetSprinklePath($sprinkleName, $path, SprinkleManager $sprin
154154
*/
155155
public function testGetSprinklePathWherePathDoesntExist(SprinkleManager $sprinkleManager)
156156
{
157-
$sprinkleManager->setSprinklesPath(__DIR__ . '/foo/');
157+
$basePath = 'app/tests/Unit/foo/';
158+
$sprinkleManager->setSprinklesPath($basePath);
158159
$sprinkleManager->getSprinklePath('foo');
159160
}
160161

@@ -193,7 +194,8 @@ class_alias('foo', 'UserFrosting\Sprinkle\Test\ServicesProvider\ServicesProvider
193194
*/
194195
public function testAddResources(SprinkleManager $sprinkleManager)
195196
{
196-
$sprinkleManager->setSprinklesPath(__DIR__ . '/data/');
197+
$basePath = 'app/tests/Unit/data/';
198+
$sprinkleManager->setSprinklesPath($basePath);
197199
$sprinkleManager->addResources();
198200
}
199201

0 commit comments

Comments
 (0)