-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Compare with arduino CI as a test backend #1
base: develop
Are you sure you want to change the base?
Conversation
This patch allows the member variables to be passed as constant reference instead of being optimized simply to constants
So first of all, I know and understand my frameworks far far better than yours, so when I make comparative remarks, you have to forgive any misunderstanding that I have about your framework. When I created AUnit 2-3 years ago (looks like 2018-03 was my first commit), I was vaguely aware of
The most valuable thing about my current testing infrastructure is that I understand every single line of it, because I built the whole thing myself. When something goes wrong, I know exactly how to fix it. It will be really difficult for you to convince me to use someone else's system. So that's a subjective thing. But more objectively, I think my system has a couple of advantages, if I correctly understand
So I look at your PR, and I see that the various You also have a couple more configuration files than I would like. As a general rule, I am not a fan of configuration files, because that means that I have to understand the framework that is slurping in the config file in order to debug things when something goes wrong. You got a So those are my first impressions, with the huge caveat that I don't understand how your system works at the detailed level, mostly because I don't understand Ruby. Hope that helps. |
Thanks. There's a lot of good info in here, I'll try to reply in chunks as way of diving into some specific topics. |
It's definitely worth acknowledging that we worked to different goals. I actually really like the model you have set up with Jenkins, where hardware is in the loop -- what I would consider "optimal" setup for anyone developing a library. I had to sacrifice that to pursue a way of making an identical build/test environment between the library owner, possible contributors, and CI machine in the middle. I tried to replicate Adafruit's The ruby side of things is uninspiring: find the platform config, iterate over those; find the unit tests, run them; find the examples, compile them. Without One thing I'm hearing that I hadn't considered before is that by asking users to include the I put both the GitHub action and shell-script-based methods of using This is all really good feedback, and I appreciate the detail you went into. I have some follow up questions that I'll write up tomorrow about the compiler stuff. |
One minor clarification to get out of the way: you mentioned that I have too many configuration files. But on the other hand, I deleted almost 30 instances of a |
I think what I'm most curious about here is UnixHostDuino, because we both have some incarnation of this. And for the same reason -- if you want to run anything without hardware, you have to mock either the compilation (providing all of the platform support, like Can you talk more about what sort of compiler errors you ran across by using native compilation & unit testing instead of UnixHostDuino? I would definitely be interested in adding some test cases that show shortcomings of my own framework. |
Your remark about the Makefiles is a good one, and it occurred to me as well. It might be a personal thing, but I tend to think of With regards to compiler issues, definitely the most frequent is the const uint16_t DELAY = 1000;
uint16_t myMillis();
uint16_t start = myMillis();
if (millis() - start > DELAY) { // unsigned overflow/underflow perfectly allowed by C++
...
} (Edit: Changed if ((uint16_t) (millis() - start) > DELAY) {
...
} For some reason, I hit this a lot in my early Arduino programming stage. Thinking about this some more, I think it's because I don't do this sort of raw programming anymore, I have created enough tools, libraries, and infrastructure that this calculation is handled by something that's already been well-tested. The sizeof problem peeks out in UnixHostDuino cannot emulate Sometimes, things go in the opposite direction. It segfaults on Linux, but runs perfectly fine on an AVR. If I recall, it sometimes has to do with deferencing I didn't keep a detailed record of all the differences and issues. Maybe I should have. Hope this helps? |
This has been extremely helpful, and I really appreciate the time you took to provide these comments! |
moved as per request from bxparks#63
@bxparks Any discussion of features and potential deficiencies is welcome, but I want to make clear that I understand & appreciate that you're volunteering your time -- it's your initial reactions to this as a contribution that I'm most curious about (since I assume that you have those front-of-mind without having to read too much code). For example, what is the gap between this contribution and one you'd want to accept?
If you do want to dive into the
arduino_ci
codebase itself, I'll be happy to make time to do that -- on a schedule that works for you.