Unverified Commit 18312cfc authored by Nicola Soranzo's avatar Nicola Soranzo
Browse files

Fix CondaSearch.get_json() to skip all header lines

Fix the following `test_conda_search` failure:

```
______________________________ test_conda_search _______________________________

    @external_dependency_management
    @skip_unless_executable("conda")
    def test_conda_search():
        t = CondaSearch("bioconda")
        search1 = t.get_json("asdfasdf")
        search2 = t.get_json("bioconductor-gosemsim")
        assert search1 == []
>       assert all(r["package"] == "bioconductor-gosemsim" for r in search2)
E       assert False
E        +  where False = all(<generator object test_conda_search.<locals>.<genexpr> at 0x7f5be7fc34a0>)

search1    = []
search2    = [{'build': 'Version', 'package': '#', 'version': 'Name'},
 {'build': '0', 'package': 'bioconductor-gosemsim', 'version': '1.28.2'},
 {'build': 'r3.3.1_0', 'package': 'bioconductor-gosemsim', 'version': '1.29.0'},
 {'build': 'r3.3.1_0', 'package': 'bioconductor-gosemsim', 'version': '1.30.3'},
 ...
 {'build': 'r43hf17093f_0', 'package': 'bioconductor-gosemsim', 'version': '2.28.0'},
 {'build': 'r43hf17093f_1', 'package': 'bioconductor-gosemsim', 'version': '2.28.0'},
 {'build': 'r44he5774e6_0', 'package': 'bioconductor-gosemsim', 'version': '2.32.0'}]
```
parent d550b77e
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -5,6 +5,10 @@ import json
import logging
import sys
import tempfile
from typing import (
    Dict,
    List,
)

import requests

@@ -123,7 +127,7 @@ class CondaSearch:
    def __init__(self, channel):
        self.channel = channel

    def get_json(self, search_string):
    def get_json(self, search_string) -> List[Dict[str, str]]:
        """
        Function takes search_string variable and returns results from the bioconda channel in JSON format

@@ -136,8 +140,15 @@ class CondaSearch:
        except Exception as e:
            logging.info(f"Search failed with: {e}")
            return []
        header_found = False
        lines_fields: List[List[str]] = []
        for line in raw_out.splitlines():
            if line.startswith("#"):
                header_found = True
            elif header_found:
                lines_fields.append(line.split())
        return [
            {"package": n.split()[0], "version": n.split()[1], "build": n.split()[2]} for n in raw_out.split("\n")[2:-1]
            {"package": line_fields[0], "version": line_fields[1], "build": line_fields[2]} for line_fields in lines_fields
        ]


+4 −4
Original line number Diff line number Diff line
@@ -25,10 +25,10 @@ def test_quay_search():
@skip_unless_executable("conda")
def test_conda_search():
    t = CondaSearch("bioconda")
    search1 = t.get_json("asdfasdf")
    search2 = t.get_json("bioconductor-gosemsim")
    assert search1 == []
    assert all(r["package"] == "bioconductor-gosemsim" for r in search2)
    search = t.get_json("asdfasdf")
    assert search == []
    search = t.get_json("bioconductor-gosemsim")
    assert all(r["package"] == "bioconductor-gosemsim" for r in search)


@external_dependency_management