Skip to content
This repository was archived by the owner on Jan 1, 2021. It is now read-only.
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
9 changes: 9 additions & 0 deletions .travis.yml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
language: python
python:
- "2.7"
- "3.4"
- "3.5"
- "3.6"
- "nightly"
script:
- python setup.py test
11 changes: 6 additions & 5 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -26,10 +26,10 @@ Installation

$ easy_install CoffeeScript

coffee-script.js
coffeescript.js
----------------

The latest version of coffee-script.js (the script for browser
The latest version of coffeescript.js (the script for browser
\<script type="text/coffeescript"\> tags) can be download from
<http://coffeescript.org/extras/coffee-script.js>

Expand All@@ -38,12 +38,13 @@ License

Released under the MIT license. See LICENSE for details.

You can download current version of coffee-script.js from
<http://coffeescript.org/extras/coffee-script.js>

Changes
-------

### 2.0.0

* Updated coffeescript.js to v2.0.0.

### 1.1.2

* Updated coffee-script.js to v1.10.0.
Expand Down
4 changes: 2 additions & 2 deletions coffeescript/__init__.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -34,7 +34,7 @@
# On the other hand, it is impossible that `from coffeescript import __version__`
# in spite of a dependency on execjs.
# i.e. the import in setup.py fails if execjs has not been installed yet.
__version__ = str("1.1.2")
__version__ = str("2.0.0")


__all__ = str('''
Expand DownExpand Up@@ -116,7 +116,7 @@ def get_compiler_script():
which is used in coffeescript.compile() and coffeescript.compile_file()
'''
from os.path import dirname, join
filename = join(dirname(__file__), 'coffee-script.js')
filename = join(dirname(__file__), 'coffeescript.js')
with io.open(filename, encoding='utf8') as fp:
return fp.read()

Expand Down
12 changes: 0 additions & 12 deletions coffeescript/coffee-script.js

This file was deleted.

8 changes: 8 additions & 0 deletions coffeescript/coffeescript.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion setup.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -9,7 +9,7 @@

setup(
name='CoffeeScript',
version='1.1.2',
version='2.0.0',
author='OMOTO Kenji',
description='A bridge to the JS CoffeeScript compiler',

Expand Down
80 changes: 28 additions & 52 deletions test_coffeescript.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -42,21 +42,7 @@

class CoffeeScriptTest(unittest.TestCase):
def setUp(self):
self.runtimes = list(execjs.available_runtimes().values())

self.encodings = "shift-jis utf-8 euc-jp".split()
self.compilers = []
self.compilers.append(coffeescript) # default compiler

from os.path import join, dirname
script_path = join(dirname(coffeescript.__file__), "coffee-script.js")
with io.open(script_path) as fp:
compiler_script = fp.read()

for runtime in self.runtimes:
self.compilers.append(
coffeescript.Compiler(compiler_script, runtime))


def assertExprsSuccess(self, ctx):
self.assertEqual(ctx.call("add", 1, 2), 3)
Expand All@@ -72,39 +58,29 @@ def assertExprsFail(self, ctx):
ctx.eval("helloworld")

def test_compile(self):
for compiler, runtime in product(self.compilers, self.runtimes):
compile = compiler.compile

# test bare=True
jscode = compile(coffee_code, bare=True)
ctx = runtime.compile(jscode)
self.assertExprsSuccess(ctx)

# test bare=False
jscode = compile(coffee_code, bare=False)
ctx = runtime.compile(jscode)
self.assertExprsFail(ctx)

def combinations_for_compile_file(self):
return product(
self.compilers,
self.encodings,
self.runtimes,
)

def assert_compile_file_success(self, compiler, runtime, filename, encoding, bare):
jscode = compiler.compile_file(filename, encoding=encoding, bare=bare)
ctx = runtime.compile(jscode)
# test bare=True
jscode = coffeescript.compile(coffee_code, bare=True)
ctx = execjs.compile(jscode)
self.assertExprsSuccess(ctx)

# test bare=False
jscode = coffeescript.compile(coffee_code, bare=False)
ctx = execjs.compile(jscode)
self.assertExprsFail(ctx)

def assert_compile_file_success(self, filename, encoding, bare):
jscode = coffeescript.compile_file(filename, encoding=encoding, bare=bare)
ctx = execjs.compile(jscode)
self.assertExprsSuccess(ctx)

def assert_compile_file_fail(self, compiler, runtime, filename, encoding, bare):
jscode = compiler.compile_file(filename, encoding=encoding, bare=bare)
ctx = runtime.compile(jscode)
def assert_compile_file_fail(self, filename, encoding, bare):
jscode = coffeescript.compile_file(filename, encoding=encoding, bare=bare)
ctx = execjs.compile(jscode)
self.assertExprsFail(ctx)

def assert_compile_file_decode_error(self, compiler, runtime, filename, encoding, bare):
def assert_compile_file_decode_error(self, filename, encoding, bare):
with self.assertRaises(UnicodeDecodeError):
compiler.compile_file(filename, encoding=encoding, bare=bare)
coffeescript.compile_file(filename, encoding=encoding, bare=bare)

def write_temp_files(self, strings, encoding):
paths = []
Expand All@@ -121,34 +97,34 @@ def remove_files(self, paths):
os.remove(p)

def test_compile_files(self):
for compiler, encoding, runtime in self.combinations_for_compile_file():
for encodingin self.encodings:
paths = self.write_temp_files([coffee_code], encoding)
try:
filename = paths[0]

self.assert_compile_file_success(compiler, runtime, filename, encoding, True)
self.assert_compile_file_fail(compiler, runtime, filename, encoding, False)
self.assert_compile_file_success(filename, encoding, True)
self.assert_compile_file_fail(filename, encoding, False)
for wrong_encoding in set(self.encodings) - set([encoding]):
self.assert_compile_file_decode_error(
compiler, runtime, filename, wrong_encoding, True)
filename, wrong_encoding, True)
self.assert_compile_file_decode_error(
compiler, runtime, filename, wrong_encoding, False)
filename, wrong_encoding, False)
finally:
self.remove_files(paths)

def test_compile_splitted_files(self):
for compiler, encoding, runtime in self.combinations_for_compile_file():
for encodingin self.encodings:
paths = self.write_temp_files(splitted_coffee_code, encoding)
try:
filename = paths

self.assert_compile_file_success(compiler, runtime, filename, encoding, True)
self.assert_compile_file_fail(compiler, runtime, filename, encoding, False)
self.assert_compile_file_success(filename, encoding, True)
self.assert_compile_file_fail(filename, encoding, False)
for wrong_encoding in set(self.encodings) - set([encoding]):
self.assert_compile_file_decode_error(
compiler, runtime, filename, wrong_encoding, True)
filename, wrong_encoding, True)
self.assert_compile_file_decode_error(
compiler, runtime, filename, wrong_encoding, False)
filename, wrong_encoding, False)
finally:
self.remove_files(paths)

Expand Down
2 changes: 1 addition & 1 deletion tox.ini
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
[tox]
envlist = py27, py32, py33, py34
envlist = py27, py34, py35, py36

[testenv]
deps=PyExecJS
Expand Down