1
0
mirror of https://github.com/arduino/Arduino.git synced 2025-02-02 22:52:12 +01:00

125 Commits

Author SHA1 Message Date
Cristian Maglie
c4109e78bc Removed unused imports 2021-05-19 12:15:37 +02:00
per1234
99d3114168 Move built-in examples to dedicated repository
A dedicated repository for the examples will make it easier for them to be built in to arbitrary development tools. It will make it easier to use them for compilation testing of boards platforms. It provides a dedicated location for issue reports and pull requests that are specific to the examples. It continues the work done by moving the AVR and SAM boards platforms and built-in libraries towards making the arduino/Arduino repository solely a place to host the GUI code of the Arduino IDE.
2020-09-07 04:52:40 -07:00
Matthijs Kooijman
6d3ad183ab Handle CR without NL printed in EditorConsole
Previously, any CR without NL was treated just like a NL. For tools that
used single CRs to update a progress bar (such as dfu-util), this would
end up printing the subsequent versions of the progress bar below each
other, instead of updating a single line as intended. Additionally,
since ConsoleOutputStream only scrolled the view on \n, these updates
would end up outside of the main view, making the upload progress quite
unclear.

This commit makes EditorConsole support lone CRs by resetting the insert
position to the start of the current line, so subsequent writes
overwrite existing content. If subsequent lines are shorter than an
earlier line, only part of the earlier line will be overwritten (this
mimics what terminal emulators do).
2020-05-12 10:36:45 +02:00
Matthijs Kooijman
07b3b9036a AbstractWithPreferencesTest: Disable update checks
This prevents the Arduino instance in tests from checking for updates. I
have not seen any problems resulting from this, but disabling network
requests is generally a good idea in tests (to prevent external factors
from influencing the test results).

In addition to update checks, there is also the CloudBoardResolver that
could do network requests, but there does not seem to be a preference
for disabling that.
2020-05-11 17:13:17 +02:00
Matthijs Kooijman
7bc6efa27e HittingEscapeOnCloseConfirmationDialogTest: Match dialog by title
This would match the "Close" dialog, by looking for any JDialog on
screen. However, in some cases, there could be a second dialog (I have
seen a "Install this package to use your xxx board" popup because I
happened to have an Arduino Zero connected, presumably an "Updates are
available" popup could cause this as well).

By matching not just the type of the dialog, but also the title, only
one dialog is matched and the testcase runs more reliably.
2020-05-11 17:13:17 +02:00
Matthijs Kooijman
af8e1e6dc4 Tests: Do not read system user's data
The tests would initialize Base, PreferencesData with default settings
and/or run the arduino executable, without specifying any settings to
use. In practice, this would read settings from e.g. `~/.arduino15`,
load libraries from the user's sketchbook, etc.

This is not a good idea, since this can be influence the test. For
example, the presence of invalid libraries would cause extra output to
be generated, which breaks the `--version` test. Or having the "Use
external editor" setting set would break tests that try to edit a
sketch.

This commit fixes this. The core of this commit is in
`AbstractWithPreferencesTest`, which sets up a clean settings dir (to
replace `~/.arduino15`) with a sketchbook and `preferences.txt` file
inside before every test (and removes it again after the test.

For some tests, this is enough, but some tests create an instance of
`Base`, which again initializes everything, including preferences, from
the default location. To prevent that, `--preferences-file` is passed to
the `Base` constructor, loading the previously set up preferences. This
is handled by the new `AbstractWithPreferencesTest.createBase()` method.

Furthermore, CommandLineTest calls the actual Arduino executable, which
has the same problem. This is fixed by passing the same
`--preferences-file` option on the commandline (generated by
`AbstractWithPreferencesTest.getBaseArgs()`).

This should prevent all tests from reading the the default settings
files, fixing some tests on my system and even speeding up the tests
somewhat (due less libraries and cores to load, probably).
2020-05-11 17:13:17 +02:00
Matthijs Kooijman
0e4c900252 AbstractWithPreferencesTest: Clean up files after every test
Previously, this used the DeleteFilesOnShutdown class and a shutdown
hook, which would delete the files only after shutdown. However, the
shutdown handler would be re-added for every testcase, potentially
leading to a lot of threads trying to delete the same files.

This uses an alternative: Just keep a list of files to delete inside the
testcase and use an @After handler to delete the files directly after
each usecase.
2020-05-11 17:13:17 +02:00
Matthijs Kooijman
5700d2b539 AbstractGUITest: Make a subclass of AbstractWithPreferencesTest
Both classes contained some duplicate code, so unify that by making one
a subclass of the other. This also prepares for further additions that
should be inherited by both.
2020-05-11 17:13:17 +02:00
Matthijs Kooijman
2bd7be07fe CommandLineTest: Print commands being ran
This makes the test output a bit more easier to read.
2020-05-11 17:13:17 +02:00
Matthijs Kooijman
2c679f2cf4 CommandLineTest: Produce less verbose output
In one test, `--get-pref` is passed on the commandline to prevent
starting the full GUI. When ran without arguments, `--get-pref` causes
*all* preferences to be printed. Using `--version` achieves the same (no
GUI is started) with just a single line of output.
2020-05-11 17:13:17 +02:00
Matthijs Kooijman
514c4bae57 CommandLineTest: Add runArduino helper
This abstracts some the common code (running Arduino, copying
output, waiting for completion, checking result) from all testcases into
a single method. This simplifies each testcase, but also prepares for
adding more common arguments to all runs in a subsequent commit.
2020-05-11 17:13:17 +02:00
Matthijs Kooijman
fc0478eaa9 CommandLineTest: Run findBuildPaths only once
Previously, it was ran before each test, but just running it once before
all tests is sufficient. So switch from @Before to @BeforeClass and make
the its result variable static.
2020-05-11 17:13:17 +02:00
Martino Facchin
737f301c12 Tests: Fix TargetPlatformStub implementation 2020-04-27 17:04:49 +02:00
Cristian Maglie
d6667dd4ca Added unit testing for UTF8 decoder in Serial 2020-03-24 15:24:50 +01:00
Cristian Maglie
e659825058 Fixed test UpdateTextAreaActionTest 2019-07-18 14:25:24 +02:00
Martino Facchin
6b770d0190 Fix UpdateTextAreaAction test 2019-04-18 11:15:58 +02:00
Pieter12345
933bbb3a39 Fix CommandLineTest.testCommandLineVersion() on Windows
Fix CommandLineTest.testCommandLineVersion() failing on Windows due to Runtime.exec() returning `\r\n` line endings where the test expected `\n` line endings.
2019-03-26 18:46:09 +01:00
Pieter12345
6d9dd975be Remove StringUtils class
The functionality in this class has been replaced with the Apache commons.lang3 dependency.
2019-03-26 18:46:09 +01:00
Pieter12345
09e466a4a2 Replace StringUtils.join() with library call
Use Apache commons.lang3 instead of own implementation.
2019-03-26 18:46:09 +01:00
Cristian Maglie
3e9a3ec743 Fixed CommandLineTest.testCommandLineVersion 2018-11-16 12:34:04 +01:00
Cristian Maglie
c3c08e5d79 Added tests for AbstractTextMonitor "Show Timestamp" function 2018-11-16 11:11:35 +01:00
Yohsuke FURUTA
24029c5ace CLI: Add --version to CLI option (#7549)
* CLI: Add --version to CLI option

I added to get the Arduino IDE version from the command line
It will allow to check easily if the new Arduino is already installed.

This feature makes it easier to build external systems linked to specific versions of Arduino.

1. I added `--version` action, which shows version name and exit
  1. Currently, VERSION_NAME_LONG (like `1.8.5`, `1.9.0-beta`, `1.8.6 Hourly Build XXX`, etc...) is used. Because I want to know its version number and stable/beta/hourly.
  2. Finish with `0`. Because it is `SUCCESSFLLY FINISHED`.
2. Updated man page.

* Split "parse" and "action".
Move print action to probably suitable place.

This commit will fix the behavior of multiple actions about --version.

* add testcase
2018-05-22 17:46:11 +02:00
Cristian Maglie
48384a7ad0 tests: added some missing null checks 2017-10-20 13:17:09 +02:00
Cristian Maglie
e4ebd4a6fc Fixed CommandLineTest for windows 2017-04-10 13:49:04 +02:00
Cristian Maglie
39f396e55a Added test to check preference saving from cmd line
See #6067
2017-03-22 12:59:38 +01:00
Cristian Maglie
1f35bfca53 Fixed regression tests on Indent/Unindent and Comment/Uncomment actions
RSTA for some reason doesn't fire update signals on DocumentListeners.
2017-03-01 10:38:09 +01:00
Cristian Maglie
3f74631762 Added test for command line regression
See #5836
2017-01-23 13:41:03 +01:00
Cristian Maglie
21ff728c59 Merge remote-tracking branch 'cmaglie/fix-win-paths' 2016-11-03 12:10:24 +01:00
Cristian Maglie
2856600463 Windows: Use Shell32 utility to determine known paths 2016-10-19 16:28:21 +02:00
Matthijs Kooijman
982d4f3fbf Use a separate RSyntaxTextArea for each editor tab
RSyntaxTextArea appears to support using a single instance and replacing
the underlying text and document when switching between tabs, but in
practice this support is not complete and even though the
RSyntaxTextArea developers did some work to improve the situation, they
recommend to just use a seperate instance for each tab.

This commit implements exactly that. A new class EditorTab is introduce
to wrap the RSyntaxTextArea and containing scroll pane, and to
encapsulate the code related to handling the text area itself. Doing so
removes some quirks and prepares for some later additions. In
particular, error highlights are now no longer shared between all tabs,
which was previously the case.

This commit mostly moves code from Editor into EditorTab, and updates
the callers to use getCurrentTab() and call methods on the result
instead of calling them on Editor. Some code is added to take care of
creating multiple EditorTab objects and switching between them. Some
small changes have been made to make the flow of opening files work,
though these are mostly a bit hacky.

While moving code, changes to the rest of the code were kept minimal,
retaining existing interfaces as much as possible. This sometimes result
in less than ideal code, which should be cleaned up in subsequent
commits.

The SketchCodeDocument class has been pretty much emptied out, since
it was mostly used to store things for tabs in the background, which are
now just stored in each RSyntaxTextArea separately. The last remaining
bits of this class can probably be moved or implemented differently
later, so it can be removed.

The entire flow of working with sketches and files needs to be cleaned
up next, so no thorough attempt at testing this commit was done. It is
likely that there are plenty of corner cases and race conditions, which
will be fixed once the reset of the code is cleaned up.

Fixes #3441
2016-08-26 16:42:44 +02:00
Cristian Maglie
fa4876b7b1 Fixed unit-test UploaderFactoryTest
It was broken after merging #4107
2015-12-21 15:19:22 +01:00
Federico Fissore
9729b1b069 Windows: in case Shell Folders entry is missing, attempts to discover Documents folder using User Shell Folders. See #4124 2015-11-18 15:55:26 +01:00
Federico Fissore
0102a58122 "static" makes sense for constants and few other things. Avoid it if you don't have a specific reason for using it. 2015-10-26 15:49:31 +01:00
Cristian Maglie
2ae36940c6 Fixed parsing for SystemProfiler on Macosx El Capitan
Should alleviate #3928
2015-10-20 23:36:56 +02:00
Cristian Maglie
28ad89d694 Make SystemProfilerParser.extractVIDAndPID() static
There is no need to instantiate a SystemProfilerParser object
each time extractVIDAndPID is invoked.

Added also `synchronized` keword to avoid reentrance problems
if the method is being used in multiple threads.
2015-10-20 23:34:27 +02:00
Cristian Maglie
2eaa6ff937 Removed unused imports 2015-10-20 18:29:40 +02:00
Federico Fissore
6128dace42 Removed some old code, including PdePreprocessor and OldCompiler 2015-09-21 15:20:31 +02:00
Federico Fissore
5b84aef301 Build path is now a function of sketch path. This allows to recycle previously
compiled files even when working with different sketches at the same time. In
such cases, recompiling is way faster
2015-09-18 10:47:23 +02:00
Federico Fissore
e5ddd0be3b New compiler 2015-09-14 15:21:15 +02:00
Federico Fissore
36e43713c2 Deleted I18NTest. It's been disabled for a long time and it was not really useful 2015-08-21 12:31:58 +02:00
Federico Fissore
e15ba64ee2 New console: replaces previous EditorConsoleStream with one that's faster and doesn't discard end chars.
See #2798
2015-06-29 16:18:40 +02:00
Federico Fissore
9089fecbe4 Windows: working on reg query encoding issue #3360. German encoding is Cp852 2015-06-19 17:44:28 +02:00
Federico Fissore
88e8019419 Extending remote upload. Sketch merge with bootloader is done by the IDE (using "noblink" bootloader if board definition provides one). If platform provides a "remote" upload tool, that tool is used, otherwise falls back to hardcoded "run-avrdude" 2015-06-18 15:43:10 +02:00
Federico Fissore
8c60054af0 Windows: ListComPortsParser was reporting the same VID/PID for both COM12 and COM1. Fixes #3333 2015-06-18 09:23:29 +02:00
Federico Fissore
64fcc716c9 MacOSX: SystemProfilerParser nows claims to have found the device even if the name is not exactly the same 2015-06-12 14:21:08 +02:00
Federico Fissore
e9d66015a4 Windows: reg query uses different separators on xp, fooling parser. Fixed 2015-06-04 11:44:56 +02:00
Federico Fissore
c84fb7fc90 Removed a handful of static methods delegates 2015-05-28 15:25:44 +02:00
Federico Fissore
a3eae13e5d Missing call to BaseNoGui.getPlatform().init() in tests 2015-05-26 14:53:15 +02:00
Federico Fissore
5faa1c9866 Removed Preferences.init: no one used it 2015-05-25 14:43:32 +02:00
Federico Fissore
ab7b7351f5 Removed lots of calls to BaseNoGui.getPlatform(): static is evil 2015-05-22 15:58:47 +02:00