Fix failing test cases in the java grade.

tests/general/environment.m:
    Catch the exception that is thrown if io.set_environment_var/4 cannot
    modify the environment -- this is always the case for Java -- and print
    out what the exception is.  This avoids the stack trace that would otherwise
    be printed.

    Update the coding style in this test.

tests/general/environment.exp2:
    Add an alternative expected output for systems that do not support
    modifying the environment.

tests/general/Mmakefile:
    Shift the 'environment' test case to the list of those that
    require catching exceptions to be supported.

tests/general/float_roundtrip.exp2:
tests/hard_coded/deep_copy.exp4:
    Add new expected outputs to account for differences in the way floats are
    printed.

tests/hard_coded/dir_test.exp4:
tests/warnings/singleton_test.exp3:
    Update these expected outputs.
This commit is contained in:
Julien Fischer
2016-02-07 16:01:37 +11:00
parent 8e0eb72c15
commit f3bc84fdfa
7 changed files with 209 additions and 66 deletions

View File

@@ -27,7 +27,6 @@ ORDINARY_PROGS = \
double_error \
double_error2 \
duplicate_label \
environment \
fail_detism \
float_roundtrip \
float_test \
@@ -82,6 +81,7 @@ ORDINARY_PROGS = \
unsafe_uniqueness
EXCEPTION_PROGS = \
environment \
map_corresponding \
unused_arg_determinism

View File

@@ -0,0 +1,4 @@
Variable "PATH" is set (passed)
Variable "SHOULD_NOT_BE_SET" is set not set (passed)
Cannot modify environment on this platform:
software_error("Could not set environment variable `SHOULD_NOT_BE_SET\'")

View File

@@ -2,16 +2,22 @@
% vim: ts=4 sw=4 et ft=mercury
%---------------------------------------------------------------------------%
%
% Short series of tests for io__get_environment_var and
% io__set_environment_var.
% Short series of tests for io.get_environment_var and
% io.set_environment_var.
%
% Author: bromage
%
%---------------------------------------------------------------------------%
:- module environment.
:- interface.
:- import_module io.
:- pred main(io__state :: di, io__state :: uo) is det.
:- pred main(io::di, io::uo) is cc_multi.
%---------------------------------------------------------------------------%
%---------------------------------------------------------------------------%
:- implementation.
@@ -20,39 +26,54 @@
:- import_module maybe.
:- import_module string.
:- pred environment__test(string, bool, bool, io__state, io__state).
:- mode environment__test(in, in, in, di, uo) is det.
environment__test(Var, ShouldBeSet, ShouldBePrinted) -->
io__get_environment_var(Var, MaybeValue),
io__write_strings(["Variable \"", Var, "\" is set "]),
( { MaybeValue = yes(Value) } ->
( { ShouldBePrinted = yes } ->
io__write_strings(["to \"", Value, "\" "])
;
[]
),
{ Ok = ShouldBeSet }
;
io__write_string("not set "),
{ bool__not(ShouldBeSet, Ok) }
),
( { Ok = yes } ->
io__write_string("(passed)\n")
;
io__write_string("(failed)\n")
).
main -->
main(!IO) :-
% PATH should be set on all Unix systems but may differ
% on the different machines that generate .exp and .out files
environment__test("PATH", yes, no),
test("PATH", yes, no, !IO),
% This one probably isn't. :-)
environment__test("SHOULD_NOT_BE_SET", no, yes),
test("SHOULD_NOT_BE_SET", no, yes, !IO),
% So set it...
io__set_environment_var("SHOULD_NOT_BE_SET", "Hello World!"),
( try [io(!IO)] (
% So set it...
io.set_environment_var("SHOULD_NOT_BE_SET", "Hello World!", !IO)
)
then
% Did that work?
environment.test("SHOULD_NOT_BE_SET", yes, yes, !IO)
catch_any E ->
io.write_string("Cannot modify environment on this platform:\n", !IO),
io.write_line(E, !IO)
).
% Did that work?
environment__test("SHOULD_NOT_BE_SET", yes, yes).
:- pred environment.test(string::in, bool::in, bool::in,
io::di, io::uo) is det.
test(Var, ShouldBeSet, ShouldBePrinted, !IO) :-
io.get_environment_var(Var, MaybeValue, !IO),
io.write_strings(["Variable \"", Var, "\" is set "], !IO),
(
MaybeValue = yes(Value),
(
ShouldBePrinted = yes,
io.write_strings(["to \"", Value, "\" "], !IO)
;
ShouldBePrinted = no
),
Ok = ShouldBeSet
;
MaybeValue = no,
io.write_string("not set ", !IO),
bool.not(ShouldBeSet, Ok)
),
(
Ok = yes,
io.write_string("(passed)\n", !IO)
;
Ok = no,
io.write_string("(failed)\n", !IO)
).
%---------------------------------------------------------------------------%
:- end_module environment.
%---------------------------------------------------------------------------%

View File

@@ -0,0 +1,5 @@
0.9092974 : success.
0.123573124 : success.
0.987654321012345 : success.
0.12345678901234566 : success.
1.8E-10 : success.

View File

@@ -0,0 +1,113 @@
TESTING DISCRIMINATED UNIONS
two
two
two
one
one
one
three
three
three
apple([9, 5, 1])
apple([9, 5, 1])
apple([9, 5, 1])
banana([three, one, two])
banana([three, one, two])
banana([three, one, two])
zop(3.3, 2.03)
zop(3.3, 2.03)
zop(3.3, 2.03)
zip(3, 2)
zip(3, 2)
zip(3, 2)
zap(3, -2.111)
zap(3, -2.111)
zap(3, -2.111)
wombat
wombat
wombat
foo
foo
foo
tuple_a(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ["a", "b", "c"], 16, 17)
tuple_a(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ["a", "b", "c"], 16, 17)
tuple_a(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ["a", "b", "c"], 16, 17)
tuple_b(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ["a", "b", "c"], 16, ["x", "y", "z"])
tuple_b(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ["a", "b", "c"], 16, ["x", "y", "z"])
tuple_b(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ["a", "b", "c"], 16, ["x", "y", "z"])
tuple_c(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, ["p", "q"], 17)
tuple_c(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, ["p", "q"], 17)
tuple_c(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, ["p", "q"], 17)
tuple_d(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, ["d", "e", "f"], 15, ["u", "v", "w"], 17)
tuple_d(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, ["d", "e", "f"], 15, ["u", "v", "w"], 17)
tuple_d(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, ["d", "e", "f"], 15, ["u", "v", "w"], 17)
TESTING POLYMORPHISM
poly_three(3.33, 4, poly_one(9.11))
poly_three(3.33, 4, poly_one(9.11))
poly_three(3.33, 4, poly_one(9.11))
poly_two(3)
poly_two(3)
poly_two(3)
poly_one([2399.3])
poly_one([2399.3])
poly_one([2399.3])
TESTING BUILTINS
""
""
""
"Hello, world\n"
"Hello, world\n"
"Hello, world\n"
"Foo%sFoo"
"Foo%sFoo"
"Foo%sFoo"
"\""
"\""
"\""
'a'
'a'
'a'
'&'
'&'
'&'
3.14159
3.14159
3.14159
1.128324983E-21
1.128324983E-21
1.128324983E-21
2.23954899E23
2.23954899E23
2.23954899E23
-65
-65
-65
4
4
4
univ_cons(["hi! I\'m a univ!"])
univ_cons(["hi! I\'m a univ!"])
univ_cons(["hi! I\'m a univ!"])
{1, "two", '3', {4, '5', "6"}}
{1, "two", '3', {4, '5', "6"}}
{1, "two", '3', {4, '5', "6"}}
TESTING OTHER TYPES
var(1)
var(1)
var(1)
var_supply(0)
var_supply(0)
var_supply(0)
var_supply(1)
var_supply(1)
var_supply(1)
empty
empty
empty
qwerty(4)
qwerty(4)
qwerty(4)

View File

@@ -122,7 +122,7 @@ dir__path_name_is_root_directory("foo/bar") failed
"C:\"/"foo" = "C:\/foo".
"C:"/"C:" = "C:/C:".
"C:"/"C:\foo" = "C:/C:\foo".
"."/"/foo" threw exception: software_error("dir./: second argument is absolute")
"."/"/foo" threw exception: software_error("function `dir./\'/2: Unexpected: second argument is absolute")
"."/"\foo" = "./\foo".
"foo"/"bar/baz" = "foo/bar/baz".
"foo/"/"bar/baz" = "foo/bar/baz".

View File

@@ -1,30 +1,30 @@
singleton_test.m:008: In function `my_append_func'/2:
singleton_test.m:008: warning: unresolved polymorphism.
singleton_test.m:008: The variables with unbound types were:
singleton_test.m:008: L2: V_1
singleton_test.m:008: L1: V_1
singleton_test.m:008: The unbound type variables will be implicitly bound to
singleton_test.m:008: the builtin type `void'.
singleton_test.m:026: In clause for predicate `singleton_test.my_append'/3:
singleton_test.m:026: warning: variable `L2' occurs only once in this scope.
singleton_test.m:030: In clause for function `singleton_test.my_append_func'/2:
singleton_test.m:030: warning: variables `L1, L2' occur only once in this
singleton_test.m:030: scope.
singleton_test.m:031: In clause for function `singleton_test.my_append_func'/2:
singleton_test.m:031: warning: variable `T' occurs only once in this scope.
singleton_test.m:041: In the Java code for predicate
singleton_test.m:041: `singleton_test.my_c_pred'/3:
singleton_test.m:041: warning: variable `Y' does not occur in the Java code.
singleton_test.m:058: In the Java code for function
singleton_test.m:058: `singleton_test.my_c_func'/2:
singleton_test.m:058: warning: variable `X' does not occur in the Java code.
singleton_test.m:079: In the Java code for predicate
singleton_test.m:079: `singleton_test.c_hello_world'/3:
singleton_test.m:079: warning: variable `Msg' does not occur in the Java
singleton_test.m:079: code.
singleton_test.m:090: In clause for predicate `singleton_test.test_head'/6:
singleton_test.m:090: warning: variable `_D' occurs more than once in this
singleton_test.m:090: scope.
singleton_test.m:090: In clause for predicate `singleton_test.test_head'/6:
singleton_test.m:090: warning: variables `A, B' occur only once in this
singleton_test.m:090: scope.
singleton_test.m:013: In function `my_append_func'/2:
singleton_test.m:013: warning: unresolved polymorphism.
singleton_test.m:013: The variables with unbound types were:
singleton_test.m:013: L2: V_1
singleton_test.m:013: L1: V_1
singleton_test.m:013: The unbound type variables will be implicitly bound to
singleton_test.m:013: the builtin type `void'.
singleton_test.m:031: In clause for predicate `singleton_test.my_append'/3:
singleton_test.m:031: warning: variable `L2' occurs only once in this scope.
singleton_test.m:035: In clause for function `singleton_test.my_append_func'/2:
singleton_test.m:035: warning: variables `L1, L2' occur only once in this
singleton_test.m:035: scope.
singleton_test.m:036: In clause for function `singleton_test.my_append_func'/2:
singleton_test.m:036: warning: variable `T' occurs only once in this scope.
singleton_test.m:046: In the Java code for predicate
singleton_test.m:046: `singleton_test.my_c_pred'/3:
singleton_test.m:046: warning: variable `Y' does not occur in the Java code.
singleton_test.m:063: In the Java code for function
singleton_test.m:063: `singleton_test.my_c_func'/2:
singleton_test.m:063: warning: variable `X' does not occur in the Java code.
singleton_test.m:084: In the Java code for predicate
singleton_test.m:084: `singleton_test.c_hello_world'/3:
singleton_test.m:084: warning: variable `Msg' does not occur in the Java
singleton_test.m:084: code.
singleton_test.m:095: In clause for predicate `singleton_test.test_head'/6:
singleton_test.m:095: warning: variable `_D' occurs more than once in this
singleton_test.m:095: scope.
singleton_test.m:095: In clause for predicate `singleton_test.test_head'/6:
singleton_test.m:095: warning: variables `A, B' occur only once in this
singleton_test.m:095: scope.