Freeseer / freeseer

Designed for capturing presentations at conferences. Pre-fill a list of talks to record, record them, and upload them to YouTube with our YouTube Uploader.
http://freeseer.readthedocs.org
GNU General Public License v3.0
215 stars 110 forks source link

Unit tests under Windows partly fail #647

Open Cryspia opened 9 years ago

Cryspia commented 9 years ago

By running

python setup.py test

under Windows, we get 12 failures. Here is the full output of the test: http://promm.github.io/freeseer/doc/freeseer_test_windows.txt

SRomansky commented 9 years ago

Does this repository fix the database test failures? https://github.com/wigglier/freeseer/tree/484-unit-test-and-refactor

dideler commented 9 years ago

Thanks for the suggestion @wigglier. @Promm you can get that branch like this

git checkout -b 484-unit-test-and-refactor master
git pull git@github.com:wigglier/freeseer.git 484-unit-test-and-refactor
Cryspia commented 9 years ago

@wigglier @dideler This is the result after adding the change set.

======== 35 failed, 213 passed, 1 skipped, 1 xfailed in 22.35 seconds =========

The detailed doc can be seen: http://promm.github.io/freeseer/doc/freeseer_test_after619.txt Since this change set has modified lots of test cases, I may not be able to help fixing the errors before this PR has been merged. But I can offer the test results on Windows if any changes has been made.

zxiiro commented 9 years ago

The ElementNotFound errors sounds like you're missing GStreamer plugins which will be resolved once you install the missing plugins. One of the plugins at least is the "rtmpsink" plugin.

The "/tmp" value error is failing because something in the config code is hardcoding a Unix path which is invalid for Windows we should be using Python's tmpdir module.

I'm not sure what's the cause of the "AssertionError: False is not true" errors but they seem to be coming from the framework/config module.

The "assert talk_id == '1'" coming from the test test_get_presentation_id is failing likely because of the config situation mentioned earlier with the hardcoded paths that are invalid on Windows.

The "assert ['Title,Speak...,EndTime\r\n'] == ['Title,Speake...fault,,,\r\n']" error is because you updated the code and didn't clear your ~/.freeseer configuration directory. Looks like someone changed the database format so you need to clear the configuration files to reset the database (or just clear the database file). All of the database related errors are probably due to this.

The youtube test code

        expected = {
            'client_secrets': '{}/.freeseer/client_secrets.json'.format(home),
            'video_directory': '{}/Videos'.format(home),
            'oauth2_token': '{}/.freeseer/oauth2_token.json'.format(home)
        }

Is hardcoded with Unix style system paths, we should be using os.path.join in Python here so that it's cross platform compatible.

SRomansky commented 9 years ago

It looks like all the database issues are failing because the QSQLITE driver cannot be loaded in framework/database.py:

        self.talkdb = QtSql.QSqlDatabase.addDatabase("QSQLITE")

I am looking for a solution, but I am not having luck.

edit:

>>> from PyQt4 import QtSql
>>> QtSql.QSqlDatabase.isDriverAvailable('QSQLITE')
True

@Promm do you get the above output from running the two commands in your Python interpretter?

Cryspia commented 9 years ago

@zxiiro I installed the gstreamer from the official site, so I do not know why that plugin is missing. Is "rtmpsink" a plugin supported by Windows? I have cleaned the ~/.freeseer folder and tried again, but it is still the same number of errors.

zxiiro commented 9 years ago

One of our previous students worked on getting the rtmp plugin working on Windows. See:

http://jonathanasdf.wordpress.com/2012/11/09/building-rtmpsink-plugin-for-gstreamer-on-windows/

SRomansky commented 9 years ago

@Promm Do you have the QSQLITE driver? I don't see it listed as a dependency in the Windows development setup guide, but it is listed in the linux setup guide as libqt4-sql-sqlite

http://qt-project.org/doc/qt-4.8/sql-driver.html#qsqlite http://www.sqlite.org/download.html

Cryspia commented 9 years ago

@wigglier I am not sure about that, since I only installed the packages that are listed on the web page. I will try it again after installing that.

dideler commented 9 years ago

@Promm if you scroll up, you'll see some commands that @wigglier posted in his edit to check if you have the driver.

Cryspia commented 9 years ago

@dideler @wigglier I got a False. Seems that I do not have the driver on Windows.

Cryspia commented 9 years ago

@dideler @wigglier Actually I do have a "qsqlite4.dll" under PyQt4/plugins/sqldrivers. It should be the driver that is required. But I still get false from the code.

Cryspia commented 9 years ago

@zxiiro Do I need to svn the ossbuild onto my local machine and build it with the patch he gave? I do not have Visual Studio on my computer, so I am afraid that I cannot build it. Besides, I have a question that if this plugin is not in the standard build, should we still use it?

zxiiro commented 9 years ago

I don't know why they don't automatically include it in the Windows release but on Linux it's part of gstreamer-bad-plugins (maybe this is why?). Anyway this is a plugin we are already supporting so removing support for it doesn't make sense at this point and video streaming capabilities was one of our most requested features.

If you don't have Visual Studio to build that's ok, just ignore this plugin then I would't expect you to spend too much time spinning your wheels on getting a VS environment setup this late in the year. Maybe we can but a check for this plugin when run on Windows systems and skip it during testing?

Cryspia commented 9 years ago

@zxiiro OK for me. Can you tell me how to skip the test?

dideler commented 9 years ago

@Promm http://pytest.org/latest/skipping.html

Cryspia commented 9 years ago

@dideler Do I need to create a PR for that or just do a local change?

dideler commented 9 years ago

You'll need to open a new PR to close this issue.

Cryspia commented 9 years ago

@dideler The “test_plugins.py" which causes that error is using "unittest" module. Do I need to change it to "pytest" before I skip the test?

dideler commented 9 years ago

@wigglier already switched it to use pytest in #642, I'll try to get that merged today after work. Please remind me if I forget.

Cryspia commented 9 years ago

@dideler Just a reminder of merging #642

dideler commented 9 years ago

Thanks. Just getting #642 merge-ready now, discovered a few things that still needed to be fixed.

Cryspia commented 9 years ago

@wigglier The test results after your branches merged can be seen here: http://promm.github.io/freeseer/doc/freeseer_test_skip_rtmp.txt