Skip to content

Commit

Permalink
Inital nitrate
Browse files Browse the repository at this point in the history
  • Loading branch information
jianchen committed Nov 19, 2014
0 parents commit 40003d9
Show file tree
Hide file tree
Showing 1,178 changed files with 123,858 additions and 0 deletions.
19 changes: 19 additions & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
Developers
==========

- Chaobin Tang <[email protected]>
- Chenxiong Qi <[email protected]>
- David Malcolm <[email protected]>
- Jian Chen <[email protected]>
- June Zhang <[email protected]>
- Lei Xu <[email protected]>
- Nan Li <[email protected]>
- Xiangyang Chu <[email protected]>
- Xiaoxue Zhang <[email protected]>

Retired developers
==================

- Xuqing Kuang <[email protected]>

And any others I might have missed here.
949 changes: 949 additions & 0 deletions ChangeLog

Large diffs are not rendered by default.

339 changes: 339 additions & 0 deletions LICENSE

Large diffs are not rendered by default.

8 changes: 8 additions & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
include AUTHORS ChangeLog README.rst LICENSE VERSION.txt
include nitrate.spec Makefile
recursive-include tcms/templates *
recursive-include tcms/core/lib/djangotinymce/tinymce/templates *
recursive-include tcms/static *
recursive-include contrib *
recursive-include docs *
recursive-include requirements *
158 changes: 158 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
SPECFILE=nitrate.spec

# Support build branch. That is make supports to build package from current git
# branch. If you want to distribute TCMS upon a specific branch, checkout to it
# first, and then issue make.
BUILD_BRANCH=$(shell git branch | grep "^\*" | sed -e "s/\* //")

NAME=$(shell rpm -q --qf "%{NAME}\n" --specfile $(SPECFILE)|head -n1)
VERSION=$(shell rpm -q --qf "%{VERSION}\n" --specfile $(SPECFILE)|head -n1)
RELEASE=$(shell rpm -q --qf "%{RELEASE}\n" --specfile $(SPECFILE)|head -n1)

SRPM=$(NAME)-$(VERSION)-$(RELEASE).src.rpm
TARBALL=nitrate-$(VERSION).tar.bz2
PWD=$(shell pwd)
RPMBUILD_OPTIONS=--nodeps --define "_sourcedir $(PWD)" --define "_srcrpmdir $(PWD)" --define "_rpmdir $(PWD)"

WORK_DIR=/tmp/nitrate-$(VERSION)
SOURCE_DIR = $(WORK_DIR)/nitrate
CODE_REPO=git://git.fedorahosted.org/nitrate.git

# API documentation generation
EPYDOC_BIN=epydoc
# Default directory of API document is the top level of project.
APIDOC_DIR=apidoc

.PHONY: help refresh-tags refresh-etags

default: help

# Target: build a local RPM
local-rpm: $(SRPM)
echo "$(SRPM)"
rpmbuild --rebuild $(RPMBUILD_OPTIONS) $(SRPM) || exit 1

# Target for constructing a source RPM:
$(SRPM): $(TARBALL) $(SPECFILE)
echo "$(TARBALL)"
rpmbuild -bs $(RPMBUILD_OPTIONS) $(SPECFILE) || exit 1

# Target for constructing a source tarball
# We do not build from the local copy.
# Instead, we always checkout a clean source tree from remote repository.
# This means that we know exactly which version of each file we have in any RPM.
$(TARBALL): Makefile
@echo "Start to build distribution package upon branch $(BUILD_BRANCH)"
@rm -rf $(WORK_DIR)
@rm -f $(TARBALL)
@mkdir $(WORK_DIR)
@echo "Getting latest codes from git"
@cd $(WORK_DIR); git clone -b $(BUILD_BRANCH) $(CODE_REPO)
# Fixup the version field in the page footer so that it shows the precise
# RPM version-release:
@cd $(SOURCE_DIR); sed --in-place -r 's|NITRATE_VERSION|$(VERSION)|' $(SOURCE_DIR)/tcms/templates/tcms_base.html
@cd $(SOURCE_DIR); python setup.py sdist --formats=bztar
@cp $(SOURCE_DIR)/dist/$(TARBALL) .

src-rpm: $(SRPM)

# Various targets for debugging the creation of an RPM or SRPM:
# Debug target: stop after the %prep stage
debug-prep: $(TARBALL) $(SPECFILE)
rpmbuild -bp $(RPMBUILD_OPTIONS) $(SPECFILE) || exit 1

# Debug target: stop after the %build stage
debug-build: $(TARBALL) $(SPECFILE)
rpmbuild -bc $(RPMBUILD_OPTIONS) $(SPECFILE) || exit 1

# Debug target: stop after the %install stage
debug-install: $(TARBALL) $(SPECFILE)
rpmbuild -bi $(RPMBUILD_OPTIONS) $(SPECFILE) || exit 1


ifeq ($(strip $(TEST_TARGET)),)
TEST_TARGET=tcms
else
TEST_TARGET=$(strip (TEST_TARGET))
endif

test:
ifeq ($(strip $(TEST_COVER)),)
@python manage.py test --settings=tcms.settings.test \
--nologcapture \
--with-fixture-bundling \
--cover-package=tcms \
$(TEST_TARGET)
else
@python manage.py test --settings=tcms.settings.test \
--nologcapture \
--with-fixture-bundling \
--with-coverage --cover-erase --cover-html \
--cover-html-dir=/tmp/nitrate-test-coverage \
--cover-package=tcms \
--testmatch="(?:^|[\b_\./-])[Tt]est_"
$(TEST_TARGET)
endif


build:
python setup.py build

install:
python setup.py install

################## Code style section by following PEP8 #####################
# Check code convention based on flake8
FLAKE8_EXCLUDE=.git,__pycache__,tcms/settings,sqls.py,urls.py,manage.py,wsgi.py
ifeq ($(strip $(TARGET)),)
CHECK_TARGET=tcms
else
CHECK_TARGET=$(strip $(TARGET))
endif

flake8:
@flake8 --exclude=$(FLAKE8_EXCLUDE) $(CHECK_TARGET)

################## Code style section by following PEP8 #####################

help:
@echo 'Usage make [command]'
@echo ''
@echo 'Available commands:'
@echo ''
@echo ' apidoc - Build API documentation using epydoc'
@echo ' local-rpm - Create the binary RPM'
@echo ' src-rpm - Create a source RPM'
@echo ' debug-prep - Debug nitrate.spec prep'
@echo ' debug-build - Debug nitrate.spec build'
@echo ' debug-install - Debug nitrate.spec install'
@echo ' flake8 - Check Python style by following PEP8'
@echo ' You can specify to check which directories or '
@echo ' files by passing TARGET. By default, tcms/ will'
@echo ' be checked'
@echo ' test - Run command: python manage.py test'
@echo ' build - Run command: python setup.py build'
@echo ' install - Run command: python setup.py install'
@echo ' refresh-tags - Refresh tags using ctags'
@echo ' refresh-etags - Refresh tags using ctags for Emacs specifically'
@echo ' help - Show this help message and exit'

refresh-tags:
@ctags -R --languages=Python,CSS,Javascript --python-kinds=-i -f tags

refresh-etags:
@ctags -R -e --languages=Python,CSS,Javascript --python-kinds=-i -f etags

apidoc:
@$(EPYDOC_BIN) --html \
--exclude=tests \
--exclude=tcms.core.lib \
--exclude=tcms.urls \
--exclude=tcms.settings \
--exclude=tcms.scripts \
-o $(APIDOC_DIR) \
--no-sourcecode \
--parse-only \
-q \
tcms
.PHONY: apidoc
34 changes: 34 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
Nitrate - Test Case Management System
=====================================

Introduction
------------

Nitrate is a new test plan, test run and test case management system for
company and community, it has a lot of great features, such as Bugzilla
authorize system intergration, fast test plan and runs search, powerful
access control for each plan, run and case, fully ajax call and more.

Dependencies
------------

- Python >= 2.6
- Django = 1.5.5
- MySQL-python >= 1.2.3
- Kobo
- python-kerberos
- python-qpid
- django-uuslug
- w3m

See also requirements/base.txt and requirements/devel.txt

Installation
------------

See also docs/sources/deployment.rst

Contribution
------------

See also docs/sources/contribution.rst
1 change: 1 addition & 0 deletions VERSION.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.8.11
8 changes: 8 additions & 0 deletions contrib/conf/nitrate-apidoc.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Apache conf file for API documentation

Alias /apidoc /var/www/nitrate-apidoc

<Location "/var/www/nitrate-apidoc">
Order allow,deny
Allow from all
</Location>
63 changes: 63 additions & 0 deletions contrib/conf/nitrate-httpd-vhosts.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
NameVirtualHost *:80
NameVirtualHost *:443


<VirtualHost *:443>
ServerName example.com
ServerAdmin [email protected]
ServerSignature email

Alias /media /usr/share/nginx/media
Alias /admin_media /usr/lib/python2.6/site-packages/django/contrib/admin/media/

<Location "/">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE tcms.settings.product
PythonDebug Off
PythonPath "['/usr/share/tcms']+sys.path"
</Location>

<Location "/media">
SetHandler None
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} “.*Safari.*” [OR]
RewriteCond %{HTTP:Accept-Encoding} !gzip
RewriteRule (.*)\.jgz$ $1\.js [L]
AddType “text/javascript;charset=UTF-8″ .jgz
AddEncoding gzip .jgz
</Location>

<Location "/admin_media">
SetHandler None

# Disable auth on the static content, so that we're aren't forced to
# use Kerberos. Doing so would remove "Expires" headers from the static
# content, which would lead to poor page-load times.
AuthType none
Satisfy Any
Allow from All

# Many file types are likely to benefit from compression
# Enable gzip compression on them:
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript application/x-javascript text/css

# Set far-future Expires headers on static content
# (trac 184):
ExpiresActive On
ExpiresDefault "access plus 10 years"
</Location>
</VirtualHost>

<VirtualHost *:80>
ServerName example.com
ServerAdmin [email protected]
ServerSignature email

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{SERVER_NAME} ^example.com$
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
</IfModule>
</VirtualHost>
63 changes: 63 additions & 0 deletions contrib/conf/nitrate-httpd.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Deployment using mod_wsgi
#
# Useful documentation:
# https://docs.djangoproject.com/en/1.5/howto/deployment/wsgi/

# Force the use of ssl:
#<IfModule mod_rewrite.c>
# RewriteEngine on
# RewriteCond %{HTTPS} off
# RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}
#</IfModule>

# Make sure static files collected to this dir
# Ref https://docs.djangoproject.com/en/1.5/ref/contrib/staticfiles/#django-admin-collectstatic
Alias /static /usr/share/nitrate/static

# Limit threads forked:
# prefork MPM
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 256
MaxRequestsPerChild 0

# Configurations for mod_wsgi
WSGIScriptAlias / /usr/lib/python2.6/site-packages/tcms/wsgi.py
WSGIPythonPath /usr/lib/python2.6/site-packages
WSGIPassAuthorization On

<Location "/">
# ====================
# Handler for mod_wsgi
# ====================
SetHandler wsgi-script

Options All
AllowOverride All
Require all granted
LimitRequestBody 10485760
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript application/x-javascript text/css

ErrorDocument 401 "Your request is unauthorization."
</Location>

<Location "/static">
SetHandler None

# Disable auth on the static content, so that we're aren't forced to
# use Kerberos. Doing so would remove "Expires" headers from the static
# content, which would lead to poor page-load times.
AuthType none
Satisfy Any
Allow from All

# Many file types are likely to benefit from compression
# Enable gzip compression on them:
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript application/x-javascript text/css

# Set far-future Expires headers on static content
# (trac 184):
ExpiresActive On
ExpiresDefault "access plus 10 years"
</Location>
Loading

0 comments on commit 40003d9

Please sign in to comment.