{"id":904,"date":"2010-07-18T23:26:46","date_gmt":"2010-07-18T22:26:46","guid":{"rendered":"https:\/\/www.entropywins.wtf\/blog\/?p=904"},"modified":"2010-07-18T23:26:46","modified_gmt":"2010-07-18T22:26:46","slug":"mediawiki-testing-with-phpunit","status":"publish","type":"post","link":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/","title":{"rendered":"MediaWiki testing with PHPUnit"},"content":{"rendered":"<p>I figured having some unit tests for <a href=\"http:\/\/www.mediawiki.org\/wiki\/Extension:Maps\">Maps<\/a>, the <a href=\"http:\/\/www.mediawiki.org\">MediaWiki<\/a> extension to work with geographical data and display it by embedding dynamic maps into your articles, would be beneficial to it&#8217;s quality. It&#8217;s pretty hard to try cover all possible use cases with manual tests, and consumes a lot of time in any case. I therefore decided to try create some tests for the coordinate parser and formatter class, as it&#8217;s arguably the core feature of Maps.<\/p>\n<p><a href=\"http:\/\/pear.php.net\/\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-917\" title=\"PEAR logo\" src=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/pearsmall.gif\" alt=\"PEAR logo\" width=\"104\" height=\"50\" \/><\/a>I started off by trying to install plain <a href=\"http:\/\/www.phpunit.de\/\">PHPUnit<\/a>, which is the most commonly used unit testing framework for PHP. This took me a while, as you are supposed to install it using <a href=\"http:\/\/pear.php.net\/\">PEAR<\/a> (PHP Extension and Application Repository), a repository tool for PHP applications, and has never used this before. After two hours or so of messing around, I got both installed \ud83d\ude42 Then I went on investigating how I could best integrate this into my work-flow, and discovered that PHPUnit comes bundled with <a href=\"https:\/\/secure.wikimedia.org\/wikipedia\/en\/wiki\/Zend_Studio\">Zend Studio<\/a>, seamlessly integrated, working completely out of the box o_O.<\/p>\n<p>I then wrote a test case for the <a href=\"http:\/\/svn.wikimedia.org\/viewvc\/mediawiki\/trunk\/extensions\/Maps\/Includes\/Maps_CoordinateParser.php?view=markup\">coordinate parsing and formatting class<\/a> of Maps. I had a hard time getting it to work, as I needed to include MW itself, as the class uses MW functions. After some non-constructive discussion with several fellow MW devs I found a way to get it to work by including the maintenance script entry point, and tricking MW into thinking the call was made from a CLI. I now have a <a href=\"http:\/\/svn.wikimedia.org\/viewvc\/mediawiki\/trunk\/extensions\/Maps\/test\/MapsCoordinateParserTest.php?view=markup\">test case for the coordinate class<\/a>, with tests for most of it&#8217;s functionality. Some more test data, and maybe some extra tests would be nice. A tricky thing in the case of this class is founding errors, which are hard to take into account, especially if you only want to allow them to a certain degree.<\/p>\n<p><a href=\"http:\/\/www.phpunit.de\/\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-918\" title=\"PHPUnit logo\" src=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/phpunit-logo.gif\" alt=\"PHPUnit logo\" width=\"94\" height=\"80\" \/><\/a>This particular test case is already paying off, as it made me find 3 subtle errors in coordinate parsing or formatting, that did not show up in my manual tests, as I was not covering the test data causing the issues.<\/p>\n<p>I&#8217;m now planning to maybe write test cases for the distance parser to, which should be rather easy to do. I probably won&#8217;t create any others for Maps, as it&#8217;s rather time consuming, and I have a lot of other things to do right now. When I create new classes that are suited for unit tests in the future, I&#8217;ll definitely write tests for them as I build them up though, as it&#8217;ll not cost a lot more time then doing manual tests, and will ensure the classes are really solid.<\/p>\n<p><a href=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/phpunit-integration-with-zend-studio.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-916\" title=\"PHPUnit integration with Zend Studio\" src=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/phpunit-integration-with-zend-studio-1024x262.jpg\" alt=\"PHPUnit integration with Zend Studio\" width=\"798\" height=\"204\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I figured having some unit tests for Maps, the MediaWiki extension to work with geographical data and display it by&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[7,8],"tags":[73,154,155,156,181,194,195,196,197,257,285,304],"class_list":["post-904","post","type-post","status-publish","format-standard","hentry","category-programming","category-software","tag-debugging","tag-mapping","tag-maps","tag-mediawiki","tag-open-source","tag-pear","tag-php","tag-phpunit","tag-planet-wikimedia","tag-testing","tag-wikimedia","tag-zend-studio"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>MediaWiki testing with PHPUnit - Blog of Jeroen De Dauw<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MediaWiki testing with PHPUnit - Blog of Jeroen De Dauw\" \/>\n<meta property=\"og:description\" content=\"I figured having some unit tests for Maps, the MediaWiki extension to work with geographical data and display it by&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog of Jeroen De Dauw\" \/>\n<meta property=\"article:published_time\" content=\"2010-07-18T22:26:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/pearsmall.gif\" \/>\n<meta name=\"author\" content=\"Jeroen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/JeroenDeDauw\" \/>\n<meta name=\"twitter:site\" content=\"@JeroenDeDauw\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeroen\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/\"},\"author\":{\"name\":\"Jeroen\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"headline\":\"MediaWiki testing with PHPUnit\",\"datePublished\":\"2010-07-18T22:26:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/\"},\"wordCount\":451,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"image\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/pearsmall.gif\",\"keywords\":[\"Debugging\",\"Mapping\",\"Maps\",\"MediaWiki\",\"Open Source\",\"PEAR\",\"PHP\",\"PHPUnit\",\"Planet Wikimedia\",\"Testing\",\"Wikimedia\",\"Zend Studio\"],\"articleSection\":[\"Programming\",\"Software\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/\",\"url\":\"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/\",\"name\":\"MediaWiki testing with PHPUnit - Blog of Jeroen De Dauw\",\"isPartOf\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/pearsmall.gif\",\"datePublished\":\"2010-07-18T22:26:46+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/#primaryimage\",\"url\":\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/pearsmall.gif\",\"contentUrl\":\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/pearsmall.gif\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.entropywins.wtf\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"MediaWiki testing with PHPUnit\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#website\",\"url\":\"https:\/\/www.entropywins.wtf\/blog\/\",\"name\":\"Entropy Wins\",\"description\":\"A blog on Software Architecture, Design and Craftsmanship\",\"publisher\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.entropywins.wtf\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7\",\"name\":\"Jeroen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\",\"caption\":\"Jeroen\"},\"logo\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/jeroendedauw\/\",\"https:\/\/x.com\/https:\/\/twitter.com\/JeroenDeDauw\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"MediaWiki testing with PHPUnit - Blog of Jeroen De Dauw","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/","og_locale":"en_US","og_type":"article","og_title":"MediaWiki testing with PHPUnit - Blog of Jeroen De Dauw","og_description":"I figured having some unit tests for Maps, the MediaWiki extension to work with geographical data and display it by&hellip;","og_url":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/","og_site_name":"Blog of Jeroen De Dauw","article_published_time":"2010-07-18T22:26:46+00:00","og_image":[{"url":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/pearsmall.gif","type":"","width":"","height":""}],"author":"Jeroen","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/JeroenDeDauw","twitter_site":"@JeroenDeDauw","twitter_misc":{"Written by":"Jeroen","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/#article","isPartOf":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/"},"author":{"name":"Jeroen","@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"headline":"MediaWiki testing with PHPUnit","datePublished":"2010-07-18T22:26:46+00:00","mainEntityOfPage":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/"},"wordCount":451,"commentCount":0,"publisher":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"image":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/#primaryimage"},"thumbnailUrl":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/pearsmall.gif","keywords":["Debugging","Mapping","Maps","MediaWiki","Open Source","PEAR","PHP","PHPUnit","Planet Wikimedia","Testing","Wikimedia","Zend Studio"],"articleSection":["Programming","Software"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/","url":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/","name":"MediaWiki testing with PHPUnit - Blog of Jeroen De Dauw","isPartOf":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/#primaryimage"},"image":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/#primaryimage"},"thumbnailUrl":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/pearsmall.gif","datePublished":"2010-07-18T22:26:46+00:00","breadcrumb":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/#primaryimage","url":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/pearsmall.gif","contentUrl":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/pearsmall.gif"},{"@type":"BreadcrumbList","@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/18\/mediawiki-testing-with-phpunit\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.entropywins.wtf\/blog\/"},{"@type":"ListItem","position":2,"name":"MediaWiki testing with PHPUnit"}]},{"@type":"WebSite","@id":"https:\/\/www.entropywins.wtf\/blog\/#website","url":"https:\/\/www.entropywins.wtf\/blog\/","name":"Entropy Wins","description":"A blog on Software Architecture, Design and Craftsmanship","publisher":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.entropywins.wtf\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7","name":"Jeroen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g","caption":"Jeroen"},"logo":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/in\/jeroendedauw\/","https:\/\/x.com\/https:\/\/twitter.com\/JeroenDeDauw"]}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p74TBF-eA","jetpack-related-posts":[{"id":2101,"url":"https:\/\/www.entropywins.wtf\/blog\/2018\/01\/20\/php-project-template\/","url_meta":{"origin":904,"position":0},"title":"PHP project template","author":"Jeroen","date":"2018-01-20","format":false,"excerpt":"Want to start a new PHP project? Perhaps yet another library you are creating? Tired of doing the same lame groundwork for the 5th time this month? Want to start a code kata and not lose time on generic setup work? I got just the project for you! Edit: there\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2018\/01\/php.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2018\/01\/php.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2018\/01\/php.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2018\/01\/php.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2018\/01\/php.png?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":1835,"url":"https:\/\/www.entropywins.wtf\/blog\/2016\/11\/09\/maps-4-0-0-rc1-released\/","url_meta":{"origin":904,"position":1},"title":"Maps 4.0.0-RC1 released!","author":"Jeroen","date":"2016-11-09","format":false,"excerpt":"I'm happy to announce the first release candidate for Maps 4.0. Maps is a MediaWiki extension to work with and visualize geographical information. Maps 4.0 is the first major release of the extension since January 2014, and it brings a ton of \"new\" functionality. First off, this blog post is\u2026","rel":"","context":"In &quot;Software&quot;","block_context":{"text":"Software","link":"https:\/\/www.entropywins.wtf\/blog\/category\/software\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":849,"url":"https:\/\/www.entropywins.wtf\/blog\/2010\/06\/07\/maps-and-semantic-maps-0-6-2-released\/","url_meta":{"origin":904,"position":2},"title":"Maps and Semantic Maps 0.6.2 released","author":"Jeroen","date":"2010-06-07","format":false,"excerpt":"Maps and Semantic Maps 0.6.2 are now available for download. This release contains improvements to parameter handling, case insensitivity has been re-added, and using default parameters together with named ones will work more intuitive. In Maps the handling of distances has also been considerably improved: there is a new #distance\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"Maps extension for MediaWiki","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/06\/maps.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/06\/maps.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/06\/maps.jpg?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":1782,"url":"https:\/\/www.entropywins.wtf\/blog\/2016\/06\/24\/maps-3-7-for-mediawiki-released\/","url_meta":{"origin":904,"position":3},"title":"Maps 3.7 for MediaWiki released","author":"Jeroen","date":"2016-06-24","format":false,"excerpt":"I\u2019m happy to announce the immediate availability of Maps 3.7. This feature release brings some minor enhancements. Added rotate control support for Google Maps (by Peter Grassberger) Changed coordinate display on OpenLayers maps from long-lat to lat-long (by Peter Grassberger) Upgraded Google marker cluster library to its latest version (2.1.2)\u2026","rel":"","context":"In &quot;Software&quot;","block_context":{"text":"Software","link":"https:\/\/www.entropywins.wtf\/blog\/category\/software\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/06\/suchrotate.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/06\/suchrotate.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/06\/suchrotate.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/06\/suchrotate.jpg?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":2092,"url":"https:\/\/www.entropywins.wtf\/blog\/2017\/10\/09\/yield-in-phpunit-data-providers\/","url_meta":{"origin":904,"position":4},"title":"Yield in PHPUnit data providers","author":"Jeroen","date":"2017-10-09","format":false,"excerpt":"Initially I started creating a general post about PHP Generators, a feature introduced in PHP 5.5. However since I keep failing to come up with good examples for some cool ways to use Generators, I decided to do this mini post focusing on one such cool usage. PHPUnit data providers\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1153,"url":"https:\/\/www.entropywins.wtf\/blog\/2013\/11\/24\/introduction-to-composer-for-mediawiki-developers\/","url_meta":{"origin":904,"position":5},"title":"Introduction to Composer for MediaWiki developers","author":"Jeroen","date":"2013-11-24","format":false,"excerpt":"This post aims to be a quick start guide for MediaWiki extension developers that want to get their extension to be installable via Composer. If you are not yet familiar with Composer, I recommend you have a look at the Composer page on MediaWiki.org before continuing with this post. Defining\u2026","rel":"","context":"In \"composer\"","block_context":{"text":"composer","link":"https:\/\/www.entropywins.wtf\/blog\/tag\/composer\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2013\/11\/logo-composer-transparent.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/904","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/comments?post=904"}],"version-history":[{"count":0,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/904\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/media?parent=904"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/categories?post=904"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/tags?post=904"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}