Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unable to select DOT reporter #56

Open
svetlyak40wt opened this issue Nov 9, 2022 · 0 comments
Open

Unable to select DOT reporter #56

svetlyak40wt opened this issue Nov 9, 2022 · 0 comments

Comments

@svetlyak40wt
Copy link
Contributor

When I do:

(rove:run (asdf:find-system "40ants-asdf-system-tests") :style :dot)

Rove created s Dot reporter, and binds it to rove::*stats*.
However after that, it replaces it with "default" Spec reporter during loading of the system. It happens on this line: https://github.com/fukamachi/rove/blob/master/main.lisp#L101

I tried to comment out the line with "use-reporter" and now everything works as expected.

I've set a break in the make-reporter when it creates :spec reporter to show you the problem. Pay attention to the frame number 36 where DOT reporter is invoked:

break
   [Condition of type SIMPLE-CONDITION]

Restarts:
 0: [CONTINUE] Return from BREAK.
 1: [TRY-RECOMPILING] Recompile file-type and try loading it again
 2: [RETRY] Retry loading FASL for #<CL-SOURCE-FILE "rove/main" "file-type">.
 3: [ACCEPT] Continue, treating loading FASL for #<CL-SOURCE-FILE "rove/main" "file-type"> as having been successful.
 4: [RETRY] Retry ASDF operation.
 5: [CLEAR-CONFIGURATION-AND-RETRY] Retry ASDF operation after resetting the configuration.
 --more--

Backtrace:
 0: (ROVE/REPORTER::MAKE-REPORTER :SPEC :STREAM NIL)
 1: (SLYNK-SBCL::SBCL-WRAP #<unused argument> #<FUNCTION (FLET SLYNK-TRACE-DIALOG::BEFORE-HOOK :IN SLYNK-TRACE-DIALOG:DIALOG-TRACE) {7007B36E7B}> #<FUNCTION (FLET SLYNK-TRACE-DIALOG::AFTER-HOOK :IN SLYNK-..
 2: (USE-REPORTER :SPEC)
 3: (SB-FASL::LOAD-FASL-GROUP #S(SB-FASL::FASL-INPUT :STREAM #<SB-SYS:FD-STREAM for "file /Users/art/.cache/common-lisp/sbcl-2.2.2-macosx-arm64/Users/art/projects/lisp/cl-hamcrest/.qlot/dists/ultralisp/so..
 4: (SB-FASL::LOAD-AS-FASL #<SB-SYS:FD-STREAM for "file /Users/art/.cache/common-lisp/sbcl-2.2.2-macosx-arm64/Users/art/projects/lisp/cl-hamcrest/.qlot/dists/ultralisp/software/fukamachi-rove-202203310341..
 5: ((LABELS SB-FASL::LOAD-STREAM-1 :IN LOAD) #<SB-SYS:FD-STREAM for "file /Users/art/.cache/common-lisp/sbcl-2.2.2-macosx-arm64/Users/art/projects/lisp/cl-hamcrest/.qlot/dists/ultralisp/software/fukamach..
 6: (SB-FASL::CALL-WITH-LOAD-BINDINGS #<FUNCTION (LABELS SB-FASL::LOAD-STREAM-1 :IN LOAD) {10A092B7B}> #<SB-SYS:FD-STREAM for "file /Users/art/.cache/common-lisp/sbcl-2.2.2-macosx-arm64/Users/art/projects..
 7: (LOAD #P"/Users/art/.cache/common-lisp/sbcl-2.2.2-macosx-arm64/Users/art/projects/lisp/cl-hamcrest/.qlot/dists/ultralisp/software/fukamachi-rove-20220331034110/main.fasl" :VERBOSE NIL :PRINT NIL :IF-D..
 8: (UIOP/UTILITY:CALL-WITH-MUFFLED-CONDITIONS #<FUNCTION (LAMBDA NIL :IN UIOP/LISP-BUILD:LOAD*) {700E723ABB}> ("Overwriting already existing readtable ~S." #(#:FINALIZERS-OFF-WARNING :ASDF-FINALIZERS)))
 9: ((SB-PCL::EMF ASDF/ACTION:PERFORM) #<unused argument> #<unused argument> #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "rove/main" "file-type">)
10: ((LAMBDA NIL :IN ASDF/ACTION:CALL-WHILE-VISITING-ACTION))
11: ((:METHOD ASDF/ACTION:PERFORM-WITH-RESTARTS (ASDF/LISP-ACTION:LOAD-OP ASDF/LISP-ACTION:CL-SOURCE-FILE)) #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "rove/main" "file-type">) [fast-m..
12: ((:METHOD ASDF/ACTION:PERFORM-WITH-RESTARTS :AROUND (T T)) #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "rove/main" "file-type">) [fast-method]
13: ((:METHOD ASDF/PLAN:PERFORM-PLAN (T)) #<ASDF/PLAN:SEQUENTIAL-PLAN {7010C8DF43}>) [fast-method]
14: ((FLET SB-C::WITH-IT :IN SB-C::%WITH-COMPILATION-UNIT))
15: ((:METHOD ASDF/PLAN:PERFORM-PLAN :AROUND (T)) #<ASDF/PLAN:SEQUENTIAL-PLAN {7010C8DF43}>) [fast-method]
16: ((:METHOD ASDF/OPERATE:OPERATE (ASDF/OPERATION:OPERATION ASDF/COMPONENT:COMPONENT)) #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/PACKAGE-INFERRED-SYSTEM:PACKAGE-INFERRED-SYSTEM "40ants-asdf-system-tests"> :PLA..
17: ((SB-PCL::EMF ASDF/OPERATE:OPERATE) #<unused argument> #<unused argument> #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/PACKAGE-INFERRED-SYSTEM:PACKAGE-INFERRED-SYSTEM "40ants-asdf-system-tests"> :VERBOSE NIL)
18: ((LAMBDA NIL :IN ASDF/OPERATE:OPERATE))
19: ((:METHOD ASDF/OPERATE:OPERATE :AROUND (T T)) #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/PACKAGE-INFERRED-SYSTEM:PACKAGE-INFERRED-SYSTEM "40ants-asdf-system-tests"> :VERBOSE NIL) [fast-method]
20: ((SB-PCL::EMF ASDF/OPERATE:OPERATE) #<unused argument> #<unused argument> ASDF/LISP-ACTION:LOAD-OP "40ants-asdf-system-tests" :VERBOSE NIL)
21: ((LAMBDA NIL :IN ASDF/OPERATE:OPERATE))
22: ((:METHOD ASDF/OPERATE:OPERATE :AROUND (T T)) ASDF/LISP-ACTION:LOAD-OP "40ants-asdf-system-tests" :VERBOSE NIL) [fast-method]
23: (ASDF/SESSION:CALL-WITH-ASDF-SESSION #<FUNCTION (LAMBDA NIL :IN ASDF/OPERATE:OPERATE) {7010C8DE3B}> :OVERRIDE T :KEY NIL :OVERRIDE-CACHE T :OVERRIDE-FORCING NIL)
24: ((LAMBDA NIL :IN ASDF/OPERATE:OPERATE))
25: (ASDF/SESSION:CALL-WITH-ASDF-SESSION #<FUNCTION (LAMBDA NIL :IN ASDF/OPERATE:OPERATE) {7010C8DD6B}> :OVERRIDE NIL :KEY NIL :OVERRIDE-CACHE NIL :OVERRIDE-FORCING NIL)
26: ((:METHOD ASDF/OPERATE:OPERATE :AROUND (T T)) ASDF/LISP-ACTION:LOAD-OP "40ants-asdf-system-tests" :VERBOSE NIL) [fast-method]
27: (ASDF/OPERATE:LOAD-SYSTEM "40ants-asdf-system-tests" :VERBOSE NIL)
28: (QUICKLISP-CLIENT::CALL-WITH-MACROEXPAND-PROGRESS #<FUNCTION (LAMBDA NIL :IN QUICKLISP-CLIENT::APPLY-LOAD-STRATEGY) {7010C8DD3B}>)
29: (QUICKLISP-CLIENT::AUTOLOAD-SYSTEM-AND-DEPENDENCIES "40ants-asdf-system-tests" :PROMPT NIL)
30: ((:METHOD QL-IMPL-UTIL::%CALL-WITH-QUIET-COMPILATION (T T)) #<unused argument> #<FUNCTION (FLET QUICKLISP-CLIENT::QL :IN QUICKLISP-CLIENT:QUICKLOAD) {7010C8DC1B}>) [fast-method]
31: ((:METHOD QL-IMPL-UTIL::%CALL-WITH-QUIET-COMPILATION :AROUND (QL-IMPL:SBCL T)) #<QL-IMPL:SBCL {70052405D3}> #<FUNCTION (FLET QUICKLISP-CLIENT::QL :IN QUICKLISP-CLIENT:QUICKLOAD) {7010C8DC1B}>) [fast-m..
32: ((:METHOD QUICKLISP-CLIENT:QUICKLOAD (T)) "40ants-asdf-system-tests" :PROMPT NIL :SILENT T :VERBOSE NIL) [fast-method]
33: (QL-DIST::CALL-WITH-CONSISTENT-DISTS #<FUNCTION (LAMBDA NIL :IN QUICKLISP-CLIENT:QUICKLOAD) {7010C8DBEB}>)
34: ((:METHOD RUN-SYSTEM (ASDF/SYSTEM:SYSTEM)) #<ASDF/PACKAGE-INFERRED-SYSTEM:PACKAGE-INFERRED-SYSTEM "40ants-asdf-system-tests">) [fast-method]
35: (RUN-SYSTEM-TESTS #<ASDF/PACKAGE-INFERRED-SYSTEM:PACKAGE-INFERRED-SYSTEM "40ants-asdf-system-tests">)
      Locals:
        SYSTEM-DESIGNATORS = #<ASDF/PACKAGE-INFERRED-SYSTEM:PACKAGE-INFERRED-SYSTEM "40ants-asdf-system-tests">
36: ((:METHOD INVOKE-REPORTER (T T)) #<ROVE/REPORTER/DOT:DOT-REPORTER PASSED=0, FAILED=0> #<FUNCTION (LAMBDA NIL :IN RUN) {7010C8DB9B}>) [fast-method]
37: ((:METHOD RUN (T)) #<ASDF/PACKAGE-INFERRED-SYSTEM:PACKAGE-INFERRED-SYSTEM "40ants-asdf-system-tests"> :STYLE :DOT :ENV NIL) [fast-method]
38: (SB-INT:SIMPLE-EVAL-IN-LEXENV (RUN (ASDF/SYSTEM:FIND-SYSTEM "40ants-asdf-system-tests") :STYLE :DOT) #<NULL-LEXENV>)
39: (EVAL (RUN (ASDF/SYSTEM:FIND-SYSTEM "40ants-asdf-system-tests") :STYLE :DOT))

As a workaround, this code might be used:

(let ((rove:*default-reporter* :dot))
   (rove:run (asdf:find-system "40ants-asdf-system-tests")))

but anyway, reporter is created twice.

It would be nice to:

  1. make rove::stats unbound by default;
  2. remove use-reporter call from main;

This way, reporter will be created only once and will live only during a test run.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant