* [gentoo-commits] proj/g-sorcery:master commit in: g_elpa/, tests/
@ 2013-07-02 8:39 Jauhien Piatlicki
0 siblings, 0 replies; 3+ messages in thread
From: Jauhien Piatlicki @ 2013-07-02 8:39 UTC (permalink / raw
To: gentoo-commits
commit: d4797acf20d73a5564e9eae78c9804e89f49ca2b
Author: Jauhien Piatlicki (jauhien) <piatlicki <AT> gmail <DOT> com>
AuthorDate: Tue Jul 2 08:40:34 2013 +0000
Commit: Jauhien Piatlicki <piatlicki <AT> gmail <DOT> com>
CommitDate: Tue Jul 2 08:40:34 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/g-sorcery.git;a=commit;h=d4797acf
g_elpa/elpa_db: initial commit
---
g_elpa/elpa_db.py | 35 +++++++++++++++++++++++++++++++++++
tests/test_elpa_db.py | 32 ++++++++++++++++++++++++++++++++
2 files changed, 67 insertions(+)
diff --git a/g_elpa/elpa_db.py b/g_elpa/elpa_db.py
new file mode 100644
index 0000000..e25ac60
--- /dev/null
+++ b/g_elpa/elpa_db.py
@@ -0,0 +1,35 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+"""
+ elpa_db.py
+ ~~~~~~~~~~
+
+ ELPA package database
+
+ :copyright: (c) 2013 by Jauhien Piatlicki
+ :license: GPL-2, see LICENSE for more details.
+"""
+
+import os, tempfile, urllib.parse
+
+from g_sorcery.package_db import PackageDB
+from g_sorcery.fileutils import wget
+
+class ElpaDB(PackageDB):
+ def __init__(self, directory, repo_uri="", db_uri=""):
+ super().__init__(directory, repo_uri, db_uri)
+
+ def generate_tree(self):
+ tempdir = tempfile.TemporaryDirectory()
+
+ ac_uri = urllib.parse.urljoin(self.repo_uri, 'archive-contents')
+ wget(ac_uri, tempdir.name)
+
+ os.system('ls -l ' + tempdir.name)
+ os.system('less ' + tempdir.name + '/archive-contents')
+
+ del tempdir
+
+ def get_parser(self):
+ pass
diff --git a/tests/test_elpa_db.py b/tests/test_elpa_db.py
new file mode 100644
index 0000000..dfbe34a
--- /dev/null
+++ b/tests/test_elpa_db.py
@@ -0,0 +1,32 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+"""
+ test_elpa_db.py
+ ~~~~~~~~~~~~~~~
+
+ ELPA package database test suite
+
+ :copyright: (c) 2013 by Jauhien Piatlicki
+ :license: GPL-2, see LICENSE for more details.
+"""
+
+import http.server, tempfile, threading, unittest
+
+from g_elpa import elpa_db
+
+class TestElpaDB(unittest.TestCase):
+ def setUp(self):
+ self.tempdir = tempfile.TemporaryDirectory()
+
+ def tearDown(self):
+ del self.tempdir
+
+ def test_generate(self):
+ edb = elpa_db.ElpaDB(self.tempdir.name, repo_uri = 'http://elpa.gnu.org/packages/')
+ edb.generate_tree()
+
+def suite():
+ suite = unittest.TestSuite()
+ suite.addTest(TestElpaDB('test_generate'))
+ return suite
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [gentoo-commits] proj/g-sorcery:master commit in: g_elpa/, tests/
@ 2013-07-02 11:29 Jauhien Piatlicki
0 siblings, 0 replies; 3+ messages in thread
From: Jauhien Piatlicki @ 2013-07-02 11:29 UTC (permalink / raw
To: gentoo-commits
commit: 127764e5bca1197fa6e4fabcf0b63990ee964126
Author: Jauhien Piatlicki (jauhien) <piatlicki <AT> gmail <DOT> com>
AuthorDate: Tue Jul 2 11:30:58 2013 +0000
Commit: Jauhien Piatlicki <piatlicki <AT> gmail <DOT> com>
CommitDate: Tue Jul 2 11:30:58 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/g-sorcery.git;a=commit;h=127764e5
g_elpa/elpa_db: generate_tree
---
g_elpa/elpa_db.py | 46 ++++++++++++++++++++----
tests/test_elpa_db.py | 99 +++++++++++++++++++++++++++++++++++++++++++++++++--
2 files changed, 135 insertions(+), 10 deletions(-)
diff --git a/g_elpa/elpa_db.py b/g_elpa/elpa_db.py
index e25ac60..f4d838d 100644
--- a/g_elpa/elpa_db.py
+++ b/g_elpa/elpa_db.py
@@ -13,8 +13,11 @@
import os, tempfile, urllib.parse
-from g_sorcery.package_db import PackageDB
+import sexpdata
+
+from g_sorcery.package_db import Package, PackageDB
from g_sorcery.fileutils import wget
+from g_sorcery.exceptions import SyncError
class ElpaDB(PackageDB):
def __init__(self, directory, repo_uri="", db_uri=""):
@@ -24,12 +27,41 @@ class ElpaDB(PackageDB):
tempdir = tempfile.TemporaryDirectory()
ac_uri = urllib.parse.urljoin(self.repo_uri, 'archive-contents')
- wget(ac_uri, tempdir.name)
+ if wget(ac_uri, tempdir.name):
+ raise SyncError('sync failed: ' + self.repo_uri)
+
+ try:
+ with open(os.path.join(tempdir.name, 'archive-contents')) as f:
+ archive_contents = sexpdata.load(f)
+ except Exception as e:
+ raise SyncError('sync failed: ' + self.repo_uri + ': ' + str(e))
- os.system('ls -l ' + tempdir.name)
- os.system('less ' + tempdir.name + '/archive-contents')
-
del tempdir
+
+ if sexpdata.car(archive_contents) != 1:
+ raise SyncError('sync failed: ' + self.repo_uri + ' bad archive contents format')
- def get_parser(self):
- pass
+ for entry in sexpdata.cdr(archive_contents):
+ desc = entry[2].value()
+ pkg = self._s_get_package(entry[0], desc[0])
+ source_type = desc[3].value()
+ description = desc[2]
+ deps = desc[1]
+ dependencies = []
+ for dep in deps:
+ dep_pkg = self._s_get_package(dep[0], dep[1])
+ dependencies.append(dep_pkg)
+
+ properties = {'source_type' : source_type,
+ 'description' : description,
+ 'depend' : dependencies,
+ 'rdepend' : dependencies,
+ }
+ self.add_category('app-emacs')
+ self.add_package(pkg, properties)
+
+
+ def _s_get_package(self, name, version):
+ category = 'app-emacs'
+ version = '.'.join(map(str, version))
+ return Package(category, name.value(), version)
diff --git a/tests/test_elpa_db.py b/tests/test_elpa_db.py
index dfbe34a..97ce4e2 100644
--- a/tests/test_elpa_db.py
+++ b/tests/test_elpa_db.py
@@ -11,10 +11,14 @@
:license: GPL-2, see LICENSE for more details.
"""
-import http.server, tempfile, threading, unittest
+import http.server, os, tempfile, threading, unittest
from g_elpa import elpa_db
+from g_sorcery import exceptions, package_db
+
+from tests.server import Server
+
class TestElpaDB(unittest.TestCase):
def setUp(self):
self.tempdir = tempfile.TemporaryDirectory()
@@ -23,8 +27,97 @@ class TestElpaDB(unittest.TestCase):
del self.tempdir
def test_generate(self):
- edb = elpa_db.ElpaDB(self.tempdir.name, repo_uri = 'http://elpa.gnu.org/packages/')
- edb.generate_tree()
+ prev = os.getcwd()
+ os.chdir(self.tempdir.name)
+ edb = elpa_db.ElpaDB(os.path.join(self.tempdir.name, 'db'),
+ repo_uri = 'http://127.0.0.1:8080')
+ self.assertRaises(exceptions.SyncError, edb.generate)
+
+ packages = [['ack', [1, 2],
+ "Interface to ack-like source code search tools",
+ "tar",
+ []
+ ],
+ ['dict-tree', [0, 12, 8],
+ "Dictionary data structure",
+ "tar",
+ [['trie', [0, 2, 5]],
+ ['tNFA', [0, 1, 1]],
+ ['heap', [0, 3]]]
+ ],
+ ['tNFA', [0, 1, 1],
+ "Tagged non-deterministic finite-state automata",
+ "single",
+ [['queue', [0, 1]]]
+ ],
+ ['trie', [0, 2, 6],
+ "Trie data structure",
+ "single",
+ [['tNFA', [0, 1, 1]],
+ ['queue', [0, 1]]]
+ ],
+ ['heap', [0, 3],
+ "Heap (a.k.a. priority queue) data structure",
+ "single",
+ []
+ ],
+ ['queue', [0, 1],
+ "Queue data structure",
+ "single",
+ []
+ ]
+ ]
+
+ archive_contents = "(1"
+ for pkg in packages:
+ archive_contents += "\n(" + pkg[0] + ' . [('
+ for v in pkg[1]:
+ archive_contents += ' ' + str(v)
+ archive_contents += ')\n'
+ if pkg[4]:
+ archive_contents += '('
+ for p in pkg[4]:
+ archive_contents += '(' + p[0] + ' ('
+ for v in p[1]:
+ archive_contents += ' ' + str(v)
+ archive_contents += '))\n'
+ archive_contents += ')'
+ else:
+ archive_contents += 'nil'
+ archive_contents += '\n "' + pkg[2] + '" ' + pkg[3] + '])'
+ archive_contents += ')'
+
+ with open(os.path.join(self.tempdir.name, 'archive-contents'), 'w') as f:
+ f.write(archive_contents)
+
+ server = Server()
+ server.start()
+
+ edb.generate()
+
+ for pkg in packages:
+ package = package_db.Package('app-emacs',
+ pkg[0],
+ '.'.join(map(str, pkg[1])))
+ description = edb.get_package_description(package)
+ self.assertEqual(description['source_type'], pkg[3])
+ self.assertEqual(description['description'], pkg[2])
+ deps = []
+ for d in pkg[4]:
+ deps.append(package_db.Package('app-emacs',
+ d[0],
+ '.'.join(map(str, d[1]))))
+
+ for ds in (description['depend'], description['rdepend']):
+ for d in ds:
+ self.assertTrue(d in deps)
+ for d in deps:
+ self.assertTrue(d in ds)
+
+ server.shutdown()
+ server.join()
+
+ os.chdir(prev)
def suite():
suite = unittest.TestSuite()
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [gentoo-commits] proj/g-sorcery:master commit in: g_elpa/, tests/
@ 2013-07-02 14:48 Jauhien Piatlicki
0 siblings, 0 replies; 3+ messages in thread
From: Jauhien Piatlicki @ 2013-07-02 14:48 UTC (permalink / raw
To: gentoo-commits
commit: 1c6004894b1ecd4397791f09f5b9c0d4d7138809
Author: Jauhien Piatlicki (jauhien) <piatlicki <AT> gmail <DOT> com>
AuthorDate: Tue Jul 2 14:50:11 2013 +0000
Commit: Jauhien Piatlicki <piatlicki <AT> gmail <DOT> com>
CommitDate: Tue Jul 2 14:50:11 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/g-sorcery.git;a=commit;h=1c600489
py2k: urljoin
---
g_elpa/elpa_db.py | 11 ++++++++---
tests/test_elpa_db.py | 2 +-
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/g_elpa/elpa_db.py b/g_elpa/elpa_db.py
index 87e7095..51294ea 100644
--- a/g_elpa/elpa_db.py
+++ b/g_elpa/elpa_db.py
@@ -11,11 +11,16 @@
:license: GPL-2, see LICENSE for more details.
"""
-import os, tempfile, urllib.parse
+import os
import sexpdata
-from g_sorcery.compatibility import TemporaryDirectory
+from g_sorcery.compatibility import py2k, TemporaryDirectory
+
+if py2k:
+ from urlparse import urljoin
+else:
+ from urllib.parse import urljoin
from g_sorcery.package_db import Package, PackageDB
from g_sorcery.fileutils import wget
@@ -28,7 +33,7 @@ class ElpaDB(PackageDB):
def generate_tree(self):
tempdir = TemporaryDirectory()
- ac_uri = urllib.parse.urljoin(self.repo_uri, 'archive-contents')
+ ac_uri = urljoin(self.repo_uri, 'archive-contents')
if wget(ac_uri, tempdir.name):
raise SyncError('sync failed: ' + self.repo_uri)
diff --git a/tests/test_elpa_db.py b/tests/test_elpa_db.py
index 874ee96..1ba99c7 100644
--- a/tests/test_elpa_db.py
+++ b/tests/test_elpa_db.py
@@ -11,7 +11,7 @@
:license: GPL-2, see LICENSE for more details.
"""
-import http.server, os, tempfile, threading, unittest
+import os, unittest
from g_elpa import elpa_db
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2013-07-02 14:49 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-07-02 14:48 [gentoo-commits] proj/g-sorcery:master commit in: g_elpa/, tests/ Jauhien Piatlicki
-- strict thread matches above, loose matches on Subject: below --
2013-07-02 11:29 Jauhien Piatlicki
2013-07-02 8:39 Jauhien Piatlicki
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox