Let me take this opportunity to thank the folks at Google for conducting the Google Summer of Code Project.
My changes to jhbuild: Patch Modified/Patched code (complete)
My changes to LDTP: Pathches Modified/Patched Code (complete)
Screencasts:
Jhbuild ScreenCast
Evolution Mailer Automation
Evolution Calendar Automation
Evolution AddressBook Automation
Evolution Automation Source Code: http://people.freedesktop.org/~prashmohan/soc/evolution/
Gnome-Dictionary Automation Source Code: http://people.freedesktop.org/~prashmohan/soc/gnome-dictionary/
LDTP Regression Suite Source Code: http://people.freedesktop.org/~prashmohan/soc/reg-suite/
View the Report in PDF LaTeX
1 LDTP integration into jhbuild
jhbuild1 is an automated build script for building Gnome from source. jhbuild also takes care of the dependency issues involved in building the software.
Tinderbox is a mozilla product which is used for exporting the results of the jhbuild process to a local file (in HTML+CSSformat). It neatly creates a hyper linked set of documents detailing the processes done. jhautobuild is a web application designed by Frederic Peters2 which allows publication of the tinderbox output to a public web server.
The patch for the same is currently being reviewed by Frederic Peters. An enhancement bug
3 has been filed under Bugzilla.
The input is obtained from the moduleset file, which is in modulesets/gnome-2.14-test.modules. This moduleset file was created specifically to cater to the tasks of having testmodules. The module information regarding the building of `LDTP' under jhbuild has also been added to the modulesets/gnome-2.14.modules file.
The `testmodule' is referred in this way:
<testmodule id=“ldtp-gedit-test” type=“ldtp”>
<branch repo=“ldtp.freedesktop.org”
module=“pyautosuite/gedit”
revision=“gnome-2-14”/>
<dependencies>
<dep package=“ldtp”/>
<dep package=“gedit”/>
</dependencies>
<testedmodules>
<tested package=“gedit”/>
</testedmodules>
</testmodule>
The `testmodule' type will specify whether to use `ldtp' or any other test framework; `dependencies' specify the other modules which should be built for this module to be built; `testedmodule' will specify the tested modules. This has the additional effect that cross-integration testing can also be done i.e. for e.g. if a module specifies both `gedit' and `MySQL' as tested modules, it could be an integration package.
1.2 Syntax
The modules can be executed in two ways: (The -x option can be passed to the commands to disable running the tests in an Xvfb environment)
-
build or buildone or autobuild
You can build a specific test module, for e.g. in the above module set, a command “jhbuild buildone ldtp-gedit-test” will build and run the given test cases.
- test
You can also use the test command which will test all modules which test a specific module. e.g. “jhbuild test gedit” will build all test modules which specify `gedit' as a tested package.
1.3 Output
jhbuild has three forms of output:
-
Standard Output
The log file generated by `ldtp' is parsed by the function jhbuild/modtypes/testmodule.py::TestModule::check_groups() and printed on screen
- Local Files using tinderbox
The output can also be redirected to local files in HTML format by using the tinderbox output form
- Remote Server using jhautobuild
An output similar to the Tinderbox output is uploaded to the jhautobuild server which is a Quixote enabled web application running on scgi module. Functionality has been added to upload the raw log file as generated by the `ldtp' scripts to the server and enable processing of the log file at the server4
2 Automation of Evolution using LDTP
Evolution is a high quality Mail Client for Linux, FreeBSD and Windows. LDTP has been used to automate the testing process of Evolution 2.6.x.
The following has been automated:
2.1 Mailer
-
Sending Mails
- Saving Mails
- Mail Operations (Copy/Move/Delete)
- Folder Operations (Copy/Move/Delete)
- Off-line Operations
- Spell Check, Find and Replace
- Mail Accounts
- Searching for Mails
2.2 AddressBook
-
Adding, Modifying, Deleting Contacts
- Adding, Modifying, Deleting Contact Lists
2.3 Calendars
-
Creation, Modification, Deletion of Recurring/Non-Recurring Meeting
- Creation, Modification, Deletion of Recurring/Non-Recurring Appointment
- Creation, Modification, Deletion of Recurring/Non-Recurring All Day event
-
Creating, Modifying, Deleting Tasks
- Creating, Modifying, Deleting Assigned Tasks
- Creation of Task Lists
3 LDTP Regression Suite
The LDTP framework is under heavy development, and it is very much possible that some of the fixes might break some related
functions. Hence the LDTP regression suite will try to identify faults if any.
The following functions of the LDTP API has been tested for regression:
-
Text Box
- Menu Bar
- Push Button
- Check Box
- Check Menu Item
- Radio Menu Item
- Spin Button
- Table and Tree Table
- Combobox
4 Automation of gnome-dictionary
`gnome-dictionary' is a tiny utility (part of gnome-utils) which is used to retrieve the definition of words from the Internet.
This required the coding of registry events5 and cursor functions6 into the LDTP framework.
- 1
- http://www.jamesh.id.au/software/jhbuild/
- 2
- http://www.0d.be
- 3
- http://bugzilla.gnome.org/show_bug.cgi?id=349114
- 4
- This was discussed extensively at GUADEC '06
- 5
- http://bugzilla.gnome.org/show_bug.cgi?id=340935
- 6
- http://bugzilla.gnome.org/show_bug.cgi?id=341391