OpenPNE Issue Tracking System: チケット
http://redmine.openpne.jp/
http://redmine.openpne.jp/favicon.ico
2015-12-09T06:19:51Z
OpenPNE Issue Tracking System
Redmine
OpenPNE 3 - Bug(バグ) #3873 (Won't fix(対応せず)): opPluginDownloaderクラスのファイル名がopPearDownloader.class.p...
http://redmine.openpne.jp/issues/3873
2015-12-09T06:19:51Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>opPluginDownloader クラスが記述されているファイルが <code>lib/plugin/opPearDownloader.class.php</code> にあり、クラス名とファイル名が一致していない状態になっている。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>ファイル名を <code>opPluginDownloader.class.php</code> に変更する</p>
OpenPNE 3 - Bug(バグ) #3852 (Won't fix(対応せず)): 機能テスト実行時にopBrowserによる各リクエスト間でMemberConfigのキャッシュが意図せず...
http://redmine.openpne.jp/issues/3852
2015-11-05T11:30:07Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>MemberConfigTable クラスには MemberConfig をキャッシュするための <code>MemberConfigTable::$results</code> が用意されおり、多くのコードはこのキャッシュがリクエストごとに初期化される前提で実装されているが、機能テスト時には <code>MemberConfigTable::$results</code> のキャッシュがリクエストを跨いで引き継がれてしまうため、テスト時のみ発生する意図しない動作の原因となっている。</p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>MemberConfigTable クラスには MemberConfig をキャッシュするための <code>MemberConfigTable::$results</code> が用意されているが、通常のブラウザからのアクセスによって OpenPNE が動作する場合はリクエスト毎にこのキャッシュは破棄される。<br />しかし機能テストで使用する opBrowser では、リクエストごとに sfContext の初期化は行うものの静的変数の初期化は行われないため MemberConfigTable のインスタンス(<code>Doctrine_Core::getTable()</code> によって生成されるシングルトン)は残ったままとなり、<code>MemberConfigTable::$results</code> も初期化されない。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>opBrowser がリクエストを実行する度(sfContext を生成するタイミング)に <code>MemberConfigTable::$results</code> の中身を空にする</p>
OpenPNE 3 - Bug(バグ) #3756 (Won't fix(対応せず)): 画像付きのOAuthアプリケーションを削除してもDBから画像が削除されない
http://redmine.openpne.jp/issues/3756
2015-01-06T07:37:16Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="再現手順"></a>
<h3 >再現手順<a href="#再現手順" class="wiki-anchor">¶</a></h3>
<p>事前に OpenPNE に opWebAPIPlugin をインストールする必要があります。</p>
<ol>
<li>管理画面の SNS 設定 (/pc_backend.php/sns/config?category=general) から「外部サービスとの接続設定の使用設定」を「使用する」に変更</li>
<li>「連携済みアプリケーション一覧」(/pc_backend.php/connection/new) を開く
<ul>
<li>このページにアクセスするには直接 URL を入力する必要があります</li>
</ul>
</li>
<li>説明文等を入力し、適当な画像を選択して登録する</li>
<li>登録したアプリケーションが表示される</li>
<li>「連携済みアプリケーション一覧」(/pc_backend.php/connection) を開き、登録したアプリケーションを削除する</li>
<li>アップロード画像リスト (/pc_backend.php/monitoring) を開くと削除したアプリケーションの画像が残ったままとなっている</li>
</ol>
<a name="原因"></a>
<h3 >原因<a href="#原因" class="wiki-anchor">¶</a></h3>
<p>親チケット <a class="issue tracker-1 status-13 priority-4 priority-default closed parent" title="Bug(バグ): fileを参照するテーブル(activity_imageなど)のレコード削除時に対応するfileレコードが削除されない (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3738">#3738</a> を参照。</p>
OpenPNE 3 - Bug(バグ) #3755 (Won't fix(対応せず)): バナー設定でアップロードした画像を削除してもDBから削除されない
http://redmine.openpne.jp/issues/3755
2015-01-06T07:07:50Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="再現手順"></a>
<h3 >再現手順<a href="#再現手順" class="wiki-anchor">¶</a></h3>
<ol>
<li>管理画面の「デザイン設定」→「バナー設定」(/pc_backend.php/design/banner) を開く</li>
<li>「バナー画像を追加」を開き、適当な画像をアップロードする</li>
<li>バナー設定のページから、先ほど追加した画像を削除する</li>
<li>管理画面のアップロード画像リスト (/pc_backend.php/monitoring) に、削除したはずのバナー画像が残ったままとなっている</li>
</ol>
<a name="原因"></a>
<h3 >原因<a href="#原因" class="wiki-anchor">¶</a></h3>
<p>親チケット <a class="issue tracker-1 status-13 priority-4 priority-default closed parent" title="Bug(バグ): fileを参照するテーブル(activity_imageなど)のレコード削除時に対応するfileレコードが削除されない (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3738">#3738</a> を参照。</p>
OpenPNE 3 - Bug(バグ) #3738 (Won't fix(対応せず)): fileを参照するテーブル(activity_imageなど)のレコード削除時に対応するfileレコード...
http://redmine.openpne.jp/issues/3738
2014-12-08T16:32:29Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>メンバーのプロフィール画像やコミュニティ画像などの file テーブルを介して格納される画像について、ブラウザ上で画像を変更・削除しても対応する file, file_bin レコードがデータベース上に残ったまま削除されない。</p>
<p>削除されずに残った画像は管理画面のアップロード画像リスト (<code>/pc_backend.php/monitoring</code>) からも確認できる。</p>
<p>対象となるテーブル:</p>
<ul>
<li>OpenPNE コア
<ul>
<li>activity_image (<a class="issue tracker-1 status-13 priority-4 priority-default closed child" title="Bug(バグ): アクティビティを削除しても添付された画像がDBから削除されない (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3752">#3752</a>)</li>
<li>banner_image (<a class="issue tracker-1 status-13 priority-4 priority-default closed child" title="Bug(バグ): バナー設定でアップロードした画像を削除してもDBから削除されない (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3755">#3755</a>)</li>
<li>community (<a class="issue tracker-1 status-13 priority-4 priority-default closed child" title="Bug(バグ): コミュニティ画像が設定されたコミュニティを削除しても画像がDBから削除されない (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3753">#3753</a>)</li>
<li>member_image (<a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): The record of the File is not deleted when related MemberImage is deleted (MemberImage が削除されたときに ... (Fixed(完了))" href="http://redmine.openpne.jp/issues/453">#453</a> <b>修正済み</b>)</li>
<li>oauth_consumer (<a class="issue tracker-1 status-13 priority-4 priority-default closed child" title="Bug(バグ): 画像付きのOAuthアプリケーションを削除してもDBから画像が削除されない (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3756">#3756</a>)</li>
</ul>
</li>
<li>opAlbumPlugin (<a class="issue tracker-1 status-9 priority-4 priority-default" title="Bug(バグ): アルバム・アルバム画像を削除しても画像ファイルが削除されていない (Pending Review(レビュー待ち))" href="http://redmine.openpne.jp/issues/2447">#2447</a>)
<ul>
<li>album</li>
<li>album_image</li>
</ul>
</li>
<li>opCommunityTopicPlugin (<a class="issue tracker-4 status-13 priority-4 priority-default closed child" title="Backport(バックポート): 画像が添付されたコミュニティトピックを削除しても、管理画面のアップロード画像リストに画像が残る (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/2591">#2591</a>)
<ul>
<li>community_event_image</li>
<li>community_event_comment_image</li>
<li>community_topic_image</li>
<li>community_topic_comment_image</li>
</ul>
</li>
<li>opDiaryPlugin (<a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): 日記・日記コメントを削除しても添付画像が削除されない (Fixed(完了))" href="http://redmine.openpne.jp/issues/106">#106</a> <b>修正済み</b>)
<ul>
<li>diary_image</li>
<li>diary_comment_image</li>
</ul>
</li>
<li>opMessagePlugin (<a class="issue tracker-1 status-5 priority-3 priority-lowest closed parent" title="Bug(バグ): メッセージを削除しても画像データが削除されていない (Fixed(完了))" href="http://redmine.openpne.jp/issues/190">#190</a>)
<ul>
<li>message_file</li>
</ul></li>
</ul>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<pre><code class="yaml syntaxhl"><span class="CodeRay"><span class="key">HogeImage</span>:
<span class="key">columns</span>:
<span class="key">id</span>: <span class="string"><span class="content">{ type: integer(4), primary: true, autoincrement: true }</span></span>
<span class="key">hoge_id</span>: <span class="string"><span class="content">{ type: integer(4), notnull: true }</span></span>
<span class="key">file_id</span>: <span class="string"><span class="content">{ type: integer(4), notnull: true }</span></span>
<span class="key">relations</span>:
<span class="key">Hoge</span>: <span class="string"><span class="content">{ onDelete: cascade }</span></span>
<span class="key">File</span>: <span class="string"><span class="content">{ onDelete: cascade }</span></span>
</span></code></pre>
<p>例えば上記の様な DB スキーマの定義があったとき、外部キー制約があるため file のレコードが削除されると対応する hoge_image のレコードが削除されるが、逆に hoge_image のレコードが削除されても file のレコードは削除されない。そのため hoge_image のレコードを削除する際に対応する file のレコードを明示的に削除する必要がある。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<a name="HogeImage-を削除する際に関連する-File-が削除されるようにする"></a>
<h4 >HogeImage を削除する際に関連する File が削除されるようにする<a href="#HogeImage-を削除する際に関連する-File-が削除されるようにする" class="wiki-anchor">¶</a></h4>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="keyword">class</span> <span class="class">HogeImage</span> <span class="keyword">extends</span> <span class="constant">BaseHogeImage</span>
{
<span class="keyword">public</span> <span class="keyword">function</span> <span class="function">preDelete</span>(<span class="local-variable">$event</span>)
{
<span class="local-variable">$this</span>-><span class="predefined">File</span>-><span class="predefined">delete</span>();
}
}
</span></code></pre>
<p>File を参照するモデルのクラスに <code>preDelete()</code> メソッドを定義し、その中で <code>$this->File->delete();</code> を実行することで関連する file テーブルのレコードも削除されるようになる。</p>
<a name="Hoge-を削除する際に関連する-HogeImage-を明示的に削除する"></a>
<h4 >Hoge を削除する際に関連する HogeImage を明示的に削除する<a href="#Hoge-を削除する際に関連する-HogeImage-を明示的に削除する" class="wiki-anchor">¶</a></h4>
<p>hoge のレコードを削除した場合は、外部キー制約の <code>ON DELETE CASCADE</code> によりそれを参照する hoge_image のレコードも削除される。しかしこれは DBMS 側で行われるもので Doctrine は関知しないため、削除時に <code>HogeImage::preDelete()</code> は実行されない。<br />これでは Hoge の delete() メソッドを呼び出した場合には前述の修正に関わらず File から画像が削除されず残ってしまうため、<code>Hoge::preDelete()</code> から <code>$this->HogeImage->delete();</code> を明示的に呼び出す必要がある。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="keyword">class</span> <span class="class">Hoge</span> <span class="keyword">extends</span> <span class="constant">BaseHoge</span>
{
<span class="keyword">public</span> <span class="keyword">function</span> <span class="function">preDelete</span>(<span class="local-variable">$event</span>)
{
<span class="comment">// HogeImage::preDelete() を実行させるために明示的に削除する</span>
<span class="local-variable">$this</span>-><span class="constant">HogeImage</span>-><span class="predefined">delete</span>();
}
}
</span></code></pre>
OpenPNE 3 - Bug(バグ) #3475 (Won't fix(対応せず)): 部分 SSL 使用時に SSL 必須のページでカスタム CSS が読み込まれない
http://redmine.openpne.jp/issues/3475
2013-11-01T06:44:51Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>config/OpenPNE.yml にて部分 SSL を有効 (<code>use_ssl: true</code>) にしている環境で、ログイン画面 (member/login) などの SSL 必須のページを Web ブラウザからアクセスする際にカスタム CSS が読み込まれない場合がある。</p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>カスタム CSS は /cache/css/customizing.css (実体は default/customizingCss アクション) が読み込まれることによって反映される仕組みとなっているが、default/customizingCss アクションは部分 SSL の対象となっていないため常に <code>http://</code> スキームにリダイレクトされてしまう。<br />Google Chrome などの Web ブラウザでは、SSL で保護されている Web ページ内に保護されていない CSS などのコンテンツが含まれている場合は「混在したコンテンツ」としてブロックされるため、結果としてカスタム CSS が読み込まれない状態となる。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>config/OpenPNE.yml.sample の ssl_selectable_actions に default/customizingCss アクションを追加する</p>
OpenPNE 3 - Bug(バグ) #3453 (Won't fix(対応せず)): 管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」に設定しても新規登録時には...
http://redmine.openpne.jp/issues/3453
2013-10-17T07:41:26Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」に設定している状態であっても、新規登録時のプロフィール入力画面では年齢の公開範囲に「Web全体に公開」の選択肢が表示され選択できてしまう。</p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>管理画面の「Web 全体への年齢公開許可設定」で設定された値は、<code>MemberConfigPublicFlagForm::__construct()</code> で使用されている。<br />ここでは「Web 全体への年齢公開許可設定」が「メンバーの設定を許可しない」にセットされていた場合、「年齢の公開範囲」の選択肢から「Web 全体に公開」を除去している。</p>
<p><a class="source" href="http://redmine.openpne.jp/projects/op3/repository/revisions/20d13f4/entry/lib/form/MemberConfigForm/MemberConfigPublicFlagForm.class.php#L31">source:lib/form/MemberConfigForm/MemberConfigPublicFlagForm.class.php@20d13f4#L31</a>:<br /><pre><code class="php syntaxhl"><span class="CodeRay"> <span class="keyword">if</span> (!opConfig::get(<span class="string"><span class="delimiter">'</span><span class="content">is_allow_web_public_flag_age</span><span class="delimiter">'</span></span>))
{
<span class="local-variable">$widget</span> = <span class="local-variable">$this</span>->widgetSchema[<span class="string"><span class="delimiter">'</span><span class="content">age_public_flag</span><span class="delimiter">'</span></span>];
<span class="local-variable">$choices</span> = <span class="local-variable">$widget</span>->getOption(<span class="string"><span class="delimiter">'</span><span class="content">choices</span><span class="delimiter">'</span></span>);
<span class="predefined">unset</span>(<span class="local-variable">$choices</span>[<span class="integer">4</span>]);
<span class="local-variable">$widget</span>->setOption(<span class="string"><span class="delimiter">'</span><span class="content">choices</span><span class="delimiter">'</span></span>, <span class="local-variable">$choices</span>);
<span class="local-variable">$this</span>->validatorSchema[<span class="string"><span class="delimiter">'</span><span class="content">age_public_flag</span><span class="delimiter">'</span></span>]->setOption(<span class="string"><span class="delimiter">'</span><span class="content">choices</span><span class="delimiter">'</span></span>, <span class="predefined">array_keys</span>(<span class="local-variable">$choices</span>));
}
</span></code></pre></p>
<p>しかし、 <strong>新規登録時</strong> のフォームでは MemberConfigPublicFlagForm などの MemberConfigForm 派生クラスは使用されず MemberConfigForm のインスタンスが直接使用されるため、<code>MemberConfigPublicFlagForm::__construct()</code> が呼ばれることはない。<br />そのため、「Web 全体への年齢公開許可設定」の設定値を考慮することなく <code>MemberConfigForm::generateConfigWidgets()</code> によってウィジェットが追加される。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>「Web 全体に公開」の選択肢の除去を <code>MemberConfigForm::setMemberConfigSettings()</code> メソッドに移動する。<br />このメソッドは、新規登録画面 (MemberConfigForm インスタンスが使われる) および設定変更画面 (MemberConfigForm 派生クラスのインスタンスが使われる) で共通して使用されるため、これらの画面による選択肢の差異が生じなくなる。</p>
OpenPNE 3 - Bug(バグ) #3447 (Won't fix(対応せず)): zlib 拡張の入っていない環境で opDoctrineRecordTest.php のテストが実行できない
http://redmine.openpne.jp/issues/3447
2013-10-09T08:50:41Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p><a class="issue tracker-1 status-13 priority-4 priority-default closed" title="Bug(バグ): 4バイト文字を含んだ文字列を投稿すると、4バイト文字以降のデータが切れた状態で保存されてしまう (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3134">#3134</a> のテストのために追加された opDoctrineRecordTest.php には gzip タイプのカラムの値を破壊しないか確認するためのテストが含まれているが、このテストは zlib 拡張が有効な環境でないと実行できない。<br /><a class="source" href="http://redmine.openpne.jp/projects/op3/repository/revisions/b9a08942/entry/doc/ja/OpenPNE3_Setup_Guide.txt">source:doc/ja/OpenPNE3_Setup_Guide.txt@b9a08942</a> には OpenPNE の動作に最低限必須とされている拡張に zlib 拡張が含まれていないため、この拡張が有効でない環境でも gzip 関連のテストをスキップして動作するようにすべきである。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>opDoctrineRecordTest 実行時に <code>gzcompress</code> の使用可否をチェックし、それに応じて gzip タイプのカラムに対するテストを行うか否かを分岐するように修正する。</p>
OpenPNE 3 - Bug(バグ) #3445 (Won't fix(対応せず)): #927 の修正によって無関係なCommunityMemberインスタンスが解放される問題の回避
http://redmine.openpne.jp/issues/3445
2013-10-09T06:49:57Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>Doctrine_Record::free() メソッドには <a class="external" href="https://gist.github.com/upsilon/6896385">https://gist.github.com/upsilon/6896385</a> のような Doctrine のバグと思わしき現象が存在している。<br /><a class="issue tracker-2 status-5 priority-4 priority-default closed" title="Enhancement(機能追加・改善): will memory over to be if all members join to community when has many members to the SNS. (SNSのメン... (Fixed(完了))" href="http://redmine.openpne.jp/issues/927">#927</a> でのメモリリーク改善のために行った <a class="changeset" title="improved performance while join member to community (fixes #927)" href="http://redmine.openpne.jp/projects/op3/repository/revisions/d6956cde880be65aefc802e01b070bb9d054145f">d6956cde880be65aefc802e01b070bb9d054145f</a> の修正は CommunityTableTest.php などのテストコードでこの現象を引き起こしており、例えば下記のようなコードを実行するとエラーが発生する。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="local-variable">$communityMember1</span> = <span class="constant">Doctrine_Core</span>::getTable(<span class="string"><span class="delimiter">'</span><span class="content">CommunityMember</span><span class="delimiter">'</span></span>)
->findOneByCommunityIdAndMemberId(<span class="integer">1</span>, <span class="integer">1</span>);
<span class="constant">Doctrine_Core</span>::getTable(<span class="string"><span class="delimiter">'</span><span class="content">CommunityMember</span><span class="delimiter">'</span></span>)->isMember(<span class="integer">1</span>, <span class="integer">1</span>);
<span class="predefined">print</span> <span class="local-variable">$communityMember1</span>->community_id; <span class="comment">// エラー</span>
</span></code></pre>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>この問題を根本的に解決するためには Doctrine 自体に手を加える必要があるため、ここでは不具合の回避のための修正を行う。具体的には <a class="issue tracker-2 status-5 priority-4 priority-default closed" title="Enhancement(機能追加・改善): will memory over to be if all members join to community when has many members to the SNS. (SNSのメン... (Fixed(完了))" href="http://redmine.openpne.jp/issues/927">#927</a> で行ったメモリリーク改善の効果を落とさないように CommunityMember オブジェクトに対する free() メソッドの呼び出しを最小限に抑えるための修正を施す。</p>
OpenPNE 3 - Bug(バグ) #3443 (Won't fix(対応せず)): MemberConfigFormTest, MemberRelationshipTableTest がs...
http://redmine.openpne.jp/issues/3443
2013-10-08T08:02:07Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>MemberConfigFormTest, MemberRelationshipTableTest は、それぞれメールアドレスの変更やフレンド申請のテスト時に sendmail コマンドを実行しようとする。<br />これではテストの度に <code>example@docomo.ne.jp</code> や <code>sns4@example.com</code> へのメール送信が実際に行われてしまうほか、メール送信が可能な環境でないとテストが実行できない状態となってしまう。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>テスト実行前に Zend_Mail が使用する Transport クラスをモックに差し替えるコードを追加する</p>
OpenPNE 3 - Bug(バグ) #3431 (Won't fix(対応せず)): 機能テストに存在する雛形のままのテストコードを削除する
http://redmine.openpne.jp/issues/3431
2013-10-08T03:15:30Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>OpenPNE に同梱されている機能テストの一部は symfony が提供する雛形のコードのまま手が加えられておらず、中には symfony 1.4 と互換性のないメソッドを使用しているテストも含まれている。<br />これらのテストコードは実装に合わせて修正されない限り自動テストの妨げとなるため削除を行う。</p>
OpenPNE 3 - Bug(バグ) #3427 (Won't fix(対応せず)): snsActionsTest.php でsfTestFunctionalクラスに存在しないisStatu...
http://redmine.openpne.jp/issues/3427
2013-10-07T07:59:45Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>snsActionsTest.php には、下記のように $browser (sfTestFunctional のインスタンス) の isStatusCode メソッドを呼び出そうとしている箇所があるが、isStatusCode メソッドは opTestFunctional クラスで追加されたもので sfTestFunctional には存在しない。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="local-variable">$browser</span>
->info(<span class="string"><span class="delimiter">'</span><span class="content">0. Login</span><span class="delimiter">'</span></span>)
->get(<span class="string"><span class="delimiter">'</span><span class="content">/default/login</span><span class="delimiter">'</span></span>)
->click(<span class="string"><span class="delimiter">'</span><span class="content">ログイン</span><span class="delimiter">'</span></span>, <span class="predefined">array</span>(<span class="string"><span class="delimiter">'</span><span class="content">admin_user</span><span class="delimiter">'</span></span> => <span class="predefined">array</span>(
<span class="string"><span class="delimiter">'</span><span class="content">username</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">admin</span><span class="delimiter">'</span></span>,
<span class="string"><span class="delimiter">'</span><span class="content">password</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">password</span><span class="delimiter">'</span></span>,
)))
->isStatusCode(<span class="integer">302</span>)
</span></code></pre>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>sfTestFunctional クラスの代わりに opTestFunctional を使用するよう修正する</p>
OpenPNE 3 - Bug(バグ) #3425 (Won't fix(対応せず)): pc_backendの機能テスト designActionsTest.php の実行に失敗する
http://redmine.openpne.jp/issues/3425
2013-10-07T07:12:38Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p><a class="source" href="http://redmine.openpne.jp/projects/op3/repository/entry/test/functional/pc_backend/designActionsTest.php">source:test/functional/pc_backend/designActionsTest.php</a> を実行すると下記のエラーが発生し異常終了する。</p>
<pre>
PHP Fatal error: Class 'ProjectConfiguration' not found in /home/upsilon/git/openpne3/master/test/bootstrap/database.php on line 10
Fatal error: Class 'ProjectConfiguration' not found in /home/upsilon/git/openpne3/master/test/bootstrap/database.php on line 10
</pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>designActionsTest.php 内の記述は次のようになっている。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="inline-delimiter"><?php</span>
<span class="predefined">include</span>(<span class="predefined">dirname</span>(<span class="predefined-constant">__FILE__</span>).<span class="string"><span class="delimiter">'</span><span class="content">/../../bootstrap/database.php</span><span class="delimiter">'</span></span>);
<span class="predefined">include</span>(<span class="predefined">dirname</span>(<span class="predefined-constant">__FILE__</span>).<span class="string"><span class="delimiter">'</span><span class="content">/../../bootstrap/functional.php</span><span class="delimiter">'</span></span>);
<span class="local-variable">$browser</span> = <span class="keyword">new</span> opTestFunctional(<span class="keyword">new</span> opBrowser(), <span class="keyword">new</span> lime_test(<span class="predefined-constant">null</span>, <span class="keyword">new</span> lime_output_color()));
</span></code></pre>
<p>functional.php よりも先に database.php をロードしたために sfAutoload が初期化される前に ProjectConfiguration クラスを呼び出そうとしてエラーとなっている。また、functional.php 内で database.php がロードされるためそもそも database.php のロードは不要である。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>designActionsTest.php から database.php を include する処理を削除する</p>
OpenPNE 3 - Bug(バグ) #3424 (Won't fix(対応せず)): opI18N::generateApplicationMessages() から呼ばれる sfMessa...
http://redmine.openpne.jp/issues/3424
2013-10-07T06:57:25Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>opI18N::generateApplicationMessages() 内の下記コードで sfMessageSource::factory() の第 2 引数に array が渡されているが、sfMessageSource_File::__construct() にて引数をファイル名として string 型にキャストするため E_NOTICE レベルのエラーが発生する。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"> <span class="local-variable">$messageSource</span> = sfMessageSource::factory(<span class="string"><span class="delimiter">'</span><span class="content">OpenPNE</span><span class="delimiter">'</span></span>, <span class="predefined">array</span>());
<span class="local-variable">$data</span> = <span class="local-variable">$messageSource</span>->loadData(<span class="local-variable">$file</span>);
</span></code></pre>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>sfMessageSource::factory() の第 2 引数は省略可能であるため array() の記述を削除する</p>
OpenPNE 3 - Bug(バグ) #3423 (Won't fix(対応せず)): OpenPNE 本体のテストコードに opCommunityTopicPlugin 依存のテストが含まれている
http://redmine.openpne.jp/issues/3423
2013-10-07T02:25:08Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>test/functional/pc_frontend/communityActionsTest.php の下記テストコードは opCommunityTopicPlugin が存在しない状態では動作せず、LogicException が発生する。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"> ->info(<span class="string"><span class="delimiter">'</span><span class="content">/config/communityTopicNotificationMail/1 - CSRF</span><span class="delimiter">'</span></span>)
->post(<span class="string"><span class="delimiter">'</span><span class="content">/config/communityTopicNotificationMail/1</span><span class="delimiter">'</span></span>, <span class="predefined">array</span>(<span class="string"><span class="delimiter">'</span><span class="content">topic_notify</span><span class="delimiter">'</span></span> => <span class="predefined">array</span>()))
->followRedirect()
->checkCSRF()
</span></code></pre>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>該当部分を communityActionsTest.php から削除する</p>