Note that FileBasedErrorParserTests had to change because of some
Tycho incompatibility with JUnit's ParameterizedTest. It works
in the IDE, but not in maven.
The correct fix is to resolve the tycho settings, see Bug 569949
for a previous example. It may also be simply resolved by updating
to Tycho 3.0.0. However I want to get this change in as
at the moment CDT.setup is broken and that is impeding developers.
While it may be that the tests don't directly rely
on JUnit5, the IDE requires JUnit5 in the classpath
or else the launch config doesn't work with this error:
Cannot find class 'org.junit.platform.commons.annotation.Testable'
on project build path.
Part of #117
This code seems to be trying to optimize across tests.
This change isolated each individual test better.
Also removed is a bunch of effectively unused test code.
Part of #117
Having the test suites means that tests run multiple times
when running in the UI. Most suites just ran the tests in
that package, so their value, especially with the transition
to JUnit5 is minimal.
Note that the suites are not used when running build
with Tycho/Maven
Part of #117
Warning in build.properties will be errors when they run
in the tycho build, like this:
```
Error: Failed to execute goal org.eclipse.tycho:tycho-packaging-plugin:2.7.5:package-plugin
(default-package-plugin) on project org.eclipse.cdt.core.tests:
/home/runner/work/cdt/cdt/core/org.eclipse.cdt.core.tests/build.properties:
bin.includes value(s) [test.xml] do not match any files. -> [Help 1]
```
So make them errors in the workspace so that the issue is
detected before push.
Some build.properties issues don't affect the build, but
are still indicative of a problem.
On GitHub actions the org.eclipse.cdt.ui.tests.text.contentassist2
tests are running after ProposalFilterPreferencesTest and
ProposalFilterPreferencesTest was changing the default
filter and not restoring it.
Part of #117
The root files in GitHub are a bit more prominent, so keep
that area clean and move this special ini to a subdir.
Change-Id: I12d95727e9dad29ebe4f50d47faa9e98753a52bc
This mostly is using diamond operator, but includes
adding missing @Override and organizing imports and
applying formatting improvements in the JDT formatter.
Change-Id: Id91cbff33b0a039cc5121945ffbc407ecba45866
The CDT Cleanup profile had a bunch of extra cleanups applied to it, this
prevents running the CDT cleanup profile manually to simulate running the
save actions on all Java files
Change-Id: Iad491e1258a4ba90d81d1457ea0f6779e3663e38
In Eclipse 4.24 .settings is created all the time for new projects,
for CDT test projects which have the root of the project being the source
root this means that .settings is now returned in various places.
This patch removes .settings from results before checking results against
expected results.
Change-Id: Id02e9b8f25b109ed289d22ffb526ecceb747d4f7
Side effect is that the indentation in the transformer now
works properly, so the extra newlines inserted everywhere
can be removed.
This change was done by changing the output to an OutputStream
instead of a Writer so that the XML handler could set the
encoding to match what was in the settings, i.e.:
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
The non-translated language IDs are used in preference to the
translated names when importing. The export now puts that ID
(when available) in the output file. The ID is available on
normal user files (C, ASM, C++) and not on object files. The
object files probably don't have languages settings that are
exported, but this code does not exclude them from being exported.
Change-Id: I46de004bb8c6a0ca05210487a5d33390d397c720
This includes requiring older version Hamcrest as the org.hamcrest
bundle was recently update in Orbit to a new major version that
isn't compatible.
Change-Id: I7cb23f0be058d1404b93b1a76cbfe8182a3ded14
Added missed license headers
Updated baseline for the parent pom to CDT 10.2
Updated version for pom.xml to 10.3
Updated version for features and bundles to CDT 10.3
Updated copyright for about.properties to be 2021
Incremented version + 100 where needed
Change-Id: I79666fcc0402fee6607499d7dce1eaf87a5f446d
Signed-off-by: Alexander Fedorov <alexander.fedorov@arsysop.ru>
This change renames all suites to be called ...TestSuite so that
the default includes don't pick them up. With the name ...Tests it
means that those tests referenced by the suite are run multiple times.
Tests which relied on being run as part of a TestSuite have been
refactored to run as individual tests by moving the logic from
the suite into the test (e.g. CommentHandlingTestSuite)
Tests that were not runnable have been renamed from ...Test to ...Tester
to match a convention already used in CDT.
Lots of tests did not use standard name (i.e. didn't end in no Test) so
this was fixed.
Many tests were really abstract tests, so the missing abstract was added,
e.g. ArrayTests
The default excludes in Maven behaviour differently than may be expected,
so rather than remove static inner test classes, update the excludes,
see pom.xml change
Change-Id: Ia91e12fe76c3ec2d914463a28400d21b9daf1910
This test started failing (and wasn't in testsuite previously) because
it had significant trailing whitespace in some tests.
The fix is to use ${whitespace_eol} which I have also added to some
of the javadocs to make it easier to find next time.
Change-Id: Ib364d8a400bcdeb21445dde8428e0fd4c77db990
This style is the JUnit3 way of doing JUnit4 @AfterClass. It was
commented out as part of Bug 564002 (commit 9e303185f9).
Change-Id: I56e2754f3cce447c47546c91cdc16b302e18b4a6
Add enforecment script that verifies that only specified file types are
allowed to be mared as executable.
Change-Id: I4b40e3a46b03bfc78a9dcd52e8bf29cb079b7f3b
Signed-off-by: Torbjörn Svensson <azoff@svenskalinuxforeningen.se>
CoreModelUtil.findTranslationUnit only returns CElement in the populated
CModel of a project. This shouldn't change as a large majority of client
code need to see the model this way and not consider files that are
outside source folders. So for a file not under a source folder (and
therefore not in the CModel), we can just create a new translation unit
instance for it. This is actually how the editor deals with it too.
Change-Id: I8898822e94cac8562edcc0a726fdd8680119faca
Signed-off-by: Marc-Andre Laperle <malaperle@gmail.com>
__has_include_next (extension)
__has_include evaluates whether of the header name passed as parameter
exists. This can only be evaluated as part of a #if directive.
Interestingly, it also has to be reported as defined, i.e. #if
defined(__has_include) or #ifdef. In order to report this as defined,
this implementation adds it as a macro but during macro expansion, it's
actually converted as a dedicated token type. Then this token gets
evaluated during normal preprocessor expression evaluation.
In order to parse header names, there were several options. The main
problem is that header tokens (tQUOTE_HEADER_NAME, tSYSTEM_HEADER_NAME)
are actually produced by the Lexer as part of a special mode
(setInsideIncludeDirective) set during the handling of #include. For
expression evaluation, the tokens are already generated without
setInsideIncludeDirective therefore we only have plain string
and < > tokens.
One approach would be to generate header tokens "earlier" than executing
we need to track a new state while fetching token to configure the Lexer
(setInsideIncludeDirective) when in the context of an __has_include.
There are also complications due to macro expansion within the
__has_include where after one expansion, we don't have a lexer in the
context anymore, introducing more changes.
Another approach would be to remove the Header token creation from the
Lexer itself and let the preprocessor assemble the tokens into an header
string, in both cases of #include and __has_include. This mostly works
and is the approach used in Clang, but the problem is that whereas Clang
keeps track of leading spaces of tokens, CDT doesn't. This means with
such change that CDT would now allow #include < iostream > (notice the
white space). I think this is too big of a downside and also too big of
a change to introduce this handling of whitespace at the token level.
The approach used here is more conservative and isolated but also shares
less common logic with #include processing. The non-header token
(string, <, etc) are assembled into a header string only in the case of
a __has_include. So a downside will be that #include and __has_include
will be inconsistent in regards of leading/trailing space parsing but I
feel like this is better than making #include more permissive.
Change-Id: I5b9f5c616c8d999e0c916a85b41f96e20037b651
Signed-off-by: Marc-Andre Laperle <malaperle@gmail.com>
Some CDT preferences use \0 as a separator in preferences. Somewhere
in the Oomph preference synchronizer stack there is, or was, a place
that failed to escape/unescape preferences with encoded \0 properly.
CDT would then fail to parse the preference and an exception would
be raised, causing code completions and the editor to be broken.
This patch hardens the CDT code to:
(1) Allow an escaped \0 to be used as a separator on
read (Oomph uses ${0x0})
(2) Handle NumberFormatExceptions gracefully. In this case that means
showing user a pop-up that their completion preferences
are empty and offering to reset them, or edit them in preference
page. This UI logic already existed, so all the new code
has to do on failed parse is return a list of all disabled
completions.
Change-Id: Ibf3b05c0855bb96c195ca43139a50c27a2a90c7e
Sets the pattern to the default of upcoming tycho 2.0 in advance.
Signed-off-by: Martin Weber <fifteenknots505@gmail.com>
Change-Id: I31b3fc733d0cb888fbf6f566995ce2043f6cd621
Switched from "org.eclipse.cdt.core.options" to
"org.eclipse.core.runtime.preferences"
Change-Id: Ie01d955079a7a54875270bb2d259c9232d30e7ea
Signed-off-by: Alexander Fedorov <alexander.fedorov@arsysop.ru>