Commit Graph

62 Commits

Author SHA1 Message Date
Jake Hillion
032c28c0ea type checking: add description of data segment type 2023-07-13 16:05:24 +01:00
Alastair Robertson
9f9d1eb568 TypeGraph: Better handling for anonymous types
- Assign names to anonymous types
- Deduplicate all enums (anonymous or not)
- Add tests
2023-07-12 17:44:38 +01:00
arsarwade
28b813c6db
Stop stubbing tuple (#224)
Summary:

Stubbing tuple without alignment info can cause failures. I added a test
case for this which failed before this fix but works now.

Test Plan:

Ran the test.
2023-07-11 09:10:40 -07:00
Jake Hillion
17633983b5 create strict mode and enable it for tests 2023-07-07 16:09:46 +01:00
Alastair Robertson
e86ebb7aff TypeGraph: Support bitfields
- Change member and parent offsets to work in bits, not bytes
- Printer still displays offsets in bytes, with decimals when using
  bitfields
- AddPadding: Don't pad bitfields
- CodeGen: Emit code for bitfields
2023-07-05 13:23:23 +01:00
Alastair Robertson
31050735d6 CodeGen: Add support for capturing Thrift isset data 2023-07-04 15:36:27 +01:00
Jake Hillion
8e48c6ca52 ci: enable testing for typed data segment 2023-06-29 17:31:29 +01:00
Jake Hillion
5c3bb261c8 integration: add GLOB with CONFIGURE_DEPENDS to pick up files 2023-06-29 15:47:06 +01:00
Alastair Robertson
4dc9007166 Integration tests: Set up CI testing for TypeGraph
CTest can't forward command line arguments to the test runner, so add
the option to using an environment variable to enable features instead.

CMake issue tracking the feature that would have been needed:
  https://gitlab.kitware.com/cmake/cmake/-/issues/20470

Tests which aren't passing yet have been disabled in CI.
2023-06-27 16:40:54 +01:00
Alastair Robertson
4bfa932b9b DrgnParser: Handle enum values in template params
We want to use the fully qualified name for scoped enums to keep the C++
compiler happy. When a parameter expects an enum value, we must supply
an enum value and not its underlying integer value.

Before:
  isset_bitset<1, 0>

After:
  isset_bitset<1, apache::thrift::detail::IssetBitsetOption::Unpacked>
2023-06-26 15:13:21 +01:00
Jake Hillion
40c7a9afb7 features: clean up old flags 2023-06-23 11:25:43 +01:00
Jake Hillion
77667e5741 tests: add polymorphic class tests with no extra features 2023-06-19 19:06:04 +01:00
Alastair Robertson
2d28b20d46 TypeGraph: Fix multi dimensional arrays
Multi dimensional arrays are not flattened into 1-D arrays when using
TypeGraph. Update TreeBuilder to account for this.

By not flattening arrays, we are able to produce more descriptive
results.

The disadvantage is that we must now recurse inside arrays
containing only primitives. A better solution to requiring flattening
would be the planned work to not recurse into any static types (not just
primitives). This would also apply to multi-dimensional arrays of
primtivies.
2023-05-31 16:53:38 +01:00
Jake Hillion
008e519cd7 tomlplusplus: compile header once 2023-05-30 16:43:10 +02:00
Alastair Robertson
bd919ae4e4 TypeGraph: Add core code
This code mostly works, but is obviously not complete. This commit just
adds the code and tests, but does not enable it in OID or OIL.
2023-05-30 13:27:23 +01:00
Alastair Robertson
8a19246c81 Integration tests: Add alignment tests 2023-05-24 15:42:26 +01:00
Alastair Robertson
cd836bad62 Integration tests: Assume dynamicSize of 0 in OIL tests if it is not set
This just makes it a little easier to write tests for purely static
types.
2023-05-24 15:42:26 +01:00
Alastair Robertson
280f663eb5 Only pass "-no-pie" to the linker
This fixes an "argument unused during compilation" warning from Clang
2023-05-23 10:36:42 +01:00
Alastair Robertson
dbf6dbc71c Fix warnings in test code 2023-05-23 10:36:42 +01:00
Alastair Robertson
d71a497df5 Fix compiler warnings in folly_shims.cpp 2023-05-23 10:36:42 +01:00
Alastair Robertson
66a171eedc Integration test README: Document "skip" and "oil_disable" 2023-05-18 15:04:22 +01:00
Alastair Robertson
939256030c Integration test: Add "target_function" option 2023-05-18 14:34:08 +01:00
Jon Haslam
d4891e98d4
move src directory to oi (#134) 2023-04-26 16:20:53 +01:00
Jake Hillion
4a64fc5c9c clang-format: set BinPackParameters=false 2023-04-24 11:28:22 +02:00
Jake Hillion
789fb7ef6e add feature addition to the integration test runner 2023-04-21 19:02:44 +02:00
Jake Hillion
641a128b39 add command line feature addition/removal 2023-04-21 19:02:44 +02:00
Alastair Robertson
9755688d1c Add folly shims to avoid linking against folly
This fixes linker errors in debug builds.

When building in debug mode (-DCMAKE_BUILD_TYPE=Debug), folly requires
the function "safe_assert_terminate" to be defined. To avoid building
and linking against folly, we define our own no-op version of this
function.
2023-04-21 12:56:54 +01:00
Jake Hillion
cd2fa8c9ef remove treebuilder pointer validation 2023-04-18 16:04:47 +02:00
Jake Hillion
f47628ae2d add test for folly::fbstring 2023-04-06 15:11:09 +01:00
Alastair Robertson
10f47510d1 Integration tests: Remove typedefs from cycles.toml
uint64_t is a typedef. int is a primitive.

The cycles tests are going to be re-used to underpin some type-graph
unit tests. The patch removes unnecessary typedefs and makes the unit
tests simpler.
2023-04-03 13:02:03 +01:00
Jay Kamat
e27f725a85 Avoid following weak_ptrs
Previously, we treated weak_ptrs as normal types and we recursed
within them, following the internal data pointer and possibly causing
crashes. We really shouldn't be following them, so I added a custom
type to simply abort processing. If we want to handle them (ie: check
if they are valid, and follow them if so), that should be fairly easy
with the work there is here so far.
2023-03-28 14:10:27 -07:00
Alastair Robertson
fb58ccebac Integration tests: Have target process print its pid
This makes it easier to work with when running multiple instances of it
manually, outside of the integration testing framework.
2023-03-28 16:42:14 +01:00
Alastair Robertson
bab21166f2 Integration tests: Remove redundant "array" from std_array.toml test names 2023-03-28 16:42:14 +01:00
Jake Hillion
d2caaf22e8 formatting: force pointers/references with the type 2023-03-24 20:18:18 +00:00
Alastair Robertson
512163f98e Integration tests: Pass config to OIL tests on the command line
Instead of using an environment variable, pass the path to the config
file as a command line argument. This makes it possible to directly
copy the command being run (as show with --verbose) and run it in a
debugger outside of the test framework.

Old verbose output:
  Running: /home/ajor/src/object-introspection3/build/test/integration/integration_test_target oil cycles_unique_ptr

New verbose output:
  Running: /home/ajor/src/object-introspection3/build/test/integration/integration_test_target oil cycles_unique_ptr /home/ajor/src/object-introspection3/build/testing.oid.toml
2023-03-22 16:57:35 +00:00
Alastair Robertson
56f7147d39 Integration tests: Set expected results for cycles.toml
Format the raw_ptr test case with jq to remove tabs and deleted extra
data from the JSON.
2023-03-22 13:51:04 +00:00
Jake Hillion
c4194a9fbc oil: remove fields in options 2023-03-20 16:26:10 +00:00
Jake Hillion
06aa3e3d40 clear all warnings and enable -Werror 2023-03-20 11:14:55 +00:00
Jay Kamat
7a3cd2d6bc Add tests for exclusive size 2023-03-10 11:46:30 -08:00
Alastair Robertson
d9b13ff101 Integration tests: Test templates 2023-03-09 11:51:41 +00:00
Alastair Robertson
5dd92b7f7f Integration tests: Test arrays 2023-03-09 11:51:41 +00:00
Alastair Robertson
9dd5c4b4cc Integration Tests: Test typedefs 2023-03-09 11:51:41 +00:00
Alastair Robertson
340a5e6803 Integration Tests: Test enums 2023-03-09 11:51:41 +00:00
Alastair Robertson
18e636d68d Integration tests: Add simple class and simple union tests 2023-03-09 11:51:41 +00:00
Jake Hillion
be273f6e0d tests: make relative config paths absolute when copying 2023-02-28 15:13:48 -08:00
Jake Hillion
3a236aa4f2 sorted_vec_set: finish changing to a container adapter 2023-02-24 10:31:59 -08:00
Jon Haslam
878b9bfebb
add std::conditional test (#79) 2023-02-22 14:37:59 -08:00
Alastair Robertson
9fd96ec3a4 integration/primitives.toml: Add char8_t test 2023-02-21 11:59:16 -08:00
Jake Hillion
9cb8fd7a97 add missing virtual destructors 2023-02-03 17:26:04 +00:00
Jake Hillion
ee56decc10 oil: change interface to references 2023-01-31 13:30:58 +00:00