* Nextion TFT upload IDF memory optimization
This optimizes the memory in use for TFT upload when using `esp-idf` framework.
Basically, the engine establishes 3 connections to the the http/https server:
1. Fetch the file size (used to manage chunks and file size)
2. Transfer the 1st chunk (when it evaluates Nextion response to define either to continue from that point or to another point in the file)
3. Transfer the remaining data.
Until now, connection 1 was kept open during the whole process taking aprox 40kb of heap in a esp32dev (NSPanel in my tests) and the same amount of memory was needed to the 2nd and 3rd connections (which never competes to each other).
With this change, each connection is closed and released before opening the next one with a significant reduction on the required heap needed for this transfer.
This can still be improved to use a persistent connection, but I will look at this in the future, so it is not part of this change.
In addition to the better connection management, I've added quite a lot of log (mostly at VERBOSE level), which was used for troubleshooting here.
I was unsure about removing this. As it can be useful for others, I decided to keep it, but I will be fine about removing it if this is now in line with ESPHome best practices.
* clang-format
* Log response length
* Test for each component.
* When possible use commandline substitution.
* Add wildcard support.
* end file with new line.
* Move component tests into subfolder.
* Add component test to pipeline.
* Remove trailing whitespace.
* add restore python step.
* Add `. venv/bin/activate` to pipeline.
* step `changed-components` needs `common` step.
* start `list-components-changed.py` different.
* iterate on pipeline stage `list-components`.
* Update `checkout` action.
* Rename test folder from `tests` to `_test`.
* validate file exists.
* Move component test folder.
* extend list-components to include child components.
* File does not end with a newline
* Handle empty list-components matrix.
* list-components also check for changes in tests folder.
* Improve `list-components.py`.
* `*` is a forbidden character for filenames on windows.
---------
Co-authored-by: Your Name <you@example.com>
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>