#                                                                    -*-perl-*-
$description = "Test the realpath functions.";

$details = "";

run_make_test('
ifneq ($(realpath .),$(CURDIR))
  $(error )
endif

ifneq ($(realpath ./),$(CURDIR))
  $(error )
endif

ifneq ($(realpath .///),$(CURDIR))
  $(error )
endif

ifneq ($(realpath /),/)
  $(error )
endif

ifneq ($(realpath /.),/)
  $(error )
endif

ifneq ($(realpath /./),/)
  $(error )
endif

ifneq ($(realpath /.///),/)
  $(error )
endif

ifneq ($(realpath /..),/)
  $(error )
endif

ifneq ($(realpath /../),/)
  $(error )
endif

ifneq ($(realpath /..///),/)
  $(error )
endif

ifneq ($(realpath . /..),$(CURDIR) /)
  $(error )
endif

.PHONY: all
all: ; @:
',
              '',
              '');

# On Windows platforms, "//" means something special.  So, don't do these
# tests there.

if ($port_type ne 'W32') {
  run_make_test('
ifneq ($(realpath ///),/)
  $(error )
endif

ifneq ($(realpath ///.),/)
  $(error )
endif

ifneq ($(realpath ///..),/)
  $(error )
endif

.PHONY: all
all: ; @:',
                '',
                '');
}


# This tells the test driver that the perl test script executed properly.
1;
