• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#***************************************************************************
2#                                  _   _ ____  _
3#  Project                     ___| | | |  _ \| |
4#                             / __| | | | |_) | |
5#                            | (__| |_| |  _ <| |___
6#                             \___|\___/|_| \_\_____|
7#
8# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
9# Copyright (C) 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# SPDX-License-Identifier: curl
23#
24###########################################################################
25
26use strict;
27use warnings;
28
29my %APPVEYOR_TEST_NAMES;
30
31sub appveyor_check_environment {
32    if(defined $ENV{'APPVEYOR_API_URL'} && $ENV{'APPVEYOR_API_URL'}) {
33        return 1;
34    }
35    return 0;
36}
37
38sub appveyor_create_test_result {
39    my ($curl, $testnum, $testname)=@_;
40    $testname =~ s/\\/\\\\/g;
41    $testname =~ s/\'/\\\'/g;
42    $testname =~ s/\"/\\\"/g;
43    my $appveyor_baseurl="$ENV{'APPVEYOR_API_URL'}";
44    my $appveyor_result=`$curl --silent --noproxy "*" \\
45    --header "Content-Type: application/json" \\
46    --data "
47        {
48            'testName': '$testname',
49            'testFramework': 'runtests.pl',
50            'fileName': 'tests/data/test$testnum',
51            'outcome': 'Running'
52        }
53    " \\
54    "$appveyor_baseurl/api/tests"`;
55    print "AppVeyor API result: $appveyor_result\n" if ($appveyor_result);
56    $APPVEYOR_TEST_NAMES{$testnum}=$testname;
57}
58
59sub appveyor_update_test_result {
60    my ($curl, $testnum, $error, $start, $stop)=@_;
61    my $testname=$APPVEYOR_TEST_NAMES{$testnum};
62    if(!defined $testname) {
63        return;
64    }
65    if(!defined $stop) {
66        $stop = $start;
67    }
68    my $appveyor_duration = sprintf("%.0f", ($stop-$start)*1000);
69    my $appveyor_outcome;
70    my $appveyor_category;
71    if($error == 2) {
72        $appveyor_outcome = 'Ignored';
73        $appveyor_category = 'Error';
74    }
75    elsif($error < 0) {
76        $appveyor_outcome = 'NotRunnable';
77        $appveyor_category = 'Warning';
78    }
79    elsif(!$error) {
80        $appveyor_outcome = 'Passed';
81        $appveyor_category = 'Information';
82    }
83    else {
84        $appveyor_outcome = 'Failed';
85        $appveyor_category = 'Error';
86    }
87    my $appveyor_baseurl="$ENV{'APPVEYOR_API_URL'}";
88    my $appveyor_result=`$curl --silent --noproxy "*" --request PUT \\
89    --header "Content-Type: application/json" \\
90    --data "
91        {
92            'testName': '$testname',
93            'testFramework': 'runtests.pl',
94            'fileName': 'tests/data/test$testnum',
95            'outcome': '$appveyor_outcome',
96            'durationMilliseconds': $appveyor_duration,
97            'ErrorMessage': 'Test $testnum $appveyor_outcome'
98        }
99    " \\
100    "$appveyor_baseurl/api/tests"`;
101    print "AppVeyor API result: $appveyor_result\n" if ($appveyor_result);
102    if($appveyor_category eq 'Error') {
103        $appveyor_result=`$curl --silent --noproxy "*" \\
104        --header "Content-Type: application/json" \\
105        --data "
106            {
107                'message': '$appveyor_outcome: $testname',
108                'category': '$appveyor_category',
109                'details': 'Test $testnum $appveyor_outcome'
110            }
111        " \\
112        "$appveyor_baseurl/api/build/messages"`;
113        print "AppVeyor API result: $appveyor_result\n" if ($appveyor_result);
114    }
115}
116
1171;
118