• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#***************************************************************************
2#                                  _   _ ____  _
3#  Project                     ___| | | |  _ \| |
4#                             / __| | | | |_) | |
5#                            | (__| |_| |  _ <| |___
6#                             \___|\___/|_| \_\_____|
7#
8# Copyright (C) 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
9# Copyright (C) 2020, Marc Hoersken, <info@marc-hoersken.de>
10#
11# This software is licensed as described in the file COPYING, which
12# you should have received as part of this distribution. The terms
13# are also available at https://curl.se/docs/copyright.html.
14#
15# You may opt to use, copy, modify, merge, publish, distribute and/or sell
16# copies of the Software, and permit persons to whom the Software is
17# furnished to do so, under the terms of the COPYING file.
18#
19# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
20# KIND, either express or implied.
21#
22###########################################################################
23
24use strict;
25use warnings;
26
27my %APPVEYOR_TEST_NAMES;
28
29sub appveyor_check_environment {
30    if(defined $ENV{'APPVEYOR_API_URL'} && $ENV{'APPVEYOR_API_URL'}) {
31        return 1;
32    }
33    return 0;
34}
35
36sub appveyor_create_test_result {
37    my ($curl, $testnum, $testname)=@_;
38    $testname =~ s/\\/\\\\/g;
39    $testname =~ s/\'/\\\'/g;
40    $testname =~ s/\"/\\\"/g;
41    my $appveyor_baseurl="$ENV{'APPVEYOR_API_URL'}";
42    my $appveyor_result=`$curl --silent --noproxy "*" \\
43    --header "Content-Type: application/json" \\
44    --data "
45        {
46            'testName': '$testname',
47            'testFramework': 'runtests.pl',
48            'fileName': 'tests/data/test$testnum',
49            'outcome': 'Running'
50        }
51    " \\
52    "$appveyor_baseurl/api/tests"`;
53    print "AppVeyor API result: $appveyor_result\n" if ($appveyor_result);
54    $APPVEYOR_TEST_NAMES{$testnum}=$testname;
55}
56
57sub appveyor_update_test_result {
58    my ($curl, $testnum, $error, $start, $stop)=@_;
59    my $testname=$APPVEYOR_TEST_NAMES{$testnum};
60    if(!defined $testname) {
61        return;
62    }
63    if(!defined $stop) {
64        $stop = $start;
65    }
66    my $appveyor_duration = sprintf("%.0f", ($stop-$start)*1000);
67    my $appveyor_outcome;
68    my $appveyor_category;
69    if($error == 2) {
70        $appveyor_outcome = 'Ignored';
71        $appveyor_category = 'Error';
72    }
73    elsif($error < 0) {
74        $appveyor_outcome = 'NotRunnable';
75        $appveyor_category = 'Warning';
76    }
77    elsif(!$error) {
78        $appveyor_outcome = 'Passed';
79        $appveyor_category = 'Information';
80    }
81    else {
82        $appveyor_outcome = 'Failed';
83        $appveyor_category = 'Error';
84    }
85    my $appveyor_baseurl="$ENV{'APPVEYOR_API_URL'}";
86    my $appveyor_result=`$curl --silent --noproxy "*" --request PUT \\
87    --header "Content-Type: application/json" \\
88    --data "
89        {
90            'testName': '$testname',
91            'testFramework': 'runtests.pl',
92            'fileName': 'tests/data/test$testnum',
93            'outcome': '$appveyor_outcome',
94            'durationMilliseconds': $appveyor_duration,
95            'ErrorMessage': 'Test $testnum $appveyor_outcome'
96        }
97    " \\
98    "$appveyor_baseurl/api/tests"`;
99    print "AppVeyor API result: $appveyor_result\n" if ($appveyor_result);
100    if($appveyor_category eq 'Error') {
101        $appveyor_result=`$curl --silent --noproxy "*" \\
102        --header "Content-Type: application/json" \\
103        --data "
104            {
105                'message': '$appveyor_outcome: $testname',
106                'category': '$appveyor_category',
107                'details': 'Test $testnum $appveyor_outcome'
108            }
109        " \\
110        "$appveyor_baseurl/api/build/messages"`;
111        print "AppVeyor API result: $appveyor_result\n" if ($appveyor_result);
112    }
113}
114
1151;
116