Write test and improve protocols supports for the Kopete
Project title: Write test and improve protocols support for the Kopete
Mentor: Vijay Krishnavanshi (firstname.lastname@example.org)
A Brief Description: Kopete is the application for the instant messaging that has a modular architecture and supports many messaging services like Skype, Jabber, ICQ, MeanWhile, Bonjour, QQ, etc with lots of useful plugins like history, highlights, bookmarks, translator, text effects, contact notes and many others which are very useful for chatting.
- Project Goals:
- Write unit test for remaining part of Kopete's libraries i.e. libkopete, protocol, plugins, etc.
- Work on the improving the protocols support
- Removing the bugs.
Current Status of the Project
I had only able to worked on the unit testings part of the project. I had written the four unit test for the Kopete which are open on the phabricator and need to be the review (their link is given below) and merge into the Kopete git repository. The unit tests follow:
- QQCryptTest: The unit test is testing the class Crypt which is encrypting and decrypting the message in the QQ Protocol.
- JabberProtocolTest: The unit test is testing the JabberProtocol class which is the main class for Jabber protocol library.
- KopetePluginTest: The Unit test is testing the base class of kopete plugins in the libkopete library.
- KopetePictureTest: The Unit test is testing the class Picture in the libkopete library of the Kopete.
The main hug task during this season of KDE is to build the kopete application on my PC I will take near about fifteen days to build the kopete after that I starts with the reading of previous unit tests in the Kopete in the libkopete library. I read the test kopeteblacklistertest.cpp and learn QtTesting from it.
- After that I go through the codebase of the QQ protocol, my first patch is on a unit test of the crypt class of QQ protocol, In this class Encrypting the data and Decrypting data, I test it by using the data-driven test. The patch of the test is here
- After completing my first patch I move toward Jabber Protocol, read its codebase. I Started writing the unit test of class JabberProtocol, I tested the changing of the online status from JabberProtocol to Kopete OnlineStatus, it reverses and creating the new account on the Jabber protocol, the patch of this test, here.
- During the writing JabberProtocolTest, also I was exploring the libkopete library of the kopete, The third unit test I wrote from this library of class Kopete::Plugins, this was the base class for the kopete plugins, here I test the many functions like showCloseWindowMessage, shouldExitOnclose, aboutToUnload, pluginId, displayName, addAddressBookField, AddressBookFieldMode, etc. The patch is here.
- And the next unit test I wrote for the class Kopete::Picture, this class is all about the picture handling in the kopete, the patch is here
What I learned during the SoK
It was a nice experience for me. I learned a lot of things. Some are following:
- XMPP protocols(Jabber Protocol)
- Object-Oriented Programming
- The most important thing is how to work in the open source community.
I always am thankful for the KDE community and Especially my mentor Vijay Krishnavashi for his support in the project.
Link to profile https://phabricator.kde.org/p/himanshuvishwakarma
- Link to the proposal: here
- Link to the Weekly Status Reports(progress): here
- Link to patches: QQCryptTest, JabberProtocolTest, KopetePluginTest, KopetePictureTest
- Link to the blog: here
- Link to the Kopete repository: here
To see my work and run the tests are follows:
- Clone the kopete repository by
- $ git clone https://anongit.kde.org/kopete.git
- Build the Kopete on your system.
- Download the diff from the phabricator for the test
- Run the command to the terminal.
- $ git apply /path..to..the..diff/Kopete..Test.diff
- Move to the build directory
- $ cd /path..to..kopete..build..directory..of..kopete/build
- $ make && make test
- Email: email@example.com
- IRC: himvish997/himvish997_
- Kopete IRC Channel: #kopete
- Kopete mailing list: firstname.lastname@example.org