forked from robotframework/robotframework
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.py
executable file
·106 lines (96 loc) · 4.06 KB
/
setup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#!/usr/bin/env python
import sys
import os
from os.path import abspath, join, dirname
from subprocess import list2cmdline
from distutils.core import setup
from distutils.command.install_scripts import install_scripts
try:
import setuptools # use setuptools when available
except ImportError:
pass
CURDIR = dirname(abspath(__file__))
with open(join(CURDIR, 'src', 'robot', 'version.py')) as f:
exec(f.read())
VERSION = get_version()
with open(join(CURDIR, 'README.rst')) as f:
LONG_DESCRIPTION = f.read()
base_url = 'https://github.com/robotframework/robotframework/blob/master'
for text in ('INSTALL', 'CONTRIBUTING'):
search = '`<{0}.rst>`__'.format(text)
replace = '`{0}.rst <{1}/{0}.rst>`__'.format(text, base_url)
if search not in LONG_DESCRIPTION:
raise RuntimeError('{} not found from README.rst'.format(search))
LONG_DESCRIPTION = LONG_DESCRIPTION.replace(search, replace)
CLASSIFIERS = """
Development Status :: 5 - Production/Stable
License :: OSI Approved :: Apache Software License
Operating System :: OS Independent
Programming Language :: Python :: 2
Programming Language :: Python :: 3
Topic :: Software Development :: Testing
Framework :: Robot Framework
""".strip().splitlines()
KEYWORDS = 'robotframework testing testautomation acceptancetesting atdd bdd'
# Maximum width in Windows installer seems to be 70 characters -------|
WINDOWS_DESCRIPTION = """
Robot Framework is a generic test automation framework for acceptance
testing and acceptance test-driven development (ATDD). It has
easy-to-use tabular test data syntax and utilizes the keyword-driven
testing approach. Its testing capabilities can be extended by test
libraries implemented either with Python or Java, and users can create
new keywords from existing ones using the same syntax that is used for
creating test cases.
""".strip()
PACKAGES = ['robot', 'robot.api', 'robot.conf', 'robot.htmldata',
'robot.libdocpkg', 'robot.libraries', 'robot.model',
'robot.output', 'robot.output.console', 'robot.parsing',
'robot.reporting', 'robot.result', 'robot.running',
'robot.running.arguments', 'robot.running.timeouts',
'robot.utils', 'robot.variables', 'robot.writer']
PACKAGE_DATA = [join('htmldata', directory, pattern)
for directory in ('rebot', 'libdoc', 'testdoc', 'lib', 'common')
for pattern in ('*.html', '*.css', '*.js')]
WINDOWS = os.sep == '\\'
if sys.platform.startswith('java'):
SCRIPTS = ['jybot', 'jyrebot']
elif sys.platform == 'cli':
SCRIPTS = ['ipybot', 'ipyrebot']
else:
SCRIPTS = ['pybot']
SCRIPTS = [join('src', 'bin', s) for s in SCRIPTS + ['robot', 'rebot']]
if WINDOWS:
SCRIPTS = [s+'.bat' for s in SCRIPTS]
class custom_install_scripts(install_scripts):
def run(self):
install_scripts.run(self)
if WINDOWS:
self._replace_interpreter_in_bat_files()
def _replace_interpreter_in_bat_files(self):
print("replacing interpreter in robot.bat and rebot.bat.")
interpreter = list2cmdline([sys.executable])
for path in self.get_outputs():
if path.endswith(('robot.bat', 'rebot.bat')):
with open(path, 'r') as input:
replaced = input.read().replace('python', interpreter)
with open(path, 'w') as output:
output.write(replaced)
setup(
name = 'robotframework',
version = VERSION,
author = 'Robot Framework Developers',
author_email = 'robotframework@gmail.com',
url = 'http://robotframework.org',
download_url = 'https://pypi.python.org/pypi/robotframework',
license = 'Apache License 2.0',
description = 'A generic test automation framework',
long_description = LONG_DESCRIPTION,
keywords = KEYWORDS,
platforms = 'any',
classifiers = CLASSIFIERS,
package_dir = {'': 'src'},
package_data = {'robot': PACKAGE_DATA},
packages = PACKAGES,
scripts = SCRIPTS,
cmdclass = {'install_scripts': custom_install_scripts}
)