This is mainly intended to support jasmine-browser-runner, which will load a script that configures the env in between the two boot files (boot0.js and boot1.js). The single-file boot.js is retained for now but will be removed in a future release.
95 lines
3.1 KiB
Python
95 lines
3.1 KiB
Python
import pkg_resources
|
|
import os
|
|
|
|
if 'SUPPRESS_JASMINE_DEPRECATION' not in os.environ:
|
|
print('DEPRECATION WARNING:\n' +
|
|
'\n' +
|
|
'The Jasmine packages for Python are deprecated. There will be no further\n' +
|
|
'releases after the end of the Jasmine 3.x series. We recommend migrating to the\n' +
|
|
'following options:\n' +
|
|
'\n' +
|
|
'* jasmine-browser-runner (<https://github.com/jasmine/jasmine-browser>,\n' +
|
|
' `npm install jasmine-browser-runner`) to run specs in browsers, including\n' +
|
|
' headless Chrome and Saucelabs. This is the most direct replacement for the\n' +
|
|
' jasmine server` and `jasmine ci` commands provided by the `jasmine` Python\n' +
|
|
' package.\n' +
|
|
'* The jasmine npm package (<https://github.com/jasmine/jasmine-npm>,\n' +
|
|
' `npm install jasmine`) to run specs under Node.js.\n' +
|
|
'* The standalone distribution from the latest Jasmine release\n' +
|
|
' <https://github.com/jasmine/jasmine/releases> to run specs in browsers with\n' +
|
|
' no additional tools.\n' +
|
|
'* The jasmine-core npm package (`npm install jasmine-core`) if all you need is\n' +
|
|
' the Jasmine assets. This is the direct equivalent of the jasmine-core Python\n' +
|
|
' package.\n' +
|
|
'\n' +
|
|
'Except for the standalone distribution, all of the above are distributed through\n' +
|
|
'npm.\n' +
|
|
'\n' +
|
|
'To prevent this message from appearing, set the SUPPRESS_JASMINE_DEPRECATION\n' +
|
|
'environment variable.\n')
|
|
|
|
|
|
try:
|
|
from collections import OrderedDict
|
|
except ImportError:
|
|
from ordereddict import OrderedDict
|
|
|
|
class Core(object):
|
|
@classmethod
|
|
def js_package(cls):
|
|
return __package__
|
|
|
|
@classmethod
|
|
def css_package(cls):
|
|
return __package__
|
|
|
|
@classmethod
|
|
def image_package(cls):
|
|
return __package__ + ".images"
|
|
|
|
@classmethod
|
|
def js_files(cls):
|
|
js_files = sorted(list(filter(lambda x: '.js' in x, pkg_resources.resource_listdir(cls.js_package(), '.'))))
|
|
|
|
# jasmine.js needs to be first
|
|
js_files.insert(0, 'jasmine.js')
|
|
|
|
# boot needs to be last
|
|
js_files.remove('boot.js')
|
|
js_files.append('boot.js')
|
|
|
|
# Remove the new boot files. jasmine-py will continue to use the legacy
|
|
# boot.js.
|
|
js_files.remove('boot0.js')
|
|
js_files.remove('boot1.js')
|
|
|
|
return cls._uniq(js_files)
|
|
|
|
@classmethod
|
|
def css_files(cls):
|
|
return cls._uniq(sorted(filter(lambda x: '.css' in x, pkg_resources.resource_listdir(cls.css_package(), '.'))))
|
|
|
|
@classmethod
|
|
def favicon(cls):
|
|
return 'jasmine_favicon.png'
|
|
|
|
@classmethod
|
|
def _uniq(self, items, idfun=None):
|
|
# order preserving
|
|
|
|
if idfun is None:
|
|
def idfun(x): return x
|
|
seen = {}
|
|
result = []
|
|
for item in items:
|
|
marker = idfun(item)
|
|
# in old Python versions:
|
|
# if seen.has_key(marker)
|
|
# but in new ones:
|
|
if marker in seen:
|
|
continue
|
|
|
|
seen[marker] = 1
|
|
result.append(item)
|
|
return result
|