GSoC 2019 [Collect build statistics]

Arjun Salyan arjun.salyan.che17 at itbhu.ac.in
Mon Apr 15 22:12:48 UTC 2019


Hi Mojca,

On Mon, Apr 15, 2019 at 9:46 PM Mojca Miklavec <mojca at macports.org> wrote:

> Given the current state of the app with sufficient complexity, I
> believe that it would be wise to introduce some unit tests to be able
> to extensively test what happens with data you import, and to prevent
> / detect any breakages in the future.
>

Thank you. Since, I am currently working on parsing of maintainers I began
testing from maintainers only. It helped me make significant improvements
to the code which extracted the maintainers ( added to the pull request  :
https://github.com/macports-gsoc/macports-gsoc-2019-webapp/pull/1 ).
[update: this file has further changed since I updated the pull request,
logic remains the same, just the JSON object structure has changed]

I ran the tests and got desired results. I will show the final code and
results in around 24 hours after I get done with my viva voce and extra
classes, but below I am discussing the approach. Sorry, if this is not the
right way or the presentation is not fine.

I created five ports:

   1. portA maintainers         {@github gmail.com:test1}
   2. portB maintainers         {@github gmail.com:test2}    SAME GITHUB,
   DIFFERENT EMAIL
   3. portC maintainers         {@newgithub gmail.com:test2}    SAME EMAIL,
   DIFFERENT GITHUB
   4. portD maintainers         {gmail.com:test2}    EMAIL REPEATED WITHOUT
   GITHUB
   5. portE maintainers         {@github}    GITHUB REPEATED WITHOUT EMAIL

I received 3 unique Github and Email pairs (according to the Logic[1] ) and
I am considering each as a different maintainer.
[
{
"github": "github",
"name": "test1",
"domain": "gmail.com"
},
{
"github": "github",
"name": "test2",
"domain": "gmail.com"
},
{
"name": "test2",
"domain": "gmail.com",
"github": "newgithub"
}
]

Now to each maintainer I added all those ports which had GitHub or Email or
both same as that of the unique maintainer.

[
    {
        "model": "ports.Maintainer",
        "pk": 0,
        "fields": {
            "github": "github",
            "name": "test1",
            "domain": "gmail.com",
            "ports": [
                [
                    "portA",
                    "portB",
                    "portD"
            ]
        }
    },
    {
        "model": "ports.Maintainer",
        "pk": 1,
        "fields": {
            "github": "github",
            "name": "test2",
            "domain": "gmail.com",
            "ports": [
                [
                    "portA",
                    "portB",
                    "portD",
                    "portC"
                    "portE"
            ]
        }
    },
    {
        "model": "ports.Maintainer",
        "pk": 2,
        "fields": {
            "name": "test2",
            "domain": "gmail.com",
            "github": "newgithub",
            "ports": [
                [
                    "portE",
                    "portB",
                    "portC"
           ]
        }
    }
]


 For querying we can now use email/ GitHub and show all the ports for all
the maintainers received.

This should not break because of any inconsistency in the maintainer
details. But there is one disadvantage- On the port-detail page, we will
now show x maintainers, if the same maintainer provided x different pairs
of GitHub and email. However this disadvantage might prove to be helpful in
getting rid of the inconsistencies.

Thank You

[1]
Currently I am using the following Logic for adding maintainers (comparing
with already parsed maintainers) :

   - If neither the email nor GitHub is repeated: CREATE NEW
   - If the email and GitHub both are repeated: SKIP
   - If the email is repeated and not the GitHub handle (provided) : CREATE
   NEW with inconsistency flag
   - If the GitHub handle is repeated and not the email address (provided)
   : CREATE NEW with inconsistency flag
   - If the Github handle is repeated and email is not provided: SKIP
   - If the email address is repeated and GitHub is not provided: SKIP
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macports.org/pipermail/macports-dev/attachments/20190416/287072ef/attachment-0001.html>


More information about the macports-dev mailing list