Skip to content

Instantly share code, notes, and snippets.

@Josverl
Last active June 27, 2023 12:45
Show Gist options
  • Save Josverl/8b1804c9ea23582bdd675da1338a8d4d to your computer and use it in GitHub Desktop.
Save Josverl/8b1804c9ea23582bdd675da1338a8d4d to your computer and use it in GitHub Desktop.
mpremote testing on windows
./test_eval_exec_run.sh: OK
./test_filesystem.sh: FAIL
11c11
< e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 *-
---
> e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 -
13,15c13,15
< cp C:/Users/josverl/AppData/Local/Temp/tmp.8pLK9lHdYn/a.py :
< cp C:/Users/josverl/AppData/Local/Temp/tmp.8pLK9lHdYn/a.py :b.py
< cp C:/Users/josverl/AppData/Local/Temp/tmp.8pLK9lHdYn/a.py :c.py
---
> cp ${TMP}/a.py :
> cp ${TMP}/a.py :b.py
> cp ${TMP}/a.py :c.py
30c30
< 50f0a701dd6cd6125387b96515300c9d5294c006518f8e62fa9eea3b66587f21 *-
---
> 50f0a701dd6cd6125387b96515300c9d5294c006518f8e62fa9eea3b66587f21 -
34,35c34,35
< cp C:/Users/josverl/AppData/Local/Temp/tmp.8pLK9lHdYn/a.py :aaa
< cp C:/Users/josverl/AppData/Local/Temp/tmp.8pLK9lHdYn/a.py :bbb/b.py
---
> cp ${TMP}/a.py :aaa
> cp ${TMP}/a.py :bbb/b.py
62c62
< cp C:/Users/josverl/AppData/Local/Temp/tmp.8pLK9lHdYn/package :
---
> cp ${TMP}/package :
75c75
< cp C:/Users/josverl/AppData/Local/Temp/tmp.8pLK9lHdYn/package :package2
---
> cp ${TMP}/package :package2
89c89
< cp C:/Users/josverl/AppData/Local/Temp/tmp.8pLK9lHdYn/package :test
---
> cp ${TMP}/package :test
100c100
< cp C:/Users/josverl/AppData/Local/Temp/tmp.8pLK9lHdYn/package :test/package2
---
> cp ${TMP}/package :test/package2
112c112
< cp :test/package C:/Users/josverl/AppData/Local/Temp/tmp.8pLK9lHdYn/copy
---
> cp :test/package ${TMP}/copy
125c125
< cp :test/package C:/Users/josverl/AppData/Local/Temp/tmp.8pLK9lHdYn/copy/package2
---
> cp :test/package ${TMP}/copy/package2
139c139
< cp C:/Users/josverl/AppData/Local/Temp/tmp.8pLK9lHdYn/package :
---
> cp ${TMP}/package :
152c152
< cp C:/Users/josverl/AppData/Local/Temp/tmp.8pLK9lHdYn/package :
---
> cp ${TMP}/package :
168,169c168
< cp C:/Users/josverl/AppData/Local/Temp/tmp.8pLK9lHdYn/package :
< Up to date: ./package/subpackage/__init__.py
---
> cp ${TMP}/package :
171a171
> Up to date: ./package/subpackage/__init__.py
./test_mount.sh: FAIL
4c4
< Local directory C:/Users/josverl/AppData/Local/Temp/tmp.p66hrwaKrs is mounted at /remote
---
> Local directory ${TMP} is mounted at /remote
6c6
< Local directory C:/Users/josverl/AppData/Local/Temp/tmp.p66hrwaKrs is mounted at /remote
---
> Local directory ${TMP} is mounted at /remote
./test_recursive_cp.sh: FAIL
15,49d14
< ${TMP}/a
< ${TMP}/a/b
< ${TMP}/a/b/y.py
< ${TMP}/a/x.py
< ${TMP}/b1
< ${TMP}/b1/b
< ${TMP}/b1/b/y.py
< ${TMP}/b1/x.py
< ${TMP}/b2
< ${TMP}/b2/b
< ${TMP}/b2/b/y.py
< ${TMP}/b2/x.py
< ${TMP}/b3
< ${TMP}/b3/b
< ${TMP}/b3/b/y.py
< ${TMP}/b3/x.py
< ${TMP}/b4
< ${TMP}/b4/b
< ${TMP}/b4/b/y.py
< ${TMP}/b4/x.py
< ${TMP}/c1
< ${TMP}/c1/a
< ${TMP}/c1/a/b
< ${TMP}/c1/a/b/y.py
< ${TMP}/c1/a/x.py
< ${TMP}/c2
< ${TMP}/c2/a
< ${TMP}/c2/a/b
< ${TMP}/c2/a/b/y.py
< ${TMP}/c2/a/x.py
< ${TMP}/c3
< ${TMP}/c3/a
< ${TMP}/c3/a/b
< ${TMP}/c3/a/b/y.py
< ${TMP}/c3/a/x.py
51a17
> ${TMP}/c4/a/x.py
54c20,50
< ${TMP}/c4/a/x.py
---
> ${TMP}/c3
> ${TMP}/c3/a
> ${TMP}/c3/a/x.py
> ${TMP}/c3/a/b
> ${TMP}/c3/a/b/y.py
> ${TMP}/c2
> ${TMP}/c2/a
> ${TMP}/c2/a/x.py
> ${TMP}/c2/a/b
> ${TMP}/c2/a/b/y.py
> ${TMP}/c1
> ${TMP}/c1/a
> ${TMP}/c1/a/x.py
> ${TMP}/c1/a/b
> ${TMP}/c1/a/b/y.py
> ${TMP}/b4
> ${TMP}/b4/x.py
> ${TMP}/b4/b
> ${TMP}/b4/b/y.py
> ${TMP}/b3
> ${TMP}/b3/x.py
> ${TMP}/b3/b
> ${TMP}/b3/b/y.py
> ${TMP}/b2
> ${TMP}/b2/x.py
> ${TMP}/b2/b
> ${TMP}/b2/b/y.py
> ${TMP}/b1
> ${TMP}/b1/x.py
> ${TMP}/b1/b
> ${TMP}/b1/b/y.py
55a52,55
> ${TMP}/a
> ${TMP}/a/x.py
> ${TMP}/a/b
> ${TMP}/a/b/y.py
61,95d60
< ${TMP}/a
< ${TMP}/a/b
< ${TMP}/a/b/y.py
< ${TMP}/a/x.py
< ${TMP}/b1
< ${TMP}/b1/b
< ${TMP}/b1/b/y.py
< ${TMP}/b1/x.py
< ${TMP}/b2
< ${TMP}/b2/b
< ${TMP}/b2/b/y.py
< ${TMP}/b2/x.py
< ${TMP}/b3
< ${TMP}/b3/b
< ${TMP}/b3/b/y.py
< ${TMP}/b3/x.py
< ${TMP}/b4
< ${TMP}/b4/b
< ${TMP}/b4/b/y.py
< ${TMP}/b4/x.py
< ${TMP}/c1
< ${TMP}/c1/a
< ${TMP}/c1/a/b
< ${TMP}/c1/a/b/y.py
< ${TMP}/c1/a/x.py
< ${TMP}/c2
< ${TMP}/c2/a
< ${TMP}/c2/a/b
< ${TMP}/c2/a/b/y.py
< ${TMP}/c2/a/x.py
< ${TMP}/c3
< ${TMP}/c3/a
< ${TMP}/c3/a/b
< ${TMP}/c3/a/b/y.py
< ${TMP}/c3/a/x.py
97a63
> ${TMP}/c4/a/x.py
100c66,96
< ${TMP}/c4/a/x.py
---
> ${TMP}/c3
> ${TMP}/c3/a
> ${TMP}/c3/a/x.py
> ${TMP}/c3/a/b
> ${TMP}/c3/a/b/y.py
> ${TMP}/c2
> ${TMP}/c2/a
> ${TMP}/c2/a/x.py
> ${TMP}/c2/a/b
> ${TMP}/c2/a/b/y.py
> ${TMP}/c1
> ${TMP}/c1/a
> ${TMP}/c1/a/x.py
> ${TMP}/c1/a/b
> ${TMP}/c1/a/b/y.py
> ${TMP}/b4
> ${TMP}/b4/x.py
> ${TMP}/b4/b
> ${TMP}/b4/b/y.py
> ${TMP}/b3
> ${TMP}/b3/x.py
> ${TMP}/b3/b
> ${TMP}/b3/b/y.py
> ${TMP}/b2
> ${TMP}/b2/x.py
> ${TMP}/b2/b
> ${TMP}/b2/b/y.py
> ${TMP}/b1
> ${TMP}/b1/x.py
> ${TMP}/b1/b
> ${TMP}/b1/b/y.py
101a98,101
> ${TMP}/a
> ${TMP}/a/x.py
> ${TMP}/a/b
> ${TMP}/a/b/y.py
./test_resume.sh: OK
-----
ls :
-----
touch :a.py
touch :b.py
ls :
0 a.py
0 b.py
hash :a.py
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 *-
-----
cp C:/Users/josverl/AppData/Local/Temp/tmp.8pLK9lHdYn/a.py :
cp C:/Users/josverl/AppData/Local/Temp/tmp.8pLK9lHdYn/a.py :b.py
cp C:/Users/josverl/AppData/Local/Temp/tmp.8pLK9lHdYn/a.py :c.py
cp :a.py :d.py
ls :
30 a.py
30 b.py
30 c.py
30 d.py
Hello
World
Hello
World
Hello
World
hash :a.py
50f0a701dd6cd6125387b96515300c9d5294c006518f8e62fa9eea3b66587f21
50f0a701dd6cd6125387b96515300c9d5294c006518f8e62fa9eea3b66587f21 *-
-----
mkdir :aaa
mkdir :bbb
cp C:/Users/josverl/AppData/Local/Temp/tmp.8pLK9lHdYn/a.py :aaa
cp C:/Users/josverl/AppData/Local/Temp/tmp.8pLK9lHdYn/a.py :bbb/b.py
print("Hello")
print("World")
print("Hello")
print("World")
-----
rm :b.py
rm :c.py
ls :
30 a.py
30 d.py
0 aaa/
0 bbb/
rm :aaa/a.py
rm :bbb/b.py
rmdir :aaa
rmdir :bbb
ls :
30 a.py
30 d.py
-----
edit :d.py
hash :d.py
612c7ddb88390ac86b4174b26a6e5b52fc2f2838b234efd8f6f7c41631a49d04
Goodbye
World
-----
cp C:/Users/josverl/AppData/Local/Temp/tmp.8pLK9lHdYn/package :
ls :
0 package/
ls :package
0 subpackage/
22 x.py
43 __init__.py
ls :package/subpackage
22 y.py
17 __init__.py
x
y
-----
cp C:/Users/josverl/AppData/Local/Temp/tmp.8pLK9lHdYn/package :package2
ls :
0 package2/
ls :package2
0 subpackage/
22 x.py
43 __init__.py
ls :package2/subpackage
22 y.py
17 __init__.py
x
y
-----
mkdir :test
cp C:/Users/josverl/AppData/Local/Temp/tmp.8pLK9lHdYn/package :test
ls :test
0 package/
ls :test/package
0 subpackage/
22 x.py
43 __init__.py
ls :test/package/subpackage
22 y.py
17 __init__.py
-----
cp C:/Users/josverl/AppData/Local/Temp/tmp.8pLK9lHdYn/package :test/package2
ls :test
0 package/
0 package2/
ls :test/package2
0 subpackage/
22 x.py
43 __init__.py
ls :test/package2/subpackage
22 y.py
17 __init__.py
-----
cp :test/package C:/Users/josverl/AppData/Local/Temp/tmp.8pLK9lHdYn/copy
${TMP}/copy:
package
${TMP}/copy/package:
__init__.py
subpackage
x.py
${TMP}/copy/package/subpackage:
__init__.py
y.py
-----
cp :test/package C:/Users/josverl/AppData/Local/Temp/tmp.8pLK9lHdYn/copy/package2
${TMP}/copy:
package
package2
${TMP}/copy/package2:
__init__.py
subpackage
x.py
${TMP}/copy/package2/subpackage:
__init__.py
y.py
-----
cp C:/Users/josverl/AppData/Local/Temp/tmp.8pLK9lHdYn/package :
cp :package :package3
ls :
0 package/
0 package3/
ls :package3
0 subpackage/
22 x.py
43 __init__.py
ls :package3/subpackage
22 y.py
17 __init__.py
-----
cp C:/Users/josverl/AppData/Local/Temp/tmp.8pLK9lHdYn/package :
mkdir :package4
cp :package :package4
ls :
0 package/
0 package4/
ls :package4
0 package/
ls :package4/package
0 subpackage/
22 x.py
43 __init__.py
ls :package4/package/subpackage
22 y.py
17 __init__.py
-----
cp C:/Users/josverl/AppData/Local/Temp/tmp.8pLK9lHdYn/package :
Up to date: ./package/subpackage/__init__.py
Up to date: ./package/x.py
Up to date: ./package/__init__.py
ls :
0 package/
0 package4/
ls :package
0 subpackage/
22 x.py
43 __init__.py
ls :package/subpackage
23 y.py
17 __init__.py
x
y2
-----
x
y
Local directory C:/Users/josverl/AppData/Local/Temp/tmp.p66hrwaKrs is mounted at /remote
-----
Local directory C:/Users/josverl/AppData/Local/Temp/tmp.p66hrwaKrs is mounted at /remote
hello world

Testing MPRemote

Hardware requirements

  • A board with MicroPython firmware installed
  • Connected via serial port to the host running the tests

Testing mpremote on Windows using tools meant for *nix

Its a bit of a hack, but it works on my machine.

Requirements:

  • Install Python3.x for Windows (no need to install a sepearet Linux version of Python)
  • Install Git for Windows ( which includes bash running under MINGW64 )

Preparation

  • Start a bash shell in the MicroPython directory you can do this from explore, windows terminal , or in VSCode depending on your workflow preferences

  • cd tools/mpremote/tests

  • Create a virtual environment using the windows version of python:

    • python.exe -m venv .venv-bash
  • HACK: the shebang in the scripts refer to /usr/bin/env python3, which doesn't exist on Windows by convention so create a copy of python.exe in the .venv-bash/Scripts directory and name it python3.exe

    • cp .venv-bash/Scripts/python.exe .venv-bash/Scripts/python3.exe
  • activate the virtual environment

    • source .venv-bash/Scripts/activate
  • install the dependencies for mpremote pip install -r ../requirements.txt

Run the test

  • activate the virtual environment
    • source .venv-bash/Scripts/activate
  • run the tests
    • bash run-mpremote-tests.sh
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment