Skip to content

Commit 96d631f

Browse files
authored
Merge pull request #111 from pstaabp/remove-firstval-moreutils
Remove the firstval function from the List::MoreUtils module
2 parents b7fd7df + 35ca101 commit 96d631f

13 files changed

+100
-97
lines changed

docker/alpine_docker.dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
FROM scottw/alpine-perl:5.32.0
22
RUN apk update && \
3-
apk add --no-cache bash=5.1.8-r0 perl-data-dump=1.25-r0 perl-list-moreutils=0.430-r0 perl-text-csv=2.01-r0 \
3+
apk add --no-cache bash=5.1.8-r0 perl-data-dump=1.25-r0 perl-text-csv=2.01-r0 \
44
perl-test-exception=0.43-r2 perl-try-tiny=0.30-r3 perl-dbix-dbschema=0.45-r2 perl-sql-translator=1.62-r0 \
55
perl-module-build=0.4231-r1 perl-json-xs=4.03-r1 perl-clone=0.45-r1 perl-yaml=1.30-r2 perl-digest-md5=2.58-r2 \
66
perl-capture-tiny=0.48-r2 perl-io-socket-ssl=2.071-r0 perl-uri=5.09-r0 \

docker/run_tests_docker

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
FROM perl:latest
22
RUN cpanm -fi --notest \
3-
List::MoreUtils \
43
Text::CSV \
54
Test::Exception \
65
Try::Tiny \

docker/webwork3.dockerfile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ RUN apt-get update && \
2424
libdevel-cover-perl=1.33-1build1 \
2525
libexception-class-perl=1.44-1 \
2626
libjson-perl=4.02000-2 \
27-
liblist-moreutils-perl=0.416-1build5 \
2827
libnet-ssleay-perl=1.88-2ubuntu1 \
2928
libsql-translator-perl=1.60-1 \
3029
libssl-dev=1.1.1f-1ubuntu2.5 \

t/db/001_courses.t

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ BEGIN {
1414
use lib "$main::ww3_dir/lib";
1515
use lib "$main::ww3_dir/t/lib";
1616

17-
use List::MoreUtils qw(uniq);
18-
1917
use Test::More;
2018
use Test::Exception;
2119
use YAML::XS qw/LoadFile/;

t/db/007_user_set.t

Lines changed: 34 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use DateTime::Format::Strptime;
1919
use Test::More;
2020
use Clone qw/clone/;
2121
use Test::Exception;
22-
use List::MoreUtils qw/firstval/;
22+
2323
use YAML::XS qw/LoadFile/;
2424
use Mojo::JSON qw/true false/;
2525

@@ -99,10 +99,8 @@ my @all_user_sets = loadCSV(
9999
for my $set (@all_user_sets) {
100100
$set->{set_version} = 0 unless defined($set->{set_version});
101101
# find the problem set type
102-
my $s = firstval {
103-
$_->{course_name} eq $set->{course_name} && $_->{set_name} eq $set->{set_name}
104-
}
105-
@all_problem_sets;
102+
my $s =
103+
(grep { $_->{course_name} eq $set->{course_name} && $_->{set_name} eq $set->{set_name} } @all_problem_sets)[0];
106104
$set->{set_params} = {} unless defined $set->{set_params};
107105
$set->{set_type} = $s->{set_type};
108106
}
@@ -112,10 +110,8 @@ my @merged_user_sets = @{ clone(\@all_user_sets) };
112110
# Merge the sets
113111

114112
for my $user_set (@merged_user_sets) {
115-
my $set = firstval {
116-
$_->{course_name} eq $user_set->{course_name} && $_->{set_name} eq $user_set->{set_name}
117-
}
118-
@all_problem_sets;
113+
my $set = (grep { $_->{course_name} eq $user_set->{course_name} && $_->{set_name} eq $user_set->{set_name} }
114+
@all_problem_sets)[0];
119115

120116
# override problem set dates with userset dates if exist
121117
my $dates = clone($set->{set_dates});
@@ -263,12 +259,15 @@ my $info = {
263259
};
264260
my $user_set = $user_set_rs->getUserSet(info => $info);
265261

266-
my $user_set_from_csv = clone firstval {
267-
$_->{course_name} eq 'Precalculus'
268-
&& $_->{username} eq $info->{username}
269-
&& $_->{set_name} eq $info->{set_name}
270-
}
271-
@all_user_sets;
262+
my $user_set_from_csv = clone(
263+
(
264+
grep {
265+
$_->{course_name} eq 'Precalculus'
266+
&& $_->{username} eq $info->{username}
267+
&& $_->{set_name} eq $info->{set_name}
268+
} @all_user_sets
269+
)[0]
270+
);
272271

273272
removeIDs($user_set);
274273
delete $user_set->{set_visible} unless defined($user_set->{set_visible});
@@ -277,12 +276,15 @@ is_deeply($user_set_from_csv, $user_set, 'getUserSet: get a user set from a cour
277276

278277
# Get a merged UserSet
279278

280-
my $merged_set_from_csv = clone firstval {
281-
$_->{course_name} eq 'Precalculus'
282-
&& $_->{username} eq $info->{username}
283-
&& $_->{set_name} eq $info->{set_name}
284-
}
285-
@merged_user_sets;
279+
my $merged_set_from_csv = clone(
280+
(
281+
grep {
282+
$_->{course_name} eq 'Precalculus'
283+
&& $_->{username} eq $info->{username}
284+
&& $_->{set_name} eq $info->{set_name}
285+
} @merged_user_sets
286+
)[0]
287+
);
286288

287289
my $merged_set = $user_set_rs->getUserSet(info => $info, merged => 1);
288290
removeIDs($merged_set);
@@ -356,11 +358,7 @@ $new_info->{set_type} = 'HW';
356358

357359
is_deeply($new_user_set, $new_info, 'addUserSet: add a new user set');
358360

359-
my $hw_set1 = clone firstval {
360-
$_->{course_name} eq 'Precalculus'
361-
&& $_->{set_name} eq 'HW #1'
362-
}
363-
@hw_sets;
361+
my $hw_set1 = clone((grep { $_->{course_name} eq 'Precalculus' && $_->{set_name} eq 'HW #1' } @hw_sets)[0]);
364362

365363
$hw_set1->{username} = 'frink';
366364

@@ -619,11 +617,16 @@ my $otto_quiz_info = {
619617
username => 'otto'
620618
};
621619

622-
my $merged_set1 = clone firstval {
623-
$_->{course_name} eq $otto_quiz_info->{course_name}
624-
&& $_->{set_name} eq $otto_quiz_info->{set_name}
625-
}
626-
@all_problem_sets;
620+
# Then add a new user set and test that it is merged correctly.
621+
622+
my $merged_set1 = clone(
623+
(
624+
grep {
625+
$_->{course_name} eq $otto_quiz_info->{course_name}
626+
&& $_->{set_name} eq $otto_quiz_info->{set_name}
627+
} @all_problem_sets
628+
)[0]
629+
);
627630

628631
$merged_set1->{username} = $otto_quiz_info->{username};
629632

t/db/010_user_problems.t

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ use Test::Exception;
1919
use Try::Tiny;
2020
use Carp;
2121
use Clone qw/clone/;
22-
use List::MoreUtils qw/firstval/;
2322
use YAML::XS qw/LoadFile/;
2423

2524
use DB::Schema;
@@ -70,12 +69,15 @@ for my $problem (@problems_from_csv) {
7069

7170
my @merged_problems_from_csv = ();
7271
for my $user_problem (@user_problems_from_csv) {
73-
my $problem = clone firstval {
74-
$_->{course_name} eq $user_problem->{course_name}
75-
&& $_->{set_name} eq $user_problem->{set_name}
76-
&& $_->{problem_number} == $user_problem->{problem_number}
77-
}
78-
@problems_from_csv;
72+
my $problem = clone(
73+
(
74+
grep {
75+
$_->{course_name} eq $user_problem->{course_name}
76+
&& $_->{set_name} eq $user_problem->{set_name}
77+
&& $_->{problem_number} == $user_problem->{problem_number}
78+
} @problems_from_csv
79+
)[0]
80+
);
7981

8082
# Override the following fields from user problems.
8183
for my $key (qw/seed status problem_version username/) {
@@ -179,13 +181,16 @@ removeIDs($user_problem);
179181
delete $user_problem->{problem_version} unless defined $user_problem->{problem_version};
180182
$user_problem->{status} += 0;
181183

182-
my $user_problem_from_csv = clone firstval {
183-
$_->{course_name} eq 'Precalculus'
184-
&& $_->{username} eq 'homer'
185-
&& $_->{set_name} eq 'HW #2'
186-
&& $_->{problem_number} == 3
187-
}
188-
@precalc_user_problems;
184+
my $user_problem_from_csv = clone(
185+
(
186+
grep {
187+
$_->{course_name} eq 'Precalculus'
188+
&& $_->{username} eq 'homer'
189+
&& $_->{set_name} eq 'HW #2'
190+
&& $_->{problem_number} == 3
191+
} @precalc_user_problems
192+
)[0]
193+
);
189194

190195
is_deeply($user_problem_from_csv, $user_problem, 'getUserProblem: get a single user problem');
191196

@@ -289,12 +294,15 @@ my $user_problem2 = $user_problem_rs->addUserProblem(
289294

290295
removeIDs($user_problem2);
291296

292-
my $problem2 = clone firstval {
293-
$_->{course_name} eq $problem_info2->{course_name}
294-
&& $_->{set_name} eq $problem_info2->{set_name}
295-
&& $_->{problem_number} eq $problem_info2->{problem_number}
296-
}
297-
@problems_from_csv;
297+
my $problem2 = clone(
298+
(
299+
grep {
300+
$_->{course_name} eq $problem_info2->{course_name}
301+
&& $_->{set_name} eq $problem_info2->{set_name}
302+
&& $_->{problem_number} eq $problem_info2->{problem_number}
303+
} @problems_from_csv
304+
)[0]
305+
);
298306

299307
# Merge the two problems.
300308
for my $key (qw/username seed status problem_version/) {

t/db/012_set_versions.t

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ use lib "$main::ww3_dir/t/lib";
1717
use Test::More;
1818
use Test::Exception;
1919
use YAML::XS qw/LoadFile/;
20-
use List::MoreUtils qw/firstval/;
2120
use Clone qw/clone/;
2221

2322
use DB::Schema;
@@ -92,10 +91,8 @@ my @all_user_sets = loadCSV(
9291
for my $set (@all_user_sets) {
9392
$set->{set_version} = 0 unless defined($set->{set_version});
9493
# find the problem set type
95-
my $s = firstval {
96-
$_->{course_name} eq $set->{course_name} && $_->{set_name} eq $set->{set_name}
97-
}
98-
@all_problem_sets;
94+
my $s =
95+
(grep { $_->{course_name} eq $set->{course_name} && $_->{set_name} eq $set->{set_name} } @all_problem_sets)[0];
9996
$set->{set_type} = $s->{set_type};
10097
$set->{set_params} = {} unless defined $set->{set_params};
10198
}
@@ -105,10 +102,8 @@ my @merged_user_sets = @{ clone(\@all_user_sets) };
105102
# Merge the sets
106103

107104
for my $user_set (@merged_user_sets) {
108-
my $set = firstval {
109-
$_->{course_name} eq $user_set->{course_name} && $_->{set_name} eq $user_set->{set_name}
110-
}
111-
@all_problem_sets;
105+
my $set = (grep { $_->{course_name} eq $user_set->{course_name} && $_->{set_name} eq $user_set->{set_name} }
106+
@all_problem_sets)[0];
112107

113108
# override problem set dates with userset dates if exist
114109
my $dates = clone($set->{set_dates});
@@ -143,12 +138,13 @@ cleanUndef($user_set1);
143138

144139
# Check that it is the same as that from the CSV file
145140

146-
my $user_set1_from_csv = firstval {
147-
$_->{course_name} eq $user_set_info1->{course_name}
148-
&& $_->{set_name} eq $user_set_info1->{set_name}
149-
&& $_->{username} eq $user_set_info1->{username}
150-
}
151-
@all_user_sets;
141+
my $user_set1_from_csv = (
142+
grep {
143+
$_->{course_name} eq $user_set_info1->{course_name}
144+
&& $_->{set_name} eq $user_set_info1->{set_name}
145+
&& $_->{username} eq $user_set_info1->{username}
146+
} @all_user_sets
147+
)[0];
152148

153149
# Make a new user set that has a set_version of 1
154150

t/db/013_problem_versions.t

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ use lib "$main::ww3_dir/t/lib";
1717
use Test::More;
1818
use Test::Exception;
1919
use YAML::XS qw/LoadFile/;
20-
use List::MoreUtils qw/firstval/;
2120
use Clone qw/clone/;
2221

2322
use DB::Schema;
@@ -53,12 +52,15 @@ for my $problem (@problems_from_csv) {
5352

5453
my @merged_problems_from_csv = ();
5554
for my $user_problem (@user_problems_from_csv) {
56-
my $problem = clone firstval {
57-
$_->{course_name} eq $user_problem->{course_name}
58-
&& $_->{set_name} eq $user_problem->{set_name}
59-
&& $_->{problem_number} == $user_problem->{problem_number}
60-
}
61-
@problems_from_csv;
55+
my $problem = clone(
56+
(
57+
grep {
58+
$_->{course_name} eq $user_problem->{course_name}
59+
&& $_->{set_name} eq $user_problem->{set_name}
60+
&& $_->{problem_number} == $user_problem->{problem_number}
61+
} @problems_from_csv
62+
)[0]
63+
);
6264

6365
# Override the following fields from user problems.
6466
for my $key (qw/seed status problem_version username/) {
@@ -86,13 +88,16 @@ delete $user_problem1->{set_visible} unless defined $user_problem1->{set_visible
8688

8789
# Check that it is the same as that from the CSV file
8890

89-
my $user_problem1_from_csv = clone firstval {
90-
$_->{course_name} eq $user_problem_info->{course_name}
91-
&& $_->{set_name} eq $user_problem_info->{set_name}
92-
&& $_->{username} eq $user_problem_info->{username}
93-
&& $_->{problem_number} == $user_problem_info->{problem_number}
94-
}
95-
@user_problems_from_csv;
91+
my $user_problem1_from_csv = clone(
92+
(
93+
grep {
94+
$_->{course_name} eq $user_problem_info->{course_name}
95+
&& $_->{set_name} eq $user_problem_info->{set_name}
96+
&& $_->{username} eq $user_problem_info->{username}
97+
&& $_->{problem_number} == $user_problem_info->{problem_number}
98+
} @user_problems_from_csv
99+
)[0]
100+
);
96101

97102
# the status needs be returned to a numerical value.
98103
$user_problem1->{status} += 0;

t/mojolicious/006_quizzes.t

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ use DB::Schema;
2121
use Clone qw/clone/;
2222
use YAML::XS qw/LoadFile/;
2323
use TestUtils qw/loadCSV/;
24-
use List::MoreUtils qw/firstval/;
2524

2625
# Test the api with common 'courses/sets' routes for quizzes.
2726

@@ -67,7 +66,7 @@ my $all_problem_sets = $t->tx->res->json;
6766

6867
# find the first quiz in the course.
6968

70-
my $quiz1 = firstval { $_->{set_type} eq 'QUIZ' } @$all_problem_sets;
69+
my $quiz1 = (grep { $_->{set_type} eq 'QUIZ' } @$all_problem_sets)[0];
7170

7271
# test some things about this quiz
7372
$t->get_ok("/webwork3/api/courses/4/sets/$quiz1->{set_id}")->content_type_is('application/json;charset=UTF-8')

t/mojolicious/007_review_sets.t

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ use DB::Schema;
1919
use Clone qw/clone/;
2020
use YAML::XS qw/LoadFile/;
2121
use DateTime::Format::Strptime;
22-
use List::MoreUtils qw/firstval/;
2322
use TestUtils qw/loadCSV/;
2423

2524
my $strp = DateTime::Format::Strptime->new(pattern => '%FT%T', on_error => 'croak');
@@ -64,7 +63,7 @@ $t->get_ok('/webwork3/api/courses/4/sets')->content_type_is('application/json;ch
6463
my $all_problem_sets = $t->tx->res->json;
6564

6665
# find the first review set in the course.
67-
my $review_set1 = firstval { $_->{set_type} eq 'REVIEW' } @$all_problem_sets;
66+
my $review_set1 = (grep { $_->{set_type} eq 'REVIEW' } @$all_problem_sets)[0];
6867

6968
# test some things about this review set
7069

t/mojolicious/008_problems.t

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ use lib "$main::ww3_dir/t/lib";
2020
use DB::Schema;
2121
use Clone qw/clone/;
2222
use YAML::XS qw/LoadFile/;
23-
use List::MoreUtils qw/firstval/;
2423

2524
use TestUtils qw/loadCSV removeIDs/;
2625

@@ -72,7 +71,7 @@ $t->get_ok('/webwork3/api/courses/4/sets')->status_is(200)->content_type_is('app
7271

7372
my $sets = $t->tx->res->json;
7473

75-
my $hw1 = firstval { $_->{set_name} eq 'HW #1' } @$sets;
74+
my $hw1 = (grep { $_->{set_name} eq 'HW #1' } @$sets)[0];
7675

7776
# Get all Arithmetic problems (course_id: 4)
7877

0 commit comments

Comments
 (0)