tommyli3318's Blog

Google Summer of Code with Nuitka 4th Blog Post

tommyli3318
Published: 07/22/2019

<meta charset="utf-8">

<meta charset="utf-8">

This week, I continued to work on my script which automates the testing of nuitka-wheel pytest. Details can be found on my pull request: https://github.com/Nuitka/Nuitka/pull/440

 

The script automates the manual testing of comparing pytest results of a nuitka compiled wheel using `python setup.py bdist_nuitka` to the pytest results of an uncompiled wheel built using `python setup.py bdist_wheel` for the most popular PyPI packages. Testing is done to ensure that nuitka is building the wheel correctly. If the pytests pass/fail in the same way, that means Nuitka built the wheel properly. Else if the tests differ, then something is wrong. Virtualenv is used to create a clean environment with no outside pollution.

 

There were a lot of changes made this week.

  • Added an `__import__` check to make sure pytest used the correct (uncompiled or compiled) package

  • Added a mechanism to ignore certain tests which are unimportant (fixed the comparison issue for urllib3)

  • Added coloring to output for better visuals

  • Added a summary of all packages at the very end of testing

  • Extended testing to many more packages

  • Added local caching of `git clone`

  • Many run time improvements

 

Very proud of the work I have done this week. The plan for next week is to extend the automation to more PyPI packages.

 

View Blog Post

Google Summer of Code with Nuitka 4th Weekly Check-in

tommyli3318
Published: 07/16/2019

1. What did you do this week?
This week, I worked on my script which automates the testing of nuitka-wheel pytest. Details can be found on my pull request: https://github.com/Nuitka/Nuitka/pull/440
Automated testing compares the pytest results of a nuitka wheel built using python setup.py bdist_nuitka to the uncompiled bdist_wheel pytest of each PyPI package. Testing is done to ensure that nuitka is building the wheel correctly. If the pytests pass/fail in the same way, that means Nuitka built the wheel properly. Else if the tests differ, then something is wrong. Virtualenv is used to create a clean environment with no outside pollution.
I used subprocess to capture the output from terminal for comparison. I also implemented mechanics to ignore the time differences found in pytests. Furthermore, the testing has been extended to three more packages.

2. What is coming up next?
Perfect the automation and extend the testing to even more PyPI packages. There are also bugs regarding PermissionError on the deletion of the .git folder that need to be fixed. Furthermore, there are inconsistencies between different packages which require special handling.

3. Did you get stuck anywhere?
Yes, output comparison took account of the time differences from pytests when that should have been ignored. I came up with a solution using regular expressions to find and standardize the time differences.


 

View Blog Post

Google Summer of Code with Nuitka 3rd Blog Post

tommyli3318
Published: 07/08/2019

This week, I created a script to automate the testing of nuitka-wheel pytest. Details can be found on my pull request: https://github.com/Nuitka/Nuitka/pull/440
Automated testing compares the pytest results of a nuitka wheel built using python setup.py bdist_nuitka to the regular python wheel pytest of each PyPI package. Testing is done to ensure that nuitka is building the wheel correctly. If the pytests pass/fail in the same way, that means Nuitka built the wheel properly. Else if the tests differ, then something is wrong. Virtualenv is used to create a clean environment with no outside pollution.

In addition, a post documenting manual test results of dateutil was made to nuitka.net with a pull request: https://github.com/Nuitka/Nuitka-website/pull/11

I ran into many bugs this week but I was proud of myself for being able to overcome all of them with the help of mentors. In particular, getting stdout and stderr from the virtualenv was not easy. There are also some PermissionErrors that I will still need to look more into. Nevertheless, automation now fully works for the urllib3 and dateutil packages and I am very happy with this week’s progress.

The plan for next week is to extend the automation to more PyPI packages.

View Blog Post

Google Summer of Code with Nuitka 3rd Weekly Check-in

tommyli3318
Published: 07/02/2019

1. What did you do this week?
Created a script to automate the testing of nuitka-wheel pytest. Details can be found on my pull request: https://github.com/Nuitka/Nuitka/pull/440
Automated testing compares the pytest results of a nuitka wheel built using python setup.py bdist_nuitka to the regular pytest of each PyPI package. Testing is done to ensure that nuitka is building the wheel correctly. If the pytests pass/fail in the same way, that means Nuitka built the wheel properly. Else if the tests differ, then something is wrong. Virtualenv is used to create a clean environment with no outside pollution.

2. What is coming up next?
Keep working to fully automate nuitka-wheel testing and fix current errors for urllib3. Then, extend the testing to other PyPI packages.

3. Did you get stuck anywhere?
Yes, testing creates two virtualenv directories which needs to be removed after testing. However, I ran into PermissionError on Windows because you cannot delete a binary that has been executed. I will need to look more into that to fix it. Furthermore, I ran into problems trying to get the virualenv to run correctly, but that has been fixed.


 

View Blog Post

Google Summer of Code with Nuitka 2nd Blog Post

tommyli3318
Published: 07/01/2019

This week, I created nuitka standalone tests for python-dateutil and pyyaml packages. Details can be found here: https://github.com/Nuitka/Nuitka/pull/418

In addition, I performed manual virtualenv pytest testing for the urllib3 package wheel built using nuitka. A pull request was made to document my work on the official nuitka.net website:  https://github.com/Nuitka/Nuitka-website/pull/10. The pull request was then merged, the full posting can be found here: https://nuitka.net/posts/urllib3-wheel-with-nuitka.html#

In summary, the tests passed with urllib3 and the results of uncompiled pytest was very similar to the nuitka-compiled pytest. However, there were a few minor differences. My aim is to make this process automatic to avoid having to manually perform testing for every PyPI package.

The plan for next week is to start automating the wheel nuitka tests with the top PyPI packages.
 

View Blog Post