WEBVTT
00:00:08.740 --> 00:00:09.240
[Speaker 0]: Do we have any listeners?
00:00:13.340 --> 00:00:13.840
It's you and I. I have a question.
00:00:16.420 --> 00:00:16.640
How many tests do you have for hyperbole and
00:00:18.800 --> 00:00:19.279
How would you rate the test coverage compared
00:00:21.279 --> 00:00:21.500
to other packages? Well,
00:00:28.279 --> 00:00:28.700
that's a tricky 1. Shall I spell it out loud
00:00:31.100 --> 00:00:31.600
and then maybe type it at the same time?
00:00:36.420 --> 00:00:36.920
So, I believe it's around like more than 300
00:00:43.660 --> 00:00:44.059
test cases now. But I cannot compare the test
00:00:45.220 --> 00:00:45.720
coverage to any other
00:01:00.020 --> 00:01:00.520
other package. Maybe I can type that later.
00:01:01.560 --> 00:01:02.060
What do you say, Badal?
00:01:02.660 --> 00:01:02.900
[Speaker 1]: package. I have no knowledge of any Yeah,
00:01:03.840 --> 00:01:04.239
sure, yeah, that's totally fine.
00:01:05.660 --> 00:01:06.160
Feel free to just answer them with voice.
00:01:08.720 --> 00:01:09.220
[Speaker 0]: Yeah, yeah. There's another question.
00:01:10.520 --> 00:01:10.920
1 small suggestion to me,
00:01:11.440 --> 00:01:11.940
should means optional,
00:01:13.660 --> 00:01:14.160
where shall or must means required.
00:01:15.940 --> 00:01:16.220
Not sure if it is too late to make a major
00:01:17.220 --> 00:01:17.540
grammar change like that.
00:01:18.080 --> 00:01:18.580
Very nice presentation.
00:01:19.840 --> 00:01:20.340
So thanks for presentation,
00:01:24.380 --> 00:01:24.780
but the package ERT, well,
00:01:27.920 --> 00:01:28.080
it's not something that we have come up with.
00:01:28.920 --> 00:01:29.340
It's a standard package.
00:01:32.320 --> 00:01:32.560
So I believe it has been around for a long
00:01:37.760 --> 00:01:38.000
time. So, but please feel free to make
00:01:39.680 --> 00:01:40.180
suggestions and maybe you can,
00:01:43.660 --> 00:01:43.860
you know, like do a copy or like an alias for
00:01:46.080 --> 00:01:46.200
that. If you believe it makes more sense for
00:01:48.080 --> 00:01:48.580
your test cases to have that instead.
00:01:53.540 --> 00:01:53.720
And then we have another question here.
00:01:55.540 --> 00:01:55.680
For your info, you may find this helpful for
00:01:58.780 --> 00:01:59.020
running MX test lint both from a command line
00:02:01.220 --> 00:02:01.720
and from within MX with a transit menu.
00:02:03.600 --> 00:02:04.040
GitHub alpha papa make sure,
00:02:06.760 --> 00:02:07.100
yes. It also works on remote CI.
00:02:08.240 --> 00:02:08.740
Yeah, thank you, Alpha Papa.
00:02:10.580 --> 00:02:11.080
I think I've looked into that,
00:02:13.440 --> 00:02:13.940
but we haven't made any use of that.
00:02:17.920 --> 00:02:18.080
But maybe you'll inspire me to give it
00:02:18.400 --> 00:02:18.900
another look.
00:02:29.260 --> 00:02:29.760
[Speaker 2]: Hey guys.
00:02:34.120 --> 00:02:34.460
[Speaker 0]: I remember, I recognize that voice.
00:02:37.160 --> 00:02:37.660
Hi, Bob. Hey, how are you?
00:02:40.240 --> 00:02:40.580
Congratulations, man. Thanks,
00:02:43.020 --> 00:02:43.320
Hugh. Thank you. I have another question
00:02:45.520 --> 00:02:45.900
here. It is easy to run ad hoc tests inside
00:02:48.400 --> 00:02:48.600
an Emacs session given the command line
00:02:51.180 --> 00:02:51.560
scripts you need to run to get the batch test
00:02:54.960 --> 00:02:55.120
session running? You said it's to run an
00:03:05.680 --> 00:03:05.920
ad-hoc test. I'm not sure I understand that
00:03:14.440 --> 00:03:14.940
question. Yes, please.
00:03:15.660 --> 00:03:16.160
[Speaker 1]: Maybe I can rephrase. Sure.
00:03:19.900 --> 00:03:20.400
So I think what I understand is that since
00:03:22.540 --> 00:03:23.040
you have to use some of these command lines
00:03:25.440 --> 00:03:25.940
scripts to get a batch test session running,
00:03:28.780 --> 00:03:29.180
is it easy to run ad hoc tests in an Emacs
00:03:30.700 --> 00:03:30.900
session or does that, like in your
00:03:32.040 --> 00:03:32.540
experience, has that been difficult?
00:03:36.820 --> 00:03:37.320
[Speaker 0]: Well, from the command line,
00:03:38.660 --> 00:03:38.940
if you look at the command line,
00:03:44.160 --> 00:03:44.340
you'll see that it's only like a few image
00:03:46.480 --> 00:03:46.980
functions to call to get that behavior to run
00:03:55.080 --> 00:03:55.240
the batch tests. So I think we made some
00:03:57.100 --> 00:03:57.600
support function for that in hyperbole.
00:04:02.800 --> 00:04:02.960
So it's not, I don't think it's possible out
00:04:05.540 --> 00:04:06.040
of the box to do it, but it's not complicated
00:04:08.060 --> 00:04:08.560
to do it.
00:04:12.190 --> 00:04:12.340
[Speaker 2]: You can define a test anytime,
00:04:14.780 --> 00:04:15.280
right? Just like a new function.
00:04:18.899 --> 00:04:19.240
So that's ad hoc. You just write your test
00:04:20.019 --> 00:04:20.519
and you can run it.
00:04:22.900 --> 00:04:23.400
[Speaker 0]: Yeah, yeah, I mean, of course,
00:04:25.900 --> 00:04:26.180
but I got the impression it was about running
00:04:28.620 --> 00:04:29.060
all your tests like we did with the command
00:04:35.740 --> 00:04:36.020
line. Well, so the question is more about how
00:04:38.260 --> 00:04:38.600
would you run all your test cases from within
00:04:44.860 --> 00:04:45.140
Emacs? And the easy answer to that is
00:04:48.420 --> 00:04:48.860
actually you load all your test case files,
00:04:51.760 --> 00:04:52.080
and then you run ERT with the T as the test
00:04:53.600 --> 00:04:53.880
selector and then it will run all your test
00:04:53.880 --> 00:04:54.380
cases.
00:05:01.780 --> 00:05:01.960
[Speaker 1]: Right. And I think they have expanded on
00:05:03.180 --> 00:05:03.520
their question a little bit as well,
00:05:04.960 --> 00:05:05.220
clarifying that. In other words,
00:05:07.200 --> 00:05:07.360
can you tweak tests in an Emacs session and
00:05:08.860 --> 00:05:09.360
run them right away? Which I believe,
00:05:11.400 --> 00:05:11.640
if I understand correctly what Bob was
00:05:13.820 --> 00:05:14.320
saying, you can basically define or redefine
00:05:15.920 --> 00:05:16.080
functions on the fly and then have them be
00:05:16.440 --> 00:05:16.940
run, right?
00:05:22.200 --> 00:05:22.360
[Speaker 0]: Yes, yes. You just go into that test case and
00:05:24.120 --> 00:05:24.620
you just change it and you run it again.
00:05:29.060 --> 00:05:29.200
And either you have to sort of load it or you
00:05:31.560 --> 00:05:32.060
can use like the commercial thing I did.
00:05:36.140 --> 00:05:36.340
You use hyperbole and just hit meta return on
00:05:38.560 --> 00:05:38.860
the test case and it will load it and run the
00:05:42.240 --> 00:05:42.360
test case again. So that's of course what you
00:05:44.220 --> 00:05:44.720
normally do when you're defining a test or
00:05:47.440 --> 00:05:47.940
debug a test case or develop a test case.
00:05:49.960 --> 00:05:50.460
Just start with something small,
00:05:52.700 --> 00:05:53.200
just make sure maybe you can prepare the test
00:05:55.320 --> 00:05:55.680
properly and run it again and again and again
00:05:56.720 --> 00:05:57.220
until you're ready with it.
00:05:59.760 --> 00:05:59.960
That's a good point. You can definitely do
00:06:02.800 --> 00:06:03.280
that and that's part of how I normally
00:06:06.420 --> 00:06:06.920
develop the test cases that I mean start with
00:06:09.160 --> 00:06:09.400
something small so I can see that I get there
00:06:12.180 --> 00:06:12.240
maybe the right input in the buffer that I
00:06:14.180 --> 00:06:14.340
want to test on or something and I expand on
00:06:18.160 --> 00:06:18.400
that more and more and add more and more more
00:06:18.460 --> 00:06:18.960
and more more
00:06:31.040 --> 00:06:31.540
[Speaker 2]: tests to it. You might tell them a bit about
00:06:33.280 --> 00:06:33.480
how many test cases you have.
00:06:36.020 --> 00:06:36.440
I guess you commented on that and like what
00:06:40.320 --> 00:06:40.820
happens, you know, with the CICD pipeline,
00:06:43.780 --> 00:06:44.020
every time we commit, you know,
00:06:46.360 --> 00:06:46.560
across all the versions and what you have set
00:06:48.760 --> 00:06:49.040
up there because you know I wish people could
00:06:53.940 --> 00:06:54.140
see it. You can go and check on GitHub and
00:06:57.440 --> 00:06:57.720
you can see the logs right of any of the
00:06:59.760 --> 00:06:59.960
builds and but tell them a bit about that
00:07:01.080 --> 00:07:01.320
Mats because I think that's pretty
00:07:01.320 --> 00:07:01.820
impressive.
00:07:07.280 --> 00:07:07.760
[Speaker 0]: Well, that's part of more the CI,
00:07:11.760 --> 00:07:12.160
CD, part of how we developed this using
00:07:15.460 --> 00:07:15.580
GitHub and workflows that you get out of the
00:07:20.740 --> 00:07:20.900
box from there. So this more than 300 test
00:07:23.440 --> 00:07:23.720
cases on our round for I think 5 different
00:07:26.480 --> 00:07:26.980
versions of Emacs when we do a pull request
00:07:33.900 --> 00:07:34.400
or a commit. So that's a good way to ensure
00:07:38.040 --> 00:07:38.540
that it works from version 27.2
00:07:42.240 --> 00:07:42.740
up to the latest master version because
00:07:45.860 --> 00:07:46.360
there's some changes in Emacs over different
00:07:48.940 --> 00:07:49.340
versions that can affect your functions or
00:07:49.600 --> 00:07:50.100
your code.
00:07:56.580 --> 00:07:56.720
[Speaker 2]: They all run in parallel and so typically in
00:08:00.580 --> 00:08:00.780
under 60 seconds I think you've got all of
00:08:03.960 --> 00:08:04.460
them run so you've got pretty extensive
00:08:08.860 --> 00:08:09.240
testing which does catch interesting bugs
00:08:09.760 --> 00:08:10.260
here and there, right?
00:08:13.320 --> 00:08:13.820
[Speaker 0]: Yes, of course it does.
00:08:18.060 --> 00:08:18.560
I mean, you normally develop with 1 version
00:08:20.280 --> 00:08:20.540
and then you think everything is okay.
00:08:21.720 --> 00:08:21.820
But then when you're tested with the
00:08:23.460 --> 00:08:23.960
different versions, you find out that there
00:08:26.080 --> 00:08:26.580
are some changes and there are things you
00:08:30.140 --> 00:08:30.400
might not sort of keep track of what's
00:08:34.340 --> 00:08:34.640
happening also. So that's a way to get
00:08:38.559 --> 00:08:38.940
noticed that the core developers of Emacs
00:08:41.120 --> 00:08:41.480
have changed something that you sort of based
00:08:44.380 --> 00:08:44.840
your code on. Now I got another question
00:08:47.900 --> 00:08:48.160
here. Did you have to change hyperbole code
00:08:50.580 --> 00:08:50.760
and design to be more readily testable as you
00:08:52.160 --> 00:08:52.660
were increasing your test coverage?
00:08:55.520 --> 00:08:56.020
Well, we haven't done that to a lot,
00:09:00.160 --> 00:09:00.320
to a big degree, although I believe that that
00:09:03.760 --> 00:09:04.260
is an important thing for sort of the future
00:09:06.020 --> 00:09:06.500
to do that because some of the hyperbolic
00:09:08.520 --> 00:09:08.720
functions are very complicated and long and
00:09:10.640 --> 00:09:11.140
that makes testing them rather difficult.
00:09:14.660 --> 00:09:14.900
So, at a few places we have sort of broken up
00:09:17.260 --> 00:09:17.720
functions in smaller pieces so it'd be easier
00:09:20.280 --> 00:09:20.660
to do like unit tests of the different parts
00:09:27.740 --> 00:09:27.980
of it. But there's a lot of more work that
00:09:28.680 --> 00:09:29.180
has to be done there.
00:09:33.820 --> 00:09:34.020
[Speaker 2]: 1 of the nice things is you know the great
00:09:36.760 --> 00:09:36.820
environment in Lisp where we're able to do a
00:09:40.520 --> 00:09:40.900
lot of interactive bottom-up testing before
00:09:42.840 --> 00:09:43.280
we even get to lighting tech pieces.
00:09:48.740 --> 00:09:49.140
So it does tend to be more higher level bugs,
00:09:51.140 --> 00:09:51.640
I think, that get caught in cross-functional
00:09:55.940 --> 00:09:56.100
interaction. We had 1 recently that was an
00:09:58.100 --> 00:09:58.600
Emacs version change. It had been a function
00:10:01.100 --> 00:10:01.600
that had existed for a long time.
00:10:03.340 --> 00:10:03.840
It had an and rest in it,
00:10:05.740 --> 00:10:06.240
in its argument list, so it would assemble
00:10:08.600 --> 00:10:09.100
the list of arguments from individual
00:10:10.320 --> 00:10:10.820
arguments that you would give it,
00:10:13.100 --> 00:10:13.600
and they decided in a recent version,
00:10:15.200 --> 00:10:15.700
I think with Stefan's input,
00:10:19.400 --> 00:10:19.840
to change that to a list and allow the prior
00:10:22.740 --> 00:10:22.900
behavior, but it would issue a warning if you
00:10:23.620 --> 00:10:24.060
use the prior behavior.
00:10:25.560 --> 00:10:25.840
So all of a sudden, the way you were supposed
00:10:27.180 --> 00:10:27.680
to do it became semi-invalid.
00:10:30.440 --> 00:10:30.940
And so we started getting the warning,
00:10:32.760 --> 00:10:33.040
and we've tried to eliminate all those
00:10:35.600 --> 00:10:36.060
warnings in recent hyperbole developments.
00:10:37.120 --> 00:10:37.620
So we're like, what do we do?
00:10:39.020 --> 00:10:39.440
You know, because we wanted to be backward
00:10:42.140 --> 00:10:42.640
compatible to where you couldn't use a list.
00:10:44.620 --> 00:10:45.120
It required you to use individual arguments.
00:10:48.380 --> 00:10:48.560
And now it's sort of requiring you to do
00:10:51.660 --> 00:10:51.820
that. And all of that was caused by the
00:10:52.940 --> 00:10:53.440
automatic testing on it.
00:11:08.680 --> 00:11:08.860
So you said, Max, you were going to tell us
00:11:12.740 --> 00:11:13.220
what you learned. So what are the major
00:11:15.368 --> 00:11:15.396
things that you learned in doing all of this
00:11:15.680 --> 00:11:16.180
work? All of this work?
00:11:26.520 --> 00:11:26.740
[Speaker 0]: Well, I tried to cover some of it in the
00:11:29.380 --> 00:11:29.800
presentation, but as I was going along,
00:11:33.420 --> 00:11:33.920
the presentation became like twice as long as
00:11:36.180 --> 00:11:36.680
fitted into the time we had so I had to cut
00:11:42.380 --> 00:11:42.880
it out. But I think some of the core things
00:11:44.340 --> 00:11:44.840
still is in the presentation.
00:11:49.560 --> 00:11:50.060
From a personal perspective,
00:11:52.440 --> 00:11:52.940
And this might not be hard to realize,
00:11:56.960 --> 00:11:57.460
but forcing yourself to test functions,
00:12:02.900 --> 00:12:03.060
test code really forces you to understand the
00:12:05.080 --> 00:12:05.280
code a little bit better in a way that sort
00:12:07.300 --> 00:12:07.400
of makes it easier than just to read the
00:12:11.460 --> 00:12:11.960
code. I don't know how it is for the rest
00:12:13.780 --> 00:12:13.980
listening to this, but for me it works so
00:12:16.580 --> 00:12:17.080
that if I just read the code then I don't
00:12:20.140 --> 00:12:20.320
sort of become as sharp as I should be but if
00:12:22.500 --> 00:12:22.640
I try to write the test case for it then I
00:12:24.680 --> 00:12:24.880
really need to understand better of all the
00:12:27.660 --> 00:12:28.160
edge cases and all the sort of states and etc
00:12:30.060 --> 00:12:30.320
that is involved and I think that's That's
00:12:33.080 --> 00:12:33.200
what's sort of 1 of the learning things I
00:12:34.960 --> 00:12:35.280
wanted to communicate as well that I don't
00:12:38.940 --> 00:12:39.080
think I covered in detail in the
00:12:41.480 --> 00:12:41.980
presentation. Maybe all this,
00:12:48.060 --> 00:12:48.340
but try it. 1 other sort of more from the fun
00:12:50.740 --> 00:12:51.000
side is that I really think it's fun to write
00:12:55.080 --> 00:12:55.440
the test. So if you haven't tests in your
00:12:58.020 --> 00:12:58.520
package, you should start doing that because
00:13:05.740 --> 00:13:06.080
it is fun. It might feel like some extra
00:13:08.080 --> 00:13:08.580
work, but it really pays off in the long run,
00:13:10.320 --> 00:13:10.760
especially if you have it in like a pipeline
00:13:12.520 --> 00:13:12.980
and where you can run it regularly when you
00:13:13.940 --> 00:13:14.380
do new commits, et cetera.
00:13:16.560 --> 00:13:17.060
So, I mean, that's maybe obvious from,
00:13:19.160 --> 00:13:19.440
if you look from the commercial side or your
00:13:21.080 --> 00:13:21.340
work side to do it like that.
00:13:22.260 --> 00:13:22.660
But even for your hobby project,
00:13:26.260 --> 00:13:26.760
it can be very sort of pay off really well.
00:13:32.900 --> 00:13:33.160
[Speaker 2]: It's worked really well when we're adding new
00:13:35.020 --> 00:13:35.180
functionality or we're changing some of the
00:13:36.560 --> 00:13:37.060
plumbing in the system.
00:13:40.400 --> 00:13:40.580
You know, you go and you do some surgery and
00:13:41.320 --> 00:13:41.820
then you run the tests.
00:13:45.400 --> 00:13:45.900
And sometimes 6 to 10 tests will fail.
00:13:48.260 --> 00:13:48.420
And you find there, you know,
00:13:50.460 --> 00:13:50.660
it tends to be they're all interconnected and
00:13:52.920 --> 00:13:53.320
it leads you back to the single source.
00:13:56.660 --> 00:13:56.980
You fix that and you know it could be an edge
00:14:00.560 --> 00:14:00.760
case and off by 1 or Sometimes it's an
00:14:03.520 --> 00:14:03.800
assumption about the way something is used
00:14:05.980 --> 00:14:06.480
and it's not actually always true.
00:14:09.520 --> 00:14:10.020
And so, Matt's just really good at
00:14:13.540 --> 00:14:14.040
identifying some of those scenarios and
00:14:17.480 --> 00:14:17.980
keeping us honest, I guess I would say.
00:14:22.900 --> 00:14:23.400
So I love, I run it as much as I before,
00:14:26.400 --> 00:14:26.900
you know, even before I commit something.
00:14:29.960 --> 00:14:30.060
So I get to see, you know,
00:14:30.940 --> 00:14:31.440
if anything has progressed.
00:14:39.480 --> 00:14:39.920
So yeah, I really recommend this process to
00:14:42.120 --> 00:14:42.620
people. I haven't seen it done.
00:14:45.720 --> 00:14:46.080
I don't think that, I don't know any other
00:14:47.800 --> 00:14:48.300
package that has done it to this level.
00:14:51.560 --> 00:14:51.820
And it's been working really great for us.
00:14:55.440 --> 00:14:55.640
And I think, well, we'll see too when we
00:14:56.780 --> 00:14:57.280
release to the general public.
00:15:04.380 --> 00:15:04.540
[Speaker 0]: But Bob, also, maybe the test part of
00:15:06.400 --> 00:15:06.560
different packages is not the first thing you
00:15:08.900 --> 00:15:09.100
look at. So I know there are packages that
00:15:10.960 --> 00:15:11.380
have testing, a lot of testing,
00:15:13.860 --> 00:15:14.160
but how much, much testing they have or not,
00:15:16.060 --> 00:15:16.220
I don't know. It's not what you normally look
00:15:17.900 --> 00:15:18.400
into when you look at someone's else code.
00:15:20.600 --> 00:15:20.820
You look maybe on the functionality side but
00:15:22.760 --> 00:15:23.000
not on how they've done the sort of the
00:15:26.540 --> 00:15:26.760
quality side. So there could be other
00:15:28.780 --> 00:15:29.280
packages out there that are well equipped.
00:15:31.800 --> 00:15:32.300
[Speaker 2]: I hope so. I hope so.
00:15:39.860 --> 00:15:40.180
[Speaker 0]: What's the craziest bug you found when
00:15:44.700 --> 00:15:45.200
writing these tests? Well,
00:15:50.760 --> 00:15:50.940
What springs to my mind just now is that we
00:15:52.760 --> 00:15:52.960
were doing some tests or I would do some
00:15:55.920 --> 00:15:56.420
tests for when you narrow,
00:15:57.940 --> 00:15:58.440
what do you say that? When you,
00:16:04.500 --> 00:16:05.000
in outlining, when you sort of compress
00:16:06.480 --> 00:16:06.980
things in an outline, so you just,
00:16:08.540 --> 00:16:09.040
sorry Bob, maybe you have it,
00:16:12.100 --> 00:16:12.600
[Speaker 2]: When you hide text.
00:16:12.740 --> 00:16:13.240
[Speaker 0]: What I'm looking for? Yeah,
00:16:15.580 --> 00:16:15.920
when you hide. So I was doing some cursor
00:16:17.780 --> 00:16:17.980
movement over that. And I always assume that
00:16:22.540 --> 00:16:22.900
if you do like a prefix argument to like a
00:16:23.800 --> 00:16:24.240
simple cursor movement,
00:16:26.420 --> 00:16:26.920
like control F moving 1 character position,
00:16:28.340 --> 00:16:28.840
and you would give it the,
00:16:36.580 --> 00:16:37.080
and then the prefix, like you want to move
00:16:39.140 --> 00:16:39.640
like 2 or 3 positions,
00:16:43.040 --> 00:16:43.140
you would do like control U 3 and then
00:16:44.240 --> 00:16:44.740
control F and you move 3.
00:16:46.560 --> 00:16:46.960
I always assumed that that would be exactly
00:16:49.240 --> 00:16:49.440
the same as if you just hit the key control F
00:16:50.740 --> 00:16:51.240
3 times, but it's not.
00:16:53.160 --> 00:16:53.560
So it's not the bug, it's a feature,
00:16:54.620 --> 00:16:55.080
but that was the craziest thing.
00:16:58.180 --> 00:16:58.360
I spent the night trying to figure out why
00:17:00.720 --> 00:17:01.000
our code was wrong, but It turns out that's
00:17:03.560 --> 00:17:04.060
how Emacs behaves. Try it out yourself.
00:17:07.920 --> 00:17:08.300
Try to move over the 3 dots at the end of
00:17:09.140 --> 00:17:09.640
that and see what happens.
00:17:14.060 --> 00:17:14.240
Do it with cursor hitting the key or using a
00:17:16.260 --> 00:17:16.680
prefix argument and you see it behaves
00:17:18.720 --> 00:17:19.220
differently. That was the craziest thing.
00:17:21.960 --> 00:17:22.339
I think there was some other crazy thing or
00:17:24.280 --> 00:17:24.480
deep learning also, but I can't come up with
00:17:26.599 --> 00:17:26.760
it at the moment. So maybe I can write it in
00:17:27.900 --> 00:17:28.400
the Q&A later.
00:17:31.200 --> 00:17:31.440
[Speaker 1]: I think we're out of time on the stream,
00:17:33.360 --> 00:17:33.600
but people are welcome to join Mats and Bob
00:17:35.280 --> 00:17:35.640
here on BigBlueButton to further discuss
00:17:36.480 --> 00:17:36.980
this. Thank you both.
00:17:38.674 --> 00:17:38.792
[Speaker 0]: Okay, thank you. Thanks,
00:17:46.100 --> 00:17:46.600
Makaay. Thank you. I don't know,
00:17:48.740 --> 00:17:49.240
Is it only me and Bob here?
00:17:50.680 --> 00:17:51.180
So Bob, do you want to say something?
00:17:57.440 --> 00:17:57.940
[Speaker 2]: Well, I think it's been a great day.
00:18:00.720 --> 00:18:01.220
And I'm glad we did this.
00:18:02.280 --> 00:18:02.780
It takes a lot of energy.
00:18:15.140 --> 00:18:15.640
I'm just really excited about the progress
00:18:20.580 --> 00:18:20.740
that this, and we're actually doing a lot of
00:18:23.940 --> 00:18:24.160
QA at work and my professional software work
00:18:28.500 --> 00:18:28.840
and looking at you know how we can do more
00:18:32.980 --> 00:18:33.480
test driven development and so everybody's
00:18:35.980 --> 00:18:36.200
talking about this you know we've got AI over
00:18:37.540 --> 00:18:38.040
here that can generate test cases.
00:18:40.200 --> 00:18:40.700
But, you know, strangely enough,
00:18:43.100 --> 00:18:43.380
with the rapidity of development and web
00:18:46.720 --> 00:18:47.220
applications, I think the level of testing
00:18:50.140 --> 00:18:50.280
has gone down in recent years compared to
00:18:51.500 --> 00:18:51.780
where it used to be, right?
00:18:53.040 --> 00:18:53.540
Because the pace has gone up.
00:18:57.340 --> 00:18:57.840
And so I think it's starting to turn again
00:18:58.740 --> 00:18:59.240
where people are saying,
00:19:01.940 --> 00:19:02.440
we can't just release crap into the
00:19:08.120 --> 00:19:08.620
Webisphere and we have to better ourselves.
00:19:13.620 --> 00:19:13.820
And with all these advanced tool sets that
00:19:16.100 --> 00:19:16.600
you have, that you can do CICD testing,
00:19:19.860 --> 00:19:20.180
you know, I just, I just see it coming
00:19:21.900 --> 00:19:22.100
around, you know, as people develop new
00:19:24.000 --> 00:19:24.160
things. So That's kind of exciting to me
00:19:26.980 --> 00:19:27.480
because I came from a manufacturing culture
00:19:30.300 --> 00:19:30.780
originally where we, our company actually
00:19:33.800 --> 00:19:34.300
started a lot of the manufacturing quality
00:19:37.420 --> 00:19:37.920
efforts that you saw in Japan and elsewhere
00:19:40.600 --> 00:19:40.740
in America for a long time and that was you
00:19:42.040 --> 00:19:42.540
know entirely through testing.
00:19:46.640 --> 00:19:47.020
We used to just build incredible test cases
00:19:49.120 --> 00:19:49.320
because we were combining software with
00:19:51.100 --> 00:19:51.380
hardware. And if, you know,
00:19:53.460 --> 00:19:53.600
the hardware doesn't work and you ship a
00:19:55.080 --> 00:19:55.520
million units, you're,
00:19:57.340 --> 00:19:57.840
you're in trouble. So,
00:20:00.260 --> 00:20:00.760
that was just something we had to do.
00:20:04.280 --> 00:20:04.780
And so it's nice to start to see that curve
00:20:07.020 --> 00:20:07.520
come around. And I think,
00:20:10.380 --> 00:20:10.880
you know, Matt Vance is very modest,
00:20:16.680 --> 00:20:16.920
but I think he's really the 1 that started us
00:20:20.400 --> 00:20:20.580
down this path and really made it into a
00:20:24.620 --> 00:20:24.840
reality. So everybody else just gets to
00:20:25.760 --> 00:20:26.260
benefit from that work.
00:20:27.540 --> 00:20:28.040
So thanks.
00:20:32.760 --> 00:20:33.260
[Speaker 1]: That's awesome.
00:20:39.960 --> 00:20:40.460
[Speaker 0]: Thanks. Okay. Yeah. So if there's nothing
00:20:43.200 --> 00:20:43.520
more here, then maybe we should just close
00:20:45.440 --> 00:20:45.940
this and I go over to write in the etherpad
00:20:47.960 --> 00:20:48.460
the replies we had.
00:20:51.900 --> 00:20:52.120
[Speaker 1]: Right, yeah, I think, let's see,
00:20:53.520 --> 00:20:53.760
I see 1 other person here,
00:20:55.080 --> 00:20:55.580
I believe Ihor just joined us.
00:20:58.780 --> 00:20:59.060
Yeah. Yeah, so if you do want to discuss with
00:21:00.220 --> 00:21:00.480
Mats and Bob, you're welcome to,
00:21:02.200 --> 00:21:02.700
otherwise, yeah, we can close the room now.
00:21:05.800 --> 00:21:06.020
[Speaker 3]: Well, I think I missed most of the talk
00:21:06.900 --> 00:21:07.400
because I had power outage,
00:21:12.180 --> 00:21:12.440
but the part I heard was about the mock
00:21:16.860 --> 00:21:17.220
library. And you mentioned that you don't
00:21:20.200 --> 00:21:20.700
like CL-let, but instead you use mock.
00:21:29.700 --> 00:21:29.800
[Speaker 0]: Yeah, I was more saying that you have to do a
00:21:31.560 --> 00:21:32.040
lot more work when you use the CL letdef.
00:21:34.540 --> 00:21:34.780
It's for more ambitious and maybe more
00:21:37.000 --> 00:21:37.500
complicated cases where you want to really
00:21:38.840 --> 00:21:39.340
make a new implementation,
00:21:41.940 --> 00:21:42.440
test implementation. If you use the mock,
00:21:44.380 --> 00:21:44.880
you get a lot of things out of the box,
00:21:47.440 --> 00:21:47.940
verifying that you actually,
00:21:50.820 --> 00:21:51.040
like the mock was actually called for
00:21:53.320 --> 00:21:53.820
instance, whereas if you do with the CLLatf,
00:21:56.520 --> 00:21:56.780
you would have to take correct track of that
00:22:02.020 --> 00:22:02.520
yourself. And so, so a lot of more work.
00:22:03.760 --> 00:22:04.260
Oh yeah.
00:22:07.940 --> 00:22:08.200
[Speaker 3]: I'm saying that most of the time CLLess is
00:22:09.720 --> 00:22:10.220
used for simple cases actually.
00:22:12.320 --> 00:22:12.820
Because, just for example,
00:22:15.100 --> 00:22:15.600
the function always returns the same.
00:22:17.980 --> 00:22:18.420
And it tends to be simple lambda that ignores
00:22:19.040 --> 00:22:19.540
all the input arguments.
00:22:23.000 --> 00:22:23.480
So that's really trivial most of the time but
00:22:25.520 --> 00:22:25.920
I actually thought the opposite that mock is
00:22:27.640 --> 00:22:28.140
supposed to be used for non-trivial cases.
00:22:32.280 --> 00:22:32.520
[Speaker 0]: Sorry, what was the question?
00:22:35.280 --> 00:22:35.780
Mock was supposed to be used for non-trivial.
00:22:47.680 --> 00:22:48.180
Yeah I mean I don't know how to explain this.
00:22:50.140 --> 00:22:50.640
I mean, CLF can be used for non-trivial
00:22:54.400 --> 00:22:54.840
definitely. You can define then any behavior
00:22:56.180 --> 00:22:56.680
you want. You can write your own function,
00:22:58.440 --> 00:22:58.660
but you need to keep track of whether that
00:22:59.620 --> 00:23:00.100
function is called or not,
00:23:06.260 --> 00:23:06.380
for instance. So you have to make note of
00:23:08.440 --> 00:23:08.940
that the function was called so you can fire
00:23:12.440 --> 00:23:12.800
sort of an error in case your function wasn't
00:23:16.960 --> 00:23:17.440
called because that would be 1 error case.
00:23:20.660 --> 00:23:20.860
[Speaker 3]: So you mean the mock fires an error if the
00:23:22.580 --> 00:23:23.080
mocked function was actually not called?
00:23:30.060 --> 00:23:30.560
[Speaker 0]: Yes, it does. Yes. So if your assumptions,
00:23:33.900 --> 00:23:34.120
you sort of document with the mock also your
00:23:37.080 --> 00:23:37.220
assumptions how your code is going to be
00:23:40.020 --> 00:23:40.380
called. And if those are wrong,
00:23:41.120 --> 00:23:41.540
you will get an error.
00:23:43.680 --> 00:23:44.060
So you would, so if the implementation would
00:23:44.840 --> 00:23:45.100
maybe change, for instance,
00:23:46.640 --> 00:23:47.140
and not call the thing you're mocking,
00:23:50.460 --> 00:23:50.960
then you will notice that.
00:23:53.100 --> 00:23:53.560
But if you see a letdef,
00:23:54.840 --> 00:23:55.040
then you will have to keep track of that
00:23:57.560 --> 00:23:58.060
yourself. Okay, I see.
00:23:58.260 --> 00:23:58.760
I see.
00:24:01.240 --> 00:24:01.740
[Speaker 3]: And you know, our mode also uses a lot of
00:24:09.340 --> 00:24:09.620
test. In our mode, we have a lot of tests
00:24:13.940 --> 00:24:14.440
[Speaker 0]: Ah, okay. Yeah. Yeah. I'm sure I have.
00:24:15.900 --> 00:24:16.400
[Speaker 3]: also. We rely on CLLatF for,
00:24:19.220 --> 00:24:19.720
we don't use third-party libraries at all.
00:24:22.140 --> 00:24:22.640
[Speaker 0]: Oh, you use CLLatF, okay.
00:24:26.680 --> 00:24:27.180
Yeah. Yeah. Yeah. At First I found it very
00:24:29.480 --> 00:24:29.700
powerful to use that, but then I sort of,
00:24:32.120 --> 00:24:32.320
I learned more about how we can use the
00:24:34.340 --> 00:24:34.840
mocking library for what I needed.
00:24:36.900 --> 00:24:37.400
And I prefer that at the moment.
00:24:40.560 --> 00:24:41.060
[Speaker 3]: I see, that is interesting.
00:24:42.500 --> 00:24:42.700
Because I had seen it,
00:24:45.440 --> 00:24:45.600
but I didn't consider that it's gonna be
00:24:46.800 --> 00:24:47.300
useful even in simple cases.
00:24:52.640 --> 00:24:53.140
[Speaker 0]: It has its limitations.
00:24:58.260 --> 00:24:58.760
So it's like life, how you turn depends.
00:25:03.740 --> 00:25:04.020
But maybe I should look more into the org
00:25:05.880 --> 00:25:06.100
mode and the test case to learn more about
00:25:07.480 --> 00:25:07.980
that. So thanks for pointing that out.
00:25:14.620 --> 00:25:15.120
[Speaker 3]: We are trying to cover as much as we can.
00:25:17.520 --> 00:25:17.740
It's almost impossible for org.
00:25:20.500 --> 00:25:21.000
But yeah, we keep adding more tests.
00:25:22.780 --> 00:25:23.280
[Speaker 0]: That's great.
00:25:52.720 --> 00:25:53.200
Someone's typing. I don't know.
00:25:54.340 --> 00:25:54.840
Any more questions? No?
00:26:01.060 --> 00:26:01.560
Okay, then I'll go back and try to document
00:26:05.200 --> 00:26:05.360
this in the etherpad. Thank you everybody for
00:26:08.860 --> 00:26:09.160
[Speaker 1]: Thank you guys. Great work.
00:26:09.400 --> 00:26:09.900
[Speaker 0]: joining. Great. Thank you.
00:26:11.100 --> 00:26:11.600
Take care. Bye-bye.
00:26:15.060 --> 00:26:15.560
[Speaker 1]: Take care. Bye. Silence.