mirror of
https://github.com/nix-community/nix-on-droid.git
synced 2025-11-08 19:46:07 +01:00
tests: add fakedroid as flake app
This commit is contained in:
parent
1c88e73c78
commit
0a3b09df75
3 changed files with 51 additions and 27 deletions
34
.github/workflows/fakedroid-odt.yml
vendored
34
.github/workflows/fakedroid-odt.yml
vendored
|
|
@ -19,28 +19,18 @@ jobs:
|
||||||
name: nix-on-droid
|
name: nix-on-droid
|
||||||
signingKey: "${{ secrets.CACHIX_SIGNING_KEY }}"
|
signingKey: "${{ secrets.CACHIX_SIGNING_KEY }}"
|
||||||
|
|
||||||
- name: Build fakedroid script
|
|
||||||
run: |
|
|
||||||
nix \
|
|
||||||
--log-format bar-with-logs \
|
|
||||||
--option keep-going true \
|
|
||||||
--show-trace \
|
|
||||||
build .#fakedroid \
|
|
||||||
--impure \
|
|
||||||
--out-link fakedroid
|
|
||||||
|
|
||||||
- name: Initialize fakedroid for channel setup
|
- name: Initialize fakedroid for channel setup
|
||||||
run: ./fakedroid echo INIT
|
run: nix run --impure .#fakedroid -- echo INIT
|
||||||
|
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
run: |
|
run: |
|
||||||
./fakedroid mkdir -p .cache/nix-on-droid-self-test
|
nix run --impure .#fakedroid -- mkdir -p .cache/nix-on-droid-self-test
|
||||||
./fakedroid touch .cache/nix-on-droid-self-test/confirmation-granted
|
nix run --impure .#fakedroid -- touch .cache/nix-on-droid-self-test/confirmation-granted
|
||||||
./fakedroid nix-on-droid on-device-test
|
nix run --impure .#fakedroid -- nix-on-droid on-device-test
|
||||||
|
|
||||||
- name: Push to cachix
|
- name: Push to cachix
|
||||||
if: always() && github.event_name != 'pull_request'
|
if: always() && github.event_name != 'pull_request'
|
||||||
run: ./fakedroid nix-shell -p cachix --run 'nix --extra-experimental-features nix-command path-info --all | cachix push nix-on-droid'
|
run: nix run --impure .#fakedroid -- nix-shell -p cachix --run 'nix --extra-experimental-features nix-command path-info --all | cachix push nix-on-droid'
|
||||||
|
|
||||||
|
|
||||||
fakedroid-flakes:
|
fakedroid-flakes:
|
||||||
|
|
@ -59,19 +49,9 @@ jobs:
|
||||||
name: nix-on-droid
|
name: nix-on-droid
|
||||||
signingKey: "${{ secrets.CACHIX_SIGNING_KEY }}"
|
signingKey: "${{ secrets.CACHIX_SIGNING_KEY }}"
|
||||||
|
|
||||||
- name: Build fakedroid script
|
|
||||||
run: |
|
|
||||||
nix \
|
|
||||||
--log-format bar-with-logs \
|
|
||||||
--option keep-going true \
|
|
||||||
--show-trace \
|
|
||||||
build .#fakedroid \
|
|
||||||
--impure \
|
|
||||||
--out-link fakedroid
|
|
||||||
|
|
||||||
- name: Initialize fakedroid for flake setup
|
- name: Initialize fakedroid for flake setup
|
||||||
run: USE_FLAKE=1 ./fakedroid echo INIT
|
run: USE_FLAKE=1 nix run --impure .#fakedroid -- echo INIT
|
||||||
|
|
||||||
- name: Push to cachix
|
- name: Push to cachix
|
||||||
if: always() && github.event_name != 'pull_request'
|
if: always() && github.event_name != 'pull_request'
|
||||||
run: ./fakedroid nix-shell -p cachix --run 'nix --extra-experimental-features nix-command path-info --all | cachix push nix-on-droid'
|
run: nix run --impure .#fakedroid -- nix-shell -p cachix --run 'nix --extra-experimental-features nix-command path-info --all | cachix push nix-on-droid'
|
||||||
|
|
|
||||||
39
README.md
39
README.md
|
|
@ -206,6 +206,45 @@ Use `nix-on-droid switch --flake .#device` to build and activate your configurat
|
||||||
Therefore, every evaluation of a flake configuration will be executed with `--impure` flag. (This behaviour will be
|
Therefore, every evaluation of a flake configuration will be executed with `--impure` flag. (This behaviour will be
|
||||||
dropped as soon as the default setup does not require it anymore.)
|
dropped as soon as the default setup does not require it anymore.)
|
||||||
|
|
||||||
|
## Emulate `nix-on-droid`-like environment with `fakedroid`
|
||||||
|
|
||||||
|
For easier debugging and testing, there is a so-called `fakedroid` environment which
|
||||||
|
emulates the on-device environment including proot as good as possible.
|
||||||
|
|
||||||
|
You can enter this emulated environment with
|
||||||
|
|
||||||
|
```sh
|
||||||
|
nix run --impure ".#fakedroid"
|
||||||
|
```
|
||||||
|
|
||||||
|
This will install nix-on-droid with initial channel setup and save the state of
|
||||||
|
this session in the `.fakedroid` directory in the project directory. To enter this
|
||||||
|
environment with initial flake setup, set `USE_FLAKE=1` as environment variable.
|
||||||
|
Channel and flake setups can co-exist in the `.fakedroid` state directory. To
|
||||||
|
rebuild/re-test the bootstrap process, remove the `.fakedroid` directory.
|
||||||
|
|
||||||
|
To only run a command in fakedroid and not enter an interactive shell, just call it
|
||||||
|
with the command as arguments:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
nix run --impure ".#fakedroid" -- ls -l
|
||||||
|
```
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
In the [./tests/on-device](./tests/on-device) directory, there is small set
|
||||||
|
of [bats](https://github.com/bats-core/bats-core) tests that can be executed on the
|
||||||
|
android device or run in the `fakedroid` environment.
|
||||||
|
|
||||||
|
To run the tests (on device or in fakedroid), run
|
||||||
|
|
||||||
|
```sh
|
||||||
|
nix-on-droid on-device-test
|
||||||
|
```
|
||||||
|
|
||||||
|
**Note:** This currently requires a channel setup and should only be executed on
|
||||||
|
clean installations.
|
||||||
|
|
||||||
## Tips
|
## Tips
|
||||||
|
|
||||||
* To grant the app access to the storage, use the toggle in the app settings
|
* To grant the app access to the storage, use the toggle in the app settings
|
||||||
|
|
|
||||||
|
|
@ -53,6 +53,11 @@
|
||||||
type = "app";
|
type = "app";
|
||||||
program = "${self.packages.${system}.nix-on-droid}/bin/nix-on-droid";
|
program = "${self.packages.${system}.nix-on-droid}/bin/nix-on-droid";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
fakedroid = {
|
||||||
|
type = "app";
|
||||||
|
program = toString self.packages.${system}.fakedroid;
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
checks = forEachSystem (system: {
|
checks = forEachSystem (system: {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue