Rather than try/catch/fail just let exception cascade so that the full
stacktrace is available in the test results.
The braces have been left in place for scoping and to minimize changes.
Change-Id: I5407829ea964f828e3f996794489a7b884de25fb
There are cases where we consider some variables as complex when they
are not. In particular, if a pointer is declared using a typedef, is
will be considered complex with the current code. This is because it
has a child (the pointed value), but CDT doesn't know it's a pointer.
One of the consequence is that we assume the value is not modifiable.
Therefore, we won't update its value when it changes, and we won't let
the user edit it.
Initially I thought it would be safe to assume that variables with two
or more children are complex, but pointers to structures have as many
children as the structure has fields. Therefore, a pointer to a
structure, declared as a typedef, will still be wrongfully considered as
complex. Since there's no easy way to know for sure whether a variable
is complex, just assume everything is simple.
I added a test to verify that the value of a pointer declared using a
typedef will update correctly in CDT as it changes in the program.
There are two distinct scenarios, pointers that are variables and
pointers that are fields of structures. Instead of adding content to
testUpdateOfPointer, I decided to make a similar test method,
testUpdateOfPointerTypedef. The original test method was getting too
long and was difficult to follow. I think it's good to keep them short
and focused.
Another test verifies that the same kind of pointer can properly be
written/modified by the user.
Change-Id: If43b3b6e49cd4a20ea929c2a096745a32de14cd0
Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
Remove massage timeouts for places waiting for no events
This is a partial revert of c19640498d
which was part of Bug 499784.
Change-Id: Ib66ed5eaf45977d4ffae77358deaf1f593e005c6
Signed-off-by: Jonah Graham <jonah@kichwacoders.com>
The test was much too conservative on how long it waited for an event
to arrive. On my machine the time was 10 ms, so I set a baseline time
to wait of 100 ms allowing time for additional event to arrive.
Change-Id: Ic435d360e8781936682c19b838aeec13fa3d60bd
I ran shellcheck [1] on the script and it found various minor things to
improve.
- Use $(...) instead of `...` to run commands in a subshell.
- Wrap all variables in quotes, in case there are spaces.
At the same time, I noticed a few other things:
- Use "#!/usr/bin/env bash" instead of "#!/bin/bash", in case the user
uses a bash not at /bin/bash.
- Use "set -o errexit" instead of "set -e" for better readability.
- Use "set -o nounset" to generate errors if trying to read unset
variables.
- Pass CXXFLAGS in addition to CFLAGS, since GDB is now in C++.
- Use ${CFLAGS:-} instead of ${CFLAGS}, in case CFLAGS is not set
(because of "set -o nounset").
- Don't check for result of getopt. If it fails, the script ends
immediatly due to errexit.
[1] http://www.shellcheck.net/
Change-Id: If73f3510e46ca80d542d47c29c55b48b8b0bc697
Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
This has two parts.
1) In the base test itself check that the executor is shutdown.
2) GDBBackend leaves a timeout job on the executor queue, remove
it proactively so the executor doesn't sit around just waiting
for it to terminate.
Change-Id: I9fc10f70031430f4613e0edc95093a60cf695e90
Signed-off-by: Jonah Graham <jonah@kichwacoders.com>
Running to different points of the test program using line tags is
easier and safer than stepping a certain number of times. Since I want
to modify this test to add a pointer-behind-typedef test, I thought it
would be good to first convert it to line tags.
I also took the liberty of giving more meaningful names to the structure
fields, even though it doesn't change anything in the test.
Change-Id: Ife7e2ae8557789dfc7403df71ba5126ca84b80e0
Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
Modify MIExpressionsTest.testUpdateOfPointer so that it only uses
synchronous methods. There is no change of behavior intended, the test
should do pretty much the same thing as before, but should be a bit more
readable.
One difference is that we don't need to re-create the
IExpressionDMContext objects when we want to re-evaluate the
expressions (after stepping the 2nd time). We can just call
getExpressionValue on the again, which will trigger a -var-update.
Change-Id: I09bb914b097888bf3146df0096eb9d824441ffa8
Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
As deleting launch configurations has a race condition that can
cause them not to become undeletable, only delete them for the tests
that they really need to be deleted for.
Change-Id: I040cbc83ba29a9f3a791b0bf4348a3179792ec65
Signed-off-by: Jonah Graham <jonah@kichwacoders.com>
The dsf.debug.options file can be updated to
run o.e.cdt.tests.dsf.gdb with debug information by changing its
corresponding value from "false" to "true".
Change-Id: I1faa5fdb2bfd11ce3e6e599e2cbeefcfa19ce3b6
The tests validate the use of CLI (i.e. Ctrl-C) or MI (i.e.
-exec-interrupt) to interrupt the target program.
The MI command is used when the target is running in async mode,
which is mandatory when using the Full CLI console.
At the time of writing, async mode is not supported for Windows and
MAC, therefore these tests rely on a new mechanism to override specific
DSF-GDB services.
Change-Id: Ie4ab30f07640d112fff9aec2b4f348a27bfe188b
Currently, the debug unit tests only print which GDB version is
requested
and only if tracing is enabled; we have run into bugs where we would
have greatly benefited in easily seeing what version of GDB was
actually launched.
This change makes each test print what version of GDB is requested
and which one is actually run. It also makes the test print this
information
all the time, one line per test, instead of only when tracing is
enabled.
Change-Id: Id19d625170b4f956d6205929062c280ac3ecc3b8
Unfortunately previous commit was submitted too early. There were
two problems that this commit corrects:
1) clear line tags before each test run - side effect of Bug 508642
When a test marked with Intermittent fails, the next retry is executed
with the same class instance. Therefore, the new try starts with a
non-empty fTagLocations. The test trips on the check that there are no
duplicate tags.
2) Fix failing testStopAtMainWithReverse
A blank line got inserted into the test case, that
interfered with the test logic.
Change-Id: If4c28557eac7ee740b4e3a5eac5dd2726c39a35d
Also-by: Jonah Graham <jonah@kichwacoders.com>
Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
The goal is to eliminate direct source line number references in tests,
so that modifying test cases is easier.
Change-Id: I9a4964478e9486bff137fb9aec199cee144c2af4
Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
Almost the same code is used in multiple tests to validate breakpoint
attributes. We can factor that out in a few support functions.
Change-Id: I819da62cc9e6d7434438574b695131b4cea19c77
Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
The queries are less verbose and less error-prone.
Change-Id: I875e7f94436b0284c236b850482f9f5ff4cbebf7
Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
There are two problems when passing a non-absolute path to the -b flag:
1. It ends up being used in "./configure --prefix=${base_dir}".
configure fails, because the prefix must be absolute.
2. It ends up being used to set up symlinks, leading to broken links.
Making the install path absolute fixes those.
Change-Id: I7c1d22754c1a788f02cd912f2114cc091951b303
Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
When building all gdb versions, the older ones have
a greater chance of failing, so should be done last.
Change-Id: I8bb2f600d84cc7a8f97c308995c174124d881d8d
We use the $version variable in the check_supported function, but it is
not set. It happens to work because we use the same variable name in
the outer scope, where check_supported is called.
Change-Id: I75e8ae4ef42a232174accf88ca146c0e427f8d4e
Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
Includes splitting out and expanding CommandLineArgsTest
from LaunchConfigurationAndRestartTest.
Change-Id: I19fa97a847d908c1c780ca767cf688f26a51d684
Signed-off-by: Jonah Graham <jonah@kichwacoders.com>
This adds a new service, GDBFocusSynchronizer, that helps keep the
internal GDB selection and the Debug View selection synchronized.
Change-Id: I021b3f65d61e82f6971bdb9232369b6fdf58ea5b
The bug mentioned above mentions a couple of problems,
1) The use of TestsPlugin.massageTimeout() is not used consistently in
tests.dsf.gdb
2) The timout values are too optimistic
This first change addresses item 1.
Change-Id: I99162bbfaa099bbc4123594fbda51f8e11be9d10
This is the test for bug 494650.
If the test fails it leaves the JVM unterminated so the whole test run
timesout.
Change-Id: I4e50acde1654995efcf0f723d6552b68af177503
Signed-off-by: Jonah Graham <jonah@kichwacoders.com>
Bug 494650 has an issues when multiple launches are terminated, at
present the test infrastructure makes it very difficult to launch
multiple launches within one test. This commit refactors the base test
case to enable launching additional tests with doLaunchInner.
Change-Id: I501edf4e485c304b0a00c18f1d5e3813011a0491
Signed-off-by: Jonah Graham <jonah@kichwacoders.com>
There are many opportunities for replacing `StringBuffer` with
`StringBuilder` provided that the type isn't visible from the
public API and is used only in internal methods. Replace these
where appropriate.
Change-Id: Ic2f50c5b6f3c3a4eae301bb3b40fb6faed235f79
Signed-off-by: Alex Blewitt <alex.blewitt@gmail.com>
In many cases a String's empty status is tested with `.equals("")`.
However, Java 1.6 added `.isEmpty()` which can be more efficient since
it compares the internal length parameter only for testing. Replace
code using the `.isEmpty()` variant instead.
Some tests for `"".equals(expr)` can be replaced with `expr.isEmpty()`
where it is already known that the `expr` is not null; however,
these have to be reviewed on a case-by-case basis.
Change-Id: I3c6af4d8b7638e757435914ac76cb3a67899a5fd
Signed-off-by: Alex Blewitt <alex.blewitt@gmail.com>
Using `new Integer` and other wrapper types such as `new Character` results in
potential extra heap utilisation as the values are not cached. The built-in
`Integer.valueOf` will perform caching on numbers in the range -128..127 (at
least) using a flyweight pattern. In addition, parsing `int` values can be done
with `Integer.parseInt` which avoids object construction.
Adjust tests such as `"true".equals(expr)` to `Boolean.parseBoolean(expr)`.
Change-Id: I0408a5c69afc4ca6ede71acaf6cc4abd67538006
Signed-off-by: Alex Blewitt <alex.blewitt@gmail.com>
During the testsuite refactoring that significantly improved the DSF
suite (Commit 528de33113) some info
was lost from the code. This resurrects those comments.
Change-Id: I0a11dee2dcabb0800306880fc7c6217374bc337a
Signed-off-by: Jonah Graham <jonah@kichwacoders.com>
Allow to easily run only Supported or Unsupported tests
Only run Supported versions in test suites
Change-Id: I0d628c8aea28dad77df7943b8b1ee18df5bb6bcf
The TraceFileTest.java file has three tests which depend on each other.
Inter-dependency between tests is not good. This commit removes it.
Change-Id: Id910a5cea741c85959679e4b0a6981f603f19d13
in preparation for the introduction of thread groups syntax in GDB,
thread id needs to be handled as a String.
Change-Id: I379a92de9755ba0532265519ee70d1e199de811b
Preserve the user supplied backend path as a string so that it matches
what GDB (backend) later reports as a file name to resolve.
Condensed history:
Traditionally in source mapping container, the backend path was stored
as an IPath and that was used to compare against the debug information
being returned by GDB. This worked well when the platform compiled for
matched the platform run on, but when there was Windows/Linux together
that did not work. So as part of Bug 393791 a workaround was done to try
and use hand crafted MapEntrySourceContainer.createPath() instead of
Path constructor to preserve some of the differences. This solution had
its limitations too as UNC paths still could not be represented, See
open Bug 386675.
Change-Id: I4c8f62114a2c6019dc9d07ce446ac424be8b230c
Signed-off-by: Jonah Graham <jonah@kichwacoders.com>