From b3828b5d31a5dc3cf445254f132be688447de566 Mon Sep 17 00:00:00 2001 From: honeplus Date: Tue, 4 Dec 2012 03:32:56 +0000 Subject: [PATCH] =?utf8?q?#27313=20=E6=9C=AB=E5=B0=BE=E3=81=8C=E3=83=8F?= =?utf8?q?=E3=83=86=E3=83=8A=E3=83=9E=E3=83=BC=E3=82=AF=E3=81=AB=E3=81=AA?= =?utf8?q?=E3=82=8B=E8=A8=98=E4=BA=8B=E3=81=AE=E6=9A=AB=E5=AE=9A=E5=AF=BE?= =?utf8?q?=E5=BF=9C=E3=82=92=E8=BF=BD=E5=8A=A0,=20=E3=83=94=E3=83=AA?= =?utf8?q?=E3=82=AA=E3=83=89=E3=83=BB=E3=83=8F=E3=83=86=E3=83=8A=E3=83=9E?= =?utf8?q?=E3=83=BC=E3=82=AF=E6=9A=AB=E5=AE=9A=E5=AF=BE=E5=BF=9C=E3=81=AE?= =?utf8?q?=E3=83=86=E3=82=B9=E3=83=88=E3=82=B1=E3=83=BC=E3=82=B9=E3=82=92?= =?utf8?q?=E8=BF=BD=E5=8A=A0,=20=E8=87=AA=E5=8B=95=E3=83=86=E3=82=B9?= =?utf8?q?=E3=83=88=E6=99=82=E3=81=AB=E3=82=B5=E3=83=BC=E3=83=90=E3=83=BC?= =?utf8?q?=E3=81=AB=E6=8E=A5=E7=B6=9A=E3=81=97=E3=81=A6=E3=81=84=E3=81=9F?= =?utf8?q?=E7=AE=87=E6=89=80=E3=82=92=E5=87=BA=E6=9D=A5=E3=82=8B=E3=81=A0?= =?utf8?q?=E3=81=91=E6=8E=A5=E7=B6=9A=E3=81=97=E3=81=AA=E3=81=84=E3=82=88?= =?utf8?q?=E3=81=86=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: http://svn.osdn.net/svnroot/wptscs/trunk@40 7cc79d57-4d93-40a1-83d5-ec7b38613dec --- Wptscs/Websites/MediaWiki.cs | 2 +- WptscsTest/Models/MockFactory.cs | 15 ++++++++++++--- WptscsTest/Websites/MediaWikiPageTest.cs | 5 +++-- WptscsTest/Websites/MediaWikiTest.cs | 31 +++++++++++++++++++++++++++++++ 4 files changed, 47 insertions(+), 6 deletions(-) diff --git a/Wptscs/Websites/MediaWiki.cs b/Wptscs/Websites/MediaWiki.cs index 2c02751..f0956b9 100644 --- a/Wptscs/Websites/MediaWiki.cs +++ b/Wptscs/Websites/MediaWiki.cs @@ -455,7 +455,7 @@ namespace Honememo.Wptscs.Websites // URIを生成 Uri uri = new Uri(new Uri(this.Location), StringUtils.FormatDollarVariable(this.ExportPath, escapeTitle)); - if (uri.OriginalString.EndsWith(".")) + if (uri.OriginalString.EndsWith(".") || uri.OriginalString.EndsWith("?")) { // 末尾がピリオドのページが取得できない既知の不具合への暫定対応 // 対処方法が不明なため、せめて例外を投げて検知する diff --git a/WptscsTest/Models/MockFactory.cs b/WptscsTest/Models/MockFactory.cs index 02fe9c0..da157bf 100644 --- a/WptscsTest/Models/MockFactory.cs +++ b/WptscsTest/Models/MockFactory.cs @@ -104,15 +104,24 @@ namespace Honememo.Wptscs.Models wiki = new MediaWiki(new Language(lang)); } + // テスト用にサーバー設定を書き換えて返す + this.SetMockConfig(wiki); + return wiki; + } + + /// + /// 渡されたMediaWikiオブジェクトにモックの設定を上書きする。 + /// + /// 設定するMediaWikiオブジェクト。 + public void SetMockConfig(MediaWiki wiki) + { // テスト用にサーバー設定を書き換え // ※ フルパスじゃないとURIで取得できないので、ここで書き換える必要有り UriBuilder b = new UriBuilder("file", string.Empty); b.Path = Path.GetFullPath(MockFactory.TestMediaWikiDir) + "\\"; - wiki.Location = new Uri(b.Uri, lang + "/").ToString(); + wiki.Location = new Uri(b.Uri, wiki.Language.Code + "/").ToString(); wiki.ExportPath = "$1.xml"; wiki.MetaApi = "_api.xml"; - - return wiki; } #endregion diff --git a/WptscsTest/Websites/MediaWikiPageTest.cs b/WptscsTest/Websites/MediaWikiPageTest.cs index aa4ec60..714b06b 100644 --- a/WptscsTest/Websites/MediaWikiPageTest.cs +++ b/WptscsTest/Websites/MediaWikiPageTest.cs @@ -141,7 +141,7 @@ namespace Honememo.Wptscs.Websites { // 普通のページ MediaWikiPage page = new MediaWikiPage( - new MediaWiki(new Language("en")), + new MockFactory().GetMediaWiki("en"), "TestTitle", "TestText\n [[ja:テストページ]][[zh:試験]][[fr:Test_Fr]]"); Assert.AreEqual("[[ja:テストページ]]", page.GetInterlanguage("ja").ToString()); @@ -185,6 +185,7 @@ namespace Honememo.Wptscs.Websites { // Template:Documentation を使ってるページ MediaWiki site = new DummySite(new Language("en")); + new MockFactory().SetMockConfig(site); site.DocumentationTemplates.Add("Template:Documentation"); site.DocumentationTemplateDefaultPage = "/doc"; MediaWikiPage page = new MediaWikiPage(site, "Template:Test", "TestText{{Documentation}}"); @@ -241,7 +242,7 @@ namespace Honememo.Wptscs.Websites [TestMethod] public void TestNormalize() { - MediaWiki site = new MediaWiki(new Language("en")); + MediaWiki site = new MockFactory().GetMediaWiki("en"); MediaWikiPage page = new MediaWikiPage(site, "A/b/c"); // サブページの正規化 diff --git a/WptscsTest/Websites/MediaWikiTest.cs b/WptscsTest/Websites/MediaWikiTest.cs index 76dc055..9958130 100644 --- a/WptscsTest/Websites/MediaWikiTest.cs +++ b/WptscsTest/Websites/MediaWikiTest.cs @@ -20,6 +20,7 @@ namespace Honememo.Wptscs.Websites using Honememo.Models; using Honememo.Utilities; using Honememo.Wptscs.Models; + using Honememo.Wptscs.Utilities; using Microsoft.VisualStudio.TestTools.UnitTesting; /// @@ -437,6 +438,36 @@ namespace Honememo.Wptscs.Websites } /// + /// メソッドテストケース(末尾ピリオド)。 + /// + [TestMethod] + [ExpectedException(typeof(EndPeriodException))] + public void TestGetPageEndPeriodException() + { + // ピリオドで終わるページは2012年現在処理できないため、 + // 暫定対応として例外を投げる + // ※ httpでページ名が末尾に来るパスになるよう設定 + // 処理の都合上、このテストはサーバーに接続しています + MediaWiki site = new MediaWiki(new Language("en")); + site.GetPage("Vulcan Inc."); + } + + /// + /// メソッドテストケース(末尾クエッションマーク)。 + /// + [TestMethod] + [ExpectedException(typeof(EndPeriodException))] + public void TestGetPageEndPeriodExceptionAboutQuestion() + { + // ?で終わるページも2012年現在処理できないため、 + // 暫定対応として例外を投げる + // ※ httpでページ名が末尾に来るパスになるよう設定 + // 処理の都合上、このテストはサーバーに接続しています + MediaWiki site = new MediaWiki(new Language("en")); + site.GetPage("How does one patch KDE2 under FreeBSD?"); + } + + /// /// メソッドテストケース。 /// [TestMethod] -- 2.11.0