From: honeplus Date: Tue, 4 Dec 2012 03:32:56 +0000 (+0000) Subject: #27313 末尾がハテナマークになる記事の暫定対応を追加, X-Git-Tag: Release_1.21~3 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=b3828b5d31a5dc3cf445254f132be688447de566;p=wptscs%2Fwpts.git #27313 末尾がハテナマークになる記事の暫定対応を追加, ピリオド・ハテナマーク暫定対応のテストケースを追加, 自動テスト時にサーバーに接続していた箇所を出来るだけ接続しないよう修正 git-svn-id: http://svn.osdn.net/svnroot/wptscs/trunk@40 7cc79d57-4d93-40a1-83d5-ec7b38613dec --- 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]