Skip to content

Commit

Permalink
Iniitial commit.
Browse files Browse the repository at this point in the history
  • Loading branch information
bbangert committed Feb 27, 2011
0 parents commit b8a8b47
Show file tree
Hide file tree
Showing 14 changed files with 398 additions and 0 deletions.
21 changes: 21 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
*.egg
*.egg-info
*.pyc
*$py.class
*.pt.py
*.txt.py
*~
.coverage
.tox/
nosetests.xml
pyramid/coverage.xml
tutorial.db
env26/
env26-debug/
bookenv/
env24/
env27/
jyenv/
pypyenv/
build/
dist/
Empty file added CHANGES.txt
Empty file.
2 changes: 2 additions & 0 deletions COPYRIGHT.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Copyright (c) 2011 Ben Bangert and contributers.
Ben Bangert and contributers, All Rights Reserved
Empty file added README.rst
Empty file.
Empty file added TODO.txt
Empty file.
73 changes: 73 additions & 0 deletions docs/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Makefile for Sphinx documentation
#

# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
PAPER =

# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .

.PHONY: help clean html web pickle htmlhelp latex changes linkcheck

help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " pickle to make pickle files (usable by e.g. sphinx-web)"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " changes to make an overview over all changed/added/deprecated items"
@echo " linkcheck to check all external links for integrity"

clean:
-rm -rf _build/*

html: _themes
mkdir -p _build/html _build/doctrees
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html
@echo
@echo "Build finished. The HTML pages are in _build/html."

pickle:
mkdir -p _build/pickle _build/doctrees
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle
@echo
@echo "Build finished; now you can process the pickle files or run"
@echo " sphinx-web _build/pickle"
@echo "to start the sphinx-web server."

web: pickle

htmlhelp:
mkdir -p _build/htmlhelp _build/doctrees
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in _build/htmlhelp."

latex:
mkdir -p _build/latex _build/doctrees
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex
@echo
@echo "Build finished; the LaTeX files are in _build/latex."
@echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
"run these through (pdf)latex."

changes:
mkdir -p _build/changes _build/doctrees
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes
@echo
@echo "The overview file is in _build/changes."

linkcheck:
mkdir -p _build/linkcheck _build/doctrees
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in _build/linkcheck/output.txt."

_themes:
git clone git://github.com/Pylons/pylons_sphinx_theme.git _themes
1 change: 1 addition & 0 deletions docs/_themes
208 changes: 208 additions & 0 deletions docs/conf.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,208 @@
# -*- coding: utf-8 -*-
#
# pyramid_xmlrpc documentation build configuration file
#
# This file is execfile()d with the current directory set to its containing
# dir.
#
# The contents of this file are pickled, so don't put values in the
# namespace that aren't pickleable (module imports are okay, they're
# removed automatically).
#
# All configuration values have a default value; values that are commented
# out serve to show the default value.

import sys, os, datetime

# If your extensions are in another directory, add it here. If the directory
# is relative to the documentation root, use os.path.abspath to make it
# absolute, like shown here.
parent = os.path.dirname(os.path.dirname(__file__))
sys.path.append(os.path.abspath(parent))
wd = os.getcwd()
os.chdir(parent)
os.system('%s setup.py test -q' % sys.executable)
os.chdir(wd)

for item in os.listdir(parent):
if item.endswith('.egg'):
sys.path.append(os.path.join(parent, item))

import pkginfo

# General configuration
# ---------------------

pkg_info = pkginfo.Develop(os.path.join(os.path.dirname(__file__),'..'))

# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.intersphinx',
]

# Looks for bfg's objects
intersphinx_mapping = {'http://docs.pylonsproject.org/projects/pyramid/dev': None}

# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']

# The suffix of source filenames.
source_suffix = '.rst'

# The master toctree document.
master_doc = 'index'

# General substitutions.
project = 'pyramid_rpc'
copyright = '%s, Ben Bangert <[email protected]>' % datetime.datetime.now().year

# The default replacements for |version| and |release|, also used in various
# other places throughout the built documents.
#
# The short X.Y version.
version = release = pkg_info.version
# The full version, including alpha/beta/rc tags.

# There are two options for replacing |today|: either, you set today to
# some non-false value, then it is used:
#today = ''
# Else, today_fmt is used as the format for a strftime call.
today_fmt = '%B %d, %Y'

# List of documents that shouldn't be included in the build.
#unused_docs = []

# List of directories, relative to source directories, that shouldn't be
# searched for source files.
#exclude_dirs = []

# The reST default role (used for this markup: `text`) to use for all
# documents.
#default_role = None

# If true, '()' will be appended to :func: etc. cross-reference text.
#add_function_parentheses = True

# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#add_module_names = True

# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#show_authors = False

# The name of the Pygments (syntax highlighting) style to use.
#pygments_style = 'sphinx'


# Options for HTML output
# -----------------------

# Add and use Pylons theme
sys.path.append(os.path.abspath('_themes'))
html_theme_path = ['_themes']
html_theme = 'pyramid'

# The style sheet to use for HTML and HTML Help pages. A file of that name
# must exist either in Sphinx' static/ path, or in one of the custom paths
# given in html_static_path.
#html_style = 'repoze.css'

# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
#html_title = None

# A shorter title for the navigation bar. Default is the same as
# html_title.
#html_short_title = None

# The name of an image file (within the static path) to place at the top of
# the sidebar.
# html_logo = '.static/logo_hi.gif'

# The name of an image file (within the static path) to use as favicon of
# the docs. This file should be a Windows icon file (.ico) being 16x16 or
# 32x32 pixels large.
#html_favicon = None

# Add any paths that contain custom static files (such as style sheets)
# here, relative to this directory. They are copied after the builtin
# static files, so a file named "default.css" will overwrite the builtin
# "default.css".
html_static_path = ['.static']

# If not '', a 'Last updated on:' timestamp is inserted at every page
# bottom, using the given strftime format.
html_last_updated_fmt = '%b %d, %Y'

# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#html_use_smartypants = True

# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}

# Additional templates that should be rendered to pages, maps page names to
# template names.
#html_additional_pages = {}

# If false, no module index is generated.
#html_use_modindex = True

# If false, no index is generated.
#html_use_index = True

# If true, the index is split into individual pages for each letter.
#html_split_index = False

# If true, the reST sources are included in the HTML build as
# _sources/<name>.
#html_copy_source = True

# If true, an OpenSearch description file will be output, and all pages
# will contain a <link> tag referring to it. The value of this option must
# be the base URL from which the finished HTML is served.
#html_use_opensearch = ''

# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = ''

# Output file base name for HTML help builder.
htmlhelp_basename = 'rpcdoc'


# Options for LaTeX output
# ------------------------

# The paper size ('letter' or 'a4').
#latex_paper_size = 'letter'

# The font size ('10pt', '11pt' or '12pt').
#latex_font_size = '10pt'

# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, document class [howto/manual]).
latex_documents = [
('index', 'rpc.tex', 'pyramid_rpc Documentation',
'Pylons Project Developers', 'manual'),
]

# The name of an image file (relative to this directory) to place at the
# top of the title page.
latex_logo = '.static/logo_hi.gif'

# For "manual" documents, if this is true, then toplevel headings are
# parts, not chapters.
#latex_use_parts = False

# Additional stuff for the LaTeX preamble.
#latex_preamble = ''

# Documents to append as an appendix to all manuals.
#latex_appendices = []

# If false, no module index is generated.
#latex_use_modindex = True
6 changes: 6 additions & 0 deletions docs/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
.. _index:

===========================
lettuce webdriver extension
===========================

1 change: 1 addition & 0 deletions lettuce_webdriver/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#
11 changes: 11 additions & 0 deletions lettuce_webdriver/util.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
"""Utility functions that combine steps to locate elements"""
def find_by_id(browser, field, id):
return browser.find_element_by_xpath('//%s[@id=%s]' % (field, id))

def find_by_name(browser, field, name):
return browser.find_element_by_xpath('//%s[@name=%s]' % (field, name))

def find_by_label(browser, label):
for_id = browser.find_element_by_xpath('//label[@for=%s]' % label)
assert for_id
return find_by_id(browser, for_id)
38 changes: 38 additions & 0 deletions lettuce_webdriver/webdriver.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
"""Webdriver support for lettuce"""
from lettuce import step
from lettuce import world

from lettuce_webdriver import find_by_id
from lettuce_webdriver import find_by_name
from lettuce_webdriver import find_by_label


## Links
@step('I visit "([^"]+)"')
@step('I go to "([^"]+)"')
def goto(step, url):
world.browser.get(url)

@step('I click "([^"]+)"')
def click(step, name):
elem = world.browser.find_element_by_link_text(name)
elem.click()

@step('I should see "([^"]+)"')
@step('I see "([^"]+)"')
def should_see(step, text):
assert text in world.browser.get_page_source()

@step('I should not see "([^"]+)"')
def should_see(step, text):
assert text not in world.browser.get_page_source()

@step('I should see a link with the url "(.*?)"')
def should_see_link(step, link_url):
assert world.browser.find_element_by_xpath('//a[@href="%s"]' % link_url)

@step('I should see a link to "(.*?)" with the url "(.*?)"')
def should_see_link_text(step, link_text, link_url):
assert world.browser.find_element_by_xpath('//a[@href="%s"][./text()="%s"]' %
(link_url, link_text))

6 changes: 6 additions & 0 deletions setup.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[nosetests]
where=lettuce_webdriver
match=^test
nocapture=1
cover-package=lettuce_webdriver
cover-erase=1
Loading

0 comments on commit b8a8b47

Please sign in to comment.