summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--linker.c6
-rw-r--r--main.c2
-rw-r--r--tests/modules/.jq5
-rw-r--r--tests/modules/1.4-master/a.jq2
-rw-r--r--tests/modules/1.4-master/b/b.jq2
-rw-r--r--tests/modules/c/c.jq5
-rw-r--r--tests/modules/c/d.jq1
-rw-r--r--tests/modules/syntaxerror/syntaxerror.jq1
-rwxr-xr-xtests/run55
9 files changed, 31 insertions, 48 deletions
diff --git a/linker.c b/linker.c
index 6aaa7d79..1b152e68 100644
--- a/linker.c
+++ b/linker.c
@@ -88,9 +88,9 @@ static jv find_lib(jq_state *jq, jv lib_name, jv lib_search_path, int use_vers_d
jv version_dirs;
if (use_vers_dir) {
- version_dirs = JV_ARRAY(jv_string("any/"),
- jv_string_concat(jq_get_version_dir(jq),
- jv_string("/")));
+ jv vdir = jq_get_version_dir(jq);
+ assert(strchr(jv_string_value(vdir), '.') != NULL);
+ version_dirs = JV_ARRAY(jv_string(""), jv_string_concat(vdir, jv_string("/")));
} else {
version_dirs = JV_ARRAY(jv_string(""));
}
diff --git a/main.c b/main.c
index dec1f9f0..089409fa 100644
--- a/main.c
+++ b/main.c
@@ -365,7 +365,7 @@ int main(int argc, char* argv[]) {
if (strchr(JQ_VERSION, '-') == NULL)
jq_set_attr(jq, jv_string("VERSION_DIR"), jv_string(JQ_VERSION));
else
- jq_set_attr(jq, jv_string("VERSION_DIR"), jv_string("next"));
+ jq_set_attr(jq, jv_string("VERSION_DIR"), jv_string_fmt("%.*s-master", strchr(JQ_VERSION, '-') - JQ_VERSION, JQ_VERSION));
#if (!defined(WIN32) && defined(HAVE_ISATTY)) || defined(HAVE__ISATTY)
diff --git a/tests/modules/.jq b/tests/modules/.jq
new file mode 100644
index 00000000..69f37636
--- /dev/null
+++ b/tests/modules/.jq
@@ -0,0 +1,5 @@
+def foo: "baz";
+def f: "wat";
+def f: "foo";
+def g: "bar";
+def fg: f+g;
diff --git a/tests/modules/1.4-master/a.jq b/tests/modules/1.4-master/a.jq
new file mode 100644
index 00000000..1bf8d069
--- /dev/null
+++ b/tests/modules/1.4-master/a.jq
@@ -0,0 +1,2 @@
+module a {version:1.7};
+def a: "a";
diff --git a/tests/modules/1.4-master/b/b.jq b/tests/modules/1.4-master/b/b.jq
new file mode 100644
index 00000000..3b69e966
--- /dev/null
+++ b/tests/modules/1.4-master/b/b.jq
@@ -0,0 +1,2 @@
+def a: "b";
+def b: "c";
diff --git a/tests/modules/c/c.jq b/tests/modules/c/c.jq
new file mode 100644
index 00000000..2d355ed3
--- /dev/null
+++ b/tests/modules/c/c.jq
@@ -0,0 +1,5 @@
+module c {whatever:null};
+import a as foo;
+import d as d {search:"$ORIGIN/"};
+def a: 0;
+def c: foo::a + "c" + d::meh;
diff --git a/tests/modules/c/d.jq b/tests/modules/c/d.jq
new file mode 100644
index 00000000..3d11a18b
--- /dev/null
+++ b/tests/modules/c/d.jq
@@ -0,0 +1 @@
+def meh: "meh";
diff --git a/tests/modules/syntaxerror/syntaxerror.jq b/tests/modules/syntaxerror/syntaxerror.jq
new file mode 100644
index 00000000..0acc5495
--- /dev/null
+++ b/tests/modules/syntaxerror/syntaxerror.jq
@@ -0,0 +1 @@
+wat;
diff --git a/tests/run b/tests/run
index 8a4ef0e7..0b5fcafc 100755
--- a/tests/run
+++ b/tests/run
@@ -20,6 +20,7 @@ if [ -z "$d" ]; then
exit 0
fi
+
## Test constant folding
# String constant folding (addition only)
@@ -73,74 +74,40 @@ fi
v=`scripts/version`
case "$v" in
-*-*) v=next;;
+*-*) v=`echo $v|sed -e 's/-.*$/-master/'`;;
*) true;;
esac
## Test library/module system
-cat > "$d/.jq" <<EOF
-def foo: "baz";
-def f: "wat";
-def f: "foo";
-def g: "bar";
-def fg: f+g;
-EOF
-
-mkdir -p "$d/$v/b" "$d/any/c" "$d/any/syntaxerror"
-
-cat > "$d/$v/a.jq" <<EOF
-module a {version:1.7};
-def a: "a";
-EOF
-
-cat > "$d/$v/b/b.jq" <<EOF
-def a: "b";
-def b: "c";
-EOF
-
-cat > "$d/any/c/d.jq" <<EOF
-def meh: "meh";
-EOF
-
-cat > "$d/any/c/c.jq" <<"EOF"
-module c {whatever:null};
-import a as foo;
-import d as d {search:"$ORIGIN/"};
-def a: 0;
-def c: foo::a + "c" + d::meh;
-EOF
-
-cat > "$d/any/syntaxerror/syntaxerror.jq" <<EOF
-wat;
-EOF
-
-if [ "`HOME=$d $VALGRIND $Q ./jq -nr fg`" != foobar ]; then
+mods=$PWD/tests/modules
+
+if [ "`HOME=$mods $VALGRIND $Q ./jq -nr fg`" != foobar ]; then
echo "Bug #479 appears to be back" 1>&2
exit 1
fi
-if [ `HOME=$d $VALGRIND $Q ./jq --debug-dump-disasm -n fg | grep '^[a-z]' | wc -l` -gt 3 ]; then
+if [ `HOME=$mods $VALGRIND $Q ./jq --debug-dump-disasm -n fg | grep '^[a-z]' | wc -l` -gt 3 ]; then
echo "Binding too many defs into program" 1>&2
exit 1
fi
-if ! $VALGRIND $Q ./jq -ner -L $d 'import a as foo; import b as bar; import a; def fooa: foo::a; [fooa, bar::a, bar::b, foo::a, a] | . == ["a","b","c","a","a"]' > /dev/null; then
+if ! $VALGRIND $Q ./jq -ner -L $mods 'import a as foo; import b as bar; import a; def fooa: foo::a; [fooa, bar::a, bar::b, foo::a, a] | . == ["a","b","c","a","a"]' > /dev/null; then
echo "Module system appears to be broken" 1>&2
exit 1
fi
-if ! $VALGRIND $Q ./jq -ner -L $d 'import c as foo; [foo::a, foo::c] | . == [0,"acmeh"]' > /dev/null; then
+if ! $VALGRIND $Q ./jq -ner -L $mods 'import c as foo; [foo::a, foo::c] | . == [0,"acmeh"]' > /dev/null; then
echo "Module system appears to be broken" 1>&2
exit 1
fi
-if [ "`$VALGRIND $Q ./jq -cner -L $d '\"c\" | modulemeta'`" != '{"whatever":null,"name":"c","deps":[{"as":"foo","name":"a"},{"search":"$ORIGIN/","as":"d","name":"d"}]}' ]; then
+if [ "`$VALGRIND $Q ./jq -cner -L $mods '\"c\" | modulemeta'`" != '{"whatever":null,"name":"c","deps":[{"as":"foo","name":"a"},{"search":"$ORIGIN/","as":"d","name":"d"}]}' ]; then
echo "modulemeta builtin appears to be broken" 1>&2
exit 1
fi
-if $VALGRIND ./jq -ner -L $d 'import syntaxerror; .' > $d/out 2>&1; then
+if $VALGRIND ./jq -ner -L $mods 'import syntaxerror; .' > $d/out 2>&1; then
echo "Module system appears to be broken" 1>&2
exit 1
fi
@@ -154,7 +121,7 @@ if ! grep '^jq: error: syntax error,' $d/out > /dev/null; then
exit 1
fi
-if $VALGRIND ./jq -ner -L $d '%::wat' > $d/out 2>&1 ||
+if $VALGRIND ./jq -ner -L $mods '%::wat' > $d/out 2>&1 ||
! grep '^jq: error: syntax error,' $d/out > /dev/null; then
echo "Syntax errors not detected?" 1>&2
exit 1