blob: b0a1262920631a6f948c9d3381f4ef285fb7653d [file] [log] [blame] [view]
# HostStubGen
## Overview
This directory contains tools / sample code / investigation for host side test support.
## Directories and files
- `hoststubgen/`
Contains source code of the "hoststubgen" tool and relevant code
- `framework-policy-override.txt`
This file contains "policy overrides", which allows to control what goes to stub/impl without
having to touch the target java files. This allows quicker iteration, because you can skip
having to rebuild framework.jar.
- `src/`
HostStubGen tool source code.
- `annotations-src/` See `Android.bp`.
- `helper-framework-buildtime-src/` See `Android.bp`.
- `helper-framework-runtime-src/` See `Android.bp`.
- `helper-runtime-src/` See `Android.bp`.
- `test-tiny-framework/` See `README.md` in it.
- `test-framework` See `README.md` in it.
- `scripts`
- `run-host-test.sh`
Run a host side test. Use it instead of `atest` for now. (`atest` works "mostly" but it has
problems.)
- `dump-jar.sh`
A script to dump the content of `*.class` and `*.jar` files.
- `run-all-tests.sh`
Run all tests. Many tests may fail, but at least this should run til the end.
(It should print `run-all-tests.sh finished` at the end)
## Build and run
### Building `HostStubGen` binary
```
m hoststubgen
```
### Run the tests
- Run all relevant tests and test scripts. Some of thests are still expected to fail,
but this should print "finished, with no unexpected failures" at the end.
However, because some of the script it executes depend on internal file paths to Soong's
intermediate directory, some of it might fail when something changes in the build system.
We need proper build system integration to fix them.
```
$ ./scripts/run-all-tests.sh
```
- See also `README.md` in `test-*` directories.
## TODOs, etc
- Make sure the parent's visibility is not smaller than the member's.
- @HostSideTestNativeSubstitutionClass should automatically add class-keep to the substitute class.
(or at least check it.)
- The `HostStubGenTest-framework-test-host-test-lib` jar somehow contain all ASM classes? Figure out where the dependency is coming from.