fix generate_software_list.py script, add unit test for it