11/365, Down the rabbit hole of debugging unit tests.
This is day eleven of my attempt to write something, anything, every day for 365 days in a row.
Yesterday I came across this weird error while running one of the unit tests I was working on:
PDOException: SQLSTATE: Syntax error or access violation: 1305 SAVEPOINT trans2 does not exist
It may not look like much but in search of a resolution I ended up taking a deep dive down a rabbit hole of red-herrings and incorrect assumptions.
Having spent a good few hours thinking it was something in my code that was breaking and finding nothing at fault I quickly realised that the tests that were returning the error all had something in common. I was running them individually, if I ran the tests in a batch or all of them then the error didn't show.
It was at that point that I began kicking myself, the problem wasn't caused by anything I had written but instead by my IDE of choice: PHPStorm.
Looking at the console output from running the tests as a batch or all of them I could see that PHPStorm was generating the command correctly with
--configuration set. However if I ran an individual file or method it would generate the PHPUnit command with
--no-configuration. It was the latter that caused the tests to break.
My issue was caused due to my not setting a default configuration file to be used by the test runner, once set PHPStorm began generating the correct command and my tests began working as expected.
Six hours wasted, all because I didn't know to set an obscure configuration property in a config sub-pane popup of a config sub-pane popup.
Welcome to programming.