diff options
-rwxr-xr-x | sugar-network-client | 2 | ||||
-rw-r--r-- | sugar_network/client/__init__.py | 5 | ||||
-rw-r--r-- | sugar_network/client/bundle.py (renamed from sugar_network/zerosugar/bundle.py) | 2 | ||||
-rw-r--r-- | sugar_network/client/cache.py (renamed from sugar_network/zerosugar/cache.py) | 4 | ||||
-rw-r--r-- | sugar_network/client/clones.py (renamed from sugar_network/zerosugar/clones.py) | 4 | ||||
-rw-r--r-- | sugar_network/client/commands.py | 3 | ||||
-rw-r--r-- | sugar_network/client/injector.py (renamed from sugar_network/zerosugar/injector.py) | 9 | ||||
-rw-r--r-- | sugar_network/client/packagekit.py (renamed from sugar_network/zerosugar/packagekit.py) | 4 | ||||
-rw-r--r-- | sugar_network/client/solver.py (renamed from sugar_network/zerosugar/solver.py) | 16 | ||||
-rw-r--r-- | sugar_network/client/spec.py (renamed from sugar_network/zerosugar/spec.py) | 90 | ||||
-rw-r--r-- | sugar_network/resources/context.py | 4 | ||||
-rw-r--r-- | sugar_network/resources/implementation.py | 7 | ||||
-rw-r--r-- | sugar_network/toolkit/licenses.py (renamed from sugar_network/zerosugar/licenses.py) | 0 | ||||
-rw-r--r-- | sugar_network/toolkit/util.py | 77 | ||||
-rw-r--r-- | sugar_network/zerosugar/__init__.py | 14 | ||||
-rw-r--r-- | tests/__init__.py | 2 | ||||
-rw-r--r-- | tests/units/__main__.py | 1 | ||||
-rw-r--r-- | tests/units/client/__main__.py | 3 | ||||
-rwxr-xr-x | tests/units/client/clones.py (renamed from tests/units/zerosugar/clones.py) | 4 | ||||
-rwxr-xr-x | tests/units/client/commands.py | 3 | ||||
-rwxr-xr-x | tests/units/client/injector.py (renamed from tests/units/zerosugar/injector.py) | 3 | ||||
-rwxr-xr-x | tests/units/client/offline_commands.py | 3 | ||||
-rwxr-xr-x | tests/units/client/online_commands.py | 3 | ||||
-rwxr-xr-x | tests/units/client/spec.py (renamed from tests/units/zerosugar/spec.py) | 2 | ||||
-rw-r--r-- | tests/units/zerosugar/__init__.py | 9 | ||||
-rw-r--r-- | tests/units/zerosugar/__main__.py | 10 |
26 files changed, 120 insertions, 164 deletions
diff --git a/sugar-network-client b/sugar-network-client index befaa36..fbb1244 100755 --- a/sugar-network-client +++ b/sugar-network-client @@ -29,8 +29,8 @@ import sugar_network_webui as webui from sugar_network import db, toolkit, client, node from sugar_network.toolkit import sugar, mountpoints from sugar_network.toolkit.router import IPCRouter +from sugar_network.client import clones from sugar_network.client.commands import ClientCommands -from sugar_network.zerosugar import clones from sugar_network.node import stats_node, stats_user, slave from sugar_network.resources.volume import Volume from sugar_network.toolkit import Option diff --git a/sugar_network/client/__init__.py b/sugar_network/client/__init__.py index 3962971..f1593d1 100644 --- a/sugar_network/client/__init__.py +++ b/sugar_network/client/__init__.py @@ -107,11 +107,6 @@ def path(*args): return str(result) -def clones(*args, **kwargs): - import sugar_network.zerosugar.clones - return sugar_network.zerosugar.clones.walk(*args, **kwargs) - - def Client(url=None, sugar_auth=True, **session): from sugar_network.toolkit import http if url is None: diff --git a/sugar_network/zerosugar/bundle.py b/sugar_network/client/bundle.py index 06cee45..956619b 100644 --- a/sugar_network/zerosugar/bundle.py +++ b/sugar_network/client/bundle.py @@ -18,7 +18,7 @@ import tarfile import zipfile from os.path import join -from sugar_network.zerosugar.spec import Spec +from sugar_network.client.spec import Spec class BundleError(Exception): diff --git a/sugar_network/zerosugar/cache.py b/sugar_network/client/cache.py index 30038bf..082ac48 100644 --- a/sugar_network/zerosugar/cache.py +++ b/sugar_network/client/cache.py @@ -19,11 +19,11 @@ import logging from os.path import exists, join from sugar_network.client import Client, local_root -from sugar_network.zerosugar.bundle import Bundle +from sugar_network.client.bundle import Bundle from sugar_network.toolkit import BUFFER_SIZE, pipe, util -_logger = logging.getLogger('zerosugar.cache') +_logger = logging.getLogger('client.cache') def get(guid): diff --git a/sugar_network/zerosugar/clones.py b/sugar_network/client/clones.py index d4351f1..4156fb4 100644 --- a/sugar_network/zerosugar/clones.py +++ b/sugar_network/client/clones.py @@ -21,7 +21,7 @@ import logging from os.path import join, exists, lexists, relpath, dirname, basename, isdir from os.path import abspath, islink -from sugar_network.zerosugar.spec import Spec +from sugar_network.client.spec import Spec from sugar_network.toolkit.inotify import Inotify, \ IN_DELETE_SELF, IN_CREATE, IN_DELETE, IN_CLOSE_WRITE, \ IN_MOVED_TO, IN_MOVED_FROM @@ -29,7 +29,7 @@ from sugar_network import client from sugar_network.toolkit import coroutine, util, exception -_logger = logging.getLogger('zerosugar.clones') +_logger = logging.getLogger('client.clones') def walk(context): diff --git a/sugar_network/client/commands.py b/sugar_network/client/commands.py index 28d78db..545178c 100644 --- a/sugar_network/client/commands.py +++ b/sugar_network/client/commands.py @@ -21,8 +21,7 @@ from os.path import join, exists from sugar_network import db, client, node from sugar_network.toolkit import netlink, mountpoints, router from sugar_network.toolkit.router import Request, Router -from sugar_network.client import journal -from sugar_network.zerosugar import clones, injector +from sugar_network.client import journal, clones, injector from sugar_network.resources.volume import Volume, Commands from sugar_network.node.slave import PersonalCommands from sugar_network.toolkit import zeroconf, coroutine, util, exception, enforce diff --git a/sugar_network/zerosugar/injector.py b/sugar_network/client/injector.py index bea562f..badd321 100644 --- a/sugar_network/zerosugar/injector.py +++ b/sugar_network/client/injector.py @@ -20,8 +20,7 @@ import logging from os.path import join, exists, basename, dirname from sugar_network import client -from sugar_network.client import journal -from sugar_network.zerosugar import cache +from sugar_network.client import journal, cache from sugar_network.toolkit import pipe, lsb_release, util, sugar @@ -31,7 +30,7 @@ _PMS_PATHS = { 'Ubuntu': '/var/lib/dpkg/status', } -_logger = logging.getLogger('zerosugar.injector') +_logger = logging.getLogger('client.injector') _pms_path = _PMS_PATHS.get(lsb_release.distributor_id()) _mtime = None @@ -98,7 +97,7 @@ def _make(context): if to_install: pipe.trace('Install %s package(s)', ', '.join([i['name'] for i in to_install])) - from sugar_network.zerosugar import packagekit + from sugar_network.client import packagekit packagekit.install(to_install) for impl in solution: @@ -169,7 +168,7 @@ def _solve(context): pipe.trace('Reuse cached solution') return solution - from sugar_network.zerosugar import solver + from sugar_network.client import solver solution = solver.solve(context) _set_cached_solution(cached_path, solution) diff --git a/sugar_network/zerosugar/packagekit.py b/sugar_network/client/packagekit.py index f17ba57..6234b12 100644 --- a/sugar_network/zerosugar/packagekit.py +++ b/sugar_network/client/packagekit.py @@ -30,7 +30,7 @@ from sugar_network.toolkit import pipe, enforce _PK_CONFILE = '/etc/PackageKit/PackageKit.conf' -_logger = logging.getLogger('zerosugar.packagekit') +_logger = logging.getLogger('client.packagekit') _pk = None _pk_max_resolve = 100 @@ -164,7 +164,7 @@ class _Transaction(object): self.error_details = details def __package_cb(self, status, pk_id, summary): - from sugar_network.zerosugar import solver + from sugar_network.client import solver package_name, version, arch, __ = pk_id.split(';') clean_version = solver.try_cleanup_distro_version(version) diff --git a/sugar_network/zerosugar/solver.py b/sugar_network/client/solver.py index 6719179..afcf245 100644 --- a/sugar_network/zerosugar/solver.py +++ b/sugar_network/client/solver.py @@ -17,10 +17,8 @@ import sys import logging from os.path import isabs, join, dirname -from sugar_network.client import IPCClient -from sugar_network.toolkit import lsb_release, pipe, exception -from sugar_network.zerosugar import packagekit -from sugar_network.zerosugar.spec import parse_version +from sugar_network.client import IPCClient, packagekit +from sugar_network.toolkit import util, lsb_release, pipe, exception sys.path.insert(0, join(dirname(__file__), '..', 'lib', 'zeroinstall')) @@ -219,7 +217,7 @@ class _Feed(model.ZeroInstallFeed): top_package = packages[0] impl = _Implementation(self, self.context, None) - impl.version = parse_version(top_package['version']) + impl.version = util.parse_version(top_package['version']) impl.released = 0 impl.arch = '*-%s' % top_package['arch'] impl.upstream_stability = model.stability_levels['packaged'] @@ -233,7 +231,7 @@ class _Feed(model.ZeroInstallFeed): impl_id = release['guid'] impl = _Implementation(self, impl_id, None) - impl.version = parse_version(release['version']) + impl.version = util.parse_version(release['version']) impl.released = 0 impl.arch = release['arch'] impl.upstream_stability = model.stability_levels[release['stability']] @@ -259,7 +257,7 @@ class _Feed(model.ZeroInstallFeed): def implement_sugar(self, sugar_version): impl = _Implementation(self, self.context, None) - impl.version = parse_version(sugar_version) + impl.version = util.parse_version(sugar_version) impl.released = 0 impl.arch = '*-*' impl.upstream_stability = model.stability_levels['packaged'] @@ -284,8 +282,8 @@ class _Dependency(model.InterfaceDependency): for not_before, before in data.get('restrictions') or []: restriction = model.VersionRangeRestriction( - not_before=parse_version(not_before), - before=parse_version(before)) + not_before=util.parse_version(not_before), + before=util.parse_version(before)) self.restrictions.append(restriction) @property diff --git a/sugar_network/zerosugar/spec.py b/sugar_network/client/spec.py index 37d9e39..8ba87da 100644 --- a/sugar_network/zerosugar/spec.py +++ b/sugar_network/client/spec.py @@ -19,8 +19,8 @@ import logging from os.path import join, exists, dirname from ConfigParser import ConfigParser -from sugar_network.zerosugar.licenses import GOOD_LICENSES -from sugar_network.toolkit import exception, enforce +from sugar_network.toolkit.licenses import GOOD_LICENSES +from sugar_network.toolkit import util, enforce _LIST_SEPARATOR = ';' @@ -43,16 +43,6 @@ _FIELDS = { _ARCHES = ['all', 'any'] _STABILITIES = ('insecure', 'buggy', 'developer', 'testing', 'stable') -_VERSION_RE = re.compile('-([a-z]*)') -_VERSION_MOD_TO_VALUE = { - 'pre': -2, - 'rc': -1, - '': 0, - 'post': 1, - 'r': 1, - } -_VERSION_VALUE_TO_MOD = {} - _RESTRICTION_RE = re.compile('(>=|<|=)\\s*([0-9.]+)') _logger = logging.getLogger('sweets-recipe') @@ -208,7 +198,7 @@ class Spec(object): if not self['description']: self._fields['description'] = self['summary'] self._fields['version'] = \ - format_version(parse_version(self['version'])) + util.format_version(util.parse_version(self['version'])) if not self.archives: self.archives.append(_Archive(self._config, 'DEFAULT')) @@ -261,70 +251,6 @@ class Spec(object): self.archives.append(_Archive(self._config, section)) -def parse_version(version_string): - """Convert a version string to an internal representation. - - The parsed format can be compared quickly using the standard Python - functions. Adapted Zero Install version. - - :param version_string: - version in format supported by 0install - :returns: - array of arrays of integers - - """ - if version_string is None: - return None - - parts = _VERSION_RE.split(version_string) - if parts[-1] == '': - del parts[-1] # Ends with a modifier - else: - parts.append('') - enforce(parts, ValueError, 'Empty version string') - - length = len(parts) - try: - for x in range(0, length, 2): - part = parts[x] - if part: - parts[x] = [int(i) for i in parts[x].split('.')] - else: - parts[x] = [] # (because ''.split('.') == [''], not []) - for x in range(1, length, 2): - parts[x] = _VERSION_MOD_TO_VALUE[parts[x]] - return parts - except ValueError as error: - exception() - raise RuntimeError('Invalid version format in "%s": %s' % - (version_string, error)) - except KeyError as error: - raise RuntimeError('Invalid version modifier in "%s": %s' % - (version_string, error)) - - -def format_version(version): - """Convert internal version representation back to string.""" - if version is None: - return None - - if not _VERSION_VALUE_TO_MOD: - for mod, value in _VERSION_MOD_TO_VALUE.items(): - _VERSION_VALUE_TO_MOD[value] = mod - - version = version[:] - length = len(version) - - for x in range(0, length, 2): - version[x] = '.'.join([str(i) for i in version[x]]) - for x in range(1, length, 2): - version[x] = '-' + _VERSION_VALUE_TO_MOD[version[x]] - if version[-1] == '-': - del version[-1] - - return ''.join(version) - - class _Section(object): def __init__(self, config, section): @@ -422,14 +348,14 @@ def _parse_requires(requires): while len(parts) >= 3: if parts[0] == '>=': - not_before = format_version(parse_version(parts[1])) + not_before = util.format_version(util.parse_version(parts[1])) elif parts[0] == '<': - before = format_version(parse_version(parts[1])) + before = util.format_version(util.parse_version(parts[1])) elif parts[0] == '=': - not_before = format_version(parse_version(parts[1])) - before = parse_version(parts[1]) + not_before = util.format_version(util.parse_version(parts[1])) + before = util.parse_version(parts[1]) before[-2][-1] += 1 - before = format_version(before) + before = util.format_version(before) del parts[:3] enforce(not parts or not parts[0].strip(), diff --git a/sugar_network/resources/context.py b/sugar_network/resources/context.py index c917f0c..dcc45c5 100644 --- a/sugar_network/resources/context.py +++ b/sugar_network/resources/context.py @@ -19,8 +19,8 @@ from os.path import join from sugar_network import db, resources, static from sugar_network.resources.volume import Resource -from sugar_network.zerosugar import clones -from sugar_network.zerosugar.spec import Spec +from sugar_network.client import clones +from sugar_network.client.spec import Spec from sugar_network.node import obs from sugar_network.toolkit import coroutine, exception diff --git a/sugar_network/resources/implementation.py b/sugar_network/resources/implementation.py index fd190cc..1617b8c 100644 --- a/sugar_network/resources/implementation.py +++ b/sugar_network/resources/implementation.py @@ -18,14 +18,13 @@ import xapian from sugar_network import db, resources -from sugar_network.zerosugar.licenses import GOOD_LICENSES -from sugar_network.zerosugar.spec import parse_version from sugar_network.resources.volume import Resource -from sugar_network.toolkit import enforce +from sugar_network.toolkit.licenses import GOOD_LICENSES +from sugar_network.toolkit import util, enforce def _encode_version(version): - version = parse_version(version) + version = util.parse_version(version) # Convert to [(`version`, `modifier`)] version = zip(*([iter(version)] * 2)) major, modifier = version.pop(0) diff --git a/sugar_network/zerosugar/licenses.py b/sugar_network/toolkit/licenses.py index 5cfc39d..5cfc39d 100644 --- a/sugar_network/zerosugar/licenses.py +++ b/sugar_network/toolkit/licenses.py diff --git a/sugar_network/toolkit/util.py b/sugar_network/toolkit/util.py index c94d22f..889d7a4 100644 --- a/sugar_network/toolkit/util.py +++ b/sugar_network/toolkit/util.py @@ -16,6 +16,7 @@ """Swiss knife module.""" import os +import re import json import logging import hashlib @@ -24,9 +25,19 @@ import collections from os.path import exists, join, islink, isdir, dirname, basename, abspath from os.path import lexists, isfile -from sugar_network.toolkit import cachedir, enforce +from sugar_network.toolkit import cachedir, exception, enforce +_VERSION_RE = re.compile('-([a-z]*)') +_VERSION_MOD_TO_VALUE = { + 'pre': -2, + 'rc': -1, + '': 0, + 'post': 1, + 'r': 1, + } +_VERSION_VALUE_TO_MOD = {} + _logger = logging.getLogger('toolkit.util') @@ -58,6 +69,70 @@ def init_logging(debug_level): self._log(8, message, args, **kwargs) +def parse_version(version_string): + """Convert a version string to an internal representation. + + The parsed format can be compared quickly using the standard Python + functions. Adapted Zero Install version. + + :param version_string: + version in format supported by 0install + :returns: + array of arrays of integers + + """ + if version_string is None: + return None + + parts = _VERSION_RE.split(version_string) + if parts[-1] == '': + del parts[-1] # Ends with a modifier + else: + parts.append('') + enforce(parts, ValueError, 'Empty version string') + + length = len(parts) + try: + for x in range(0, length, 2): + part = parts[x] + if part: + parts[x] = [int(i) for i in parts[x].split('.')] + else: + parts[x] = [] # (because ''.split('.') == [''], not []) + for x in range(1, length, 2): + parts[x] = _VERSION_MOD_TO_VALUE[parts[x]] + return parts + except ValueError as error: + exception() + raise RuntimeError('Invalid version format in "%s": %s' % + (version_string, error)) + except KeyError as error: + raise RuntimeError('Invalid version modifier in "%s": %s' % + (version_string, error)) + + +def format_version(version): + """Convert internal version representation back to string.""" + if version is None: + return None + + if not _VERSION_VALUE_TO_MOD: + for mod, value in _VERSION_MOD_TO_VALUE.items(): + _VERSION_VALUE_TO_MOD[value] = mod + + version = version[:] + length = len(version) + + for x in range(0, length, 2): + version[x] = '.'.join([str(i) for i in version[x]]) + for x in range(1, length, 2): + version[x] = '-' + _VERSION_VALUE_TO_MOD[version[x]] + if version[-1] == '-': + del version[-1] + + return ''.join(version) + + def readline(stream, limit=None): line = bytearray() while limit is None or len(line) < limit: diff --git a/sugar_network/zerosugar/__init__.py b/sugar_network/zerosugar/__init__.py deleted file mode 100644 index 63b8b6e..0000000 --- a/sugar_network/zerosugar/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright (C) 2010-2012 Aleksey Lim -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. diff --git a/tests/__init__.py b/tests/__init__.py index e3827ba..0a6cfbc 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -21,7 +21,7 @@ from sugar_network.client import journal from sugar_network.client.commands import ClientCommands from sugar_network import db, client, node, toolkit from sugar_network.db import env -from sugar_network.zerosugar import injector, solver +from sugar_network.client import injector, solver from sugar_network.resources.user import User from sugar_network.resources.context import Context from sugar_network.resources.implementation import Implementation diff --git a/tests/units/__main__.py b/tests/units/__main__.py index 105c117..22664cb 100644 --- a/tests/units/__main__.py +++ b/tests/units/__main__.py @@ -6,7 +6,6 @@ from toolkit.__main__ import * from db.__main__ import * from node.__main__ import * from resources.__main__ import * -from zerosugar.__main__ import * from client.__main__ import * if __name__ == '__main__': diff --git a/tests/units/client/__main__.py b/tests/units/client/__main__.py index 5b47d30..64b37b7 100644 --- a/tests/units/client/__main__.py +++ b/tests/units/client/__main__.py @@ -2,11 +2,14 @@ from __init__ import tests +from clones import * from commands import * +from injector import * from journal import * from offline_commands import * from online_commands import * from server_commands import * +from spec import * if __name__ == '__main__': tests.main() diff --git a/tests/units/zerosugar/clones.py b/tests/units/client/clones.py index 58a163b..d02fb48 100755 --- a/tests/units/zerosugar/clones.py +++ b/tests/units/client/clones.py @@ -10,12 +10,12 @@ from __init__ import tests from sugar_network.resources.user import User from sugar_network.resources.context import Context -from sugar_network.zerosugar import clones +from sugar_network.client import clones from sugar_network.toolkit import coroutine, util, sugar from sugar_network.resources.volume import Volume -class ImplementationsTest(tests.Test): +class CloneTest(tests.Test): def setUp(self): tests.Test.setUp(self) diff --git a/tests/units/client/commands.py b/tests/units/client/commands.py index 0b93e11..c4b7b7d 100755 --- a/tests/units/client/commands.py +++ b/tests/units/client/commands.py @@ -4,9 +4,8 @@ from __init__ import tests from sugar_network import db, client -from sugar_network.client import journal +from sugar_network.client import journal, injector from sugar_network.client.commands import ClientCommands -from sugar_network.zerosugar import injector from sugar_network.resources.volume import Volume from sugar_network.toolkit.router import IPCRouter from sugar_network.toolkit import coroutine diff --git a/tests/units/zerosugar/injector.py b/tests/units/client/injector.py index 67771fe..d15ec59 100755 --- a/tests/units/zerosugar/injector.py +++ b/tests/units/client/injector.py @@ -19,8 +19,7 @@ from sugar_network.node import obs from sugar_network.resources.user import User from sugar_network.resources.context import Context from sugar_network.resources.implementation import Implementation -from sugar_network.zerosugar import packagekit, injector, clones, solver -from sugar_network.client import IPCClient +from sugar_network.client import IPCClient, packagekit, injector, clones, solver from sugar_network import client as local diff --git a/tests/units/client/offline_commands.py b/tests/units/client/offline_commands.py index decf88d..4fb3a17 100755 --- a/tests/units/client/offline_commands.py +++ b/tests/units/client/offline_commands.py @@ -6,11 +6,10 @@ from os.path import exists from __init__ import tests, src_root from sugar_network import client -from sugar_network.client import IPCClient +from sugar_network.client import IPCClient, clones from sugar_network.client.commands import ClientCommands from sugar_network.toolkit.router import IPCRouter from sugar_network.resources.volume import Volume -from sugar_network.zerosugar import clones from sugar_network.toolkit import coroutine diff --git a/tests/units/client/online_commands.py b/tests/units/client/online_commands.py index 2bd2944..69c77c2 100755 --- a/tests/units/client/online_commands.py +++ b/tests/units/client/online_commands.py @@ -8,8 +8,7 @@ from os.path import exists from __init__ import tests, src_root from sugar_network import client, db -from sugar_network.client import IPCClient, journal -from sugar_network.zerosugar import clones, injector +from sugar_network.client import IPCClient, journal, clones, injector from sugar_network.toolkit import coroutine from sugar_network.toolkit.router import Request, Redirect from sugar_network.client.commands import ClientCommands diff --git a/tests/units/zerosugar/spec.py b/tests/units/client/spec.py index 1a3745b..a9b4aae 100755 --- a/tests/units/zerosugar/spec.py +++ b/tests/units/client/spec.py @@ -5,7 +5,7 @@ from cStringIO import StringIO from __init__ import tests -from sugar_network.zerosugar import spec +from sugar_network.client import spec class SpecTest(tests.Test): diff --git a/tests/units/zerosugar/__init__.py b/tests/units/zerosugar/__init__.py deleted file mode 100644 index 345c327..0000000 --- a/tests/units/zerosugar/__init__.py +++ /dev/null @@ -1,9 +0,0 @@ -# sugar-lint: disable - -import sys -from os.path import dirname, join, abspath - -src_root = abspath(join(dirname(__file__), '..', '..', '..')) -sys.path.insert(0, src_root) - -import tests diff --git a/tests/units/zerosugar/__main__.py b/tests/units/zerosugar/__main__.py deleted file mode 100644 index feb487f..0000000 --- a/tests/units/zerosugar/__main__.py +++ /dev/null @@ -1,10 +0,0 @@ -# sugar-lint: disable - -from __init__ import tests - -from clones import * -from injector import * -from spec import * - -if __name__ == '__main__': - tests.main() |