View
@@ -32,7 +32,11 @@ limitations under the License.
#include <fnmatch.h>
#include <glob.h>
#include <regex.h>
#ifdef __FreeBSD__
#include <gnu/posix/regex.h>
#else
include <regex.h>
#endif
#include <Python.h>
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
# Copyright 2016 Andy Chu. All rights reserved.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Usage:
# ./build.sh <function name>
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Usage:
# ./run.sh <function name>
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
from __future__ import print_function
"""Basic tests for Byterun."""
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
from __future__ import print_function
"""Test exceptions for Byterun."""
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
from __future__ import print_function
"""Test functions etc, for Byterun."""
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
"""Test the with statement for Byterun."""
from __future__ import print_function
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Usage:
# ./common.sh <function name>
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Usage:
# ./compare.sh <function name>
View
@@ -1,4 +1,4 @@
#!/usr/bin/python -S
#!/usr/bin/env python -S
"""
symbols_test.py: Tests for symbols.py
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
"""
ccompile.py - Compile with builtin compile() function, which uses compile.c.
"""
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
from __future__ import print_function
"""
determinism.py
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
"""
foil/pgen_ast.py -- Parse pgen.asdl and dynamically create classes on this
module.
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
"""
Wrapper for Python.asdl.
"""
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
from __future__ import print_function
"""
stdlib_compile.py
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
"""
opy_main.py
"""
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
# Copyright 2004-2005 Elemental Security, Inc. All Rights Reserved.
# Licensed to PSF under a Contributor Agreement.
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Usage:
# ./run.sh <function name>
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Smoke tests for OPy.
#
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
"""
Test for generator expressions.
"""
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
"""
Simpler test for generator expressions.
"""
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
import sys
import getopt
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
"""Print names of all methods defined in module
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
import marshal
import dis
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
from __future__ import print_function
"""Run the Python regression test using the compiler
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
"""
util.py
"""
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
"""
arith_parse.py - Parse shell arithmetic, which is based on C.
"""
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
# Copyright 2016 Andy Chu. All rights reserved.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
"""
osh/ast_.py -- Parse osh.asdl and dynamically create classes on this module.
"""
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
# Copyright 2016 Andy Chu. All rights reserved.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
# Copyright 2016 Andy Chu. All rights reserved.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
# Copyright 2016 Andy Chu. All rights reserved.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
"""
cmd_parse_test.py: Tests for cmd_parse.py
"""
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
"""
lex_test.py: Tests for lex.py
"""
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
# Copyright 2016 Andy Chu. All rights reserved.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
# Copyright 2016 Andy Chu. All rights reserved.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Count lines ofcode in various ways.
#
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Usage:
# ./refactor.sh <function name>
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Miscellaneous scripts that don't belong elsewhere.
#
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# NOTE: The error message is different at interactive prompt:
#
View
@@ -1,3 +1,3 @@
#!/bin/bash
#!/usr/bin/env bash
foo()
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Usage:
# ./03-glob.sh <function name>
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
foo=a
case $foo in [0-9]) echo number;; [a-z]) echo letter;; esac
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
echo A
echo B
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Usage:
# ./06-unterminated-double-long.sh <function name>
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
echo A
echo B
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# bash issues a warning; dash lets you continue.
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
echo $0
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# COMPOUND here docs mixed with individual here docs
# This shows it has to be a depth first search, but POST ORDER TRAVERSAL.
while cat <<EOF1; read line; do echo " -> line: '$line'"; cat <<EOF2; done <<EOF3
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Usage:
# ./09-here-doc.sh <function name>
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Testing compound statements with &.
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
set -o nounset
set -o pipefail
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
echo $(echo foo)
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
sleep_test() {
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Usage:
# ./13-big-here-doc.sh <function name>
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Usage:
# ./14-parse-order.sh <function name>
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
set -o errexit
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Usage:
# ./16-errexit.sh <function name>
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
### Append string to string
s='abc'
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Test arithmetic expressions in all their different contexts.
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Interesting interpretation of constants.
#
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Arrays decay upon assignment (without splicing) and equality. This will not
# be true in Oil -- arrays will be first class.
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# TODO: Need a SETUP section.
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
### Env value doesn't persist
FOO=foo printenv.py FOO
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Differences from bash:
# - literal syntax alternates key-value
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# NOTE:
# -declare -A is required.
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Usage:
# ./background-status.sh <function name>
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Job control constructs:
# & terminator (instead of ;)
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
from __future__ import print_function
import sys
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
from __future__ import print_function
import os
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
from __future__ import print_function
"""
read_from_fd.py
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
"""
show_fd_table.py -- Uses Linux-specific proc interface
"""
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
from __future__ import print_function
"""
stdout_stderr.py
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Tests for the blog.
#
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
### no expansion
echo {foo}
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
### echo keyword
echo done
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Tests for builtins having to do with variables: export, readonly, unset, etc.
#
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# POSIX rule about special builtins pointed at:
#
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
### echo dashes
echo -
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Test the case statement
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Some nonsensical combinations which can all be detected at PARSE TIME.
# All shells allow these, but right now OSH disallowed.
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
### case
foo=a; case $foo in [0-9]) echo number;; [a-z]) echo letter;; esac
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Miscellaneous tests for the command language.
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Usage:
# ./comments.sh <function name>
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# NOTE: The test harness isn't good for this test; it strips lines that start
# with #
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
"""
coproc.py
"""
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Demo of coprocesses
#
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
### [[ glob matching, [[ has no glob expansion
[[ foo.py == *.py ]] && echo true
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Usage:
# ./declare.sh <function name>
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
### (( )) result
(( 1 )) && echo True
View
@@ -1,3 +1,3 @@
#!/bin/bash
#!/usr/bin/env bash
echo "$@"
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Usage:
# ./errexit.sh <function name>
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Tests that explore parsing corner cases.
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Usage:
# ./export.sh <function name>
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# This is an OPTION in bash, but not mksh (because the feature originated in
# ksh). So it's probably low priority.
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Constructs borrowed from ksh. Hm I didn't realize zsh also implements these!
# mksh implements most too.
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
### Incomplete Function
# code: foo()
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
### Locals don't leak
f() {
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# NOTE: Could move spec/03-glob.sh here.
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
### Here redirect with explicit descriptor
# A space betwen 0 and <<EOF causes it to pass '0' as an arg to cat.
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Usage:
# ./history.sh <function name>
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Test the if statement
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# let arithmetic.
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Demo of line numbers, inspired by:
#
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
### implicit for loop
# This is like "for i in $@".
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
### debug-line builtin
debug-line 'hi there'
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
### Bad var sub
echo $%
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Tests for pipelines.
# NOTE: Grammatically, ! is part of the pipeline:
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Cases from
# http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
### Process sub input
f=_tmp/process-sub.txt
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Tests for quotes.
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Usage:
# ./readonly.sh <function name>
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
### Leading redirect
echo hello >$TMP/hello.txt # temporary fix
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Only bash and zsh seem to implement [[ foo =~ '' ]]
#
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Usage:
# $SH ./runtime-errors.sh all
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Demo of variable scope.
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Test set flags, sh flags.
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Test cases for the grammar. It uses pidgin shell because we don't have a
# proper lexer in ANTLR (ANTLR's lexers don't have states anyway.)
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Usage:
# ./show-fd-table.sh <function name>
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# For testing the Python sketch
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# NOTE:
# - $! is tested in background.test.sh
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
### Subshell exit code
( false; )
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
### empty string is false. Equivalent to -n.
test 'a' && echo true
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
### ~ expansion in assignment
HOME=/home/bob
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Usage:
# ./unicode.sh <function name>
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Test $0 $1 $2
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Test combination of var ops.
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
### Remove const suffix
v=abcd
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
### Lazy Evaluation of Alternative
i=0
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Var refs are done with ${!a} and local/declare -n.
#
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Tests for the args in:
#
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Corner cases in var sub. Maybe rename this file.
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# word-eval.test.sh: Test the word evaluation pipeline in order.
#
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# NOTE on bash bug: After setting IFS to array, it never splits anymore? Even
# if you assign IFS again.
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Usage:
# ./xtrace.sh <function name>
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Run real shell code with osh and bash, and compare the results.
#
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Run tools to maintain the coding style.
#
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Usage:
# ./osh-to-oil-test.sh <function name>
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Usage:
# ./publish.sh <function name>
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
from __future__ import print_function
"""
sh_spec.py -- Test framework to compare shells.
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
"""
sh_spec_test.py: Tests for sh_spec.py
"""
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Sanity checks for the shell.
#
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Run tests against multiple shells with the sh_spec framework.
#
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Usage:
# ./spec-file.sh <function name>
@@ -7,18 +7,23 @@ set -o nounset
set -o pipefail
set -o errexit
readonly DASH=/bin/dash
readonly BASH=/bin/bash
readonly MKSH=/bin/mksh
readonly ZSH=/usr/bin/zsh # Ubuntu puts it here
readonly DASH=$(which dash 2>/dev/null || echo /bin/sh)
readonly BASH=$(which bash)
readonly MKSH=$(which mksh)
readonly ZSH=$(which zsh)
readonly BUSYBOX_ASH=_tmp/shells/ash
# TODO: Does it make sense to copy the binary to an unrelated to directory,
# like /tmp? /tmp/{oil.ovm,osh}.
readonly OSH_BIN=_bin/osh
if test -f _bin/osh; then
# TODO: Does it make sense to copy the binary to an unrelated to directory,
# like /tmp? /tmp/{oil.ovm,osh}.
readonly OSH_BIN=_bin/osh
# HACK that relies on word splitting. TODO: Use ${OSH[@]} everywhere
readonly OSH="bin/osh $OSH_BIN"
else
readonly OSH="bin/osh"
fi
# HACK that relies on word splitting. TODO: Use ${OSH[@]} everywhere
readonly OSH="bin/osh $OSH_BIN"
# ash and dash are similar, so not including ash by default. zsh is not quite
# POSIX.
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Run unit tests. Sets PYTHONPATH.
#
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Run the osh parser on shell scripts found in the wild.
#
View
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Wild tests that actually run code.
#
View
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/env python
"""
osh2oil_test.py: Tests for osh2oil.py
"""