Changes in / [b2b039d:f6d4204]


Ignore:
Files:
1 added
24 deleted
23 edited

Legend:

Unmodified
Added
Removed
  • Jenkinsfile

    rb2b039d rf6d4204  
    55//===========================================================================================================
    66//Compilation script is done here but environnement set-up and error handling is done in main loop
    7 def cfa_build(boolean full_build) {
     7def cfa_build() {
    88        build_stage 'Checkout'
    99                def install_dir = pwd tmp: true
    1010                //checkout the source code and clean the repo
    1111                checkout scm
    12 
    13                 //Clean all temporary files to make sure no artifacts of the previous build remain
    1412                sh 'git clean -fdqx'
    15 
    16                 //Reset the git repo so no local changes persist
    1713                sh 'git reset --hard'
    1814
     
    3026        build_stage 'Test'
    3127
    32                 //Run the tests from the tests directory
     28                //Run the tests from the example directory
    3329                dir ('src/tests') {
    34                         if (full_build) {
    35                                 sh 'python test.py --all'
    36                         }
    37                         else {
    38                                 sh './runTests.sh'
    39                         }
     30                        sh './runTests.sh'
    4031                }
    4132
     
    4435                //do a maintainer-clean to make sure we need to remake from scratch
    4536                sh 'make maintainer-clean > /dev/null'
    46 }
    47 
    48 def make_doc() {
    49         def err = null
    50 
    51         try {
    52                 sh 'make clean > /dev/null'
    53                 sh 'make > /dev/null 2>&1'
    54         }
    55 
    56         catch (Exception caughtError) {
    57                 //rethrow error later
    58                 err = caughtError
    59 
    60                 sh 'cat *.log'
    61         }
    62 
    63         finally {
    64                 /* Must re-throw exception to propagate error */
    65                 if (err) {
    66                         throw err
    67                 }
    68         }
    69 }
    70 
    71 def doc_build() {
    72         stage 'Documentation'
    73 
    74                 status_prefix = 'Documentation'
    75 
    76                 dir ('doc/user') {
    77                         make_doc()
    78                 }
    79 
    80                 dir ('doc/refrat') {
    81                         make_doc()
    82                 }
    8337}
    8438
     
    163117        try {
    164118                //Prevent the build from exceeding 30 minutes
    165                 timeout(60) {
     119                timeout(30) {
    166120
    167121                        //Wrap build to add timestamp to command line
     
    186140                                //Compile using gcc-4.9
    187141                                currentCC = new CC_Desc('gcc-4.9', 'g++-4.9', 'gcc-4.9')
    188                                 cfa_build(doPromoteBuild2DoLang)
     142                                cfa_build()
    189143
    190144                                //Compile using gcc-5
    191145                                currentCC = new CC_Desc('gcc-5', 'g++-5', 'gcc-5')
    192                                 cfa_build(doPromoteBuild2DoLang)
     146                                cfa_build()
    193147
    194148                                //Compile using gcc-4.9
    195149                                currentCC = new CC_Desc('gcc-6', 'g++-6', 'gcc-6')
    196                                 cfa_build(doPromoteBuild2DoLang)
    197 
    198                                 //Compile latex documentation
    199                                 doc_build()
     150                                cfa_build()
    200151
    201152                                if( doPromoteBuild2DoLang ) {
     
    234185//===========================================================================================================
    235186def notify_result(boolean promote, Exception err, String status, boolean log) {
    236         echo 'Build completed, sending result notification'
    237187        if(promote)     {
    238188                if( err ) {
     
    274224        def project_name = (env.JOB_NAME =~ /(.+)\/.+/)[0][1].toLowerCase()
    275225
    276         def gitLog = 'Error retrieving git logs'
    277         def gitDiff = 'Error retrieving git diff'
    278 
    279         try {
    280 
    281                 sh "git rev-list --format=short ${gitRefOldValue}...${gitRefNewValue} > GIT_LOG"
    282                 gitLog = readFile('GIT_LOG')
    283 
    284                 sh "git diff --stat ${gitRefNewValue} ${gitRefOldValue} > GIT_DIFF"
    285                 gitDiff = readFile('GIT_DIFF')
    286         }
    287         catch (Exception error) {}
     226        sh "git rev-list --format=short ${gitRefOldValue}...${gitRefNewValue} > GIT_LOG"
     227        def gitLog = readFile('GIT_LOG')
     228
     229        sh "git diff --stat ${gitRefNewValue} ${gitRefOldValue} > GIT_DIFF"
     230        def gitDiff = readFile('GIT_DIFF')
    288231
    289232        def email_subject = "[${project_name} git][BUILD# ${env.BUILD_NUMBER} - ${status}] - branch ${env.BRANCH_NAME}"
  • doc/refrat/Makefile

    rb2b039d rf6d4204  
    22
    33TeXLIB = .:../LaTeXmacros:../LaTeXmacros/listings:../LaTeXmacros/enumitem:../bibliography/:
    4 LaTeX  = TEXINPUTS=${TeXLIB} && export TEXINPUTS && latex -halt-on-error
     4LaTeX  = TEXINPUTS=${TeXLIB} && export TEXINPUTS && latex
    55BibTeX = BIBINPUTS=${TeXLIB} && export BIBINPUTS && bibtex
    66
  • doc/user/Makefile

    rb2b039d rf6d4204  
    22
    33TeXLIB = .:../LaTeXmacros:../LaTeXmacros/listings:../LaTeXmacros/enumitem:../bibliography/:
    4 LaTeX  = TEXINPUTS=${TeXLIB} && export TEXINPUTS && latex -halt-on-error
     4LaTeX  = TEXINPUTS=${TeXLIB} && export TEXINPUTS && latex
    55BibTeX = BIBINPUTS=${TeXLIB} && export BIBINPUTS && bibtex
    66
  • src/tests/.expect/abs.txt

    rb2b039d rf6d4204  
     1/usr/local/bin/cfa -g -Wall -Wno-unused-function     abs.c   -o abs
     2CFA Version 1.0.0 (debug)
    13char                    ¿       abs A
    24signed int              -65     abs 65
  • src/tests/.expect/minmax.txt

    rb2b039d rf6d4204  
    1 char                    z a     min a
    2 signed int              4 3     min 3
    3 unsigned int            4 3     min 3
    4 signed long int         4 3     min 3
    5 unsigned long int       4 3     min 3
    6 signed long long int    4 3     min 3
    7 unsigned long long int  4 3     min 3
    8 float                   4 3.1   min 3.1
    9 double                  4 3.1   min 3.1
    10 long double             4 3.1   min 3.1
    11 
    12 char                    z a     max z
    13 signed int              4 3     max 4
    14 unsigned int            4 3     max 4
    15 signed long int         4 3     max 4
    16 unsigned long int       4 3     max 4
    17 signed long long int    4 3     max 4
    18 unsigned long long int  4 3     max 4
    19 float                   4 3.1   max 4
    20 double                  4 3.1   max 4
    21 long double             4 3.1   max 4
  • src/tests/Cast.c

    rb2b039d rf6d4204  
    99        (int)f;
    1010        (void(*)())f;
    11 //      ([long, long double, *[]()])([f, f, f]);
     11        ([long, long double, *[]()])([f, f, f]);
    1212}
    1313
  • src/tests/CommentMisc.c

    rb2b039d rf6d4204  
     1/* single line */
     2// single line
     3
     4// single line containing */
     5// single line containing /*
     6// single line containing /* */
     7
     8/* 1st */ int i;
     9int i; /* 2nd */
     10/* 1st */ int i; /* 2nd */
     11/* 1st */ /* 2nd */
     12
     13/* 1st
     14   2nd */ int i;
     15
     16/*
     17*/
     18
     19/*
     20
     21*/
     22
     23/*
     24  1st
     25*/
     26
     27/*
     28  1st
     29  2nd
     30*/
     31
     32// ignore preprocessor directives
     33
     34#line 2
     35 #
     36 #include <fred>
     37        #define mary abc
     38
    139// alternative ANSI99 brackets
    240
  • src/tests/Constant0-1.c

    rb2b039d rf6d4204  
    1 // Constant test declaration
     1//Constant test declaration
     2// Cforall extension
    23
    34// value
     
    56int 0;
    67const int 0;
     8static const int 0;
    79int 1;
    810const int 1;
     11static const int 1;
     12int 0, 1;
     13const int 0, 1;
     14int (0), (1);
     15int ((0)), ((1));
     16static const int 0, 1;
    917struct { int i; } 0;
    1018const struct { int i; } 1;
    11 
    12 #ifdef DUPS
    13 
    14 int 0;
    15 const int 0;
    16 int 1;
    17 const int 1;
    18 int (0), (1);
    19 int ((0)), ((1));
    20 const int 0, 1;
    21 const int (0), (1);
    22 struct { int i; } 0;
    23 const struct { int i; } 1;
    24 
    25 #endif // DUPS
    26 
    27 #ifndef NEWDECL
     19static const struct { int i; } 1;
    2820
    2921// pointer
    30 
    31 int *0, *1;
    32 int * const (0), * const 1;
    33 struct { int i; } *0;
    34 const struct { int i; } *0;
    35 int (*(* const x)), **0;
    36 
    37 #ifdef DUPS
    3822
    3923int *0, *1;
     
    4428int (* const 0), (* const 1);
    4529int ((* const 0)), ((* const 1));
    46 int (*(* const x)), *(*0);
    47 int (*(* const x)), (*(*0));
    4830struct { int i; } *0;
    49 const struct { int i; } *0;
    50 int (*(* const x)), **0;
    51 
    52 #endif // DUPS
    53 
    54 #else
    5531
    5632// Cforall style
     
    5834* int x, 0;
    5935const * int x, 0;
     36static const * int x, 0;
    6037* struct { int i; } 0;
    6138const * struct { int i; } 0;
     39static const * struct { int i; } 0;
     40static * int x, 0;
     41static const * int x, 0;
    6242const * * int x, 0;
    6343
    64 #ifdef DUPS
    65 
    66 * int x, 0;
    67 const * int x, 0;
    68 
    69 #endif // DUPS
    70 
    71 #endif // NEWDECL
    72 
    7344int main() {
    74 #ifndef NEWDECL
    7545    int 1, * 0;
    76 #else
    7746    * int x, 0;
    78 #endif // NEWDECL
    7947}
  • src/tests/Context.c

    rb2b039d rf6d4204  
    1 // trait declaration
    2 
    3 trait has_q( otype T ) {
     1//cforall context declaration
     2context has_q( otype T ) {
    43        T q( T );
    54};
    65
    76forall( otype z | has_q( z ) ) void f() {
    8         trait has_r( otype T, otype U ) {
     7        context has_r( otype T, otype U ) {
    98                T r( T, T (T,U) );
    109        };
  • src/tests/Exception.c

    rb2b039d rf6d4204  
    1010    try {
    1111        x/4;
    12     } catch( int ) {
     12    } catch( int) {
    1313    } catch( int x ) {
    1414    } catch( struct { int i; } ) {
  • src/tests/Expression.c

    rb2b039d rf6d4204  
    1 int main() {
    2     struct s { int i; } x, *p = &x;
    3     int i = 3;
     1int fred() {
     2    struct s { int i; } *p;
     3    int i;
    44
     5    // order of evaluation (GCC is different)
     6/*
     7    i = sizeof( (int) {3} );
     8    i = sizeof (int) {3};
     9*/
    510    // operators
    611
     
    3742    i||i;
    3843    p->i;
     44    i+=i;
     45    i-=i;
    3946    i*=i;
    4047    i/=i;
    4148    i%=i;
    42     i+=i;
    43     i-=i;
    4449    i&=i;
    4550    i|=i;
     
    4954
    5055    i?i:i;
    51 } // main
     56
     57    // cast
     58/*
     59    double d;
     60    int *ip;
     61    (int *) i;
     62    (* int) i;
     63    ([char, int *])[d, d];
     64    [i,ip,ip] = ([int, * int, int *])[1,(void *)2,(void *)3];
     65    [i,ip,ip] = ([int, * int, int *])([1,(void *)2,(void *)3]);
     66*/
     67}
     68
     69//Dummy main
     70int main(int argc, char const *argv[])
     71{
     72        return 0;
     73}
  • src/tests/Forall.c

    rb2b039d rf6d4204  
    1010        void f( int );
    1111        void h( void (*p)(void) );
    12 
     12 
    1313        int x;
    1414        void (*y)(void);
    1515        char z;
    1616        float w;
    17 
     17 
    1818        f( x );
    1919        f( y );
     
    2626        forall( otype T ) void f( T, T );
    2727        forall( otype T, otype U ) void f( T, U );
    28 
     28 
    2929        int x;
    3030        float y;
    3131        int *z;
    3232        float *w;
    33 
     33 
    3434        f( x, y );
    3535        f( z, w );
     
    4646}
    4747
    48 trait sumable( otype T ) {
     48context sumable( otype T ) {
    4949        const T 0;
    5050        T ?+?(T, T);
  • src/tests/Makefile.am

    rb2b039d rf6d4204  
    1111## Created On       : Sun May 31 09:08:15 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Mon Jun 20 14:30:52 2016
    14 ## Update Count     : 33
     13## Last Modified On : Mon Jan 25 22:31:42 2016
     14## Update Count     : 25
    1515###############################################################################
    1616
     
    2323vector_test_SOURCES = vector/vector_int.c vector/array.c vector/vector_test.c
    2424avl_test_SOURCES = avltree/avl_test.c avltree/avl0.c avltree/avl1.c avltree/avl2.c avltree/avl3.c avltree/avl4.c avltree/avl-private.c
    25 
    26 Constant0-1DP : Constant0-1.c
    27         ${CC} ${CFLAGS} -DDUPS ${<} -o ${@}
    28 
    29 Constant0-1ND : Constant0-1.c
    30         ${CC} ${CFLAGS} -DNEWDECL ${<} -o ${@}
    31 
    32 Constant0-1NDDP : Constant0-1.c
    33         ${CC} ${CFLAGS} -DNEWDECL -DDUPS ${<} -o ${@}
  • src/tests/Makefile.in

    rb2b039d rf6d4204  
    621621
    622622
    623 Constant0-1DP : Constant0-1.c
    624         ${CC} ${CFLAGS} -DDUPS ${<} -o ${@}
    625 
    626 Constant0-1ND : Constant0-1.c
    627         ${CC} ${CFLAGS} -DNEWDECL ${<} -o ${@}
    628 
    629 Constant0-1NDDP : Constant0-1.c
    630         ${CC} ${CFLAGS} -DNEWDECL -DDUPS ${<} -o ${@}
    631 
    632623# Tell versions [3.59,3.63) of GNU make to not export all variables.
    633624# Otherwise a system limit (for SysV at least) may be exceeded.
  • src/tests/Operators.c

    rb2b039d rf6d4204  
    1 int ?*?( int a, int b ) {
    2         return 0;
    3 }
     1int ?*?( int, int );
    42
    53int ?()( int number1, int number2 ) {
     
    75}
    86
    9 int ?+?( int a, int b ) {
    10         return 0;
    11 }
     7int ?+?( int, int );
    128
    13 int ?=?( int *a, int b ) {
    14         return 0;
    15 }
     9int ?=?( int *, int );
    1610struct accumulator {
    1711        int total;
    1812};
    1913
    20 char ?()( struct accumulator a, char number1, char number2 ) {
    21         return 'a';
    22 }
     14char ?()( struct accumulator a, char number1, char number2 );
    2315
    2416void f( void ) {
     
    3123}
    3224
    33 int main(int argc, char const *argv[]) {
    34         /* code */
    35         return 0;
    36 }
    37 
    3825// Local Variables: //
    3926// tab-width: 4 //
  • src/tests/Scope.c

    rb2b039d rf6d4204  
    1515y p;
    1616
    17 trait has_u( otype z ) {
     17context has_u( otype z ) {
    1818        z u(z);
    1919};
  • src/tests/Subrange.c

    rb2b039d rf6d4204  
    11// A small context defining the notion of an ordered otype.  (The standard
    22// library should probably contain a context for this purpose.)
    3 trait ordered(otype T) {
     3context ordered(otype T) {
    44    int ?<?(T, T), ?<=?(T, T);
    55};
  • src/tests/Switch.c

    rb2b039d rf6d4204  
    1 int main(int argc, char const *argv[]) {
     1int fred() {
    22    int i;
    33    switch ( i ) case 3 : i = 1;
  • src/tests/Typedef.c

    rb2b039d rf6d4204  
    1818a c;
    1919
    20 typedef typeof(3) x, y;  // GCC
     20typedef otypeof(3) x, y;  // GCC
    2121
    2222x p;
     
    2424
    2525int main() {
    26     typedef typeof(3) z, p;
     26    typedef otypeof(3) z, p;
    2727    z w;
    2828    p x;
  • src/tests/Typeof.c

    rb2b039d rf6d4204  
    11int main() {
    22    int *v1;
    3     typeof(v1) v2;
    4     typeof(*v1) v3[4];
     3    otypeof(v1) v2;
     4    otypeof(*v1) v3[4];
    55    char *v4[4];
    6     typeof(typeof(char *)[4]) v5;
    7     typeof (int *) v6;
    8     typeof( int ( int, int p ) ) *v7;
    9     typeof( [int] ( int, int p ) ) *v8;
     6    otypeof(otypeof(char *)[4]) v5;
     7    otypeof (int *) v6;
     8    otypeof( int ( int, int p ) ) *v7;
     9    otypeof( [int] ( int, int p ) ) *v8;
    1010}
  • src/tests/limits.c

    rb2b039d rf6d4204  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // limits.c --
     7// limits.c -- 
    88//
    99// Author           : Peter A. Buhr
     
    1212// Last Modified On : Tue May 10 20:45:28 2016
    1313// Update Count     : 1
    14 //
     14// 
    1515
    1616#include <limits>
     
    109109long _Complex _1_sqrt_2 = _1_SQRT_2;
    110110
    111 int main(int argc, char const *argv[]) {
    112         //DUMMY
    113         return 0;
    114 }
    115 
    116111// Local Variables: //
    117112// tab-width: 4 //
  • src/tests/runTests.sh

    rb2b039d rf6d4204  
    6969python test.py ${tests}
    7070
    71 ret_val=$?
     71ret_val=0
    7272exit $((ret_val))
  • src/tests/test.py

    rb2b039d rf6d4204  
    33
    44from os import listdir
    5 from os.path import isfile, join, splitext
     5from os.path import isfile, join
    66from subprocess import Popen, PIPE, STDOUT
    77
     
    1313################################################################################
    1414def listTests():
    15         list = [splitext(f)[0] for f in listdir('./.expect')
    16                 if not f.startswith('.') and f.endswith('.txt')
    17                 ]
     15        list = [f.rstrip('.c') for f in listdir('.')
     16                if not f.startswith('.') and (
     17                        not isfile(f) or f.endswith('.c')
     18                )]
    1819
    1920        return list
     
    3940
    4041        # build, skipping to next test on error
    41         make_ret = sh("make -j 8 %s 2> %s 1> /dev/null" % (test, out_file), dry_run)
     42        make_ret = sh("make -j 8 %s > %s 2>&1" % (test, out_file), dry_run)
    4243
    4344        if make_ret == 0 :
     
    5051        retcode = 0
    5152        if not generate :
     53                # touch expected files so empty output are supported by default
     54                sh("touch .expect/%s.txt" % test, dry_run)
     55
    5256                # diff the output of the files
    5357                retcode = sh("diff .expect/%s.txt .out/%s.log" % (test, test), dry_run)
     
    6367
    6468        if generate :
    65                 print( "Regenerate tests for: " )
     69                print( "Regenerate tests for: ", end="" )
     70                print( ", ".join( tests ) )
    6671
    6772        failed = False;
    6873        for t in tests:
    69                 print("%20s  " % t, end="")
     74                if not generate :
     75                        print("%20s  " % t, end="")
    7076                sys.stdout.flush()
    7177                test_failed = run_test_instance(t, generate, dry_run)
     
    7480                if not generate :
    7581                        print("FAILED" if test_failed else "PASSED")
    76                 else :
    77                         print( "Done" )
    7882
    7983        sh('make clean > /dev/null 2>&1', dry_run)
    8084
    81         return 1 if failed else 0
     85        if generate :
     86                print( "Done" )
     87
     88        return 0 if failed else 1
    8289
    8390################################################################################
     
    8693parser = argparse.ArgumentParser(description='Script which runs cforall tests')
    8794parser.add_argument('--dry-run', help='Don\'t run the tests, only output the commands', action='store_true')
    88 parser.add_argument('--list', help='List all test available', action='store_true')
    8995parser.add_argument('--all', help='Run all test available', action='store_true')
    90 parser.add_argument('--regenerate-expected', help='Regenerate the .expect by running the specified tets, can be used with --all option', action='store_true')
     96parser.add_argument('--generate-expected', help='Regenerate the .expect by running the specified tets, can be used with --all option', action='store_true')
    9197parser.add_argument('tests', metavar='test', type=str, nargs='*', help='a list of tests to run')
    9298
    9399options = parser.parse_args()
    94100
    95 if (len(options.tests) > 0  and     options.all and not options.list) \
    96 or (len(options.tests) == 0 and not options.all and not options.list) :
     101if len(options.tests) > 0 and options.all :
    97102        print('ERROR: must have option \'--all\' or non-empty test list', file=sys.stderr)
    98103        parser.print_help()
    99104        sys.exit(1)
    100105
    101 allTests = listTests()
     106tests = listTests() if options.all else options.tests
    102107
    103 if options.all or options.list :
    104         tests = allTests
    105 
    106 else :
    107         tests = []
    108         for test in options.tests:
    109                 if test in allTests :
    110                         tests.append(test)
    111                 else :
    112                         print('ERROR: No expected file for test %s, ignoring it' % test, file=sys.stderr)
    113 
    114         if len(tests) == 0 :
    115                 print('ERROR: No valid test to run', file=sys.stderr)
    116                 sys.exit(1)
    117 
    118 if options.list :
    119         print("\n".join(tests))
    120 
    121 else :
    122         sys.exit( run_tests(tests, options.regenerate_expected, options.dry_run) )
     108sys.exit( run_tests(tests, options.generate_expected, options.dry_run) )
Note: See TracChangeset for help on using the changeset viewer.