Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
ccan
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
mirror
ccan
Commits
078a975a
Commit
078a975a
authored
Nov 04, 2010
by
Rusty Russell
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ccanlint: add --target
Much easier to run just a single test across the tree.
parent
9c41898c
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
51 additions
and
8 deletions
+51
-8
tools/ccanlint/ccanlint.c
tools/ccanlint/ccanlint.c
+50
-7
tools/ccanlint/ccanlint.h
tools/ccanlint/ccanlint.h
+1
-1
No files found.
tools/ccanlint/ccanlint.c
View file @
078a975a
...
...
@@ -30,6 +30,7 @@
#include <ccan/str_talloc/str_talloc.h>
#include <ccan/talloc/talloc.h>
#include <ccan/opt/opt.h>
#include <ccan/foreach/foreach.h>
int
verbose
=
0
;
static
LIST_HEAD
(
compulsory_tests
);
...
...
@@ -74,12 +75,12 @@ static const char *should_skip(struct manifest *m, struct ccanlint *i)
if
(
btree_lookup
(
info_exclude
,
i
->
key
))
return
"excluded in _info file"
;
if
(
i
->
skip
)
return
i
->
skip
;
if
(
i
->
skip_fail
)
return
"dependency failed"
;
if
(
i
->
skip
)
return
"dependency was skipped"
;
if
(
i
->
can_run
)
return
i
->
can_run
(
m
);
return
NULL
;
...
...
@@ -105,7 +106,7 @@ static bool run_test(struct ccanlint *i,
if
(
skip
)
{
skip:
if
(
verbose
)
if
(
verbose
&&
!
streq
(
skip
,
"not relevant to target"
)
)
printf
(
" %s: skipped (%s)
\n
"
,
i
->
name
,
skip
);
/* If we're skipping this because a prereq failed, we fail. */
...
...
@@ -115,7 +116,9 @@ static bool run_test(struct ccanlint *i,
list_del
(
&
i
->
list
);
list_add_tail
(
&
finished_tests
,
&
i
->
list
);
list_for_each
(
&
i
->
dependencies
,
d
,
node
)
{
d
->
dependent
->
skip
=
true
;
if
(
d
->
dependent
->
skip
)
continue
;
d
->
dependent
->
skip
=
"dependency was skipped"
;
d
->
dependent
->
skip_fail
=
i
->
skip_fail
;
}
return
true
;
...
...
@@ -169,7 +172,9 @@ static bool run_test(struct ccanlint *i,
if
(
bad
)
{
/* Skip any tests which depend on this one. */
list_for_each
(
&
i
->
dependencies
,
d
,
node
)
{
d
->
dependent
->
skip
=
true
;
if
(
d
->
dependent
->
skip
)
continue
;
d
->
dependent
->
skip
=
"dependency failed"
;
d
->
dependent
->
skip_fail
=
true
;
}
}
...
...
@@ -349,6 +354,32 @@ static void add_info_fails(struct ccan_file *info)
}
}
static
bool
depends_on
(
struct
ccanlint
*
i
,
struct
ccanlint
*
target
)
{
const
struct
dependent
*
d
;
if
(
i
==
target
)
return
true
;
list_for_each
(
&
i
->
dependencies
,
d
,
node
)
{
if
(
depends_on
(
d
->
dependent
,
target
))
return
true
;
}
return
false
;
}
/* O(N^2), who cares? */
static
void
skip_unrelated_tests
(
struct
ccanlint
*
target
)
{
struct
ccanlint
*
i
;
struct
list_head
*
list
;
foreach_ptr
(
list
,
&
compulsory_tests
,
&
normal_tests
)
list_for_each
(
list
,
i
,
list
)
if
(
!
depends_on
(
i
,
target
))
i
->
skip
=
"not relevant to target"
;
}
int
main
(
int
argc
,
char
*
argv
[])
{
bool
summary
=
false
;
...
...
@@ -356,7 +387,7 @@ int main(int argc, char *argv[])
struct
manifest
*
m
;
struct
ccanlint
*
i
;
const
char
*
prefix
=
""
;
char
*
dir
=
talloc_getcwd
(
NULL
),
*
base_dir
=
dir
;
char
*
dir
=
talloc_getcwd
(
NULL
),
*
base_dir
=
dir
,
*
target
=
NULL
;
init_tests
();
...
...
@@ -380,6 +411,9 @@ int main(int argc, char *argv[])
opt_register_arg
(
"-t|--timeout <milleseconds>"
,
opt_set_uintval
,
NULL
,
&
timeout
,
"ignore (terminate) tests that are slower than this"
);
opt_register_arg
(
"--target <testname>"
,
opt_set_charp
,
NULL
,
&
target
,
"only run one test (and its prerequisites)"
);
opt_register_noarg
(
"-?|-h|--help"
,
opt_usage_and_exit
,
"
\n
A program for checking and guiding development"
" of CCAN modules."
,
...
...
@@ -407,6 +441,15 @@ int main(int argc, char *argv[])
talloc_asprintf
(
m
,
"%s/test"
,
temp_dir
(
NULL
)))
!=
0
)
err
(
1
,
"Creating test symlink in %s"
,
temp_dir
(
NULL
));
if
(
target
)
{
struct
ccanlint
*
test
;
test
=
find_test
(
target
);
if
(
!
test
)
err
(
1
,
"Unknown test to run '%s'"
,
target
);
skip_unrelated_tests
(
test
);
}
/* If you don't pass the compulsory tests, you get a score of 0. */
if
(
verbose
)
printf
(
"Compulsory tests:
\n
"
);
...
...
tools/ccanlint/ccanlint.h
View file @
078a975a
...
...
@@ -79,7 +79,7 @@ struct ccanlint {
/* How many things do we (still) depend on? */
unsigned
int
num_depends
;
/* Did we skip a dependency? If so, must skip this, too. */
bool
skip
;
const
char
*
skip
;
/* Did we fail a dependency? If so, skip and mark as fail. */
bool
skip_fail
;
/* Did the user want to keep these results? */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a 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