This file is indexed.

/usr/bin/openscad-testrun is in openscad-testing 2015.03-1+dfsg-3.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/usr/bin/env python

"Set up and run the OpenSCAD test suite"

# Copyright (C) 2012 chrysn <chrysn@fsfe.org>
# 
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# As a special exception, you have permission to link this program
# with the CGAL library and distribute executables, as long as you
# follow the requirements of the GNU GPL in regard to all of the
# software in the executable aside from CGAL.

import argparse
import os
import subprocess
import datetime
from os.path import join

TESTPROGRAMS = "/usr/lib/openscad/testprograms"
EXAMPLES = "/usr/share/openscad/examples"
TESTDATA = "/usr/share/openscad/testdata"
REGRESSION = "/usr/share/openscad/regression"
LIBRARIES = "/usr/share/openscad/libraries"
OPENSCAD = "/usr/bin/openscad"

def main():
    p = argparse.ArgumentParser(description=__doc__)
    p.add_argument("-d", "--directory", help="Where to set up the files")
    p.add_argument("-n", "--no-run", help="Just set up the files, don't run", action="store_true")
    p.add_argument("--virtual", help="Run the tests on a virtual X server (xvfb-run)", action="store_true")
    p.add_argument("additional", nargs="*", help="remaining arguments will be passed to ctest")

    args = p.parse_args()

    dirname = args.directory or "openscad-test-%s"%datetime.datetime.now().strftime("%Y-%m-%d_%H:%M")
    builddir = join(dirname, "build")

    print "Creating test infrastructure in", dirname

    os.mkdir(dirname)
    os.mkdir(builddir)
    os.symlink(EXAMPLES, join(dirname, "examples"))
    # the csgpngtest family creates intermediate files like scad/3D/issues/issue1105c.scad.csg
    subprocess.check_call(['cp', '-sa', TESTDATA, join(dirname, "testdata")])
    os.symlink(REGRESSION, join(builddir, "regression"))
    os.symlink(LIBRARIES, join(dirname, "libraries"))
    os.symlink(OPENSCAD, join(dirname, "openscad"))

    for f in os.listdir(TESTPROGRAMS):
        os.symlink(join(TESTPROGRAMS, f), join(builddir, f))

    # it's a lie, that's the gui version -- but we won't let anybody know...
    #
    # actually, the _nogui should be in another binary package, and
    # alternatives should decide what is openscad in $PATH.
    os.symlink('/usr/bin/openscad', join(builddir, 'openscad_nogui'))

    # this is a workaround while the throwntogethertest handles includes subtly
    # different from openscad's includes. in the build time tests, this does
    # not surface as OPENSCADPATH has to be set anyway due to the default
    # library include path depending on the binary location, which is not final
    # in those tests.
    #
    # the tests that failed were throwntogethertest_text-search-test,
    # throwntogethertest_include-tests and throwntogethertest_use-tests; it
    # seems the importing failed in the second level of MCAD includes.
    os.environ['OPENSCADPATH'] = '/usr/share/openscad/libraries'

    if args.no_run:
        print "Skipping test run"
    else:
        os.chdir(builddir)
        invocation = ["ctest"] + args.additional
        if args.virtual:
            invocation = ['xvfb-run', '-s', '-screen 0 800x600x24'] + invocation
        os.execvp(invocation[0], invocation)

if __name__ == "__main__":
    main()