Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
CMake
CMake
Commits
2756c05b
Commit
2756c05b
authored
Feb 10, 2003
by
Andy Cedilnik
Browse files
Fix date issues with different models
parent
b04e32c6
Changes
3
Hide whitespace changes
Inline
Side-by-side
Source/cmCTest.cxx
View file @
2756c05b
...
...
@@ -21,6 +21,7 @@
#ifdef HAVE_CURL
# include "cmCTestSubmit.h"
# include "curl/curl.h"
#endif
#include
<stdio.h>
...
...
@@ -183,6 +184,7 @@ cmCTest::cmCTest()
m_Verbose
=
false
;
m_DartMode
=
false
;
m_ShowOnly
=
false
;
m_TestModel
=
cmCTest
::
EXPERIMENTAL
;
int
cc
;
for
(
cc
=
0
;
cc
<
cmCTest
::
LAST_TEST
;
cc
++
)
{
...
...
@@ -258,7 +260,7 @@ void cmCTest::Initialize()
std
::
ifstream
tfin
(
tagfile
.
c_str
());
std
::
string
tag
;
time_t
tctime
=
time
(
0
);
struct
tm
*
lctime
=
gm
time
(
&
tctime
);
struct
tm
*
lctime
=
local
time
(
&
tctime
);
if
(
tfin
)
{
tfin
>>
tag
;
...
...
@@ -280,6 +282,40 @@ void cmCTest::Initialize()
}
if
(
tag
.
size
()
==
0
)
{
#ifdef HAVE_CURL
if
(
m_TestModel
==
cmCTest
::
NIGHTLY
)
{
int
hour
;
int
min
;
int
sec
;
char
stz
[
100
];
int
tz
;
tctime
=
time
(
0
);
//Convert the nightly start time to seconds. Since we are
//providing only a time and a timezone, the current date of
//the local machine is assumed. Consequently, nightlySeconds
//is the time at which the nightly dashboard was opened or
//will be opened on the date of the current client machine.
//As such, this time may be in the past or in the future.
time_t
ntime
=
curl_getdate
(
m_DartConfiguration
[
"NightlyStartTime"
].
c_str
(),
&
tctime
);
tctime
=
time
(
0
);
std
::
cout
<<
"Seconds: "
<<
tctime
<<
std
::
endl
;
if
(
ntime
>
tctime
)
{
// If nightlySeconds is in the past, this is the current
// open dashboard, then return nightlySeconds. If
// nightlySeconds is in the future, this is the next
// dashboard to be opened, so subtract 24 hours to get the
// time of the current open dashboard
ntime
-=
(
24
*
60
*
60
);
std
::
cout
<<
"Pick yesterday"
<<
std
::
endl
;
}
std
::
cout
<<
"nightlySeconds: "
<<
ntime
<<
std
::
endl
;
lctime
=
gmtime
(
&
ntime
);
}
#endif
char
datestring
[
100
];
sprintf
(
datestring
,
"%04d%02d%02d-%02d%02d"
,
lctime
->
tm_year
+
1900
,
...
...
@@ -434,8 +470,21 @@ int cmCTest::UpdateDirectory()
return
1
;
}
std
::
string
command
=
cvsCommand
+
" -z3 update "
+
cvsOptions
;
std
::
string
extra_update_opts
;
if
(
m_TestModel
==
cmCTest
::
NIGHTLY
)
{
time_t
currenttime
=
time
(
0
);
struct
tm
*
t
=
localtime
(
&
currenttime
);
char
current_time
[
1024
];
strftime
(
current_time
,
1000
,
"%Y-%m-%d "
,
t
);
std
::
string
today_update_date
=
current_time
+
m_DartConfiguration
[
"NightlyStartTime"
];
extra_update_opts
+=
"-D
\"
"
+
today_update_date
+
"
\"
"
;
}
std
::
string
command
=
cvsCommand
+
" -z3 update "
+
cvsOptions
+
" "
+
extra_update_opts
;
std
::
ofstream
os
;
if
(
!
this
->
OpenOutputFile
(
""
,
"Update.xml"
,
os
)
)
{
...
...
@@ -444,18 +493,18 @@ int cmCTest::UpdateDirectory()
std
::
string
start_time
=
::
CurrentTime
();
std
::
string
output
;
std
::
string
g
output
;
int
retVal
=
0
;
bool
res
=
true
;
if
(
!
m_ShowOnly
)
{
res
=
cmSystemTools
::
RunCommand
(
command
.
c_str
(),
output
,
res
=
cmSystemTools
::
RunCommand
(
command
.
c_str
(),
g
output
,
retVal
,
sourceDirectory
.
c_str
(),
m_Verbose
);
std
::
ofstream
ofs
;
if
(
this
->
OpenOutputFile
(
"Temporary"
,
"LastUpdate.log"
,
ofs
)
)
{
ofs
<<
output
;
ofs
<<
g
output
;
ofs
.
close
();
}
}
...
...
@@ -469,7 +518,8 @@ int cmCTest::UpdateDirectory()
<<
"
\t
<Site>"
<<
m_DartConfiguration
[
"Site"
]
<<
"</Site>
\n
"
<<
"
\t
<BuildName>"
<<
m_DartConfiguration
[
"BuildName"
]
<<
"</BuildName>
\n
"
<<
"
\t
<BuildStamp>"
<<
m_CurrentTag
<<
"-Experimental</BuildStamp>
\n
"
<<
"
\t
<BuildStamp>"
<<
m_CurrentTag
<<
"-"
<<
this
->
GetTestModelString
()
<<
"</BuildStamp>
\n
"
<<
"
\t
<StartDateTime>"
<<
start_time
<<
"</StartDateTime>
\n
"
<<
"
\t
<UpdateCommand>"
<<
command
<<
"</UpdateCommand>
\n
"
<<
"
\t
<UpdateReturnStatus>"
;
...
...
@@ -480,7 +530,7 @@ int cmCTest::UpdateDirectory()
os
<<
"</UpdateReturnStatus>"
<<
std
::
endl
;
std
::
vector
<
cmStdString
>
lines
;
cmSystemTools
::
Split
(
output
.
c_str
(),
lines
);
cmSystemTools
::
Split
(
g
output
.
c_str
(),
lines
);
std
::
cout
<<
"Updated; gathering version information"
<<
std
::
endl
;
cmRegularExpression
date_author
(
"^date: +([^;]+); +author: +([^;]+); +state: +[^;]+;"
);
cmRegularExpression
revision
(
"^revision +([^ ]*) *$"
);
...
...
@@ -501,9 +551,10 @@ int cmCTest::UpdateDirectory()
{
const
char
*
file
=
line
+
2
;
//std::cout << "Line" << cc << ": " << mod << " - " << file << std::endl;
std
::
string
logcommand
=
cvsCommand
+
" -z3 log -N "
+
file
;
std
::
string
logcommand
=
cvsCommand
+
" -z3 log -N "
+
file
+
" "
+
extra_update_opts
;
//std::cout << "Do log: " << logcommand << std::endl;
output
=
""
;
std
::
string
output
;
res
=
cmSystemTools
::
RunCommand
(
logcommand
.
c_str
(),
output
,
retVal
,
sourceDirectory
.
c_str
(),
m_Verbose
);
...
...
@@ -713,6 +764,7 @@ int cmCTest::UpdateDirectory()
if
(
!
res
||
retVal
)
{
std
::
cerr
<<
"Error(s) when updating the project"
<<
std
::
endl
;
std
::
cerr
<<
"Output: "
<<
goutput
<<
std
::
endl
;
return
1
;
}
return
0
;
...
...
@@ -720,6 +772,7 @@ int cmCTest::UpdateDirectory()
int
cmCTest
::
ConfigureDirectory
()
{
std
::
cout
<<
"Configure project"
<<
std
::
endl
;
std
::
string
cCommand
=
m_DartConfiguration
[
"ConfigureCommand"
];
if
(
cCommand
.
size
()
==
0
)
{
...
...
@@ -743,6 +796,12 @@ int cmCTest::ConfigureDirectory()
res
=
cmSystemTools
::
RunCommand
(
cCommand
.
c_str
(),
output
,
retVal
,
buildDirectory
.
c_str
(),
m_Verbose
);
std
::
ofstream
ofs
;
if
(
this
->
OpenOutputFile
(
"Temporary"
,
"LastConfigure.log"
,
ofs
)
)
{
ofs
<<
output
;
ofs
.
close
();
}
}
else
{
...
...
@@ -758,6 +817,7 @@ int cmCTest::ConfigureDirectory()
int
cmCTest
::
BuildDirectory
()
{
std
::
cout
<<
"Build project"
<<
std
::
endl
;
std
::
string
makeCommand
=
m_DartConfiguration
[
"MakeCommand"
];
if
(
makeCommand
.
size
()
==
0
)
{
...
...
@@ -932,6 +992,7 @@ int cmCTest::BuildDirectory()
int
cmCTest
::
CoverageDirectory
()
{
std
::
cout
<<
"Performing coverage"
<<
std
::
endl
;
std
::
vector
<
std
::
string
>
files
;
std
::
vector
<
std
::
string
>
cfiles
;
std
::
vector
<
std
::
string
>
cdirs
;
...
...
@@ -1105,7 +1166,8 @@ int cmCTest::CoverageDirectory()
log
<<
"<?xml version=
\"
1.0
\"
encoding=
\"
UTF-8
\"
?>
\n
"
<<
"<Site BuildName=
\"
"
<<
m_DartConfiguration
[
"BuildName"
]
<<
"
\"
BuildStamp=
\"
"
<<
m_CurrentTag
<<
"-Experimental
\"
Name=
\"
"
<<
"
\"
BuildStamp=
\"
"
<<
m_CurrentTag
<<
"-"
<<
this
->
GetTestModelString
()
<<
"
\"
Name=
\"
"
<<
m_DartConfiguration
[
"Site"
]
<<
"
\"
>
\n
"
<<
"<Coverage>
\n
"
<<
"
\t
<StartDateTime>"
<<
start_time
<<
"</StartDateTime>"
<<
std
::
endl
;
...
...
@@ -1213,7 +1275,8 @@ int cmCTest::CoverageDirectory()
local_start_time
=
::
CurrentTime
();
cfileoutput
<<
"<?xml version=
\"
1.0
\"
encoding=
\"
UTF-8
\"
?>
\n
"
<<
"<Site BuildName=
\"
"
<<
m_DartConfiguration
[
"BuildName"
]
<<
"
\"
BuildStamp=
\"
"
<<
m_CurrentTag
<<
"-Experimental
\"
Name=
\"
"
<<
"
\"
BuildStamp=
\"
"
<<
m_CurrentTag
<<
"-"
<<
this
->
GetTestModelString
()
<<
"
\"
Name=
\"
"
<<
m_DartConfiguration
[
"Site"
]
<<
"
\"
>
\n
"
<<
"<CoverageLog>
\n
"
<<
"
\t
<StartDateTime>"
<<
local_start_time
<<
"</StartDateTime>"
<<
std
::
endl
;
...
...
@@ -1346,7 +1409,8 @@ void cmCTest::GenerateDartBuildOutput(std::ostream& os,
{
os
<<
"<?xml version=
\"
1.0
\"
encoding=
\"
UTF-8
\"
?>
\n
"
<<
"<Site BuildName=
\"
"
<<
m_DartConfiguration
[
"BuildName"
]
<<
"
\"
BuildStamp=
\"
"
<<
m_CurrentTag
<<
"-Experimental
\"
Name=
\"
"
<<
"
\"
BuildStamp=
\"
"
<<
m_CurrentTag
<<
"-"
<<
this
->
GetTestModelString
()
<<
"
\"
Name=
\"
"
<<
m_DartConfiguration
[
"Site"
]
<<
"
\"
>
\n
"
<<
"<Build>
\n
"
<<
"
\t
<StartDateTime>"
<<
m_StartBuild
<<
"</StartDateTime>
\n
"
...
...
@@ -1578,6 +1642,7 @@ void cmCTest::ProcessDirectory(std::vector<std::string> &passed,
int
cmCTest
::
TestDirectory
()
{
std
::
cout
<<
"Test project"
<<
std
::
endl
;
std
::
vector
<
std
::
string
>
passed
;
std
::
vector
<
std
::
string
>
failed
;
int
total
;
...
...
@@ -1727,7 +1792,8 @@ std::string cmCTest::GetSubmitResultsPrefix()
{
std
::
string
name
=
m_DartConfiguration
[
"Site"
]
+
"___"
+
m_DartConfiguration
[
"BuildName"
]
+
"___"
+
m_CurrentTag
+
"-Experimental___XML___"
;
"___"
+
m_CurrentTag
+
"-"
+
this
->
GetTestModelString
()
+
"___XML___"
;
return
name
;
}
...
...
@@ -1745,7 +1811,8 @@ void cmCTest::GenerateDartOutput(std::ostream& os)
os
<<
"<?xml version=
\"
1.0
\"
encoding=
\"
UTF-8
\"
?>
\n
"
<<
"<Site BuildName=
\"
"
<<
m_DartConfiguration
[
"BuildName"
]
<<
"
\"
BuildStamp=
\"
"
<<
m_CurrentTag
<<
"-Experimental
\"
Name=
\"
"
<<
"
\"
BuildStamp=
\"
"
<<
m_CurrentTag
<<
"-"
<<
this
->
GetTestModelString
()
<<
"
\"
Name=
\"
"
<<
m_DartConfiguration
[
"Site"
]
<<
"
\"
>
\n
"
<<
"<Testing>
\n
"
<<
"
\t
<StartDateTime>"
<<
m_StartTest
<<
"</StartDateTime>
\n
"
...
...
@@ -1846,3 +1913,16 @@ int cmCTest::ProcessTests()
}
return
res
;
}
std
::
string
cmCTest
::
GetTestModelString
()
{
switch
(
m_TestModel
)
{
case
cmCTest
::
NIGHTLY
:
return
"Nightly"
;
case
cmCTest
::
CONTINUOUS
:
return
"Continuous"
;
}
return
"Experimental"
;
}
Source/cmCTest.h
View file @
2756c05b
...
...
@@ -15,6 +15,9 @@
=========================================================================*/
#ifndef cmCTest_h
#define cmCTest_h
#include
"cmStandardIncludes.h"
...
...
@@ -91,6 +94,15 @@ public:
*/
bool
SetTest
(
const
char
*
);
/**
* Set the cmake test mode (experimental, nightly, continuous).
*/
void
SetTestModel
(
int
mode
)
{
m_TestModel
=
mode
;
}
std
::
string
GetTestModelString
();
/**
* constructor
*/
...
...
@@ -108,6 +120,12 @@ public:
bool
m_DartMode
;
bool
m_ShowOnly
;
enum
{
EXPERIMENTAL
,
NIGHTLY
,
CONTINUOUS
};
private:
enum
{
FIRST_TEST
=
0
,
...
...
@@ -185,6 +203,8 @@ private:
std
::
string
m_StartTest
;
std
::
string
m_EndTest
;
bool
m_TestModel
;
/**
* Generate the Dart compatible output
*/
...
...
@@ -197,3 +217,4 @@ private:
std
::
string
MakeXMLSafe
(
const
std
::
string
&
);
};
#endif
Source/ctest.cxx
View file @
2756c05b
...
...
@@ -60,6 +60,25 @@ int main (int argc, char *argv[])
inst
.
SetTest
(
args
[
i
+
1
].
c_str
());
}
if
(
(
arg
.
find
(
"-M"
,
0
)
==
0
||
arg
.
find
(
"--test-model"
,
0
)
==
0
)
&&
(
i
<
args
.
size
()
-
1
)
)
{
std
::
string
&
str
=
args
[
i
+
1
];
if
(
str
==
"NIGHTLY"
||
str
==
"nightly"
||
str
==
"Nightly"
)
{
inst
.
SetTestModel
(
cmCTest
::
NIGHTLY
);
}
else
if
(
str
==
"CONTINUOUS"
||
str
==
"continuous"
||
str
==
"Continuous"
)
{
inst
.
SetTestModel
(
cmCTest
::
CONTINUOUS
);
}
else
{
inst
.
SetTestModel
(
cmCTest
::
EXPERIMENTAL
);
}
}
if
(
arg
.
find
(
"-R"
,
0
)
==
0
&&
i
<
args
.
size
()
-
1
)
{
inst
.
m_UseIncludeRegExp
=
true
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment