From 56eda102cec209a3f0065618292512f2a334b330 Mon Sep 17 00:00:00 2001
From: Pouria Hadjibagheri
Date: Tue, 25 Apr 2017 10:09:06 +0100
Subject: [PATCH] Python 2 can now run the tests (-no-container).
---
dev.py | 43 +++++---
dev.xml | 314 +-------------------------------------------------------
2 files changed, 30 insertions(+), 327 deletions(-)
diff --git a/dev.py b/dev.py
index dc83d35..97f4370 100644
--- a/dev.py
+++ b/dev.py
@@ -1,3 +1,5 @@
+# -*- coding: utf-8 -*-
+
"""
usage: dev.py [-h] (-v | -d | -c | -run-vagrant | -run-docker | -no-container)
[--with-docs] [--with-npm-settings]
@@ -27,6 +29,7 @@ Copyright (c) 2017, Django MarkdownX - Adi, Pouria Hadjibagheri.
"""
# Python's internal libraries:
+from __future__ import unicode_literals
from os.path import join as join_path, dirname, abspath, exists, splitext
from os import remove, chmod, stat
from stat import S_IEXEC
@@ -177,13 +180,19 @@ def create_files(name):
st = stat(absolute_path)
chmod(absolute_path, st.st_mode | S_IEXEC)
- contents_xml.write(
- file_or_filename=XML_FILE_ABSOLUTE_PATH,
- xml_declaration=True,
- encoding='unicode',
- method='xml'
- )
-
+ try:
+ contents_xml.write(
+ file_or_filename=XML_FILE_ABSOLUTE_PATH,
+ xml_declaration=True,
+ encoding='unicode',
+ method='xml'
+ )
+ except LookupError:
+ contents_xml.write(
+ file_or_filename=XML_FILE_ABSOLUTE_PATH,
+ xml_declaration=True,
+ method='xml'
+ )
return True
@@ -236,13 +245,19 @@ def clean():
delete(absolute_path, display_path)
- contents_xml.write(
- file_or_filename=XML_FILE_ABSOLUTE_PATH,
- xml_declaration=True,
- encoding='unicode',
- method='xml'
- )
-
+ try:
+ contents_xml.write(
+ file_or_filename=XML_FILE_ABSOLUTE_PATH,
+ xml_declaration=True,
+ encoding='unicode',
+ method='xml'
+ )
+ except LookupError:
+ contents_xml.write(
+ file_or_filename=XML_FILE_ABSOLUTE_PATH,
+ xml_declaration=True,
+ method='xml'
+ )
return True
diff --git a/dev.xml b/dev.xml
index feab1cc..eb106ca 100644
--- a/dev.xml
+++ b/dev.xml
@@ -1,313 +1 @@
-
-Vagrantfile
- Vagrant.configure("2") do |config|
-
- config.vm.box = "bento/ubuntu-16.04"
- config.vm.synced_folder ".", "/vagrant", disabled: true
- config.vm.synced_folder "../django-markdownx", "/srv/django-markdownx", create: true
- config.vm.provision :shell, :path => "bootstrap.sh", privileged: false
- config.vm.network :forwarded_port, guest: 8000, host: 8000
- config.vm.hostname = "django-markdownx"
- config.ssh.forward_agent = true
-
- config.vm.provider "virtualbox" do |vb|
- vb.name = "django-markdownx"
- vb.gui = true
- vb.customize ["modifyvm", :id,
- "--memory", "512",
- "--ioapic", "on",
- "--cpus", "2"]
- end
-end
-
- bootstrap.sh
- #!/usr/bin/env bash
-
-# NOTE: Python alias
-alias python=python3
-
-# NOTE: Install dependencies
-sudo apt-get update -y
-sudo apt-get install -y gettext build-essential pkg-config nodejs-legacy npm python3-dev libjpeg-dev zlib1g-dev python-virtualenv virtualenvwrapper
-
-# NOTE: Install virtual environment
-source /etc/bash_completion.d/virtualenvwrapper
-mkvirtualenv --python=/usr/bin/python3 --no-site-packages --unzip-setuptools django-markdownx
-pip install --upgrade pip
-pip install -r /srv/django-markdownx/requirements.txt
-
-# NOTE: Folders
-sudo chown vagrant:vagrant /srv
-
-# NOTE: Bash
-sudo sed -i '$a cd /srv/django-markdownx/' ~/.bashrc
-sudo sed -i '$a workon django-markdownx' ~/.bashrc
-
-# NOTE: Install Node modules, compile static files and run migrations
-cd /srv/django-markdownx/
-npm install
-npm run dist
-python manage.py migrate
-
-echo -e '\e[33;1;5mDONE!\e[0m \e[33;1;3m Connect using "vagrant ssh" \e[0m'
-
- package.json
- {
- "name": "django-markdownx",
- "description": "Django Markdownx frontend (JavaScript).",
- "version": "2.0.0",
- "author": "Adi, Pouria Hadjibagheri",
- "license": "2-clause BSD",
- "engines": {
- "node": ">=0.10",
- "npm": ">=1.3"
- },
-
- "devDependencies": {
- "watch": "~1",
- "typescript": "~2.2",
- "uglify-js": "~2.7",
- "browserify": "~14.1",
- "clean-css-cli": "~4"
- },
-
- "config": {
- "tsfolder": "markdownx/.static/markdownx/js",
- "jsoutput": "markdownx/static/markdownx/js",
-
- "cssfolder": "markdownx/.static/markdownx/admin/css",
- "cssoutput": "markdownx/static/markdownx/admin/css"
- },
-
- "scripts": {
- "build:ts": "tsc -p $npm_package_config_tsfolder/tsconfig.json",
- "build:js": "npm run build:ts && browserify $npm_package_config_tsfolder/markdownx.js -o $npm_package_config_jsoutput/markdownx.js && uglifyjs $npm_package_config_jsoutput/markdownx.js -o $npm_package_config_jsoutput/markdownx.js --beautify --stats",
- "build:css": "cleancss $npm_package_config_cssfolder/markdownx.css -o $npm_package_config_cssoutput/markdownx.css --format beautify --debug",
- "build": "npm run build:js && npm run build:css",
-
- "dist:js": "npm run build:ts && browserify $npm_package_config_tsfolder/markdownx.js -o $npm_package_config_jsoutput/markdownx.js && uglifyjs $npm_package_config_jsoutput/markdownx.js -o $npm_package_config_jsoutput/markdownx.min.js --screw-ie8 --mangle --stats",
- "dist:css": "npm run build:css && cleancss $npm_package_config_cssfolder/markdownx.css -o $npm_package_config_cssoutput/markdownx.min.css --compatibility ie9 --debug",
- "dist": "npm run dist:js && npm run dist:css",
-
- "watch:js": "watch 'npm run build:js' $npm_package_config_tsfolder -d -u",
- "watch:css": "watch 'npm run build:css' $npm_package_config_cssfolder -d -u"
- }
-}
-
- runtests.py
- from __future__ import absolute_import
-
-import os
-import sys
-
-sys.path.append(os.path.join(os.path.dirname(__file__), 'markdownx'))
-
-import django
-from django.conf import settings
-
-configure_settings = {
- 'DATABASES': {
- 'default': {
- 'ENGINE': 'django.db.backends.sqlite3',
- 'NAME': ':memory:',
- }
- },
- 'INSTALLED_APPS': [
- 'django.contrib.auth',
- 'django.contrib.contenttypes',
- 'django.contrib.sessions',
- 'django.contrib.staticfiles',
- 'markdownx',
- ],
- 'DEBUG': False,
- 'STATIC_URL': '/static/',
- 'TEMPLATES': [
- {
- 'BACKEND': 'django.template.backends.django.DjangoTemplates',
- 'DIRS': [
- os.path.join(os.path.abspath(os.path.dirname(__file__)), 'markdownx/tests/templates'),
- ],
- 'APP_DIRS': True,
- 'OPTIONS': {
- 'context_processors': [
- 'django.contrib.auth.context_processors.auth',
- 'django.template.context_processors.debug',
- 'django.template.context_processors.i18n',
- 'django.template.context_processors.media',
- 'django.template.context_processors.static',
- 'django.template.context_processors.tz',
- 'django.contrib.messages.context_processors.messages',
- ],
- 'debug': True,
- },
- },
- ],
- 'ROOT_URLCONF': 'tests.urls',
-}
-
-settings.configure(**configure_settings)
-django.setup()
-
-from django.test.utils import get_runner
-test_runner = get_runner(settings)
-failures = test_runner(
- verbosity=1,
- interactive=False,
- failfast=False).run_tests(['tests'])
-sys.exit(failures)
-
-
- Makefile
- # Minimal makefile for Sphinx documentation
-#
-
-# You can set these variables from the command line.
-SPHINXOPTS =
-SPHINXBUILD = sphinx-build
-SPHINXPROJ = DjangoMarkdownx
-SOURCEDIR = docs-src
-BUILDDIR = docs
-
-# Put it first so that "make" without argument is like "make help".
-help:
- @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
-
-.PHONY: help Makefile
-
-# Catch-all target: route all unknown targets to Sphinx using the new
-# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
-%: Makefile
- @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
-
- create_docs.sh
- #!/usr/bin/env bash
-
-# Compile the docs.
-make clean
-make html
-
-mv ./docs/html/* ./docs/
-
-# Open in the browser.
-URL="docs/index.html"
-
-echo "Documentations index file: $URL"
-
-[[ -x $BROWSER ]] && exec "$BROWSER" "$URL"
-path=$(which xdg-open || which gnome-open || which open) && exec "$path" "$URL"
-echo "Built the docs - but couldn't find a browser to open them."
-
-
-
- manage.py
- #!/usr/bin/env python
-import os
-import sys
-
-if __name__ == "__main__":
- os.environ.setdefault("DJANGO_SETTINGS_MODULE", "testapp.settings")
- try:
- from django.core.management import execute_from_command_line
- except ImportError:
- # The above import may fail for some other reason. Ensure that the
- # issue is really that Django is missing to avoid masking other
- # exceptions on Python 2.
- try:
- import django
- except ImportError:
- raise ImportError(
- "Couldn't import Django. Are you sure it's installed and "
- "available on your PYTHONPATH environment variable? Did you "
- "forget to activate a virtual environment?"
- )
- raise
- execute_from_command_line(sys.argv)
-
- Dockerfile
- FROM python:3.6
-ENV PYTHONUNBUFFERED 1
-RUN mkdir /markdownx
-WORKDIR /markdownx
-ADD requirements.txt /markdownx/
-RUN python3.6 -m pip install -U setuptools
-RUN python3.6 -m pip install -r requirements.txt
-ADD . /markdownx/
-
- docker-compose.yml
- version: '2'
-services:
- web:
- restart: always
- build: .
- command: python3.6 manage.py runserver 0.0.0.0:8000
- volumes:
- - .:/markdownx
- ports:
- - "8000:8000"
-
- mem_limit: 500m
- cpuset: "1"
-
- runtests.py
- from __future__ import absolute_import
-
-import os
-import sys
-
-sys.path.append(os.path.join(os.path.dirname(__file__), 'markdownx'))
-
-import django
-from django.conf import settings
-
-configure_settings = {
- 'DATABASES': {
- 'default': {
- 'ENGINE': 'django.db.backends.sqlite3',
- 'NAME': ':memory:',
- }
- },
- 'INSTALLED_APPS': [
- 'django.contrib.auth',
- 'django.contrib.contenttypes',
- 'django.contrib.sessions',
- 'django.contrib.staticfiles',
- 'markdownx',
- ],
- 'DEBUG': False,
- 'STATIC_URL': '/static/',
- 'TEMPLATES': [
- {
- 'BACKEND': 'django.template.backends.django.DjangoTemplates',
- 'DIRS': [
- os.path.join(os.path.abspath(os.path.dirname(__file__)), 'markdownx/tests/templates'),
- ],
- 'APP_DIRS': True,
- 'OPTIONS': {
- 'context_processors': [
- 'django.contrib.auth.context_processors.auth',
- 'django.template.context_processors.debug',
- 'django.template.context_processors.i18n',
- 'django.template.context_processors.media',
- 'django.template.context_processors.static',
- 'django.template.context_processors.tz',
- 'django.contrib.messages.context_processors.messages',
- ],
- 'debug': True,
- },
- },
- ],
- 'ROOT_URLCONF': 'tests.urls',
-}
-
-settings.configure(**configure_settings)
-django.setup()
-
-from django.test.utils import get_runner
-test_runner = get_runner(settings)
-failures = test_runner(
- verbosity=1,
- interactive=False,
- failfast=False).run_tests(['tests'])
-sys.exit(failures)
-
-
\ No newline at end of file
+