<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>havvg's playground</title>
  <link href="http://toni.uebernickel.info/atom.xml" rel="self" />
  <link href="http://toni.uebernickel.info" />
  <updated>2012-02-22T07:32:37-08:00</updated>
  <id>http://toni.uebernickel.info</id>
  <author>
    <name>Toni Uebernickel</name>
    <email>tuebernickel@gmail.com</email>
  </author>
  <rights>Copyright (c) Toni Uebernickel</rights>
  
  <entry>
    <id>http://toni.uebernickel.info/2012/02/20/git-rebase-is-not-a-lion-it-is-a-cat-part-two</id>
    <title>git rebase is not a lion, it's a cat - Part Two</title>
    <link href="http://toni.uebernickel.info/2012/02/20/git-rebase-is-not-a-lion-it-is-a-cat-part-two.html" />
    <published>2012-02-20T00:00:00-08:00</published>
    
    <summary type="html">&lt;p&gt;The first part being an introduction to git rebase mechanics, this follow-up drives that introduction into real-world examples.&lt;/p&gt;</summary>
    
  </entry>
  
  <entry>
    <id>http://toni.uebernickel.info/2012/02/18/git-rebase-is-not-a-lion-it-is-a-cat-part-one</id>
    <title>git rebase is not a lion, it's a cat - Part One</title>
    <link href="http://toni.uebernickel.info/2012/02/18/git-rebase-is-not-a-lion-it-is-a-cat-part-one.html" />
    <published>2012-02-18T00:00:00-08:00</published>
    
    <summary type="html">&lt;p&gt;There are many users out there being scared to use git rebase. To wrap things up, git rebase is not a lion that will hunt you down.&lt;/p&gt;

&lt;p&gt;It is a cat, it likes you, until you do something fancy and will hurt you once. You will know how to deal with the situation properly the next time - but give it a try.&lt;/p&gt;

&lt;p&gt;This post is about quelling some fears off those users - maybe you are one of them?&lt;/p&gt;</summary>
    
  </entry>
  
  <entry>
    <id>http://toni.uebernickel.info/2012/02/15/Merge-git-subtree-on-failing-path-guessing</id>
    <title>Merging a git subtree on failing path guessing</title>
    <link href="http://toni.uebernickel.info/2012/02/15/Merge-git-subtree-on-failing-path-guessing.html" />
    <published>2012-02-15T00:00:00-08:00</published>
    
    <summary type="html">&lt;p&gt;In the previous post we set up a project using git-subtree. Unfortunately there may be situations when the merge of the subtree will not make its way into the correct directory.&lt;/p&gt;</summary>
    
  </entry>
  
  <entry>
    <id>http://toni.uebernickel.info/2012/02/13/Using-git-subtree-example-symfony2-bundle-on-cloudcontrol</id>
    <title>Using git-subtree: Example adding Symfony2 bundle on cloudControl</title>
    <link href="http://toni.uebernickel.info/2012/02/13/Using-git-subtree-example-symfony2-bundle-on-cloudcontrol.html" />
    <published>2012-02-13T00:00:00-08:00</published>
    
    <summary type="html">&lt;p&gt;Let&amp;#8217;s say you got your closed source project built on Symfony2. Let&amp;#8217;s further say you are a proud customer of cloudControl. Third assumption: You have not only one project, but two and those are sharing a closed source bundle.&lt;/p&gt;

&lt;p&gt;See how to use &lt;code&gt;git-subtree&lt;/code&gt; to add the shared bundle to both projects and having the bundle in a separate repository.&lt;/p&gt;</summary>
    
  </entry>
  
  <entry>
    <id>http://toni.uebernickel.info/2011/11/25/how-to-extend-form-fields-in-symfony2</id>
    <title>How to extend form fields in Symfony2 using extensions</title>
    <link href="http://toni.uebernickel.info/2011/11/25/how-to-extend-form-fields-in-symfony2.html" />
    <published>2011-11-25T00:00:00-08:00</published>
    
    <summary type="html">&lt;p&gt;This blogpost explains on the example of adding a &amp;#8220;help&amp;#8221; message to widgets how to use form type extensions.&lt;/p&gt;</summary>
    
  </entry>
  
  <entry>
    <id>http://toni.uebernickel.info/2011/10/30/github-pages-with-jekyll</id>
    <title>Github:Pages with Jekyll</title>
    <link href="http://toni.uebernickel.info/2011/10/30/github-pages-with-jekyll.html" />
    <published>2011-10-30T00:00:00-07:00</published>
    
    <summary type="html">&lt;p&gt;Finally, my blog is now on &lt;a href='http://pages.github.com'&gt;github:pages&lt;/a&gt;!&lt;/p&gt;</summary>
    
  </entry>
  
  <entry>
    <id>http://toni.uebernickel.info/2011/09/13/behavior-driven-development-in-symfony2-with-behat-mink-and-zombie-js</id>
    <title>Behavior Driven Development in Symfony2 with Behat, Mink and Zombie.js</title>
    <link href="http://toni.uebernickel.info/2011/09/13/behavior-driven-development-in-symfony2-with-behat-mink-and-zombie-js.html" />
    <published>2011-09-13T00:00:00-07:00</published>
    
    <summary type="html">&lt;p&gt;Long time no post, but now it’s time for a new one. I wrote a guide on behavior driven development in Symfony2. It’s meant for beginners and designed “from scratch”. This guide caught some attention and made it into the official Behat documentation as a &lt;a href='http://docs.behat.org/cookbook/bdd_in_symfony2_with_behat_mink_and_zombiejs.html'&gt;cookbook entry&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you have any feedback on it, please let me know! If you would like to have something related covered, drop me a message!&lt;/p&gt;</summary>
    
  </entry>
  
  <entry>
    <id>http://toni.uebernickel.info/2011/06/07/how-to-combine-git-and-cloudcontrol-using-github</id>
    <title>How to combine git and cloudControl using github</title>
    <link href="http://toni.uebernickel.info/2011/06/07/how-to-combine-git-and-cloudcontrol-using-github.html" />
    <published>2011-06-07T00:00:00-07:00</published>
    
    <summary type="html">&lt;h2 id='what_is_git__the_short_version'&gt;What is git? – The short version.&lt;/h2&gt;

&lt;p&gt;Git is a distributed version control system (VCS). What does “distributed” mean in this case? It means, that there is no “server” as in other VCS like subversion. The repository will be transferred as it to any other user who has access to it – including the complete history.&lt;/p&gt;

&lt;h2 id='what_is_github__a_small_overview'&gt;What is github? – A small overview.&lt;/h2&gt;

&lt;p&gt;Github is a web based service to manage git repositories in a social way. You can create new repositories, fork others, modify the codebase and send your changes back. There are many more very cool features, but we keep it here for now.&lt;/p&gt;

&lt;h2 id='what_is_cloudcontrol__a_php_paas'&gt;What is cloudControl? – A PHP PaaS!&lt;/h2&gt;

&lt;p&gt;Yes, that’s it: a great PHP platform as a service (PaaS) on top of Amazon Web Services. You will have your php application deployed on multiple machines with a single command. There are plenty of add-ons available such as worker processes, MySQL database, MongoDB and memcached to name a few.&lt;/p&gt;</summary>
    
  </entry>
  
  <entry>
    <id>http://toni.uebernickel.info/2010/12/05/rackspace-cloud-servers</id>
    <title>Rackspace Cloud Servers</title>
    <link href="http://toni.uebernickel.info/2010/12/05/rackspace-cloud-servers.html" />
    <published>2010-12-05T00:00:00-08:00</published>
    
    <summary type="html">&lt;p&gt;I moved my servers into &amp;#8220;The Cloud&amp;#8221;™ - more specifically the &lt;a href='http://www.rackspacecloud.com/1700.html'&gt;Rackspace Cloud&lt;/a&gt;. Well why did I do this? The answer is about two years old. I asked my previous hosting service whether they are able to migrate my virtual servers to instances of their &amp;#8220;root servers&amp;#8221;. They said, this is not possible. As time flies by the vServers reached their limits. They were not scalable, so either I get another one .. and another one .. and yet another one. Well at some point I don&amp;#8217;t want to sign another and another contract. I want to say &amp;#8220;Now!&amp;#8221; and the server is up - That&amp;#8217;s why cloud. You have plenty of servers, make up your images for your certain server types and go for it. If you need more hardware, reboot - done!&lt;/p&gt;</summary>
    
  </entry>
  
  <entry>
    <id>http://toni.uebernickel.info/2010/11/29/cruisecontrol-git-modificationset-errors</id>
    <title>CruiseControl git modificationset errors</title>
    <link href="http://toni.uebernickel.info/2010/11/29/cruisecontrol-git-modificationset-errors.html" />
    <published>2010-11-29T00:00:00-08:00</published>
    
    <summary type="html">&lt;p&gt;I encountered some errors while configuring my &lt;a href='http://phpundercontrol.org'&gt;phpUnderControl&lt;/a&gt;. One of the errors were the &lt;code&gt;&amp;lt;git&amp;gt;&lt;/code&gt; &lt;code&gt;&amp;lt;modificationset&amp;gt;&lt;/code&gt; not returning results, but the gitbootstrapper actually updated the git repository. In my case, this was because the user running &lt;a href='http://cruisecontrol.sourceforge.net/'&gt;CruiseControl&lt;/a&gt; has set up colorful output in its git config. This option changes the output of the git-log command. The problem with that? The patterns the modificationset looks for do not match! I opened a &lt;a href='http://jira.public.thoughtworks.org/browse/CC-1020'&gt;change request on Thoughtworks&lt;/a&gt; for that - hopefully this will be fixed in the next release of CruiseControl.&lt;/p&gt;

&lt;p&gt;The other error was about this warning &lt;code&gt;Git - warning: Log for &amp;#39;&amp;#39; only goes back to [date]&lt;/code&gt;. This warning is thrown when you don&amp;#8217;t have &lt;em&gt;a local reflog&lt;/em&gt; back to that given date. This happened to me, because I removed the git repository within my build and cloned it on each build. This warning is no problem for the modificationset. However, I didn&amp;#8217;t want this warning, so I updated my config.xml to use a cleanroom for the bootstrapper and the modificationset. Once built this warning should not occur another time, because you are not loosing the reflog of git anymore. I still clone the repository on each build, but this cleanroom won&amp;#8217;t be touched anytime.&lt;/p&gt;</summary>
    
  </entry>
  
  <entry>
    <id>http://toni.uebernickel.info/2010/11/27/speed-up-phpunit-codecoverage-in-symfony-projects</id>
    <title>speed up PHPUnit CodeCoverage in symfony projects</title>
    <link href="http://toni.uebernickel.info/2010/11/27/speed-up-phpunit-codecoverage-in-symfony-projects.html" />
    <published>2010-11-27T00:00:00-08:00</published>
    
    <summary type="html">&lt;p&gt;Well, &lt;a href='http://www.phpunit.de'&gt;PHPUnit CodeCoverage&lt;/a&gt; is pretty nice and exports some nice HTML files to take a look into. However, a project most often contains more than just PHP files and for a symfony project this could be the phpunit.xml.dist. It removes all folders from your coverage report, that most likely are not your stuff. This one is based on the shipped file of &lt;a href='http://www.symfony-project.org/plugins/sfPHPUnit2Plugin'&gt;sfPHPUnit2Plugin&lt;/a&gt;. The relevant part is the &lt;code&gt;&amp;lt;filter&amp;gt;&lt;/code&gt; section.&lt;/p&gt;</summary>
    
  </entry>
  
  <entry>
    <id>http://toni.uebernickel.info/2010/11/27/config-xml-and-build-xml-for-phpundercontrol-building-a-symfony-project-hosted-on-github</id>
    <title>config.xml and build.xml for phpUnderControl building a symfony project hosted on github</title>
    <link href="http://toni.uebernickel.info/2010/11/27/config-xml-and-build-xml-for-phpundercontrol-building-a-symfony-project-hosted-on-github.html" />
    <published>2010-11-27T00:00:00-08:00</published>
    
    <summary type="html">&lt;p&gt;Well yesterday &lt;a href='http://toni.uebernickel.info/development/add-a-project-wide-testcase-to-sfphpunit2plugin/'&gt;I moved to PHPUnit&lt;/a&gt; and I just felt the way I want to use &lt;a href='http://phpundercontrol.org/'&gt;phpUnderControl&lt;/a&gt; as continuous integration server. The installation part was the easiest one, gathering all the information spread among several websites was not that easy. Especially for me not having used &lt;a href='http://cruisecontrol.sourceforge.net/'&gt;CruiseControl&lt;/a&gt; either.&lt;/p&gt;

&lt;p&gt;I don&amp;#8217;t want to take you into the installation of either &lt;a href='http://www.phpunit.de/manual/current/en/installation.html'&gt;PHPUnit&lt;/a&gt;, &lt;a href='http://phpundercontrol.org/documentation/installation.html'&gt;phpUnderControl&lt;/a&gt; or &lt;a href='http://cruisecontrol.sourceforge.net/main/install.html'&gt;CruiseControl&lt;/a&gt;. These steps are pretty easy and straight forward.&lt;/p&gt;

&lt;p&gt;Let me explain, what my setup looks like. I&amp;#8217;m hosting the project on &lt;a href='https://github.com/'&gt;github.com&lt;/a&gt; as a private repository. Side note: add the public key of your CI to your account to be able to clone these. This project uses symfony with Propel and PHPUnit.&lt;/p&gt;</summary>
    
  </entry>
  
  <entry>
    <id>http://toni.uebernickel.info/2010/11/27/add-a-project-wide-testcase-to-sfphpunit2plugin</id>
    <title>add a project wide TestCase to sfPHPUnit2Plugin </title>
    <link href="http://toni.uebernickel.info/2010/11/27/add-a-project-wide-testcase-to-sfphpunit2plugin.html" />
    <published>2010-11-27T00:00:00-08:00</published>
    
    <content type="html">&lt;p&gt;I just moved my projects from lime to &lt;a href='http://www.phpunit.de'&gt;PHPUnit testing framework&lt;/a&gt;. To make this easier, I appreciate &lt;a href='http://dev.esl.eu/blog/2010/02/25/testing-symfony-projects-with-phpunit/'&gt;the work of Frank Stelzer&lt;/a&gt;, who has created a plugin which makes this move pretty easy within &lt;a href='http://www.symfony-project.org'&gt;symfony&lt;/a&gt;. Setting things up was one easy task, but soon I ran into the problem not being able to share code within the classes of the test cases without touching the plugins code.&lt;/p&gt;

&lt;p&gt;In order to being able to do this, we use the autoloader of symfony. If the &lt;code&gt;sfPHPUnitBaseTestCase&lt;/code&gt; is found in our library use this, otherwise the one provided by the &lt;a href='http://symfony-project.org/plugins/sfPHPUnit2Plugin'&gt;sfPHPUnit2Plugin&lt;/a&gt;. So, what&amp;#8217;s left is moving the current code of the sfPHPUnitBaseTestCase into a new class and make it the superclass of this one. I have chosen to add another entry for the autoloader %SF_LIB_DIR%/test. The only thing left, since the bootstraps for functional and selenium tests can make good out of the autoloader. There are slight adjustments to check whether the file is given at the chosen place. This is the only thing I don&amp;#8217;t like yet, because it&amp;#8217;s hardcoded within the plugin. However you can use the bootstrap templates to adjust it easily. Having done the explanation, here comes the complete patch for &lt;a href='http://trac.symfony-project.org/browser/plugins/sfPHPUnit2Plugin/trunk?rev=31286'&gt;r31286&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I sent the patch to Frank and he is reviewing it and will hopefully apply this in the near future to the trunk. In the meanwhile, feel free to use it. But be advised that you might get conflict when you are going to update the plugin later and the actual solution was being adjusted. I will let you know, how to solve this in case it happens.&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='diff'&gt;&lt;span class='gh'&gt;Index: lib/test/sfPHPUnitPluginBaseTestCase.class.php&lt;/span&gt;
&lt;span class='gh'&gt;===================================================================&lt;/span&gt;
&lt;span class='gd'&gt;--- lib/test/sfPHPUnitPluginBaseTestCase.class.php	(revision 0)&lt;/span&gt;
&lt;span class='gi'&gt;+++ lib/test/sfPHPUnitPluginBaseTestCase.class.php	(revision 0)&lt;/span&gt;
&lt;span class='gu'&gt;@@ -0,0 +1,150 @@&lt;/span&gt;
&lt;span class='gi'&gt;+&amp;lt;?php&lt;/span&gt;
&lt;span class='gi'&gt;+&lt;/span&gt;
&lt;span class='gi'&gt;+/*&lt;/span&gt;
&lt;span class='gi'&gt;+ * This file is part of the sfPHPUnit2Plugin package.&lt;/span&gt;
&lt;span class='gi'&gt;+ * (c) 2010 Frank Stelzer &amp;lt;dev@frankstelzer.de&amp;gt;&lt;/span&gt;
&lt;span class='gi'&gt;+ *&lt;/span&gt;
&lt;span class='gi'&gt;+ * For the full copyright and license information, please view the LICENSE&lt;/span&gt;
&lt;span class='gi'&gt;+ * file that was distributed with this source code.&lt;/span&gt;
&lt;span class='gi'&gt;+ */&lt;/span&gt;
&lt;span class='gi'&gt;+&lt;/span&gt;
&lt;span class='gi'&gt;+/**&lt;/span&gt;
&lt;span class='gi'&gt;+ * The plugins base class for all test cases.&lt;/span&gt;
&lt;span class='gi'&gt;+ *&lt;/span&gt;
&lt;span class='gi'&gt;+ * @package    sfPHPUnit2Plugin&lt;/span&gt;
&lt;span class='gi'&gt;+ * @subpackage test&lt;/span&gt;
&lt;span class='gi'&gt;+ * @author     Frank Stelzer &amp;lt;dev@frankstelzer.de&amp;gt;&lt;/span&gt;
&lt;span class='gi'&gt;+ */&lt;/span&gt;
&lt;span class='gi'&gt;+abstract class sfPHPUnitPluginBaseTestCase extends PHPUnit_Framework_TestCase&lt;/span&gt;
&lt;span class='gi'&gt;+{&lt;/span&gt;
&lt;span class='gi'&gt;+  /**&lt;/span&gt;
&lt;span class='gi'&gt;+   * The sfContext instance&lt;/span&gt;
&lt;span class='gi'&gt;+   *&lt;/span&gt;
&lt;span class='gi'&gt;+   * @var sfContext&lt;/span&gt;
&lt;span class='gi'&gt;+   */&lt;/span&gt;
&lt;span class='gi'&gt;+  private $context = null;&lt;/span&gt;
&lt;span class='gi'&gt;+&lt;/span&gt;
&lt;span class='gi'&gt;+  /**&lt;/span&gt;
&lt;span class='gi'&gt;+   * The sfApplicationConfiguration instance&lt;/span&gt;
&lt;span class='gi'&gt;+   *&lt;/span&gt;
&lt;span class='gi'&gt;+   * @var sfApplicationConfiguration&lt;/span&gt;
&lt;span class='gi'&gt;+   */&lt;/span&gt;
&lt;span class='gi'&gt;+  private $applicationConfiguration = null;&lt;/span&gt;
&lt;span class='gi'&gt;+&lt;/span&gt;
&lt;span class='gi'&gt;+  /**&lt;/span&gt;
&lt;span class='gi'&gt;+   * Dev hook for custom &amp;quot;setUp&amp;quot; stuff&lt;/span&gt;
&lt;span class='gi'&gt;+   * Overwrite it in your test class, if you have to execute stuff before a test is called.&lt;/span&gt;
&lt;span class='gi'&gt;+   */&lt;/span&gt;
&lt;span class='gi'&gt;+  protected function _start()&lt;/span&gt;
&lt;span class='gi'&gt;+  {&lt;/span&gt;
&lt;span class='gi'&gt;+  }&lt;/span&gt;
&lt;span class='gi'&gt;+&lt;/span&gt;
&lt;span class='gi'&gt;+  /**&lt;/span&gt;
&lt;span class='gi'&gt;+   * Dev hook for custom &amp;quot;tearDown&amp;quot; stuff&lt;/span&gt;
&lt;span class='gi'&gt;+   * Overwrite it in your test class, if you have to execute stuff after a test is called.&lt;/span&gt;
&lt;span class='gi'&gt;+   */&lt;/span&gt;
&lt;span class='gi'&gt;+  protected function _end()&lt;/span&gt;
&lt;span class='gi'&gt;+  {&lt;/span&gt;
&lt;span class='gi'&gt;+  }&lt;/span&gt;
&lt;span class='gi'&gt;+&lt;/span&gt;
&lt;span class='gi'&gt;+  /**&lt;/span&gt;
&lt;span class='gi'&gt;+   * Please do not touch this method and use _start directly!&lt;/span&gt;
&lt;span class='gi'&gt;+   */&lt;/span&gt;
&lt;span class='gi'&gt;+  protected function setUp()&lt;/span&gt;
&lt;span class='gi'&gt;+  {&lt;/span&gt;
&lt;span class='gi'&gt;+    $this-&amp;gt;_start();&lt;/span&gt;
&lt;span class='gi'&gt;+  }&lt;/span&gt;
&lt;span class='gi'&gt;+&lt;/span&gt;
&lt;span class='gi'&gt;+  /**&lt;/span&gt;
&lt;span class='gi'&gt;+   * Please do not touch this method and use _end directly!&lt;/span&gt;
&lt;span class='gi'&gt;+   */&lt;/span&gt;
&lt;span class='gi'&gt;+  protected function tearDown()&lt;/span&gt;
&lt;span class='gi'&gt;+  {&lt;/span&gt;
&lt;span class='gi'&gt;+    $this-&amp;gt;_end();&lt;/span&gt;
&lt;span class='gi'&gt;+  }&lt;/span&gt;
&lt;span class='gi'&gt;+&lt;/span&gt;
&lt;span class='gi'&gt;+  /**&lt;/span&gt;
&lt;span class='gi'&gt;+   * Returns current sfApplicationConfiguration instance.&lt;/span&gt;
&lt;span class='gi'&gt;+   * If no configuration does currently exist, a new one will be created.&lt;/span&gt;
&lt;span class='gi'&gt;+   *&lt;/span&gt;
&lt;span class='gi'&gt;+   * @return sfApplicationConfiguration&lt;/span&gt;
&lt;span class='gi'&gt;+   */&lt;/span&gt;
&lt;span class='gi'&gt;+  protected function getApplicationConfiguration()&lt;/span&gt;
&lt;span class='gi'&gt;+  {&lt;/span&gt;
&lt;span class='gi'&gt;+  	if (is_null($this-&amp;gt;applicationConfiguration))&lt;/span&gt;
&lt;span class='gi'&gt;+  	{&lt;/span&gt;
&lt;span class='gi'&gt;+  		$this-&amp;gt;applicationConfiguration = ProjectConfiguration::getApplicationConfiguration($this-&amp;gt;getApplication(), $this-&amp;gt;getEnvironment(), true);&lt;/span&gt;
&lt;span class='gi'&gt;+  	}&lt;/span&gt;
&lt;span class='gi'&gt;+&lt;/span&gt;
&lt;span class='gi'&gt;+  	return $this-&amp;gt;applicationConfiguration;&lt;/span&gt;
&lt;span class='gi'&gt;+  }&lt;/span&gt;
&lt;span class='gi'&gt;+&lt;/span&gt;
&lt;span class='gi'&gt;+  /**&lt;/span&gt;
&lt;span class='gi'&gt;+   * A unit test does not have loaded the whole symfony context on start-up, but&lt;/span&gt;
&lt;span class='gi'&gt;+   * you can create a working instance if you need it with this method&lt;/span&gt;
&lt;span class='gi'&gt;+   * (taken from the bootstrap file).&lt;/span&gt;
&lt;span class='gi'&gt;+   *&lt;/span&gt;
&lt;span class='gi'&gt;+   * @return sfContext&lt;/span&gt;
&lt;span class='gi'&gt;+   */&lt;/span&gt;
&lt;span class='gi'&gt;+  protected function getContext()&lt;/span&gt;
&lt;span class='gi'&gt;+  {&lt;/span&gt;
&lt;span class='gi'&gt;+    if (!$this-&amp;gt;context)&lt;/span&gt;
&lt;span class='gi'&gt;+    {&lt;/span&gt;
&lt;span class='gi'&gt;+      // ProjectConfiguration is already required in the bootstrap file&lt;/span&gt;
&lt;span class='gi'&gt;+      $this-&amp;gt;context = sfContext::createInstance($this-&amp;gt;getApplicationConfiguration());&lt;/span&gt;
&lt;span class='gi'&gt;+    }&lt;/span&gt;
&lt;span class='gi'&gt;+&lt;/span&gt;
&lt;span class='gi'&gt;+    return $this-&amp;gt;context;&lt;/span&gt;
&lt;span class='gi'&gt;+  }&lt;/span&gt;
&lt;span class='gi'&gt;+&lt;/span&gt;
&lt;span class='gi'&gt;+  /**&lt;/span&gt;
&lt;span class='gi'&gt;+   * Returns current sfPHPUnitTest&lt;/span&gt;
&lt;span class='gi'&gt;+   *&lt;/span&gt;
&lt;span class='gi'&gt;+   * @return sfPHPUnitTest&lt;/span&gt;
&lt;span class='gi'&gt;+   */&lt;/span&gt;
&lt;span class='gi'&gt;+  protected function getTest()&lt;/span&gt;
&lt;span class='gi'&gt;+  {&lt;/span&gt;
&lt;span class='gi'&gt;+    if (!$this-&amp;gt;test)&lt;/span&gt;
&lt;span class='gi'&gt;+    {&lt;/span&gt;
&lt;span class='gi'&gt;+      $this-&amp;gt;test = new sfPHPUnitTest( $this );&lt;/span&gt;
&lt;span class='gi'&gt;+    }&lt;/span&gt;
&lt;span class='gi'&gt;+&lt;/span&gt;
&lt;span class='gi'&gt;+    return $this-&amp;gt;test;&lt;/span&gt;
&lt;span class='gi'&gt;+  }&lt;/span&gt;
&lt;span class='gi'&gt;+&lt;/span&gt;
&lt;span class='gi'&gt;+  /**&lt;/span&gt;
&lt;span class='gi'&gt;+   * Prints a debug message and dumps the&lt;/span&gt;
&lt;span class='gi'&gt;+   * assigned variable&lt;/span&gt;
&lt;span class='gi'&gt;+   *&lt;/span&gt;
&lt;span class='gi'&gt;+   * @param mixed $mixed The content which should be dumped&lt;/span&gt;
&lt;span class='gi'&gt;+   * @param string $message A debug message&lt;/span&gt;
&lt;span class='gi'&gt;+   */&lt;/span&gt;
&lt;span class='gi'&gt;+  protected function debug($mixed, $message = &amp;#39;debug&amp;#39;)&lt;/span&gt;
&lt;span class='gi'&gt;+  {&lt;/span&gt;
&lt;span class='gi'&gt;+  	$this-&amp;gt;getTest()-&amp;gt;diag(sprintf(&amp;#39;[%s] %s&amp;#39;, $message, var_export($mixed, true)));&lt;/span&gt;
&lt;span class='gi'&gt;+  }&lt;/span&gt;
&lt;span class='gi'&gt;+&lt;/span&gt;
&lt;span class='gi'&gt;+  /**&lt;/span&gt;
&lt;span class='gi'&gt;+   * Returns application name&lt;/span&gt;
&lt;span class='gi'&gt;+   *&lt;/span&gt;
&lt;span class='gi'&gt;+   * Overwrite this method if you need a context instance in your unit test!&lt;/span&gt;
&lt;span class='gi'&gt;+   *&lt;/span&gt;
&lt;span class='gi'&gt;+   * @return string&lt;/span&gt;
&lt;span class='gi'&gt;+   */&lt;/span&gt;
&lt;span class='gi'&gt;+  protected function getApplication()&lt;/span&gt;
&lt;span class='gi'&gt;+  {&lt;/span&gt;
&lt;span class='gi'&gt;+    throw new Exception( &amp;#39;Application name is not defined. Overwrite &amp;quot;getApplication&amp;quot; in your unit test!&amp;#39;);&lt;/span&gt;
&lt;span class='gi'&gt;+  }&lt;/span&gt;
&lt;span class='gi'&gt;+&lt;/span&gt;
&lt;span class='gi'&gt;+  /**&lt;/span&gt;
&lt;span class='gi'&gt;+   * Returns environment name&lt;/span&gt;
&lt;span class='gi'&gt;+   *&lt;/span&gt;
&lt;span class='gi'&gt;+   * Overwrite this method if you need a context instance in your unit test!&lt;/span&gt;
&lt;span class='gi'&gt;+   *&lt;/span&gt;
&lt;span class='gi'&gt;+   * @return string test by default&lt;/span&gt;
&lt;span class='gi'&gt;+   */&lt;/span&gt;
&lt;span class='gi'&gt;+  protected function getEnvironment()&lt;/span&gt;
&lt;span class='gi'&gt;+  {&lt;/span&gt;
&lt;span class='gi'&gt;+    return &amp;#39;test&amp;#39;;&lt;/span&gt;
&lt;span class='gi'&gt;+  }&lt;/span&gt;
&lt;span class='gi'&gt;+}&lt;/span&gt;
\ No newline at end of file
 
Property changes on: lib/test/sfPHPUnitPluginBaseTestCase.class.php
___________________________________________________________________
Added: svn:keywords
   + &amp;quot;LastChangedBy LastChangedDate Revision HeadURL Id&amp;quot;
 
&lt;span class='gh'&gt;Index: lib/test/sfPHPUnitBaseTestCase.class.php&lt;/span&gt;
&lt;span class='gh'&gt;===================================================================&lt;/span&gt;
&lt;span class='gd'&gt;--- lib/test/sfPHPUnitBaseTestCase.class.php	(revision 31514)&lt;/span&gt;
&lt;span class='gi'&gt;+++ lib/test/sfPHPUnitBaseTestCase.class.php	(working copy)&lt;/span&gt;
&lt;span class='gu'&gt;@@ -9,150 +9,16 @@&lt;/span&gt;
  */
 
 /**
&lt;span class='gd'&gt;- * sfBasePHPUnitTestCase is the super class for all unit&lt;/span&gt;
&lt;span class='gi'&gt;+ * sfPHPUnitBaseTestCase is the super class for all unit&lt;/span&gt;
  * tests using PHPUnit.
  *
&lt;span class='gd'&gt;- * @package    sfPHPUnit2Plugin&lt;/span&gt;
&lt;span class='gi'&gt;+ * Make a class available in your library folder and put your project relevant helper methods in there.&lt;/span&gt;
&lt;span class='gi'&gt;+ *&lt;/span&gt;
&lt;span class='gi'&gt;+ * @package sfPHPUnit2Plugin&lt;/span&gt;
  * @subpackage test
&lt;span class='gd'&gt;- * @author     Frank Stelzer &amp;lt;dev@frankstelzer.de&amp;gt;&lt;/span&gt;
&lt;span class='gi'&gt;+ * @author Toni Uebernickel &amp;lt;tuebernickel@gmail.com&amp;gt;&lt;/span&gt;
  */
&lt;span class='gd'&gt;-abstract class sfPHPUnitBaseTestCase extends PHPUnit_Framework_TestCase&lt;/span&gt;
&lt;span class='gi'&gt;+class sfPHPUnitBaseTestCase extends sfPHPUnitPluginBaseTestCase&lt;/span&gt;
 {
&lt;span class='gd'&gt;-  /**&lt;/span&gt;
&lt;span class='gd'&gt;-   * The sfPHPUnitTest instance for lime compatibility&lt;/span&gt;
&lt;span class='gd'&gt;-   *&lt;/span&gt;
&lt;span class='gd'&gt;-   * @var sfPHPUnitTest&lt;/span&gt;
&lt;span class='gd'&gt;-   */&lt;/span&gt;
&lt;span class='gd'&gt;-  private $test = null;&lt;/span&gt;
 
&lt;span class='gd'&gt;-  /**&lt;/span&gt;
&lt;span class='gd'&gt;-   * The sfContext instance&lt;/span&gt;
&lt;span class='gd'&gt;-   *&lt;/span&gt;
&lt;span class='gd'&gt;-   * @var sfContext&lt;/span&gt;
&lt;span class='gd'&gt;-   */&lt;/span&gt;
&lt;span class='gd'&gt;-  private $context = null;&lt;/span&gt;
&lt;span class='gd'&gt;-&lt;/span&gt;
&lt;span class='gd'&gt;-  /**&lt;/span&gt;
&lt;span class='gd'&gt;-   * The sfApplicationConfiguration instance&lt;/span&gt;
&lt;span class='gd'&gt;-   *&lt;/span&gt;
&lt;span class='gd'&gt;-   * @var sfApplicationConfiguration&lt;/span&gt;
&lt;span class='gd'&gt;-   */&lt;/span&gt;
&lt;span class='gd'&gt;-  private $applicationConfiguration = null;&lt;/span&gt;
&lt;span class='gd'&gt;-&lt;/span&gt;
&lt;span class='gd'&gt;-  /**&lt;/span&gt;
&lt;span class='gd'&gt;-   * Dev hook for custom &amp;quot;setUp&amp;quot; stuff&lt;/span&gt;
&lt;span class='gd'&gt;-   * Overwrite it in your test class, if you have to execute stuff before a test is called.&lt;/span&gt;
&lt;span class='gd'&gt;-   */&lt;/span&gt;
&lt;span class='gd'&gt;-  protected function _start()&lt;/span&gt;
&lt;span class='gd'&gt;-  {&lt;/span&gt;
&lt;span class='gd'&gt;-  }&lt;/span&gt;
&lt;span class='gd'&gt;-&lt;/span&gt;
&lt;span class='gd'&gt;-  /**&lt;/span&gt;
&lt;span class='gd'&gt;-   * Dev hook for custom &amp;quot;tearDown&amp;quot; stuff&lt;/span&gt;
&lt;span class='gd'&gt;-   * Overwrite it in your test class, if you have to execute stuff after a test is called.&lt;/span&gt;
&lt;span class='gd'&gt;-   */&lt;/span&gt;
&lt;span class='gd'&gt;-  protected function _end()&lt;/span&gt;
&lt;span class='gd'&gt;-  {&lt;/span&gt;
&lt;span class='gd'&gt;-  }&lt;/span&gt;
&lt;span class='gd'&gt;-&lt;/span&gt;
&lt;span class='gd'&gt;-  /**&lt;/span&gt;
&lt;span class='gd'&gt;-   * Please do not touch this method and use _start directly!&lt;/span&gt;
&lt;span class='gd'&gt;-   */&lt;/span&gt;
&lt;span class='gd'&gt;-  protected function setUp()&lt;/span&gt;
&lt;span class='gd'&gt;-  {&lt;/span&gt;
&lt;span class='gd'&gt;-    $this-&amp;gt;_start();&lt;/span&gt;
&lt;span class='gd'&gt;-  }&lt;/span&gt;
&lt;span class='gd'&gt;-&lt;/span&gt;
&lt;span class='gd'&gt;-  /**&lt;/span&gt;
&lt;span class='gd'&gt;-   * Please do not touch this method and use _end directly!&lt;/span&gt;
&lt;span class='gd'&gt;-   */&lt;/span&gt;
&lt;span class='gd'&gt;-  protected function tearDown()&lt;/span&gt;
&lt;span class='gd'&gt;-  {&lt;/span&gt;
&lt;span class='gd'&gt;-    $this-&amp;gt;_end();&lt;/span&gt;
&lt;span class='gd'&gt;-  }&lt;/span&gt;
&lt;span class='gd'&gt;-&lt;/span&gt;
&lt;span class='gd'&gt;-  /**&lt;/span&gt;
&lt;span class='gd'&gt;-   * Returns current sfApplicationConfiguration instance.&lt;/span&gt;
&lt;span class='gd'&gt;-   * If no configuration does currently exist, a new one will be created.&lt;/span&gt;
&lt;span class='gd'&gt;-   *&lt;/span&gt;
&lt;span class='gd'&gt;-   * @return sfApplicationConfiguration&lt;/span&gt;
&lt;span class='gd'&gt;-   */&lt;/span&gt;
&lt;span class='gd'&gt;-  protected function getApplicationConfiguration()&lt;/span&gt;
&lt;span class='gd'&gt;-  {&lt;/span&gt;
&lt;span class='gd'&gt;-  	if (is_null($this-&amp;gt;applicationConfiguration))&lt;/span&gt;
&lt;span class='gd'&gt;-  	{&lt;/span&gt;
&lt;span class='gd'&gt;-  		$this-&amp;gt;applicationConfiguration = ProjectConfiguration::getApplicationConfiguration($this-&amp;gt;getApplication(), $this-&amp;gt;getEnvironment(), true);&lt;/span&gt;
&lt;span class='gd'&gt;-  	}&lt;/span&gt;
&lt;span class='gd'&gt;-&lt;/span&gt;
&lt;span class='gd'&gt;-  	return $this-&amp;gt;applicationConfiguration;&lt;/span&gt;
&lt;span class='gd'&gt;-  }&lt;/span&gt;
&lt;span class='gd'&gt;-&lt;/span&gt;
&lt;span class='gd'&gt;-  /**&lt;/span&gt;
&lt;span class='gd'&gt;-   * A unit test does not have loaded the whole symfony context on start-up, but&lt;/span&gt;
&lt;span class='gd'&gt;-   * you can create a working instance if you need it with this method&lt;/span&gt;
&lt;span class='gd'&gt;-   * (taken from the bootstrap file).&lt;/span&gt;
&lt;span class='gd'&gt;-   *&lt;/span&gt;
&lt;span class='gd'&gt;-   * @return sfContext&lt;/span&gt;
&lt;span class='gd'&gt;-   */&lt;/span&gt;
&lt;span class='gd'&gt;-  protected function getContext()&lt;/span&gt;
&lt;span class='gd'&gt;-  {&lt;/span&gt;
&lt;span class='gd'&gt;-    if (!$this-&amp;gt;context)&lt;/span&gt;
&lt;span class='gd'&gt;-    {&lt;/span&gt;
&lt;span class='gd'&gt;-      // ProjectConfiguration is already required in the bootstrap file&lt;/span&gt;
&lt;span class='gd'&gt;-      $this-&amp;gt;context = sfContext::createInstance($this-&amp;gt;getApplicationConfiguration());&lt;/span&gt;
&lt;span class='gd'&gt;-    }&lt;/span&gt;
&lt;span class='gd'&gt;-&lt;/span&gt;
&lt;span class='gd'&gt;-    return $this-&amp;gt;context;&lt;/span&gt;
&lt;span class='gd'&gt;-  }&lt;/span&gt;
&lt;span class='gd'&gt;-&lt;/span&gt;
&lt;span class='gd'&gt;-  /**&lt;/span&gt;
&lt;span class='gd'&gt;-   * Returns current sfPHPUnitTest&lt;/span&gt;
&lt;span class='gd'&gt;-   *&lt;/span&gt;
&lt;span class='gd'&gt;-   * @return sfPHPUnitTest&lt;/span&gt;
&lt;span class='gd'&gt;-   */&lt;/span&gt;
&lt;span class='gd'&gt;-  protected function getTest()&lt;/span&gt;
&lt;span class='gd'&gt;-  {&lt;/span&gt;
&lt;span class='gd'&gt;-    if (!$this-&amp;gt;test)&lt;/span&gt;
&lt;span class='gd'&gt;-    {&lt;/span&gt;
&lt;span class='gd'&gt;-      $this-&amp;gt;test = new sfPHPUnitTest( $this );&lt;/span&gt;
&lt;span class='gd'&gt;-    }&lt;/span&gt;
&lt;span class='gd'&gt;-&lt;/span&gt;
&lt;span class='gd'&gt;-    return $this-&amp;gt;test;&lt;/span&gt;
&lt;span class='gd'&gt;-  }&lt;/span&gt;
&lt;span class='gd'&gt;-&lt;/span&gt;
&lt;span class='gd'&gt;-  /**&lt;/span&gt;
&lt;span class='gd'&gt;-   * Prints a debug message and dumps the&lt;/span&gt;
&lt;span class='gd'&gt;-   * assigned variable&lt;/span&gt;
&lt;span class='gd'&gt;-   *&lt;/span&gt;
&lt;span class='gd'&gt;-   * @param mixed $mixed The content which should be dumped&lt;/span&gt;
&lt;span class='gd'&gt;-   * @param string $message A debug message&lt;/span&gt;
&lt;span class='gd'&gt;-   */&lt;/span&gt;
&lt;span class='gd'&gt;-  protected function debug($mixed, $message = &amp;#39;debug&amp;#39;)&lt;/span&gt;
&lt;span class='gd'&gt;-  {&lt;/span&gt;
&lt;span class='gd'&gt;-  	$this-&amp;gt;getTest()-&amp;gt;diag(sprintf(&amp;#39;[%s] %s&amp;#39;, $message, var_export($mixed, true)));&lt;/span&gt;
&lt;span class='gd'&gt;-  }&lt;/span&gt;
&lt;span class='gd'&gt;-&lt;/span&gt;
&lt;span class='gd'&gt;-  /**&lt;/span&gt;
&lt;span class='gd'&gt;-   * Returns application name&lt;/span&gt;
&lt;span class='gd'&gt;-   *&lt;/span&gt;
&lt;span class='gd'&gt;-   * Overwrite this method if you need a context instance in your unit test!&lt;/span&gt;
&lt;span class='gd'&gt;-   *&lt;/span&gt;
&lt;span class='gd'&gt;-   * @return string&lt;/span&gt;
&lt;span class='gd'&gt;-   */&lt;/span&gt;
&lt;span class='gd'&gt;-  protected function getApplication()&lt;/span&gt;
&lt;span class='gd'&gt;-  {&lt;/span&gt;
&lt;span class='gd'&gt;-    throw new Exception( &amp;#39;Application name is not defined. Overwrite &amp;quot;getApplication&amp;quot; in your unit test!&amp;#39;);&lt;/span&gt;
&lt;span class='gd'&gt;-  }&lt;/span&gt;
&lt;span class='gd'&gt;-&lt;/span&gt;
&lt;span class='gd'&gt;-  /**&lt;/span&gt;
&lt;span class='gd'&gt;-   * Returns environment name&lt;/span&gt;
&lt;span class='gd'&gt;-   *&lt;/span&gt;
&lt;span class='gd'&gt;-   * Overwrite this method if you need a context instance in your unit test!&lt;/span&gt;
&lt;span class='gd'&gt;-   *&lt;/span&gt;
&lt;span class='gd'&gt;-   * @return string test by default&lt;/span&gt;
&lt;span class='gd'&gt;-   */&lt;/span&gt;
&lt;span class='gd'&gt;-  protected function getEnvironment()&lt;/span&gt;
&lt;span class='gd'&gt;-  {&lt;/span&gt;
&lt;span class='gd'&gt;-    return &amp;#39;test&amp;#39;;&lt;/span&gt;
&lt;span class='gd'&gt;-  }&lt;/span&gt;
 }
\ No newline at end of file
&lt;span class='gh'&gt;Index: lib/config/autoload.yml&lt;/span&gt;
&lt;span class='gh'&gt;===================================================================&lt;/span&gt;
&lt;span class='gd'&gt;--- lib/config/autoload.yml	(revision 31514)&lt;/span&gt;
&lt;span class='gi'&gt;+++ lib/config/autoload.yml	(working copy)&lt;/span&gt;
&lt;span class='gu'&gt;@@ -1,6 +1,11 @@&lt;/span&gt;
&lt;span class='gd'&gt;-autoload:&lt;/span&gt;
&lt;span class='gi'&gt;+autoload:  &lt;/span&gt;
   # tests for sfPHPUnit2Plugin
   sfPHPUnit2Plugin_tests:
     name:           sfPHPUnit2Plugin tests
     path:           %SF_PLUGINS_DIR%/sfPHPUnit2Plugin/lib/test
     recursive:      false
&lt;span class='gi'&gt;+    &lt;/span&gt;
&lt;span class='gi'&gt;+  project_lib_test:&lt;/span&gt;
&lt;span class='gi'&gt;+    name:           project test library&lt;/span&gt;
&lt;span class='gi'&gt;+    path:           %SF_LIB_DIR%/test&lt;/span&gt;
&lt;span class='gi'&gt;+    recursive:      false&lt;/span&gt;
\ No newline at end of file
&lt;span class='gh'&gt;Index: data/template/selenium/bootstrap.tpl&lt;/span&gt;
&lt;span class='gh'&gt;===================================================================&lt;/span&gt;
&lt;span class='gd'&gt;--- data/template/selenium/bootstrap.tpl	(revision 31514)&lt;/span&gt;
&lt;span class='gi'&gt;+++ data/template/selenium/bootstrap.tpl	(working copy)&lt;/span&gt;
&lt;span class='gu'&gt;@@ -14,7 +14,19 @@&lt;/span&gt;
 
 // autoloading does not exist at this point yet, require base classes by hand
 $_phpunitPluginDir = dirname(__FILE__).&amp;#39;/../../../plugins/sfPHPUnit2Plugin&amp;#39;;
&lt;span class='gd'&gt;-require_once $_phpunitPluginDir.&amp;#39;/lib/test/sfPHPUnitBaseTestCase.class.php&amp;#39;;&lt;/span&gt;
&lt;span class='gi'&gt;+require_once $_phpunitPluginDir.&amp;#39;/lib/test/sfPHPUnitPluginBaseTestCase.class.php&amp;#39;;&lt;/span&gt;
&lt;span class='gi'&gt;+&lt;/span&gt;
&lt;span class='gi'&gt;+// check for project specific base class&lt;/span&gt;
&lt;span class='gi'&gt;+$_projectBaseTestCase = sfConfig::get(&amp;#39;sf_lib_dir&amp;#39;).&amp;#39;/test/sfPHPUnitBaseTestCase.class.php&amp;#39;;&lt;/span&gt;
&lt;span class='gi'&gt;+if (file_exists($_projectBaseTestCase))&lt;/span&gt;
&lt;span class='gi'&gt;+{&lt;/span&gt;
&lt;span class='gi'&gt;+  require_once $_projectBaseTestCase;&lt;/span&gt;
&lt;span class='gi'&gt;+}&lt;/span&gt;
&lt;span class='gi'&gt;+else&lt;/span&gt;
&lt;span class='gi'&gt;+{&lt;/span&gt;
&lt;span class='gi'&gt;+  require_once $_phpunitPluginDir.&amp;#39;/lib/test/sfPHPUnitBaseTestCase.class.php&amp;#39;;&lt;/span&gt;
&lt;span class='gi'&gt;+}&lt;/span&gt;
&lt;span class='gi'&gt;+&lt;/span&gt;
 require_once $_phpunitPluginDir.&amp;#39;/lib/test/sfPHPUnitBaseSeleniumTestCase.class.php&amp;#39;;
 
 // remove all cache
&lt;span class='gh'&gt;Index: data/template/functional/bootstrap.tpl&lt;/span&gt;
&lt;span class='gh'&gt;===================================================================&lt;/span&gt;
&lt;span class='gd'&gt;--- data/template/functional/bootstrap.tpl	(revision 31514)&lt;/span&gt;
&lt;span class='gi'&gt;+++ data/template/functional/bootstrap.tpl	(working copy)&lt;/span&gt;
&lt;span class='gu'&gt;@@ -13,7 +13,20 @@&lt;/span&gt;
 
 // autoloading does not exist at this point yet, require base classes by hand
 $_phpunitPluginDir = dirname(__FILE__).&amp;#39;/../../../plugins/sfPHPUnit2Plugin&amp;#39;;
&lt;span class='gd'&gt;-require_once $_phpunitPluginDir.&amp;#39;/lib/test/sfPHPUnitBaseTestCase.class.php&amp;#39;;&lt;/span&gt;
&lt;span class='gi'&gt;+&lt;/span&gt;
&lt;span class='gi'&gt;+require_once $_phpunitPluginDir.&amp;#39;/lib/test/sfPHPUnitPluginBaseTestCase.class.php&amp;#39;;&lt;/span&gt;
&lt;span class='gi'&gt;+&lt;/span&gt;
&lt;span class='gi'&gt;+// check for project specific base class&lt;/span&gt;
&lt;span class='gi'&gt;+$_projectBaseTestCase = sfConfig::get(&amp;#39;sf_lib_dir&amp;#39;).&amp;#39;/test/sfPHPUnitBaseTestCase.class.php&amp;#39;;&lt;/span&gt;
&lt;span class='gi'&gt;+if (file_exists($_projectBaseTestCase))&lt;/span&gt;
&lt;span class='gi'&gt;+{&lt;/span&gt;
&lt;span class='gi'&gt;+  require_once $_projectBaseTestCase;&lt;/span&gt;
&lt;span class='gi'&gt;+}&lt;/span&gt;
&lt;span class='gi'&gt;+else&lt;/span&gt;
&lt;span class='gi'&gt;+{&lt;/span&gt;
&lt;span class='gi'&gt;+  require_once $_phpunitPluginDir.&amp;#39;/lib/test/sfPHPUnitBaseTestCase.class.php&amp;#39;;&lt;/span&gt;
&lt;span class='gi'&gt;+}&lt;/span&gt;
&lt;span class='gi'&gt;+&lt;/span&gt;
 require_once $_phpunitPluginDir.&amp;#39;/lib/test/sfPHPUnitBaseFunctionalTestCase.class.php&amp;#39;;
 
 // remove all cache
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</content>
    
  </entry>
  
  <entry>
    <id>http://toni.uebernickel.info/2010/11/25/git-checkout-name-in-bash-primary-prompt</id>
    <title>git checkout name in bash primary prompt</title>
    <link href="http://toni.uebernickel.info/2010/11/25/git-checkout-name-in-bash-primary-prompt.html" />
    <published>2010-11-25T00:00:00-08:00</published>
    
    <content type="html">&lt;p&gt;You want to have an overview of your current git checkout in your bash prompt? Then read on!&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='bash'&gt;parse_git_branch &lt;span class='o'&gt;()&lt;/span&gt; &lt;span class='o'&gt;{&lt;/span&gt;
  git name-rev HEAD 2&amp;gt; /dev/null | sed -e &lt;span class='s1'&gt;&amp;#39;s/\^0$//&amp;#39;&lt;/span&gt; | sed &lt;span class='s1'&gt;&amp;#39;s#HEAD\ \(.*\)# (\1)#&amp;#39;&lt;/span&gt;
&lt;span class='o'&gt;}&lt;/span&gt;
 
&lt;span class='nv'&gt;BLACK&lt;/span&gt;&lt;span class='o'&gt;=&lt;/span&gt;&lt;span class='s2'&gt;&amp;quot;\[\033[0;38m\]&amp;quot;&lt;/span&gt;
&lt;span class='nv'&gt;RED&lt;/span&gt;&lt;span class='o'&gt;=&lt;/span&gt;&lt;span class='s2'&gt;&amp;quot;\[\033[0;31m\]&amp;quot;&lt;/span&gt;
&lt;span class='nv'&gt;RED_BOLD&lt;/span&gt;&lt;span class='o'&gt;=&lt;/span&gt;&lt;span class='s2'&gt;&amp;quot;\[\033[01;31m\]&amp;quot;&lt;/span&gt;
&lt;span class='nv'&gt;BLUE&lt;/span&gt;&lt;span class='o'&gt;=&lt;/span&gt;&lt;span class='s2'&gt;&amp;quot;\[\033[01;34m\]&amp;quot;&lt;/span&gt;
&lt;span class='nv'&gt;GREEN&lt;/span&gt;&lt;span class='o'&gt;=&lt;/span&gt;&lt;span class='s2'&gt;&amp;quot;\[\033[0;32m\]&amp;quot;&lt;/span&gt;
 
&lt;span class='nb'&gt;export &lt;/span&gt;&lt;span class='nv'&gt;PS1&lt;/span&gt;&lt;span class='o'&gt;=&lt;/span&gt;&lt;span class='s2'&gt;&amp;quot;$BLACK\u@\h:$GREEN\w$RED_BOLD\$(parse_git_branch)$BLACK \$ &amp;quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Here some explanation, on what&amp;#8217;s going on. The obvious one is the &lt;code&gt;git name-rev HEAD&lt;/code&gt; command, which will retrieve a named revision for you. The first usage of the stream editor (sed) simply strips the &amp;#8220;^0&amp;#8221; at the end of the name, which means in git terms, that&amp;#8217;s the exact commit of the name, it&amp;#8217;s prefixed to. Any other refs will be shown, so if you are one commit before the tag, it will be shown with a &amp;#8220;^1&amp;#8221;. The second sed command strips some more output from the orignal. It turns &amp;#8220;HEAD tags/3.5.5&amp;#8221; into &amp;#8220;tags/3.5.5&amp;#8221; by simply stripping &amp;#8220;HEAD &amp;#8220;.&lt;/p&gt;

&lt;p&gt;The next part is a set of color declarations. If you don&amp;#8217;t like colors, omit this part. The last - and most important - part is the setting of the primary prompt of your bash. Stripping all the colors, this would be: &lt;code&gt;export PS1=&amp;quot;\u@\h:\w\$(parse_git_branch) \$ &amp;quot;&lt;/code&gt; This would lead to a bash prompt like: &lt;code&gt;havvg@havvgbook:~/Web Development/phpunit (tags/3.5.5) $ &lt;/code&gt; You can find some more information on what&amp;#8217;s available for the bash prompts and where to put the code above properly &lt;a href='http://www.linuxselfhelp.com/howtos/Bash-Prompt/Bash-Prompt-HOWTO-2.html#bpescapes'&gt;on linuxselfhelp.com&lt;/a&gt;&lt;/p&gt;</content>
    
  </entry>
  
  <entry>
    <id>http://toni.uebernickel.info/2010/10/19/jquery-qtip-applies-two-times-after-adding-objects-to-the-dom</id>
    <title>jQuery qTip applies two times after adding objects to the DOM</title>
    <link href="http://toni.uebernickel.info/2010/10/19/jquery-qtip-applies-two-times-after-adding-objects-to-the-dom.html" />
    <published>2010-10-19T00:00:00-07:00</published>
    
    <summary type="html">&lt;p&gt;At &lt;a href='http://adcloud.com'&gt;Adcloud&lt;/a&gt; we are using the &lt;a href='http://craigsworks.com/projects/qtip/'&gt;jQuery qTip plugin&lt;/a&gt;, which provides pretty nice and easy to apply tooltips. We ran into one small problem, which solution I want to share. The tooltips work fine, except when you are adding new objects to the DOM. As of &lt;a href='http://jquery.com'&gt;jQuery 1.4&lt;/a&gt; there is no availability of live binding on the load-Event.&lt;/p&gt;</summary>
    
  </entry>
  
</feed>

