Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 4 additions & 6 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
language: python

env:
- CASSANDRA_VERSION=21

python:
- 2.7
- CASSANDRA_VERSION=21 TOX_ENV=py27
- CASSANDRA_VERSION=21 TOX_ENV=py34

before_install:
- sudo echo "deb http://www.apache.org/dist/cassandra/debian ${CASSANDRA_VERSION}x main" | sudo tee -a /etc/apt/sources.list
Expand All @@ -26,7 +24,7 @@ before_install:
before_script: sleep 10

install:
- pip install -r requirements.txt --use-mirrors
- pip install tox

script:
- make test
- tox -e $TOX_ENV
6 changes: 5 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,2 +1,6 @@
test:
python -m unittest discover ./tests
python setup.py test

release:
python setup.py register -r pypi
python setup.py sdist upload -r pypi
8 changes: 4 additions & 4 deletions cqlsl/statements/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from insert import *
from select import *
from delete import *
from update import *
from .insert import *
from .select import *
from .delete import *
from .update import *
10 changes: 9 additions & 1 deletion cqlsl/statements/base.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,15 @@
import collections
from cqlsl.utils import sorted_kwargs

from cassandra.query import ValueSequence

from cqlsl.utils import sorted_kwargs


try:
basestring
except NameError:
basestring = str


class BaseStatement(object):
def __init__(self, table_name):
Expand Down
2 changes: 1 addition & 1 deletion cqlsl/statements/delete.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from itertools import chain
from cqlsl.utils import sorted_kwargs
from base import BaseStatement, WhereClauseMixin
from .base import BaseStatement, WhereClauseMixin


__all__ = ['delete']
Expand Down
2 changes: 1 addition & 1 deletion cqlsl/statements/insert.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from itertools import repeat
from cqlsl.utils import sorted_kwargs
from base import BaseStatement
from .base import BaseStatement


__all__ = ['insert']
Expand Down
2 changes: 1 addition & 1 deletion cqlsl/statements/select.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from base import BaseStatement, WhereClauseMixin
from .base import BaseStatement, WhereClauseMixin


__all__ = ['select']
Expand Down
2 changes: 1 addition & 1 deletion cqlsl/statements/update.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from itertools import chain
from cqlsl.utils import sorted_kwargs
from base import BaseStatement, WhereClauseMixin
from .base import BaseStatement, WhereClauseMixin


__all__ = ['update']
Expand Down
1 change: 0 additions & 1 deletion requirements.txt

This file was deleted.

2 changes: 2 additions & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,12 @@
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3.4",
"Topic :: Database :: Front-Ends",
"Operating System :: OS Independent",
],
packages=['cqlsl'],
include_package_data=True,
install_requires=['cassandra-driver >= 2.1.1'],
test_suite='tests',
)
6 changes: 6 additions & 0 deletions tests/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,9 @@ def setUpClass(cls):
logger = logging.getLogger('cqlsl')
logger.setLevel(logging.DEBUG)
logger.addHandler(logging.StreamHandler(sys.stdout))

def assertItemsEqual(self, *args, **kwargs):
if sys.version_info >= (3, 2):
return super(BaseTestCase, self).assertCountEqual(*args, **kwargs)
else:
return super(BaseTestCase, self).assertItemsEqual(*args, **kwargs)
4 changes: 2 additions & 2 deletions tests/integrations/base.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
import os
from cassandra.cluster import Cluster
from cqlsl.sessions import Session
from tests.base import BaseTestCase
from ..base import BaseTestCase


__all__ = ['BaseIntegrationTestCase']


class BaseIntegrationTestCase(BaseTestCase):
session = Session(
Cluster([os.environ.get('CQLSL_TEST_CLUSTER', 'localhost')])
Cluster([os.environ.get('CQLSL_TEST_CLUSTER', 'localhost')], protocol_version=2)
)

@classmethod
Expand Down
2 changes: 1 addition & 1 deletion tests/integrations/test_deletes.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from cqlsl.statements import delete
from base import BaseIntegrationTestCase
from .base import BaseIntegrationTestCase


__all__ = ['DeletesTest']
Expand Down
4 changes: 2 additions & 2 deletions tests/integrations/test_inserts.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# coding=utf-8
from uuid import uuid4
from cqlsl.statements import insert
from base import BaseIntegrationTestCase
from .base import BaseIntegrationTestCase


__all__ = ['InsertsTest']
Expand Down Expand Up @@ -62,4 +62,4 @@ def test_insert_list(self):
self.assertTypeRestored('test_list', ['a', 'b', 'c'])

def test_insert_set(self):
self.assertTypeRestored('test_set', {1, 2, 3})
self.assertTypeRestored('test_set', {1, 2, 3}, self.assertItemsEqual)
6 changes: 3 additions & 3 deletions tests/integrations/test_selects.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from cqlsl.statements import select
from base import BaseIntegrationTestCase
from .base import BaseIntegrationTestCase


__all__ = ['SelectsTest']
Expand Down Expand Up @@ -33,7 +33,7 @@ def assertTypeRestored(self, column, expected_value, special_assert=None):
self.assertEqual(1, len(rows))
self.assertEqual(1, len(rows[0].keys()))

restored_value = rows[0].values()[0]
restored_value = list(rows[0].values())[0]

if special_assert:
special_assert(expected_value, restored_value)
Expand All @@ -57,7 +57,7 @@ def test_select_list(self):
self.assertTypeRestored('test_list', ['a', 'b', 'c'])

def test_select_set(self):
self.assertTypeRestored('test_set', {1, 2, 3})
self.assertTypeRestored('test_set', {1, 2, 3}, self.assertItemsEqual)

def test_select_all(self):
self.session.execute("INSERT INTO select_stmt_test (test_id, test_text, test_int) VALUES (1, 'some text', 5)")
Expand Down
10 changes: 5 additions & 5 deletions tests/integrations/test_updates.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from cqlsl.statements import update
from base import BaseIntegrationTestCase
from .base import BaseIntegrationTestCase


__all__ = ['UpdatesTest']
Expand Down Expand Up @@ -54,18 +54,18 @@ def test_update_with_where(self):
def test_update_set_add(self):
self.session.execute("INSERT INTO update_stmt_test (test_id, test_set) VALUES (1, {'a'})")

self.assertEqual({'a'}, self.session.execute('SELECT test_set FROM update_stmt_test')[0].get('test_set'))
self.assertItemsEqual({'a'}, self.session.execute('SELECT test_set FROM update_stmt_test')[0].get('test_set'))
self.session.execute(update('update_stmt_test').set(test_set__add={'b'}).where(test_id=1))
self.assertEqual(
self.assertItemsEqual(
{'a', 'b'}, self.session.execute('SELECT test_set FROM update_stmt_test')[0].get('test_set')
)

def test_update_set_remove(self):
self.session.execute("INSERT INTO update_stmt_test (test_id, test_set) VALUES (1, {'a', 'b'})")

self.assertEqual({'a', 'b'}, self.session.execute('SELECT test_set FROM update_stmt_test')[0].get('test_set'))
self.assertItemsEqual({'a', 'b'}, self.session.execute('SELECT test_set FROM update_stmt_test')[0].get('test_set'))
self.session.execute(update('update_stmt_test').set(test_set__remove={'a'}).where(test_id=1))
self.assertEqual({'b'}, self.session.execute('SELECT test_set FROM update_stmt_test')[0].get('test_set'))
self.assertItemsEqual({'b'}, self.session.execute('SELECT test_set FROM update_stmt_test')[0].get('test_set'))

def test_update_dict_update(self):
self.session.execute(
Expand Down
7 changes: 5 additions & 2 deletions tests/units/test_statements.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from cassandra.encoder import ValueSequence
from cqlsl.statements import insert, delete, update, select
from tests.base import BaseTestCase
from ..base import BaseTestCase


__all__ = ['StatementsTest']
Expand Down Expand Up @@ -140,7 +140,10 @@ def test_update_dict_update(self):
stmt = update('test_table').set(some_dict__update={'a': 1, 'b': 2}).where(some_id=1)

self.assertEqual('UPDATE test_table SET some_dict[%s] = %s, some_dict[%s] = %s WHERE some_id = %s', stmt.query)
self.assertEqual(('a', 1, 'b', 2, 1), stmt.context)
try:
self.assertEqual(('a', 1, 'b', 2, 1), stmt.context)
except AssertionError:
self.assertEqual(('b', 2, 'a', 1, 1), stmt.context)

def test_update_list_prepend(self):
stmt = update('test_table').set(some_list__prepend=['a']).where(some_id=1)
Expand Down
5 changes: 5 additions & 0 deletions tox.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[tox]
envlist=py{27,34}

[testenv]
commands=python setup.py test