|
|
[buildout] |
|
|
extends = translator.cfg |
|
|
components/jxml.cfg |
|
|
components/xalan-j-2.7.2.cfg |
|
|
develop+= pyhwp-tests |
|
|
tools/xsltest |
|
|
tools/gpl |
|
|
parts+= test-core |
|
|
test-coverage |
|
|
test-cli |
|
|
test-xsl |
|
|
test-xsl-cov |
|
|
test-sdist |
|
|
test-tools |
|
|
test-for-bisect |
|
|
xsltest |
|
|
code-analysis |
|
|
collect-samples |
|
|
masstest-failed |
|
|
massfind-unknowntag |
|
|
massfind-incomplete |
|
|
expected-output-update |
|
|
|
|
|
[pyhwp] |
|
|
eggs+= nose |
|
|
coverage |
|
|
gpl |
|
|
pyroma |
|
|
|
|
|
[test-core] |
|
|
recipe = collective.xmltestreport |
|
|
eggs = pyhwp-tests |
|
|
defaults = ['--auto-color', '--auto-progress', '--xml', '--tests-pattern=hwp5_tests'] |
|
|
|
|
|
[test-xsl] |
|
|
recipe = collective.recipe.template |
|
|
input = ${buildout:directory}/misc/test-xsl.in |
|
|
output = ${buildout:directory}/bin/test-xsl |
|
|
mode = 755 |
|
|
|
|
|
[test-xsl-cov] |
|
|
recipe = collective.recipe.template |
|
|
mode=755 |
|
|
output=${buildout:bin-directory}/test-xsl-cov |
|
|
input =inline: |
|
|
|
|
|
CLASSPATH=${xalan-j-2.7.2:jars} ${jxml:location}/bin/jxml-cov-test $* |
|
|
|
|
|
[test-coverage] |
|
|
recipe = collective.recipe.template |
|
|
input = ${buildout:directory}/misc/test-coverage |
|
|
output = ${buildout:directory}/bin/test-coverage |
|
|
mode = 755 |
|
|
|
|
|
[test-cli] |
|
|
recipe = collective.recipe.template |
|
|
input = ${buildout:directory}/misc/test-cli.in |
|
|
output = ${buildout:directory}/bin/test-cli |
|
|
mode = 755 |
|
|
|
|
|
[test-sdist] |
|
|
recipe = collective.recipe.template |
|
|
input = ${buildout:directory}/misc/test-sdist.in |
|
|
output = ${buildout:directory}/bin/test-sdist |
|
|
mode = 755 |
|
|
|
|
|
[test-tools] |
|
|
recipe = collective.xmltestreport |
|
|
eggs = gpl |
|
|
defaults = ['--auto-color', '--auto-progress', '--xml'] |
|
|
|
|
|
[test-for-bisect] |
|
|
recipe = collective.recipe.template |
|
|
input = ${buildout:directory}/misc/test-for-bisect |
|
|
output = ${buildout:directory}/bin/test-for-bisect |
|
|
mode = 755 |
|
|
|
|
|
[xsltest] |
|
|
recipe = zc.recipe.egg |
|
|
eggs = xsltest |
|
|
|
|
|
[code-analysis] |
|
|
recipe = plone.recipe.codeanalysis |
|
|
directory = ${buildout:directory}/pyhwp |
|
|
|
|
|
|
|
|
flake8-max-complexity = 30 |
|
|
|
|
|
utf8-header = True |
|
|
|
|
|
[collect-samples] |
|
|
recipe = collective.recipe.template |
|
|
mode = 755 |
|
|
output = ${buildout:bin-directory}/${:_buildout_section_name_} |
|
|
input = |
|
|
inline: |
|
|
|
|
|
|
|
|
set -e |
|
|
|
|
|
dir="$1" |
|
|
find "$dir" -iname '*.hwp' -print0 | parallel --gnu -0 "${save-sample:output}" |
|
|
|
|
|
[save-sample] |
|
|
recipe = collective.recipe.template |
|
|
mode = 755 |
|
|
output = ${buildout:bin-directory}/${:_buildout_section_name_} |
|
|
input = |
|
|
inline: |
|
|
|
|
|
|
|
|
set -e |
|
|
|
|
|
src="$1" |
|
|
|
|
|
[ -e "$src" ] || (echo "$src not found"; exit 1) |
|
|
|
|
|
${:abspath} |
|
|
|
|
|
version=$(${buildout:bin-directory}/hwp5proc version "$src") |
|
|
srcpath=$(abspath "$src") |
|
|
sha1sum=$(sha1sum -b "$srcpath" | awk '{ print $1 }') |
|
|
|
|
|
echo "$version/$sha1sum $srcpath" |
|
|
|
|
|
repo="${buildout:directory}/samples.local" |
|
|
|
|
|
blob_dir="${buildout:directory}/samples.local/blob" |
|
|
[ -d "$blob_dir" ] || mkdir -p "$blob_dir" |
|
|
|
|
|
blob_path="$blob_dir/$sha1sum" |
|
|
[ -e "$blob_path" ] || cp "$srcpath" "$blob_path" |
|
|
|
|
|
dst_path="$repo/$version/$sha1sum.hwp" |
|
|
dst_dir=$(dirname "$dst_path") |
|
|
[ -d "$dst_dir" ] || mkdir -p "$dst_dir" |
|
|
[ -e $dst_path ] || ln -s "$blob_path" "$dst_path" |
|
|
|
|
|
abspath= |
|
|
abspath() { |
|
|
if [ $(echo "$1" | head -c 1) = "/" ]; then |
|
|
echo "$1" |
|
|
else |
|
|
echo "$PWD/$1" |
|
|
fi |
|
|
} |
|
|
|
|
|
[masstest-failed] |
|
|
recipe = collective.recipe.template |
|
|
mode = 755 |
|
|
output = ${buildout:bin-directory}/${:_buildout_section_name_} |
|
|
input = |
|
|
inline: |
|
|
|
|
|
|
|
|
set -e |
|
|
|
|
|
${masstest:output} "${masstest-worker:failed-dir}" |
|
|
|
|
|
[masstest] |
|
|
recipe = collective.recipe.template |
|
|
mode = 755 |
|
|
output = ${buildout:bin-directory}/${:_buildout_section_name_} |
|
|
input = |
|
|
inline: |
|
|
|
|
|
|
|
|
set -e |
|
|
|
|
|
${:def-masstest} |
|
|
|
|
|
sample_dir="${buildout:directory}/samples.local/" |
|
|
[ -z "$1" ] || sample_dir="$1" |
|
|
|
|
|
masstest "$sample_dir" | tee ${buildout:parts-directory}/masstest.log |
|
|
|
|
|
def-masstest= |
|
|
masstest() { |
|
|
find "$1" -iname '*.hwp' -print0 | parallel --gnu -0 ${masstest-worker:output} |
|
|
} |
|
|
|
|
|
[masstest-worker] |
|
|
recipe = collective.recipe.template |
|
|
mode = 755 |
|
|
output = ${buildout:bin-directory}/${:_buildout_section_name_} |
|
|
input = |
|
|
inline: |
|
|
|
|
|
|
|
|
set -e |
|
|
|
|
|
[ -e "$1" ] || (echo "$1: not found"; exit 1) |
|
|
testee="$1" |
|
|
|
|
|
failed_dir="${:failed-dir}" |
|
|
[ -d "$failed_dir" ] || mkdir -p "$failed_dir" |
|
|
|
|
|
errors_dir="${:errors-dir}" |
|
|
[ -d "$errors_dir" ] || mkdir -p "$errors_dir" |
|
|
|
|
|
testee_filename=$(basename "$testee") |
|
|
testee_error_hwp5proc="$errors_dir/$testee_filename.hwp5proc.err" |
|
|
testee_error_xmllint="$errors_dir/$testee_filename.xmllint.err" |
|
|
|
|
|
test_xml() { |
|
|
${buildout:bin-directory}/hwp5proc xml "$testee" 2> "$testee_error_hwp5proc" | xmllint --format - > /dev/null 2> "$testee_error_xmllint" |
|
|
} |
|
|
|
|
|
handle_success() { |
|
|
echo "" |
|
|
filename=$(basename "$testee") |
|
|
failed_path="$failed_dir/$filename" |
|
|
[ ! -e "$failed_path" ] || rm -f "$failed_path" |
|
|
rm -f "$testee_error_hwp5proc" |
|
|
rm -f "$testee_error_xmllint" |
|
|
} |
|
|
|
|
|
handle_failed() { |
|
|
echo " FAILED" |
|
|
[ -e "$failed_path" ] || ln -s "$testee" "$failed_dir" |
|
|
} |
|
|
|
|
|
echo -n "$testee" |
|
|
test_xml && handle_success || handle_failed |
|
|
|
|
|
failed-dir=${buildout:parts-directory}/masstest/failed |
|
|
errors-dir=${buildout:parts-directory}/masstest/errors |
|
|
|
|
|
|
|
|
[massfind-unknowntag] |
|
|
recipe = collective.recipe.template |
|
|
output = ${buildout:bin-directory}/${:_buildout_section_name_} |
|
|
mode = 755 |
|
|
input = |
|
|
inline: |
|
|
|
|
|
|
|
|
set -e |
|
|
|
|
|
samples='${buildout:directory}/samples.local' |
|
|
find "$samples/" -iname '*.hwp' | parallel --gnu ${buildout:bin-directory}/hwp5proc find --model=UnknownTagModel | tee ${buildout:parts-directory}/massfind-unknowntag |
|
|
|
|
|
|
|
|
[massfind-incomplete] |
|
|
recipe = collective.recipe.template |
|
|
output = ${buildout:bin-directory}/${:_buildout_section_name_} |
|
|
mode = 755 |
|
|
input = |
|
|
inline: |
|
|
|
|
|
|
|
|
set -e |
|
|
|
|
|
samples='${buildout:directory}/samples.local' |
|
|
find "$samples/" -iname '*.hwp' | parallel --gnu ${buildout:bin-directory}/hwp5proc find --incomplete | tee ${buildout:parts-directory}/massfind-incomplete |
|
|
|
|
|
|
|
|
[expected-output-update] |
|
|
recipe = collective.recipe.template |
|
|
output = ${buildout:bin-directory}/${:_buildout_section_name_} |
|
|
mode = 755 |
|
|
input = |
|
|
inline: |
|
|
|
|
|
|
|
|
set -e |
|
|
|
|
|
samples='${buildout:directory}/samples' |
|
|
find "$samples/" -iname '*.hwp' | parallel --gnu ${expected-output-update-worker:output} |
|
|
|
|
|
[expected-output-update-worker] |
|
|
recipe = collective.recipe.template |
|
|
output = ${buildout:bin-directory}/${:_buildout_section_name_} |
|
|
mode = 755 |
|
|
input = |
|
|
inline: |
|
|
|
|
|
|
|
|
set -e |
|
|
|
|
|
filename=$1 |
|
|
docinfo="$filename.docinfo.json" |
|
|
section0="$filename.bodytext.section0.json" |
|
|
xmlformat="$filename.formatted.xml" |
|
|
odt_output="$filename.odt" |
|
|
odt_filename=`basename "$odt_output"` |
|
|
|
|
|
hwp5proc_xml() { |
|
|
${buildout:bin-directory}/hwp5proc xml "$1" 2> "$xmlformat.err" |
|
|
} |
|
|
|
|
|
hwp5odt() { |
|
|
local orgdir="$PWD" |
|
|
local filename=`basename "$1"` |
|
|
local odt_file=`echo $filename | sed -e "s/.hwp$/.odt/g"` |
|
|
cd `dirname "$1"` |
|
|
${buildout:bin-directory}/hwp5odt "$filename" |
|
|
rm -rf "$odt_file.d" |
|
|
mkdir "$odt_file.d" |
|
|
unzip "$odt_file" -d "$odt_file.d" |
|
|
rm -f "$odt_file" |
|
|
cd "$orgdir" |
|
|
} |
|
|
|
|
|
hwp5html() { |
|
|
local html_dir=`echo $1 | sed -e "s/.hwp$/.html.d/g"` |
|
|
rm -rf "$html_dir" |
|
|
${buildout:bin-directory}/hwp5html "$1" --output "$html_dir" |
|
|
xmllint --c14n --nonet --encode utf-8 "$html_dir/index.xhtml" | xmllint --format --encode utf-8 - > "$html_dir/index.formatted.xhtml" |
|
|
} |
|
|
|
|
|
xml_c14n() { |
|
|
xmllint --c14n --encode utf-8 - 2> "$xmlformat.c14n.err" |
|
|
} |
|
|
xml_format() { |
|
|
xmllint --format --encode utf-8 - 2> "$xmlformat.format.err" |
|
|
} |
|
|
|
|
|
if ${buildout:bin-directory}/hwp5proc header "$filename" | grep password | grep 0 > /dev/null; then |
|
|
dummy='' |
|
|
else |
|
|
echo "$filename: SKIPPING" |
|
|
rm -f "$docinfo.err" |
|
|
rm -f "$section0.err" |
|
|
rm -f "$xmlformat.err" |
|
|
rm -f "$xmlformat.c14n.err" |
|
|
rm -f "$xmlformat.format.err" |
|
|
exit 0 |
|
|
fi |
|
|
|
|
|
${buildout:bin-directory}/hwp5proc models "$filename" docinfo > "$docinfo" 2> "$docinfo.err" && echo "$filename: docinfo" && rm -f "$docinfo.err" |
|
|
|
|
|
${buildout:bin-directory}/hwp5proc models "$filename" bodytext/0 > "$section0" 2> "$section0.err" && echo "$filename: bodytext/0" && rm -f "$section0.err" |
|
|
|
|
|
hwp5proc_xml "$filename" | xml_c14n | xml_format > "$xmlformat" && echo "$filename: xml" && rm -f "$xmlformat.err" "$xmlformat.c14n.err" "$xmlformat.format.err" |
|
|
hwp5odt "$filename" |
|
|
hwp5html "$filename" |
|
|
|