Example #1
0
 def setUp(self):
     self.tmp_dir = tempfile.TemporaryDirectory()
     with open(os.path.join(self.tmp_dir.name, "README"), "w") as f:
         f.write("line 1\n")
         f.write("line 2\n")
         f.write("line 3\n")
         f.write("line 4\n")
         f.write("line 5\n")
     self.repo = Repo(self.tmp_dir.name)
class TestSearch(unittest.TestCase):

    def setUp(self):
        self.tmp_dir = tempfile.TemporaryDirectory()
        with open(os.path.join(self.tmp_dir.name, "README"), "w") as f:
            f.write("line 1\n")
            f.write("line 2\n")
            f.write("line 3\n")
            f.write("line 4\n")
            f.write("line 5\n")
        self.repo = Repo(self.tmp_dir.name)

    def tearDown(self):
        self.tmp_dir.cleanup()

    def test_search_one_match(self):
        self.assertEqual(self._render_without_parts(self.repo.search("2")), {
            "matches": [
                {
                    "file": "README",
                    "row_first_match": 2,
                    "lines": [
                        {"row": 1},
                        {"row": 2},
                        {"row": 3},
                    ],
                },
            ]
        })

    def test_search_two_matches(self):
        self.assertEqual(self._render_without_parts(self.repo.search("1|5")), {
            "matches": [
                {
                    "file": "README",
                    "row_first_match": 1,
                    "lines": [
                        {"row": 1},
                        {"row": 2},
                        {"row": 4},
                        {"row": 5},
                    ],
                },
            ]
        })

    def _render_without_parts(self, search_result):
        rendered = search_result.render()
        for match in rendered["matches"]:
            for line in match["lines"]:
                del line["parts"]
        return rendered
Example #3
0
def file(request, project_slug):
    project = Project.objects.get(slug=project_slug)
    name = request.GET.get("name")
    highlight = request.GET.get("highlight", "")
    return JsonResponse(
        Repo(project.root).get_file(name).render_file(
            _get_annotations(project.root, name, highlight)))
 def setUp(self):
     self.tmp_dir = tempfile.TemporaryDirectory()
     with open(os.path.join(self.tmp_dir.name, "README"), "w") as f:
         f.write("line 1\n")
         f.write("line 2\n")
         f.write("line 3\n")
         f.write("line 4\n")
         f.write("line 5\n")
     self.repo = Repo(self.tmp_dir.name)
Example #5
0
def _get_highlight_annotations(root, name, highlight):
    if len(highlight.strip()) > 0:
        return Repo(root).search(highlight, name).get_annotations(name)
    return []
Example #6
0
def search(request, project_slug, term):
    project = Project.objects.get(slug=project_slug)
    return JsonResponse(Repo(project.root).search(term).render())
Example #7
0
class TestSearch(unittest.TestCase):
    def setUp(self):
        self.tmp_dir = tempfile.TemporaryDirectory()
        with open(os.path.join(self.tmp_dir.name, "README"), "w") as f:
            f.write("line 1\n")
            f.write("line 2\n")
            f.write("line 3\n")
            f.write("line 4\n")
            f.write("line 5\n")
        self.repo = Repo(self.tmp_dir.name)

    def tearDown(self):
        self.tmp_dir.cleanup()

    def test_search_one_match(self):
        self.assertEqual(
            self._render_without_parts(self.repo.search("2")), {
                "matches": [
                    {
                        "file": "README",
                        "row_first_match": 2,
                        "lines": [
                            {
                                "row": 1
                            },
                            {
                                "row": 2
                            },
                            {
                                "row": 3
                            },
                        ],
                    },
                ]
            })

    def test_search_two_matches(self):
        self.assertEqual(
            self._render_without_parts(self.repo.search("1|5")), {
                "matches": [
                    {
                        "file":
                        "README",
                        "row_first_match":
                        1,
                        "lines": [
                            {
                                "row": 1
                            },
                            {
                                "row": 2
                            },
                            {
                                "row": 4
                            },
                            {
                                "row": 5
                            },
                        ],
                    },
                ]
            })

    def _render_without_parts(self, search_result):
        rendered = search_result.render()
        for match in rendered["matches"]:
            for line in match["lines"]:
                del line["parts"]
        return rendered