Skip to content

Commit

Permalink
パブリッシュオプション paths_ignore に指定したパスが、パブリッシュディレクトリから削除されてしまう不具合を修正
Browse files Browse the repository at this point in the history
  • Loading branch information
tomk79 committed Feb 22, 2016
1 parent 17d7fda commit d17410b
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 1 deletion.
11 changes: 10 additions & 1 deletion px-files/_sys/php/commands/publish.php
Original file line number Diff line number Diff line change
Expand Up @@ -522,6 +522,8 @@ private function sync_dir_copy_r( $from, $to, $path_region, $perm = null ){
if( $this->px->fs()->mkdir_r( dirname( $to.$path_region ) ) ){
if( $this->px->is_ignore_path( $path_region ) ){
// ignore指定されているパスには、操作しない。
}elseif( !$this->is_region_path( $path_region ) ){
// 範囲外のパスには、操作しない。
}else{
if( !$this->px->fs()->copy( $from.$path_region , $to.$path_region , $perm ) ){
$result = false;
Expand All @@ -534,6 +536,8 @@ private function sync_dir_copy_r( $from, $to, $path_region, $perm = null ){
if( !@is_dir( $to.$path_region ) ){
if( $this->px->is_ignore_path( $path_region ) ){
// ignore指定されているパスには、操作しない。
}elseif( !$this->is_region_path( $path_region ) ){
// 範囲外のパスには、操作しない。
}else{
if( !$this->px->fs()->mkdir_r( $to.$path_region ) ){
$result = false;
Expand All @@ -547,8 +551,10 @@ private function sync_dir_copy_r( $from, $to, $path_region, $perm = null ){
if( @is_file( $to.$path_region.DIRECTORY_SEPARATOR.$Line ) ){
continue;
}elseif( !@is_dir( $to.$path_region.DIRECTORY_SEPARATOR.$Line ) ){
if( $this->px->is_ignore_path( $path_region ) ){
if( $this->px->is_ignore_path( $path_region.DIRECTORY_SEPARATOR.$Line ) ){
// ignore指定されているパスには、操作しない。
}elseif( !$this->is_region_path( $path_region.DIRECTORY_SEPARATOR.$Line ) ){
// 範囲外のパスには、操作しない。
}else{
if( !$this->px->fs()->mkdir_r( $to.$path_region.DIRECTORY_SEPARATOR.$Line ) ){
$result = false;
Expand Down Expand Up @@ -592,6 +598,9 @@ private function sync_dir_compare_and_cleanup( $target , $comparison, $path_regi
if( $this->px->is_ignore_path( $path_region ) ){
// ignore指定されているパスには、操作しない。
return true;
}elseif( !$this->is_region_path( $path_region ) ){
// 範囲外のパスには、操作しない。
return true;
}
$this->px->fs()->rm( $target.$path_region );
return true;
Expand Down
22 changes: 22 additions & 0 deletions px-files/_sys/tests/publishTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,28 @@ public function testPublishDirectoryTest(){



$output = $this->passthru( [
'php',
__DIR__.'/testData/publish/px2/.px_execute.php' ,
'/?PX=publish.run&path_region=/&paths_ignore[]=/' ,
] );
clearstatcache();

// var_dump($output);
$this->assertTrue( $this->common_error( $output ) );
$this->assertTrue( is_file( __DIR__.'/testData/publish/published/update_sync_test/new.html' ) );
$this->assertFalse( is_file( __DIR__.'/testData/publish/published/update_sync_test/old.html' ) );

$this->assertFalse( is_file( __DIR__.'/testData/publish/published/path_ignored/testpage.html' ) );
$this->assertTrue( is_file( __DIR__.'/testData/publish/published/path_ignored/untouchable.html' ) );

$this->assertFalse( is_file( __DIR__.'/testData/publish/px2/files_ignored/index.html' ) );
$this->assertTrue( is_file( __DIR__.'/testData/publish/published/files_ignored/index.html' ) );
$this->assertTrue( is_file( __DIR__.'/testData/publish/px2/files_ignored/not_ignored.html' ) );
$this->assertTrue( is_file( __DIR__.'/testData/publish/published/files_ignored/not_ignored.html' ) );



// 後始末
$output = $this->passthru( [
'php', __DIR__.'/testData/publish/px2/.px_execute.php', '/?PX=clearcache'
Expand Down

0 comments on commit d17410b

Please sign in to comment.