Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Search - "phpunit"
-
Wow, what a fucking mess this sunday was.
My boss wrote me an email that one route of a RESTful API we wrote for a customer was not working anymore and puking back a status 500 with some error mentioning invalid UTF-8 characters.
Not one single person has had touched nor changed the code on production in some 6 months, so what the fuck could it be?
Phpunit did not give any errors (running only locally), the code had no syntax errors and the DB dump did not contain any invalid bytes (tested with a hex editor).
WHAT THE FUCK?!
OK so I started to comment out lines (all tested directly on production of course) until the error vanished.
Guess what was the culprit?
.
.
.
.
.
.
In the code (PHP) we used strftime(...) to get nice time strings. Of course we set the correct locale on the server, thus having months and days formatted in German.
So, in Geman there is this one mysterious month called "März" which contains an umlaut character.
Calling strftime generated the date with März in it, but the server locale was de_CH.iso-8859-1 and not fucking de_CH.utf8, so the "ä" was returned as 0xE4 instead of 0xC3A4 (valid UTF-8), which json_encode(...) did not want to swallow but instead threw an exception.8 -
We passed a milestone: 250,000 phpunit testcases.
If it weren't for a heavily parallelized build pipeline which splits it out over 20 servers, it would take about 7.5 hours to complete.
Not hating on PHP, and without tests it would truly be hell...
But still, fucking hell, we outgrew PHP.
Not having a solid type system just means you either accept more bugs, or write thousands of unit tests to guard all the foundational cracks in the system.
On the bright side, I get a coffee break after every commit 😄22 -
I'm going to start cutting off hands if people don't write unit tests...it's like eating your vegetables folks...2
-
WooCommerce is shit
Just try to find anything in the documentation on their retarded website and you will get what I am talking about.
A billion of unstructured links. With absolutely no sidebar or table of contents.
IMPOSSIBLE to find any fuck there.
It is far easier to build an e-store from scratch, than to customize their ugly monster.
Now look Laravel or PHPunit documentation to compare how it should be. -
Astounded and impressed by the congenial behavior of some open source contributors who have grown into household names. I'm referring to tomas votruba and Sebastian bergmann. It's almost as if they belong in another world, judging by my experience with other developers and big people in general
They aren't social media influencers but Sebastian has almost singlehandedly maintained phpunit since the early 2000s. I tend to expect them not to dignify me with a response when I engage. Tomas "disappointed" that expectation on 2 different platforms where I use different monikers, in a very jovial manner, showing that's just who he is
Sebastian sympathised and apologised to me (an obscure nobody he owes nothing), this morning within minutes of me calling him out for publishing a major update that removed some helpful utilities without explanation or providing alternatives. The humility not to lock the thread or block me like one of the php sub mods did is examplary
Even from my current standpoint, it's easy to look down on those who have not contributed as much I have to the language or acquired as much, so it's a lesson I hope to carry with me, emulating the non technical attributes of these model citizens3 -
I am using the Process library and phpunit in my project. I updated the process library and my tests broke, so I opened an issue on its repo. Its Maintainer referred me to the phpunit repo instead, and closed the issue
Me: how can I file a bug with phpunit when their software was functioning correctly and only breaks cuz of your latest updates?
Process maintainer: > how can I file a bug with phpunit
*posts the url to creating issues on the phpunit repository
He was obviously trolling me but the preposterousness of it all was quite hilarious3 -
Going back to a php project after writing loads of typescript on a node stack, I suddenly miss the instantanious feedback loop on file save via `nodemon` for basic scripts and `mocha --watch --reporter min` for tests.
Using phpunit, I currently have to rerun the test manually whenever I feel like. Which now feels so annoying. Cause I didn't know besser.
Now I was searching for something similar in php and I find answers[1] pointing me to use either set up some npm hooks or set up gulp task or to use pywatch. phpstorm also is supposed to support file watchers and run test on every save, yet setting them up feels clunky.
[1] http://stackoverflow.com/questions/...1 -
!rant
Yesterday at 1:20 am, my first docker image build worked.
- I develop my software (a service in a micro-service architecture) in symfony
- I push it to bitbucket, CircleCI pull the code
- builds a new docker image
- Runs phpunit test using docker exec (lxc-exec, their docker exec doesn't work)
- If the test are successful, CircleCI push the image to hub.docker.com.
Took me hours to fix all the bugs and issues with this process. I feel so proud, yet soooooooooo tired fuck sakes.
I'll publish the template for everything,
- the Dockerfile for the perfect symfony2 image IMO (and I'll create a public symfony2 image)
- The circle.yml I used etc.
Give back to the community.
I love my job.5 -
Why is my test not failing? The actual and the expected json is completely different? What the fuck!?!
It says:
static::assertJson($expected, $actual);
right there.
Oh wait.
Nevermind.
`static::assertJson` only checks for any VALID json string that I always provided in with my own expectation m)
Use `assertJsonStringEqualsJsonString` instead.
What.
Who needs meaningful defaults.
(I would claim that `assertJson` should be defaulft for string equalness, and assertValidJson should be for any Json validation. But you are free to disagree.)4 -
alias "phpunit-commit"="phpunit && git add . && git commit"
This have saved me so much time.
- phpunit
- if all GREEN, we add and commit to git
(Yes, theres likely tools for this, and some that run after pushing - but I've already avoided some faulty commits)3 -
PHP gurus / masochists.
I've been using Symfony components for new, isolated features in a legacy php application for awhile now. the time has come to integrate using the kernel, and routing for new endpoints while existing endpoints use the existing apache means of loading pages.
It's not my first rodeo doing this, but I'd appreciate any wisdom/resources/patterns you followed for anyone who's had to do the same.
My clients don't have the means to do hire the appropriate ammount of devs to do a proper port, so this is a long path towards modernization by ceasing to bolt on features to existing code and instead, when working on something, updating it to the new design pattern and then extending that, with a spec, documentation and code coverage.3 -
after moving back to my home country, buying an apartment and after my career started to head to nowhere because there is nothing to code for me in work, just manager stuff, I am returning to coding after work to get back into shape, practice more, learn new stuff (and the old stuff)
wanted to create a small webapp with laravel/vue, holy fucking shit how hard it is (for me) to setup your env
install composer -> command php not found
o.O im pretty sure i had php on this machine HOW THE FUCK WOULD I HAVE ALL THESE PROJECTS HERE THEN
install php8.1 -> no such package
-.-
upgraded to ubuntu 22.04, install php8.1, composer
create new laravel project -> 3 errors, missing laravel/pint, phpunit
* visible confusion * i told you to create a project, if you need it, why didn't you... oh, wait
composer install -> same
well, * looks left, looks right * --ignore-platform-reqs
but still getting the chills from a new project, now I go sleep and tomorrow I start my journey to get back to business, wish me luck -
Forgot that I have separate sql connection for user model, which won't be affected by phpunit.xml, so that every time I run unit test, two new fake users appears in the database.
Luckily everything's local. -
I just want to test my PHP code using phpunit on GitLab, what am I doing wrong?
image: php:latest
before_script:
# Install & enable Xdebug for code coverage reports
- pecl install xdebug
- docker-php-ext-enable xdebug
# Run our tests
# If Xdebug was installed you can generate a coverage report and see code coverage metrics.
test:
script:
- phpunit Test.php4