Repository: Prev/jikji (language: python)

Issue:
Improve documentation



Discussion / hints:

Fix patch:
diff --git a/.travis.yml b/.travis.yml
index b2673de..6400a73 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,9 +1,9 @@
 language: python
 python:
-  - "3.3"
   - "3.4"
   - "3.5"
   - "3.6"
+  - "3.7"
 install:
   - pip install .
   - pip install -r requirements.txt
diff --git a/README.md b/README.md
index cb5fcb5..8018c9e 100644
--- a/README.md
+++ b/README.md
@@ -1,79 +1,127 @@
-# Jikji
-[![Pypi](https://img.shields.io/pypi/v/jikji.svg)](https://pypi.python.org/pypi/jikji)
-[![Python Versions](https://img.shields.io/pypi/pyversions/jikji.svg)](https://pypi.python.org/pypi/jikji)
-[![Build Status](https://travis-ci.org/Prev/jikji.svg)](https://travis-ci.org/Prev/jikji) 
-
-Python Static website generator fits well with Modern web
+# Jikji [![Pypi](https://img.shields.io/pypi/v/jikji.svg)](https://pypi.python.org/pypi/jikji) [![Build Status](https://travis-ci.org/Prev/jikji.svg)](https://travis-ci.org/Prev/jikji) 
 
+Python Static website generator for Modern web
 
 
 ## What's different
-In common static website generator like [Jekyll](https://jekyllrb.com/),   it transforms **plain text** like mardown to html.
+Common static website generators, like [Jekyll](https://jekyllrb.com/), aim to transform mardowns to HTMLs.
+
+While Jekyll is a blog-friendly generator, Jikji pursues **general purpose** static website generator, allowing a developer to write a code communicating with **DBMS** or **RESTFul API servers**.
 
-Jekyll is blog-friendly generator, but `Jikji` is general-purpose static website generator that communicates with **DBMS** or **RESTFul API Server**.
 
+## Getting Started
+
+First, install Jikji using pypi.
 
-## Install
 ```bash
 $ pip install jikji
 ```
 
+Then you can use command line interfaces of Jikji.
+Try creating a new project.
 
-## Usage
 ```bash
-$ jikji <my_site> generate
+$ mkdir myproj
+$ cd myproj
+
+$ jikji create .
 ```
 
+Now you can find several files like below:
 
-## Open server for testing
-You don't have to generate all the time after modifying template.  
-`Jikji` has useful function to develop in realtime
+```
+.
+├── settings.py
+├── pages.py
+├── static
+│   ├── images
+│   │   ├── ...
+│   └── stylesheet.css
+├── templates
+│   ├── gallery.html
+│   └── home.html
+└── views
+    ├── gallery.py
+    └── home.py
+```
 
-Run jikji as __listening__ mode
+`settings.py` is the entry point of this project. You can define paths for template, static files, view files, publishers, and init scripts.
 
-```bash
-$ jikji <my_site> listen
-$ jikji <my_site> listen --port PORT --host HOST
-```
+`pages.py` is the default init script for sample project. Fixed data list and sample commands are located in this file. You may understand the design patterns of Jikji by reading this file. We give the full file content here:
+
+```python
+from jikji import getview, addpage
 
-Then you can see rendered website in your browser (default: http://localhost:7000)
+item_list = [
+	{'id': 1, 'image_url': '/images/image1.jpg', 'location': 'Paris, France', 'year': '2018'},
+	{'id': 2, 'image_url': '/images/image2.jpg', 'location': 'San Francisco, CA', 'year': '2017'},
+	{'id': 3, 'image_url': '/images/image3.jpg', 'location': 'Seattle, WA', 'year': '2018'},
+	{'id': 4, 'image_url': '/images/image4.jpg', 'location': 'Seoul, Korea', 'year': '2018'},
+	{'id': 5, 'image_url': '/images/image5.jpg', 'location': 'Venice, Italy', 'year': '2017'},
+]
 
-When you reload the website running with [Flask](http://flask.pocoo.org/), jikji will do re-rendering the template.
+getview('home.index').url_rule = '/'
+getview('gallery.index').url_rule = '/{id}/'
 
+addpage(view='home.index', params=(item_list,))
 
-## What's good
+for item in item_list:
+	addpage(view='gallery.index', params=item)
+```
 
-- **Fast**. Jikji use multiprocessing on generation
-- **Expandability**. You can build from micro web to enterprise-class website. 
-- **Efficiency**. You can write code fastly with familiar libraries/design pattern.
+As you can see in the code above, major keywords of Jikji are `view` and `pages`. Simply, `view` is an interface while `page` is an instance of a static web.
 
+In Jikji, `views` works similar with the controller of MVC pattern. Each `view` has one 'URL rule', one 'view function', and multiple `pages`.
+For example, `gallery.index` view has the url rule `/{id}/`. And the pages for `gallery.index` view  have actuall URLs like `/1/`, `/2/`, `/3/`, ... Here is the view file for `gallery.index`:
 
-## Template engine
-`Jikji` uses [Jinja2](http://jinja.pocoo.org) template engine which is used in [Flask](http://flask.pocoo.org/).  
-You can see jinja template documentation on [here](http://jinja.pocoo.org/docs/dev/templates/).
+```python
+from jikji import render_template, register_view
 
-  
-## View-Page Concept
+@register_view
+def index(data):
+	return render_template('gallery.html',
+		image_url=data['image_url'],
+		location=data['location'],
+		year=data['year'],
+	)
+```
 
-Jikji has a concept `View`, which is similar to `Controller` on common backend framework
-One `View` has one 'URL rule', one 'View Function', and multiple 'Pages'.
+Note that Jikji uses [Jinja2](http://jinja.pocoo.org) template engine which is used in [Flask](http://flask.pocoo.org/) as well. You can see Jinja template documentation [here](http://jinja.pocoo.org/docs/dev/templates/).
 
-Usually, the controller has the role of taking the data from the model
-with the PARAMETERS in URL and returning the HTML with the View.
 
-In static web, PARAMETERS are provided in advance.
-There are many tuple set of parameters in ONE VIEW.
+`templates` and `static` directories are similar with Flask or other web frameworks. Then let's talk about the `view`.
 
-Jikji calls the tuple `Page`
 
+## Generate static files
 
-For example, 'Article View' has url rule `/posts/$1/$2`
-The sample PAGEs for 'Article View' will have the following.
+You can generate static files by simply calling command line below:
 
+```bash
+$ jikji generate <project_dir>
 ```
-/posts/dev/best-sublime-text-3-themes-of-2016
-/posts/dev/the-best-news-from-angulars-ng-conf
+
+If your project is located in curreny directory, just call:
+
+```bash
+$ jikji generate .
 ```
 
+Our generator uses multiprocess package of python. Thus, note that you have to design your project with side-effect free.
+
+
+
+## Open server for testing
+
+On developing step, you don't have to generate all the time after modifying template.
+Jikji provides useful feature to develop in realtime.
+
+Run jikji as **listening** mode:
+
+```bash
+$ jikji listen <project_dir>
+$ jikji listen <project_dir> --port PORT --host HOST
+```
 
+Then you can see rendered website in your browser (default: http://localhost:7000). When you reload the website, Jikji will do re-rendering the templates.
 
+Limitations: if you change the init scripts including `settings.py` and `pages.py`, Jikji would not reload the files. In that case, please turn off the server and restart Jikji listening mode.
diff --git a/jikji/__init__.py b/jikji/__init__.py
index 56a035a..1ac9d7c 100644
--- a/jikji/__init__.py
+++ b/jikji/__init__.py
@@ -8,7 +8,7 @@
 
 """
 
-__version__ = '2.1.4'
+__version__ = '2.2.4'
 
 from .app import Jikji, addpage, addpagegroup, getview
 from .view import render_template, register_view
\ No newline at end of file
diff --git a/jikji/cli.py b/jikji/cli.py
index b690b77..d411856 100644
--- a/jikji/cli.py
+++ b/jikji/cli.py
@@ -8,6 +8,8 @@
 """
 
 import sys
+import shutil
+import os.path
 import click
 
 from . import __version__
@@ -25,65 +27,51 @@
 
 \b 
 Example Usage:
-   $ jikji <mysite> generate
-   $ jikji -o initialize <mysite> generate
-   $ jikji --option development <mysite> generate
-   $ jikji <mysite> listen
+   $ jikji create <project_dir>
+   $ jikji generate <project_dir> --options [options]
+   $ jikji listen <project_dir> --options [options] --host [host] --port [port]
 
 """
 
 
 
 @click.group(help=cli_help)
-@click.option('--options', '-o', default='')
-@click.argument('sitepath', metavar='<sitepath>', type=click.Path(exists=True))
-@click.pass_context
-def cli(ctx, sitepath, options) :
-	ctx.obj['SITEPATH'] = sitepath
-	ctx.obj['APP'] = Jikji(sitepath=sitepath, options=options.split(','))
+def cli():
+	pass
 
+@cli.command('create', help=cli_help)
+@click.argument('proj_dir', metavar='<proj_dir>')
+def create_command(proj_dir):
+	if os.path.isfile(proj_dir + '/settings.py'):
+		print('It seems like there is a project on %s' % proj_dir)
+		sys.exit(-1)
 
+	print(os.path.dirname(__file__) + '/sample_proj', proj_dir)
+	shutil.copytree(os.path.dirname(__file__) + '/sample_proj', proj_dir)
 
-"""
-Command for generate
-Usage:
-	jikji <sitepath> generate
 
-"""
-@cli.command('generate', short_help="Generate static site")
-@click.pass_context
-def generate_command(ctx) :
-	""" Generate static site
-	"""
-	app = ctx.obj['APP']
+@cli.command('generate', help=cli_help)
+@click.argument('proj_dir', metavar='<proj_dir>', type=click.Path(exists=True))
+@click.option('--options', '-o', default='')
+def generate_command(proj_dir, options):
+	app = Jikji(sitepath=proj_dir, options=options.split(','))
 	r = app.generate()
-	
 	sys.exit(r)
 
 
-"""
-Open listening server for develop
-Usage:
-	jikji <sitepath> listen
-
-"""
 @cli.command('listen')
+@click.argument('proj_dir', metavar='<proj_dir>', type=click.Path(exists=True))
+@click.option('--options', '-o', default='')
 @click.option('--host', '-h', default='0.0.0.0')
 @click.option('--port', '-p', default=7000)
-@click.pass_context
-def listen_command(ctx, host, port) :
-	""" Open listening server for develop
-	"""
-	app = ctx.obj['APP']
-
+def listen_command(proj_dir, options, host, port):
+	app = Jikji(sitepath=proj_dir, options=options.split(','))
 	listener = Listener(app)
 	listener.listen(host=host, port=port)
 
 
-
-def main(as_module=False) :
+def main(as_module=False):
 	""" Main function called from shell or __main__.py
-	
 	:param as_module: True if called from __main__
 	"""
 	name = __package__
diff --git a/jikji/sample_proj/pages.py b/jikji/sample_proj/pages.py
new file mode 100644
index 0000000..2ab098a
--- /dev/null
+++ b/jikji/sample_proj/pages.py
@@ -0,0 +1,35 @@
+from jikji import getview, addpage
+
+# It is a sample data for this project.
+# You can call API using http, or fetching data from RDBMS instead of fixed data.
+item_list = [
+	{'id': 1, 'image_url': '/images/image1.jpg', 'location': 'Paris, France', 'year': '2018'},
+	{'id': 2, 'image_url': '/images/image2.jpg', 'location': 'San Francisco, CA', 'year': '2017'},
+	{'id': 3, 'image_url': '/images/image3.jpg', 'location': 'Seattle, WA', 'year': '2018'},
+	{'id': 4, 'image_url': '/images/image4.jpg', 'location': 'Seoul, Korea', 'year': '2018'},
+	{'id': 5, 'image_url': '/images/image5.jpg', 'location': 'Venice, Italy', 'year': '2017'},
+]
+
+# In Jikji, `view` works similar with controller of MVC pattern.
+# Defining URL rule of the views can be done like below.
+getview('home.index').url_rule = '/'
+
+# If you pass a single dict object to the params, you can use property on the url rule.
+getview('gallery.index').url_rule = '/{id}/'
+
+# If you pass list object to the params, you can use '${number}' operator on the url rule.
+# For example, you may call the function `addpage` with params `[article_id, user_id, article_data]`,
+# then you can define url rule like below:
+# getview('article.index').url_rule = '/articles/$1/$2/'
+
+
+# Now you have to call `addpage` for the views.
+# Jikji will automatically generate the pages by calling view functions with given params.
+for item in item_list:
+	addpage(view='gallery.index', params=item)
+
+# Note that if you want to pass a **single list-type param**, embrace it with a tuple or a list.
+# Otherwise, jikji will try to decompose the list to multiple params, e.g.,
+# params=['a', 'b', 'c'] => index('a', 'b', 'c'), while you may want
+# params=(['a', 'b', 'c'],) => index(['a', 'b', 'c']).
+addpage(view='home.index', params=(item_list,))
diff --git a/jikji/sample_proj/settings.py b/jikji/sample_proj/settings.py
new file mode 100644
index 0000000..ea3c76f
--- /dev/null
+++ b/jikji/sample_proj/settings.py
@@ -0,0 +1,28 @@
+import os
+from jikji.publisher import LocalPublisher
+
+# Root path of the application
+ROOT_PATH = os.path.dirname(__file__)
+
+
+# Absolute directory path for template files.
+# Jikji use jinja2 engine on rendering templates, which is used on Flask.
+# It means that you can use full syntax of Flask, including layout and macro features.
+TEMPLATE_ROOT = ROOT_PATH + '/templates'
+
+# Directory for static files (to be copied to the output)
+STATIC_ROOT = ROOT_PATH + '/static'
+
+# Directory for view files
+VIEW_ROOT = ROOT_PATH + '/views'
+
+# Publisher instance used after generation
+PUBLISHER = LocalPublisher(output_root=ROOT_PATH + '/output')
+# PUBLISHER = S3Publisher('my-bucket1')
+
+
+# Scripts to be run on initialization process
+# You can separate data fetching process, defining url rules, or others.
+INIT_SCRIPTS = (
+	ROOT_PATH + '/pages.py',
+)
diff --git a/jikji/sample_proj/static/images/image1.jpg b/jikji/sample_proj/static/images/image1.jpg
new file mode 100644
index 0000000..1e44d51
Binary files /dev/null and b/jikji/sample_proj/static/images/image1.jpg differ
diff --git a/jikji/sample_proj/static/images/image2.jpg b/jikji/sample_proj/static/images/image2.jpg
new file mode 100644
index 0000000..0e1cb4a
Binary files /dev/null and b/jikji/sample_proj/static/images/image2.jpg differ
diff --git a/jikji/sample_proj/static/images/image3.jpg b/jikji/sample_proj/static/images/image3.jpg
new file mode 100644
index 0000000..b420292
Binary files /dev/null and b/jikji/sample_proj/static/images/image3.jpg differ
diff --git a/jikji/sample_proj/static/images/image4.jpg b/jikji/sample_proj/static/images/image4.jpg
new file mode 100644
index 0000000..fa89741
Binary files /dev/null and b/jikji/sample_proj/static/images/image4.jpg differ
diff --git a/jikji/sample_proj/static/images/image5.jpg b/jikji/sample_proj/static/images/image5.jpg
new file mode 100644
index 0000000..c86cfb9
Binary files /dev/null and b/jikji/sample_proj/static/images/image5.jpg differ
diff --git a/jikji/sample_proj/static/stylesheet.css b/jikji/sample_proj/static/stylesheet.css
new file mode 100644
index 0000000..d8a1d39
--- /dev/null
+++ b/jikji/sample_proj/static/stylesheet.css
@@ -0,0 +1,29 @@
+html,body {
+	margin: 0;
+	padding: 0;
+}
+
+header {
+	display: block;
+	width: 100%;
+	height: 80px;
+	line-height: 80px;
+	background-color: #eee;
+	margin-bottom: 10px;
+}
+
+header a {
+	color: black;
+	font-size: 16px;
+}
+
+.container {
+	width: 800px;
+	margin: 0 auto;
+}
+
+.image-tile {
+	width: 380px;
+	float: left;
+	margin: 10px;
+}
\ No newline at end of file
diff --git a/jikji/sample_proj/templates/gallery.html b/jikji/sample_proj/templates/gallery.html
new file mode 100644
index 0000000..4721d1e
--- /dev/null
+++ b/jikji/sample_proj/templates/gallery.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+	<title>My Gallery</title>
+	<link rel="stylesheet" href="/stylesheet.css">
+</head>
+<body>
+	<header>
+		<div class="container">
+			<a href="/">My Gallery</a>
+		</div>
+	</header>
+    <div class="container">
+		<img src="{{ image_url }}" width="800">
+		<div>
+			{{ location }}, {{ year }}
+		</div>
+	</div>
+</body>
+</html>
diff --git a/jikji/sample_proj/templates/home.html b/jikji/sample_proj/templates/home.html
new file mode 100644
index 0000000..9b69881
--- /dev/null
+++ b/jikji/sample_proj/templates/home.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+	<title>My Gallery</title>
+	<link rel="stylesheet" href="/stylesheet.css">
+</head>
+<body>
+	<header>
+		<div class="container">
+			<a href="/">My Gallery</a>
+		</div>
+	</header>
+    <div class="container">
+		{% for item in item_list %}
+		<div class="image-tile">
+			<a href="./{{ item.id }}">
+				<img src="{{ item.image_url }}" width="380">
+			</a>
+		</div>
+		{% endfor %}
+	</div>
+</body>
+</html>
diff --git a/jikji/sample_proj/views/gallery.py b/jikji/sample_proj/views/gallery.py
new file mode 100644
index 0000000..0857c20
--- /dev/null
+++ b/jikji/sample_proj/views/gallery.py
@@ -0,0 +1,15 @@
+from jikji import render_template, register_view
+
+# FYI, `register_view` decorator accepts `url_rule`.
+# Instead of defining url rules on `pages.py`, you can define each view files.
+# It just depends on your preference, but make sure not to define redundantly.
+#
+# @register_view(url_rule='/{id}/')
+@register_view
+def index(data):
+	return render_template('gallery.html',
+		image_url=data['image_url'],
+		location=data['location'],
+		year=data['year'],
+	)
+
diff --git a/jikji/sample_proj/views/home.py b/jikji/sample_proj/views/home.py
new file mode 100644
index 0000000..c516880
--- /dev/null
+++ b/jikji/sample_proj/views/home.py
@@ -0,0 +1,5 @@
+from jikji import render_template, register_view
+
+@register_view
+def index(item_list):
+	return render_template('home.html', item_list=item_list)
diff --git a/sample/pages.py b/sample/pages.py
deleted file mode 100644
index 5db04b7..0000000
--- a/sample/pages.py
+++ /dev/null
@@ -1,9 +0,0 @@
-from jikji import addpage, addpagegroup
-from views.event import EventPageGroup
-
-for i in range(1, 5) :
-	addpage(view='people.index', params=('group1', 'people%d' % i))
-	addpage(view='people.comment', params=('group1', 'people%d' % i))
-
-
-addpagegroup(EventPageGroup({'id': 3}))
diff --git a/sample/settings.py b/sample/settings.py
deleted file mode 100644
index 64dbc35..0000000
--- a/sample/settings.py
+++ /dev/null
@@ -1,26 +0,0 @@
-import os
-from jikji.publisher import LocalPublisher
-
-# Root Path of Application
-ROOT_PATH = os.path.dirname(__file__)
-
-
-# Absolute directory path includes Template files
-TEMPLATE_ROOT = ROOT_PATH + '/templates'
-
-# Directory that includes Static files (to copied to output)
-STATIC_ROOT = ROOT_PATH + '/static'
-
-# Directory that includes View files
-VIEW_ROOT = ROOT_PATH + '/views'
-
-# Publisher instance used after generation
-PUBLISHER = LocalPublisher(output_root=ROOT_PATH + '/output')
-# PUBLISHER = S3Publisher('my-bucket1')
-
-
-# Scripts that runned on initializing application
-INIT_SCRIPTS = (
-	ROOT_PATH + '/urls.py',
-	ROOT_PATH + '/pages.py',
-)
diff --git a/sample/static/images/android.jpg b/sample/static/images/android.jpg
deleted file mode 100755
index 8d14b66..0000000
Binary files a/sample/static/images/android.jpg and /dev/null differ
diff --git a/sample/templates/people.html b/sample/templates/people.html
deleted file mode 100644
index 668e2f3..0000000
--- a/sample/templates/people.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<table border="1">
-	<tr>
-		<td>group</td>
-		<td>{{ group }}</td>
-	</tr>
-	<tr>
-		<td>name</td>
-		<td>{{ name }}</td>
-	</tr>
-</table>
-
-<a href="{{ _page.url }}comment">view comments</a>
\ No newline at end of file
diff --git a/sample/templates/people_comment.html b/sample/templates/people_comment.html
deleted file mode 100644
index e24211b..0000000
--- a/sample/templates/people_comment.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<table border="1">
-	<tr>
-		<td>id</td>
-		<td>{{ id }}</td>
-	</tr>
-	<tr>
-		<td>comments</td>
-		<td>{{ comments }}</td>
-	</tr>
-</table>
-
-<a href="/{{ _page.params[0] }}/{{ _page.params[1] }}">view people</a>
\ No newline at end of file
diff --git a/sample/urls.py b/sample/urls.py
deleted file mode 100644
index a9df601..0000000
--- a/sample/urls.py
+++ /dev/null
@@ -1,4 +0,0 @@
-from jikji import getview
-
-getview('people.index').url_rule = '/$1/$2/'
-getview('people.comment').url_rule = '/$1/$2/comment/'
\ No newline at end of file
diff --git a/sample/views/event.py b/sample/views/event.py
deleted file mode 100644
index 819e06d..0000000
--- a/sample/views/event.py
+++ /dev/null
@@ -1,27 +0,0 @@
-from jikji import render_template, register_view
-from jikji.view import PageGroup, Page
-
-
-@register_view(url_rule='/event/$1/')
-def index(event_id) :
-	return '<div>Event: %s</div>' % event_id
-
-
-
-@register_view(url_rule='/event/comment/$1/')
-def comment(event_id) :
-	return '<div>Event Comment: %s</div>' % event_id
-
-
-
-class EventPageGroup(PageGroup) :
-	def __init__(self, model) :
-		self.model = model
-		self.id = model['id']
-
-
-	def getpages(self) :
-		return (
-			Page(view='event.index', params=(self.id, )),
-			Page(view='event.comment', params=(self.id, )),
-		)
\ No newline at end of file
diff --git a/sample/views/people.py b/sample/views/people.py
deleted file mode 100644
index ae425a3..0000000
--- a/sample/views/people.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# people.py
-
-from jikji import render_template, register_view
-
-
-@register_view
-def index(group_name, people_name) :
-
-	return render_template('people.html',
-		group=group_name,
-		name=people_name,
-		id='%s-%s' % (group_name, people_name)
-	)
-
-
-@register_view
-def comment(group_name, people_name) :
-
-	return render_template('people_comment.html',
-		id='%s-%s' % (group_name, people_name),
-		comments=['Test Comment'],
-	)
-
diff --git a/setup.py b/setup.py
index 243a3e0..bd91258 100644
--- a/setup.py
+++ b/setup.py
@@ -30,12 +30,10 @@
 		'py>=1.4',
 	],
 
-	classifiers=(
-		'Programming Language :: Python :: 3.3',
-		'Programming Language :: Python :: 3.4',
-		'Programming Language :: Python :: 3.5',
-		'Programming Language :: Python :: 3.6',
-	),
+	package_data={
+		'jikji': ['sample_proj/*', 'sample_proj/**/*', 'sample_proj/**/**/*'],
+	},
+	include_package_data=True,
 
 	entry_points={
 		'console_scripts': [


Test patch:
diff --git a/sample/views/sub/testee.py b/sample/views/sub/testee.py
deleted file mode 100644
index dcbc53b..0000000
--- a/sample/views/sub/testee.py
+++ /dev/null
@@ -1,8 +0,0 @@
-# people.py
-
-from jikji import render_template, register_view
-
-
-@register_view
-def test(param1) :
-	return "None"
diff --git a/tests/test_app.py b/tests/test_app.py
index 789e1d7..703c1cf 100644
--- a/tests/test_app.py
+++ b/tests/test_app.py
@@ -11,10 +11,6 @@
 from jikji import Jikji
 
 
-def test_app0() :
-	jikji = Jikji('sample')
-
-
 def test_app1() :
 	""" Simple Application with one View
 	"""
diff --git a/tests/test_generator.py b/tests/test_generator.py
index 89e69fb..b16b788 100644
--- a/tests/test_generator.py
+++ b/tests/test_generator.py
@@ -11,11 +11,6 @@
 import os
 import shutil
 from jikji import Jikji
-
-def test_generate0() :
-	jikji = Jikji('sample')
-	jikji.generate()
-
 	
 
 def test_generate1() :