Home | History | Annotate | Download | only in tests
      1 #!/bin/bash
      2 
      3 pushd $(dirname "$0") > /dev/null
      4 
      5 RunImplicitLayerTest()
      6 {
      7     # Check for local implicit directory.
      8     : "${HOME:?}"
      9     local implicitDirectory="$HOME/.local/share/vulkan/implicit_layer.d"
     10     if [ ! -d "$implicitDirectory" ]
     11     then
     12         mkdir -p "$implicitDirectory"
     13     fi
     14 
     15     # Check for the shared object.
     16     local sharedObject="libVkLayer_test.so"
     17     local layerDirectory="./layers"
     18     if [ ! -f "$layerDirectory/$sharedObject" ]
     19     then
     20         echo "The file, $layerDirectory/$sharedObject, can not be found." >&2
     21         return 1
     22     fi
     23 
     24     # Check for the json which does not include the optional enable environment variable.
     25     local json="VkLayer_test.json"
     26     if [ ! -f "$layerDirectory/$json" ]
     27     then
     28         echo "The file, $layerDirectory/$json, can not be found." >&2
     29         return 1
     30     fi
     31 
     32     # Copy the test layer into the implicit directory.
     33     if ! cp "$layerDirectory/$sharedObject" "$implicitDirectory/" || ! cp "$layerDirectory/$json" "$implicitDirectory/"
     34     then
     35         echo "unable to install test layer" >&2
     36         return 1
     37     fi
     38 
     39     # Test without setting enable environment variable. The loader should not load the layer.
     40     output=$(GTEST_FILTER=ImplicitLayer.Present \
     41         ./vk_loader_validation_tests 2>&1)
     42     if echo "$output" | grep -q "VK_LAYER_LUNARG_test: CreateInstance"
     43     then
     44        echo "test layer detected but enable environment variable was not set" >&2
     45        return 1
     46     fi
     47 
     48     # Test enable environment variable with good value. The loader should load the layer.
     49     output=$(ENABLE_LAYER_TEST_1=enable \
     50         GTEST_FILTER=ImplicitLayer.Present \
     51         ./vk_loader_validation_tests 2>&1)
     52     if ! echo "$output" | grep -q "VK_LAYER_LUNARG_test: CreateInstance"
     53     then
     54        echo "test layer not detected" >&2
     55        return 1
     56     fi
     57 
     58     # Test enable environment variable with bad value. The loader should not load the layer.
     59     output=$(ENABLE_LAYER_TEST_1=wrong \
     60         GTEST_FILTER=ImplicitLayer.Present \
     61         ./vk_loader_validation_tests 2>&1)
     62     if echo "$output" | grep -q "VK_LAYER_LUNARG_test: CreateInstance"
     63     then
     64        echo "test layer detected but enable environment variable was set to wrong value" >&2
     65        return 1
     66     fi
     67 
     68     # Test disable environment variable. The loader should not load the layer.
     69     output=$(DISABLE_LAYER_TEST_1=value \
     70         GTEST_FILTER=ImplicitLayer.Present \
     71         ./vk_loader_validation_tests 2>&1)
     72     if echo "$output" | grep -q "VK_LAYER_LUNARG_test: CreateInstance"
     73     then
     74        echo "test layer detected but disable environment variable was set" >&2
     75        return 1
     76     fi
     77 
     78     # Remove the enable environment variable.
     79     if ! sed -i '/enable_environment\|ENABLE_LAYER_TEST_1\|},/d' "$implicitDirectory/$json"
     80     then
     81         echo "unable to remove enable environment variable" >&2
     82         return 1
     83     fi
     84 
     85     # Test without setting enable environment variable. The loader should load the layer.
     86     output=$(GTEST_FILTER=ImplicitLayer.Present \
     87         ./vk_loader_validation_tests 2>&1)
     88     if ! echo "$output" | grep -q "VK_LAYER_LUNARG_test: CreateInstance"
     89     then
     90        echo "test layer not detected" >&2
     91        return 1
     92     fi
     93 
     94     # Remove the test layer.
     95     if ! rm "$implicitDirectory/$sharedObject" || ! rm "$implicitDirectory/$json"
     96     then
     97         echo "unable to uninstall test layer" >&2
     98         return 1
     99     fi
    100 
    101     echo "ImplicitLayer test PASSED"
    102 }
    103 
    104 ! RunImplicitLayerTest && echo "ImplicitLayer test FAILED" >&2 && exit 1
    105 
    106 popd > /dev/null
    107